diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml
index 73fe22f3aa..4eebb74d13 100644
--- a/.devcontainer/docker-compose.yml
+++ b/.devcontainer/docker-compose.yml
@@ -26,7 +26,6 @@ services:
ports:
- '127.0.0.1:3000:3000'
- '127.0.0.1:4000:4000'
- - '127.0.0.1:80:3000'
networks:
- external_network
- internal_network
diff --git a/.eslintrc.js b/.eslintrc.js
index 259c86157b..8394d98b9c 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -7,6 +7,7 @@ module.exports = {
'plugin:jsx-a11y/recommended',
'plugin:import/recommended',
'plugin:promise/recommended',
+ 'plugin:jsdoc/recommended',
],
env: {
@@ -238,6 +239,14 @@ module.exports = {
'formatjs/no-useless-message': 'error',
'formatjs/prefer-formatted-message': 'error',
'formatjs/prefer-pound-in-plural': 'error',
+
+ 'jsdoc/check-types': 'off',
+ 'jsdoc/no-undefined-types': 'off',
+ 'jsdoc/require-jsdoc': 'off',
+ 'jsdoc/require-param-description': 'off',
+ 'jsdoc/require-property-description': 'off',
+ 'jsdoc/require-returns-description': 'off',
+ 'jsdoc/require-returns': 'off',
},
overrides: [
@@ -270,10 +279,13 @@ module.exports = {
'plugin:import/recommended',
'plugin:import/typescript',
'plugin:promise/recommended',
+ 'plugin:jsdoc/recommended',
],
rules: {
'@typescript-eslint/no-explicit-any': 'off',
+
+ 'jsdoc/require-jsdoc': 'off',
},
},
{
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 9deba6642a..58e82a90c7 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -428,10 +428,6 @@ RSpec/AnyInstance:
- 'spec/workers/activitypub/delivery_worker_spec.rb'
- 'spec/workers/web/push_notification_worker_spec.rb'
-RSpec/BeforeAfterAll:
- Exclude:
- - 'spec/requests/localization_spec.rb'
-
# Configuration parameters: Prefixes, AllowedPatterns.
# Prefixes: when, with, without
RSpec/ContextWording:
@@ -861,7 +857,6 @@ RSpec/PendingWithoutReason:
Exclude:
- 'spec/controllers/statuses_controller_spec.rb'
- 'spec/models/account_spec.rb'
- - 'spec/models/user_spec.rb'
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Strict, EnforcedStyle, AllowedExplicitMatchers.
@@ -1153,32 +1148,6 @@ RSpec/VerifiedDoubles:
- 'spec/workers/feed_insert_worker_spec.rb'
- 'spec/workers/regeneration_worker_spec.rb'
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: ExpectedOrder, Include.
-# ExpectedOrder: index, show, new, edit, create, update, destroy
-# Include: app/controllers/**/*.rb
-Rails/ActionOrder:
- Exclude:
- - 'app/controllers/admin/announcements_controller.rb'
- - 'app/controllers/admin/roles_controller.rb'
- - 'app/controllers/admin/rules_controller.rb'
- - 'app/controllers/admin/warning_presets_controller.rb'
- - 'app/controllers/admin/webhooks_controller.rb'
- - 'app/controllers/api/v1/admin/domain_allows_controller.rb'
- - 'app/controllers/api/v1/admin/domain_blocks_controller.rb'
- - 'app/controllers/api/v1/admin/email_domain_blocks_controller.rb'
- - 'app/controllers/api/v1/admin/ip_blocks_controller.rb'
- - 'app/controllers/api/v1/filters_controller.rb'
- - 'app/controllers/api/v1/media_controller.rb'
- - 'app/controllers/api/v1/push/subscriptions_controller.rb'
- - 'app/controllers/api/v2/filters/keywords_controller.rb'
- - 'app/controllers/api/v2/filters/statuses_controller.rb'
- - 'app/controllers/api/v2/filters_controller.rb'
- - 'app/controllers/auth/registrations_controller.rb'
- - 'app/controllers/filters_controller.rb'
- - 'app/controllers/settings/applications_controller.rb'
- - 'app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb'
-
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: Include.
# Include: app/models/**/*.rb
@@ -1234,22 +1203,6 @@ Rails/BulkChangeTable:
- 'db/migrate/20220303000827_add_ordered_media_attachment_ids_to_status_edits.rb'
- 'db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb'
-# This cop supports unsafe autocorrection (--autocorrect-all).
-Rails/CompactBlank:
- Exclude:
- - 'app/helpers/application_helper.rb'
- - 'app/helpers/statuses_helper.rb'
- - 'app/models/concerns/attachmentable.rb'
- - 'app/models/poll.rb'
- - 'app/services/import_service.rb'
- - 'config/initializers/paperclip.rb'
-
-# This cop supports safe autocorrection (--autocorrect).
-Rails/ContentTag:
- Exclude:
- - 'app/helpers/application_helper.rb'
- - 'app/helpers/branding_helper.rb'
-
# Configuration parameters: Include.
# Include: db/migrate/*.rb
Rails/CreateTableWithTimestamps:
@@ -1373,39 +1326,11 @@ Rails/HasManyOrHasOneDependent:
- 'app/models/user.rb'
- 'app/models/web/push_subscription.rb'
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: Include.
-# Include: spec/**/*, test/**/*
-Rails/HttpPositionalArguments:
- Exclude:
- - 'spec/config/initializers/rack_attack_spec.rb'
-
-# Configuration parameters: Include.
-# Include: spec/**/*.rb, test/**/*.rb
-Rails/I18nLocaleAssignment:
- Exclude:
- - 'spec/controllers/auth/registrations_controller_spec.rb'
- - 'spec/helpers/application_helper_spec.rb'
- - 'spec/requests/localization_spec.rb'
-
Rails/I18nLocaleTexts:
Exclude:
- 'lib/tasks/mastodon.rake'
- 'spec/helpers/flashes_helper_spec.rb'
-# Configuration parameters: IgnoreScopes, Include.
-# Include: app/models/**/*.rb
-Rails/InverseOf:
- Exclude:
- - 'app/models/appeal.rb'
- - 'app/models/concerns/account_interactions.rb'
- - 'app/models/custom_emoji.rb'
- - 'app/models/domain_block.rb'
- - 'app/models/follow_recommendation.rb'
- - 'app/models/instance.rb'
- - 'app/models/notification.rb'
- - 'app/models/status.rb'
-
# Configuration parameters: Include.
# Include: app/controllers/**/*.rb, app/mailers/**/*.rb
Rails/LexicallyScopedActionFilter:
@@ -1433,23 +1358,10 @@ Rails/NegateInclude:
- 'app/workers/web/push_notification_worker.rb'
- 'lib/paperclip/color_extractor.rb'
-# This cop supports unsafe autocorrection (--autocorrect-all).
-# Configuration parameters: Include.
-# Include: app/**/*.rb, config/**/*.rb, db/**/*.rb, lib/**/*.rb
-Rails/Output:
- Exclude:
- - 'lib/mastodon/ip_blocks_cli.rb'
-
Rails/OutputSafety:
Exclude:
- 'config/initializers/simple_form.rb'
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: NotNilAndNotEmpty, NotBlank, UnlessBlank.
-Rails/Present:
- Exclude:
- - 'config/initializers/content_security_policy.rb'
-
# This cop supports unsafe autocorrection (--autocorrect-all).
# Configuration parameters: Include.
# Include: **/Rakefile, **/*.rake
@@ -1533,15 +1445,6 @@ Rails/SkipsModelValidations:
- 'spec/services/follow_service_spec.rb'
- 'spec/services/update_account_service_spec.rb'
-# This cop supports unsafe autocorrection (--autocorrect-all).
-Rails/SquishedSQLHeredocs:
- Exclude:
- - 'db/migrate/20170920024819_status_ids_to_timestamp_ids.rb'
- - 'db/migrate/20180608213548_reject_following_blocked_users.rb'
- - 'db/post_migrate/20190519130537_remove_boosts_widening_audience.rb'
- - 'lib/mastodon/snowflake.rb'
- - 'lib/tasks/tests.rake'
-
Rails/TransactionExitStatement:
Exclude:
- 'app/lib/activitypub/activity/announce.rb'
diff --git a/app/controllers/admin/announcements_controller.rb b/app/controllers/admin/announcements_controller.rb
index 351b9a9910..8f9708183a 100644
--- a/app/controllers/admin/announcements_controller.rb
+++ b/app/controllers/admin/announcements_controller.rb
@@ -14,6 +14,10 @@ class Admin::AnnouncementsController < Admin::BaseController
@announcement = Announcement.new
end
+ def edit
+ authorize :announcement, :update?
+ end
+
def create
authorize :announcement, :create?
@@ -28,10 +32,6 @@ class Admin::AnnouncementsController < Admin::BaseController
end
end
- def edit
- authorize :announcement, :update?
- end
-
def update
authorize :announcement, :update?
diff --git a/app/controllers/admin/roles_controller.rb b/app/controllers/admin/roles_controller.rb
index d76aa745bd..bcfc11159c 100644
--- a/app/controllers/admin/roles_controller.rb
+++ b/app/controllers/admin/roles_controller.rb
@@ -16,6 +16,10 @@ module Admin
@role = UserRole.new
end
+ def edit
+ authorize @role, :update?
+ end
+
def create
authorize :user_role, :create?
@@ -30,10 +34,6 @@ module Admin
end
end
- def edit
- authorize @role, :update?
- end
-
def update
authorize @role, :update?
diff --git a/app/controllers/admin/rules_controller.rb b/app/controllers/admin/rules_controller.rb
index f3bed3ad8e..d31aec6ea8 100644
--- a/app/controllers/admin/rules_controller.rb
+++ b/app/controllers/admin/rules_controller.rb
@@ -11,6 +11,10 @@ module Admin
@rule = Rule.new
end
+ def edit
+ authorize @rule, :update?
+ end
+
def create
authorize :rule, :create?
@@ -24,10 +28,6 @@ module Admin
end
end
- def edit
- authorize @rule, :update?
- end
-
def update
authorize @rule, :update?
diff --git a/app/controllers/admin/warning_presets_controller.rb b/app/controllers/admin/warning_presets_controller.rb
index b376f8d9b1..efbf65b119 100644
--- a/app/controllers/admin/warning_presets_controller.rb
+++ b/app/controllers/admin/warning_presets_controller.rb
@@ -11,6 +11,10 @@ module Admin
@warning_preset = AccountWarningPreset.new
end
+ def edit
+ authorize @warning_preset, :update?
+ end
+
def create
authorize :account_warning_preset, :create?
@@ -24,10 +28,6 @@ module Admin
end
end
- def edit
- authorize @warning_preset, :update?
- end
-
def update
authorize @warning_preset, :update?
diff --git a/app/controllers/admin/webhooks_controller.rb b/app/controllers/admin/webhooks_controller.rb
index d6fb1a4eaf..1ed3fd18ab 100644
--- a/app/controllers/admin/webhooks_controller.rb
+++ b/app/controllers/admin/webhooks_controller.rb
@@ -10,12 +10,20 @@ module Admin
@webhooks = Webhook.page(params[:page])
end
+ def show
+ authorize @webhook, :show?
+ end
+
def new
authorize :webhook, :create?
@webhook = Webhook.new
end
+ def edit
+ authorize @webhook, :update?
+ end
+
def create
authorize :webhook, :create?
@@ -28,14 +36,6 @@ module Admin
end
end
- def show
- authorize @webhook, :show?
- end
-
- def edit
- authorize @webhook, :update?
- end
-
def update
authorize @webhook, :update?
diff --git a/app/controllers/api/v1/admin/domain_allows_controller.rb b/app/controllers/api/v1/admin/domain_allows_controller.rb
index 0658199f0f..61e1d481c7 100644
--- a/app/controllers/api/v1/admin/domain_allows_controller.rb
+++ b/app/controllers/api/v1/admin/domain_allows_controller.rb
@@ -16,6 +16,16 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController
PAGINATION_PARAMS = %i(limit).freeze
+ def index
+ authorize :domain_allow, :index?
+ render json: @domain_allows, each_serializer: REST::Admin::DomainAllowSerializer
+ end
+
+ def show
+ authorize @domain_allow, :show?
+ render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer
+ end
+
def create
authorize :domain_allow, :create?
@@ -29,16 +39,6 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController
render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer
end
- def index
- authorize :domain_allow, :index?
- render json: @domain_allows, each_serializer: REST::Admin::DomainAllowSerializer
- end
-
- def show
- authorize @domain_allow, :show?
- render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer
- end
-
def destroy
authorize @domain_allow, :destroy?
UnallowDomainService.new.call(@domain_allow)
diff --git a/app/controllers/api/v1/admin/domain_blocks_controller.rb b/app/controllers/api/v1/admin/domain_blocks_controller.rb
index 8b77e9717d..2538c7c7c2 100644
--- a/app/controllers/api/v1/admin/domain_blocks_controller.rb
+++ b/app/controllers/api/v1/admin/domain_blocks_controller.rb
@@ -16,6 +16,16 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
PAGINATION_PARAMS = %i(limit).freeze
+ def index
+ authorize :domain_block, :index?
+ render json: @domain_blocks, each_serializer: REST::Admin::DomainBlockSerializer
+ end
+
+ def show
+ authorize @domain_block, :show?
+ render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer
+ end
+
def create
authorize :domain_block, :create?
@@ -28,16 +38,6 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer
end
- def index
- authorize :domain_block, :index?
- render json: @domain_blocks, each_serializer: REST::Admin::DomainBlockSerializer
- end
-
- def show
- authorize @domain_block, :show?
- render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer
- end
-
def update
authorize @domain_block, :update?
@domain_block.update!(domain_block_params)
diff --git a/app/controllers/api/v1/admin/email_domain_blocks_controller.rb b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb
index e53d0b1573..850eda6224 100644
--- a/app/controllers/api/v1/admin/email_domain_blocks_controller.rb
+++ b/app/controllers/api/v1/admin/email_domain_blocks_controller.rb
@@ -18,15 +18,6 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController
limit
).freeze
- def create
- authorize :email_domain_block, :create?
-
- @email_domain_block = EmailDomainBlock.create!(resource_params)
- log_action :create, @email_domain_block
-
- render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer
- end
-
def index
authorize :email_domain_block, :index?
render json: @email_domain_blocks, each_serializer: REST::Admin::EmailDomainBlockSerializer
@@ -37,6 +28,15 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController
render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer
end
+ def create
+ authorize :email_domain_block, :create?
+
+ @email_domain_block = EmailDomainBlock.create!(resource_params)
+ log_action :create, @email_domain_block
+
+ render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer
+ end
+
def destroy
authorize @email_domain_block, :destroy?
@email_domain_block.destroy!
diff --git a/app/controllers/api/v1/admin/ip_blocks_controller.rb b/app/controllers/api/v1/admin/ip_blocks_controller.rb
index 201ab6b1ff..61c1912344 100644
--- a/app/controllers/api/v1/admin/ip_blocks_controller.rb
+++ b/app/controllers/api/v1/admin/ip_blocks_controller.rb
@@ -18,13 +18,6 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController
limit
).freeze
- def create
- authorize :ip_block, :create?
- @ip_block = IpBlock.create!(resource_params)
- log_action :create, @ip_block
- render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
- end
-
def index
authorize :ip_block, :index?
render json: @ip_blocks, each_serializer: REST::Admin::IpBlockSerializer
@@ -35,6 +28,13 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController
render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
end
+ def create
+ authorize :ip_block, :create?
+ @ip_block = IpBlock.create!(resource_params)
+ log_action :create, @ip_block
+ render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
+ end
+
def update
authorize @ip_block, :update?
@ip_block.update(resource_params)
diff --git a/app/controllers/api/v1/filters_controller.rb b/app/controllers/api/v1/filters_controller.rb
index 772791b255..ed98acce30 100644
--- a/app/controllers/api/v1/filters_controller.rb
+++ b/app/controllers/api/v1/filters_controller.rb
@@ -11,6 +11,10 @@ class Api::V1::FiltersController < Api::BaseController
render json: @filters, each_serializer: REST::V1::FilterSerializer
end
+ def show
+ render json: @filter, serializer: REST::V1::FilterSerializer
+ end
+
def create
ApplicationRecord.transaction do
filter_category = current_account.custom_filters.create!(filter_params)
@@ -20,10 +24,6 @@ class Api::V1::FiltersController < Api::BaseController
render json: @filter, serializer: REST::V1::FilterSerializer
end
- def show
- render json: @filter, serializer: REST::V1::FilterSerializer
- end
-
def update
ApplicationRecord.transaction do
@filter.update!(keyword_params)
diff --git a/app/controllers/api/v1/media_controller.rb b/app/controllers/api/v1/media_controller.rb
index f9c935bf3e..7485438dbf 100644
--- a/app/controllers/api/v1/media_controller.rb
+++ b/app/controllers/api/v1/media_controller.rb
@@ -6,6 +6,10 @@ class Api::V1::MediaController < Api::BaseController
before_action :set_media_attachment, except: [:create]
before_action :check_processing, except: [:create]
+ def show
+ render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_code_for_media_attachment
+ end
+
def create
@media_attachment = current_account.media_attachments.create!(media_attachment_params)
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer
@@ -15,10 +19,6 @@ class Api::V1::MediaController < Api::BaseController
render json: processing_error, status: 500
end
- def show
- render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_code_for_media_attachment
- end
-
def update
@media_attachment.update!(updateable_media_attachment_params)
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_code_for_media_attachment
diff --git a/app/controllers/api/v1/push/subscriptions_controller.rb b/app/controllers/api/v1/push/subscriptions_controller.rb
index 7148d63a4e..3634acf956 100644
--- a/app/controllers/api/v1/push/subscriptions_controller.rb
+++ b/app/controllers/api/v1/push/subscriptions_controller.rb
@@ -6,6 +6,10 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController
before_action :set_push_subscription
before_action :check_push_subscription, only: [:show, :update]
+ def show
+ render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
+ end
+
def create
@push_subscription&.destroy!
@@ -21,10 +25,6 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
end
- def show
- render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
- end
-
def update
@push_subscription.update!(data: data_params)
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
diff --git a/app/controllers/api/v2/filters/keywords_controller.rb b/app/controllers/api/v2/filters/keywords_controller.rb
index c63e1d986b..fe1a991944 100644
--- a/app/controllers/api/v2/filters/keywords_controller.rb
+++ b/app/controllers/api/v2/filters/keywords_controller.rb
@@ -12,13 +12,13 @@ class Api::V2::Filters::KeywordsController < Api::BaseController
render json: @keywords, each_serializer: REST::FilterKeywordSerializer
end
- def create
- @keyword = current_account.custom_filters.find(params[:filter_id]).keywords.create!(resource_params)
-
+ def show
render json: @keyword, serializer: REST::FilterKeywordSerializer
end
- def show
+ def create
+ @keyword = current_account.custom_filters.find(params[:filter_id]).keywords.create!(resource_params)
+
render json: @keyword, serializer: REST::FilterKeywordSerializer
end
diff --git a/app/controllers/api/v2/filters/statuses_controller.rb b/app/controllers/api/v2/filters/statuses_controller.rb
index 755c14cffa..2e95497a66 100644
--- a/app/controllers/api/v2/filters/statuses_controller.rb
+++ b/app/controllers/api/v2/filters/statuses_controller.rb
@@ -12,13 +12,13 @@ class Api::V2::Filters::StatusesController < Api::BaseController
render json: @status_filters, each_serializer: REST::FilterStatusSerializer
end
- def create
- @status_filter = current_account.custom_filters.find(params[:filter_id]).statuses.create!(resource_params)
-
+ def show
render json: @status_filter, serializer: REST::FilterStatusSerializer
end
- def show
+ def create
+ @status_filter = current_account.custom_filters.find(params[:filter_id]).statuses.create!(resource_params)
+
render json: @status_filter, serializer: REST::FilterStatusSerializer
end
diff --git a/app/controllers/api/v2/filters_controller.rb b/app/controllers/api/v2/filters_controller.rb
index 8ff3076cfb..2fcdeeae45 100644
--- a/app/controllers/api/v2/filters_controller.rb
+++ b/app/controllers/api/v2/filters_controller.rb
@@ -11,13 +11,13 @@ class Api::V2::FiltersController < Api::BaseController
render json: @filters, each_serializer: REST::FilterSerializer, rules_requested: true
end
- def create
- @filter = current_account.custom_filters.create!(resource_params)
-
+ def show
render json: @filter, serializer: REST::FilterSerializer, rules_requested: true
end
- def show
+ def create
+ @filter = current_account.custom_filters.create!(resource_params)
+
render json: @filter, serializer: REST::FilterSerializer, rules_requested: true
end
diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb
index 2322de465a..a49d23a9f5 100644
--- a/app/controllers/auth/registrations_controller.rb
+++ b/app/controllers/auth/registrations_controller.rb
@@ -25,16 +25,16 @@ class Auth::RegistrationsController < Devise::RegistrationsController
super(&:build_invite_request)
end
- def destroy
- not_found
- end
-
def update
super do |resource|
resource.clear_other_sessions(current_session.session_id) if resource.saved_change_to_encrypted_password?
end
end
+ def destroy
+ not_found
+ end
+
protected
def update_resource(resource, params)
diff --git a/app/controllers/filters_controller.rb b/app/controllers/filters_controller.rb
index 203241aff1..180ddf070b 100644
--- a/app/controllers/filters_controller.rb
+++ b/app/controllers/filters_controller.rb
@@ -18,6 +18,8 @@ class FiltersController < ApplicationController
@filter.keywords.build
end
+ def edit; end
+
def create
@filter = current_account.custom_filters.build(resource_params)
@@ -28,8 +30,6 @@ class FiltersController < ApplicationController
end
end
- def edit; end
-
def update
if @filter.update(resource_params)
redirect_to filters_path
diff --git a/app/controllers/settings/applications_controller.rb b/app/controllers/settings/applications_controller.rb
index e6e137c2bc..d4b7205681 100644
--- a/app/controllers/settings/applications_controller.rb
+++ b/app/controllers/settings/applications_controller.rb
@@ -8,6 +8,8 @@ class Settings::ApplicationsController < Settings::BaseController
@applications = current_user.applications.order(id: :desc).page(params[:page])
end
+ def show; end
+
def new
@application = Doorkeeper::Application.new(
redirect_uri: Doorkeeper.configuration.native_redirect_uri,
@@ -15,8 +17,6 @@ class Settings::ApplicationsController < Settings::BaseController
)
end
- def show; end
-
def create
@application = current_user.applications.build(application_params)
diff --git a/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb b/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb
index 5a9029a426..3f9e713572 100644
--- a/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb
+++ b/app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb
@@ -8,9 +8,8 @@ module Settings
before_action :require_otp_enabled
before_action :require_webauthn_enabled, only: [:index, :destroy]
- def new; end
-
def index; end
+ def new; end
def options
current_user.update(webauthn_id: WebAuthn.generate_user_id) unless current_user.webauthn_id
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index e3da47d9b0..879752cf76 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -118,7 +118,7 @@ module ApplicationHelper
end
def check_icon
- content_tag(:svg, tag(:path, 'fill-rule': 'evenodd', 'clip-rule': 'evenodd', d: 'M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z'), xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 20 20', fill: 'currentColor')
+ content_tag(:svg, tag.path('fill-rule': 'evenodd', 'clip-rule': 'evenodd', d: 'M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z'), xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 20 20', fill: 'currentColor')
end
def visibility_icon(status)
@@ -152,7 +152,7 @@ module ApplicationHelper
end
def opengraph(property, content)
- tag(:meta, content: content, property: property)
+ tag.meta(content: content, property: property)
end
def body_classes
@@ -162,7 +162,7 @@ module ApplicationHelper
output << 'system-font' if current_account&.user&.setting_system_font_ui
output << (current_account&.user&.setting_reduce_motion ? 'reduce-motion' : 'no-reduce-motion')
output << 'rtl' if locale_direction == 'rtl'
- output.reject(&:blank?).join(' ')
+ output.compact_blank.join(' ')
end
def cdn_host
diff --git a/app/helpers/branding_helper.rb b/app/helpers/branding_helper.rb
index 548c954110..2b9c233c23 100644
--- a/app/helpers/branding_helper.rb
+++ b/app/helpers/branding_helper.rb
@@ -11,11 +11,11 @@ module BrandingHelper
end
def _logo_as_symbol_wordmark
- content_tag(:svg, tag(:use, href: '#logo-symbol-wordmark'), viewBox: '0 0 261 66', class: 'logo logo--wordmark')
+ content_tag(:svg, tag.use(href: '#logo-symbol-wordmark'), viewBox: '0 0 261 66', class: 'logo logo--wordmark')
end
def _logo_as_symbol_icon
- content_tag(:svg, tag(:use, href: '#logo-symbol-icon'), viewBox: '0 0 79 79', class: 'logo logo--icon')
+ content_tag(:svg, tag.use(href: '#logo-symbol-icon'), viewBox: '0 0 79 79', class: 'logo logo--icon')
end
def render_logo
diff --git a/app/helpers/statuses_helper.rb b/app/helpers/statuses_helper.rb
index 9f87593674..f1f1ea872e 100644
--- a/app/helpers/statuses_helper.rb
+++ b/app/helpers/statuses_helper.rb
@@ -51,14 +51,14 @@ module StatusesHelper
end
def status_description(status)
- components = [[media_summary(status), status_text_summary(status)].reject(&:blank?).join(' · ')]
+ components = [[media_summary(status), status_text_summary(status)].compact_blank.join(' · ')]
if status.spoiler_text.blank?
components << status.text
components << poll_summary(status)
end
- components.reject(&:blank?).join("\n\n")
+ components.compact_blank.join("\n\n")
end
def stream_link_target
diff --git a/app/javascript/flavours/glitch/actions/compose.js b/app/javascript/flavours/glitch/actions/compose.js
index 9c0ef83df5..f0d50ccf13 100644
--- a/app/javascript/flavours/glitch/actions/compose.js
+++ b/app/javascript/flavours/glitch/actions/compose.js
@@ -441,16 +441,12 @@ export function changeUploadCompose(id, params) {
// Editing already-attached media is deferred to editing the post itself.
// For simplicity's sake, fake an API reply.
if (media && !media.get('unattached')) {
- let { description, focus } = params;
- const data = media.toJS();
-
- if (description) {
- data.description = description;
- }
+ const { focus, ...other } = params;
+ const data = { ...media.toJS(), ...other };
if (focus) {
- focus = focus.split(',');
- data.meta = { focus: { x: parseFloat(focus[0]), y: parseFloat(focus[1]) } };
+ const [x, y] = focus.split(',');
+ data.meta = { focus: { x: parseFloat(x), y: parseFloat(y) } };
}
dispatch(changeUploadComposeSuccess(data, true));
diff --git a/app/javascript/flavours/glitch/actions/picture_in_picture.js b/app/javascript/flavours/glitch/actions/picture_in_picture.js
index 6b9ff7709e..898375abeb 100644
--- a/app/javascript/flavours/glitch/actions/picture_in_picture.js
+++ b/app/javascript/flavours/glitch/actions/picture_in_picture.js
@@ -20,7 +20,7 @@ export const PICTURE_IN_PICTURE_REMOVE = 'PICTURE_IN_PICTURE_REMOVE';
* @param {string} accountId
* @param {string} playerType
* @param {MediaProps} props
- * @return {object}
+ * @returns {object}
*/
export const deployPictureInPicture = (statusId, accountId, playerType, props) => {
// @ts-expect-error
diff --git a/app/javascript/flavours/glitch/actions/streaming.js b/app/javascript/flavours/glitch/actions/streaming.js
index 8c161ea83c..dbf668ccbd 100644
--- a/app/javascript/flavours/glitch/actions/streaming.js
+++ b/app/javascript/flavours/glitch/actions/streaming.js
@@ -27,7 +27,7 @@ const { messages } = getLocale();
/**
* @param {number} max
- * @return {number}
+ * @returns {number}
*/
const randomUpTo = max =>
Math.floor(Math.random() * Math.floor(max));
@@ -40,7 +40,7 @@ const randomUpTo = max =>
* @param {function(Function, Function): void} [options.fallback]
* @param {function(): void} [options.fillGaps]
* @param {function(object): boolean} [options.accept]
- * @return {function(): void}
+ * @returns {function(): void}
*/
export const connectTimelineStream = (timelineId, channelName, params = {}, options = {}) =>
connectStream(channelName, params, (dispatch, getState) => {
@@ -132,7 +132,7 @@ const refreshHomeTimelineAndNotification = (dispatch, done) => {
};
/**
- * @return {function(): void}
+ * @returns {function(): void}
*/
export const connectUserStream = () =>
// @ts-expect-error
@@ -141,7 +141,7 @@ export const connectUserStream = () =>
/**
* @param {Object} options
* @param {boolean} [options.onlyMedia]
- * @return {function(): void}
+ * @returns {function(): void}
*/
export const connectCommunityStream = ({ onlyMedia } = {}) =>
connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => (fillCommunityTimelineGaps({ onlyMedia })) });
@@ -151,7 +151,7 @@ export const connectCommunityStream = ({ onlyMedia } = {}) =>
* @param {boolean} [options.onlyMedia]
* @param {boolean} [options.onlyRemote]
* @param {boolean} [options.allowLocalOnly]
- * @return {function(): void}
+ * @returns {function(): void}
*/
export const connectPublicStream = ({ onlyMedia, onlyRemote, allowLocalOnly } = {}) =>
connectTimelineStream(`public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => fillPublicTimelineGaps({ onlyMedia, onlyRemote, allowLocalOnly }) });
@@ -161,20 +161,20 @@ export const connectPublicStream = ({ onlyMedia, onlyRemote, allowLocalOnly } =
* @param {string} tagName
* @param {boolean} onlyLocal
* @param {function(object): boolean} accept
- * @return {function(): void}
+ * @returns {function(): void}
*/
export const connectHashtagStream = (columnId, tagName, onlyLocal, accept) =>
connectTimelineStream(`hashtag:${columnId}${onlyLocal ? ':local' : ''}`, `hashtag${onlyLocal ? ':local' : ''}`, { tag: tagName }, { accept });
/**
- * @return {function(): void}
+ * @returns {function(): void}
*/
export const connectDirectStream = () =>
connectTimelineStream('direct', 'direct');
/**
* @param {string} listId
- * @return {function(): void}
+ * @returns {function(): void}
*/
export const connectListStream = listId =>
connectTimelineStream(`list:${listId}`, 'list', { list: listId }, { fillGaps: () => fillListTimelineGaps(listId) });
diff --git a/app/javascript/flavours/glitch/components/blurhash.jsx b/app/javascript/flavours/glitch/components/blurhash.jsx
index 07cd31b6ca..f5c58e04ef 100644
--- a/app/javascript/flavours/glitch/components/blurhash.jsx
+++ b/app/javascript/flavours/glitch/components/blurhash.jsx
@@ -20,9 +20,8 @@ import PropTypes from 'prop-types';
/**
* Component that is used to render blurred of blurhash string
- *
* @param {BlurhashProps} param1 Props of the component
- * @returns Canvas which will render blurred region element to embed
+ * @returns {JSX.Element} Canvas which will render blurred region element to embed
*/
function Blurhash({
hash,
diff --git a/app/javascript/flavours/glitch/components/common_counter.jsx b/app/javascript/flavours/glitch/components/common_counter.jsx
index dd9b62de9b..9964be5166 100644
--- a/app/javascript/flavours/glitch/components/common_counter.jsx
+++ b/app/javascript/flavours/glitch/components/common_counter.jsx
@@ -4,7 +4,6 @@ import { FormattedMessage } from 'react-intl';
/**
* Returns custom renderer for one of the common counter types
- *
* @param {"statuses" | "following" | "followers"} counterType
* Type of the counter
* @param {boolean} isBold Whether display number must be displayed in bold
diff --git a/app/javascript/flavours/glitch/components/hashtag.jsx b/app/javascript/flavours/glitch/components/hashtag.jsx
index c4701055c7..235aaeb3c1 100644
--- a/app/javascript/flavours/glitch/components/hashtag.jsx
+++ b/app/javascript/flavours/glitch/components/hashtag.jsx
@@ -35,7 +35,6 @@ class SilentErrorBoundary extends React.Component {
/**
* Used to render counter of how much people are talking about hashtag
- *
* @type {(displayNumber: JSX.Element, pluralReady: number) => JSX.Element}
*/
export const accountsCountRenderer = (displayNumber, pluralReady) => (
diff --git a/app/javascript/flavours/glitch/components/icon.jsx b/app/javascript/flavours/glitch/components/icon.jsx
deleted file mode 100644
index d8a17722fe..0000000000
--- a/app/javascript/flavours/glitch/components/icon.jsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import classNames from 'classnames';
-
-export default class Icon extends React.PureComponent {
-
- static propTypes = {
- id: PropTypes.string.isRequired,
- className: PropTypes.string,
- fixedWidth: PropTypes.bool,
- };
-
- render () {
- const { id, className, fixedWidth, ...other } = this.props;
-
- return (
-
- );
- }
-
-}
diff --git a/app/javascript/flavours/glitch/components/icon.tsx b/app/javascript/flavours/glitch/components/icon.tsx
new file mode 100644
index 0000000000..d85fff6ef6
--- /dev/null
+++ b/app/javascript/flavours/glitch/components/icon.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import classNames from 'classnames';
+
+type Props = {
+ id: string;
+ className?: string;
+ fixedWidth?: boolean;
+ children?: never;
+ [key: string]: any;
+}
+export const Icon: React.FC = ({ id, className, fixedWidth, ...other }) =>
+ ;
+
+export default Icon;
diff --git a/app/javascript/flavours/glitch/components/icon_with_badge.jsx b/app/javascript/flavours/glitch/components/icon_with_badge.jsx
deleted file mode 100644
index a42ba45892..0000000000
--- a/app/javascript/flavours/glitch/components/icon_with_badge.jsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import Icon from 'flavours/glitch/components/icon';
-
-const formatNumber = num => num > 40 ? '40+' : num;
-
-const IconWithBadge = ({ id, count, issueBadge, className }) => (
-
-
- {count > 0 && {formatNumber(count)}}
- {issueBadge && }
-
-);
-
-IconWithBadge.propTypes = {
- id: PropTypes.string.isRequired,
- count: PropTypes.number.isRequired,
- issueBadge: PropTypes.bool,
- className: PropTypes.string,
-};
-
-export default IconWithBadge;
diff --git a/app/javascript/flavours/glitch/components/icon_with_badge.tsx b/app/javascript/flavours/glitch/components/icon_with_badge.tsx
new file mode 100644
index 0000000000..487bf326ad
--- /dev/null
+++ b/app/javascript/flavours/glitch/components/icon_with_badge.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { Icon } from './icon';
+
+const formatNumber = (num: number): number | string => num > 40 ? '40+' : num;
+
+type Props = {
+ id: string;
+ count: number;
+ issueBadge: boolean;
+ className: string;
+}
+const IconWithBadge: React.FC = ({ id, count, issueBadge, className }) => (
+
+
+ {count > 0 && {formatNumber(count)}}
+ {issueBadge && }
+
+);
+
+export default IconWithBadge;
diff --git a/app/javascript/mastodon/components/relative_timestamp.jsx b/app/javascript/flavours/glitch/components/relative_timestamp.tsx
similarity index 85%
rename from app/javascript/mastodon/components/relative_timestamp.jsx
rename to app/javascript/flavours/glitch/components/relative_timestamp.tsx
index e6c3e08805..89cad06658 100644
--- a/app/javascript/mastodon/components/relative_timestamp.jsx
+++ b/app/javascript/flavours/glitch/components/relative_timestamp.tsx
@@ -1,6 +1,5 @@
import React from 'react';
-import { injectIntl, defineMessages } from 'react-intl';
-import PropTypes from 'prop-types';
+import { injectIntl, defineMessages, InjectedIntl } from 'react-intl';
const messages = defineMessages({
today: { id: 'relative_time.today', defaultMessage: 'today' },
@@ -28,12 +27,12 @@ const dateFormatOptions = {
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
-};
+} as const;
const shortDateFormatOptions = {
month: 'short',
day: 'numeric',
-};
+} as const;
const SECOND = 1000;
const MINUTE = 1000 * 60;
@@ -42,7 +41,7 @@ const DAY = 1000 * 60 * 60 * 24;
const MAX_DELAY = 2147483647;
-const selectUnits = delta => {
+const selectUnits = (delta: number) => {
const absDelta = Math.abs(delta);
if (absDelta < MINUTE) {
@@ -56,7 +55,7 @@ const selectUnits = delta => {
return 'day';
};
-const getUnitDelay = units => {
+const getUnitDelay = (units: string) => {
switch (units) {
case 'second':
return SECOND;
@@ -71,7 +70,7 @@ const getUnitDelay = units => {
}
};
-export const timeAgoString = (intl, date, now, year, timeGiven, short) => {
+export const timeAgoString = (intl: InjectedIntl, date: Date, now: number, year: number, timeGiven: boolean, short?: boolean) => {
const delta = now - date.getTime();
let relativeTime;
@@ -99,7 +98,7 @@ export const timeAgoString = (intl, date, now, year, timeGiven, short) => {
return relativeTime;
};
-const timeRemainingString = (intl, date, now, timeGiven = true) => {
+const timeRemainingString = (intl: InjectedIntl, date: Date, now: number, timeGiven = true) => {
const delta = date.getTime() - now;
let relativeTime;
@@ -121,15 +120,17 @@ const timeRemainingString = (intl, date, now, timeGiven = true) => {
return relativeTime;
};
-class RelativeTimestamp extends React.Component {
-
- static propTypes = {
- intl: PropTypes.object.isRequired,
- timestamp: PropTypes.string.isRequired,
- year: PropTypes.number.isRequired,
- futureDate: PropTypes.bool,
- short: PropTypes.bool,
- };
+type Props = {
+ intl: InjectedIntl;
+ timestamp: string;
+ year: number;
+ futureDate?: boolean;
+ short?: boolean;
+}
+type States = {
+ now: number;
+}
+class RelativeTimestamp extends React.Component {
state = {
now: this.props.intl.now(),
@@ -140,7 +141,9 @@ class RelativeTimestamp extends React.Component {
short: true,
};
- shouldComponentUpdate (nextProps, nextState) {
+ _timer: number | undefined;
+
+ shouldComponentUpdate (nextProps: Props, nextState: States) {
// As of right now the locale doesn't change without a new page load,
// but we might as well check in case that ever changes.
return this.props.timestamp !== nextProps.timestamp ||
@@ -148,7 +151,7 @@ class RelativeTimestamp extends React.Component {
this.state.now !== nextState.now;
}
- componentWillReceiveProps (nextProps) {
+ UNSAFE_componentWillReceiveProps (nextProps: Props) {
if (this.props.timestamp !== nextProps.timestamp) {
this.setState({ now: this.props.intl.now() });
}
@@ -158,16 +161,16 @@ class RelativeTimestamp extends React.Component {
this._scheduleNextUpdate(this.props, this.state);
}
- componentWillUpdate (nextProps, nextState) {
+ UNSAFE_componentWillUpdate (nextProps: Props, nextState: States) {
this._scheduleNextUpdate(nextProps, nextState);
}
componentWillUnmount () {
- clearTimeout(this._timer);
+ window.clearTimeout(this._timer);
}
- _scheduleNextUpdate (props, state) {
- clearTimeout(this._timer);
+ _scheduleNextUpdate (props: Props, state: States) {
+ window.clearTimeout(this._timer);
const { timestamp } = props;
const delta = (new Date(timestamp)).getTime() - state.now;
@@ -176,7 +179,7 @@ class RelativeTimestamp extends React.Component {
const updateInterval = 1000 * 10;
const delay = delta < 0 ? Math.max(updateInterval, unitDelay - unitRemainder) : Math.max(updateInterval, unitRemainder);
- this._timer = setTimeout(() => {
+ this._timer = window.setTimeout(() => {
this.setState({ now: this.props.intl.now() });
}, delay);
}
diff --git a/app/javascript/flavours/glitch/components/short_number.jsx b/app/javascript/flavours/glitch/components/short_number.jsx
index 861d0bc589..0c40941c0d 100644
--- a/app/javascript/flavours/glitch/components/short_number.jsx
+++ b/app/javascript/flavours/glitch/components/short_number.jsx
@@ -24,7 +24,6 @@ import { FormattedMessage, FormattedNumber } from 'react-intl';
/**
* Component that renders short big number to a shorter version
- *
* @param {ShortNumberProps} param0 Props for the component
* @returns {JSX.Element} Rendered number
*/
@@ -58,7 +57,6 @@ ShortNumber.propTypes = {
/**
* Renders short number into corresponding localizable react fragment
- *
* @param {ShortNumberCounterProps} param0 Props for the component
* @returns {JSX.Element} FormattedMessage ready to be embedded in code
*/
diff --git a/app/javascript/flavours/glitch/features/audio/index.jsx b/app/javascript/flavours/glitch/features/audio/index.jsx
index ba88427915..f5bffb9738 100644
--- a/app/javascript/flavours/glitch/features/audio/index.jsx
+++ b/app/javascript/flavours/glitch/features/audio/index.jsx
@@ -476,7 +476,7 @@ class Audio extends React.PureComponent {
}
return (
-
+
({
});
const mapDispatchToProps = dispatch => ({
- /** Set options in the redux store */
+ /**
+ * Set options in the redux store
+ * @param opts
+ */
setOpt: (opts) => dispatch(doodleSet(opts)),
- /** Submit doodle for upload */
+ /**
+ * Submit doodle for upload
+ * @param file
+ */
submit: (file) => dispatch(uploadCompose([file])),
});
@@ -230,7 +236,10 @@ class DoodleModal extends ImmutablePureComponent {
//endregion
- /** Key up handler */
+ /**
+ * Key up handler
+ * @param e
+ */
handleKeyUp = (e) => {
if (e.target.nodeName === 'INPUT') return;
@@ -256,7 +265,10 @@ class DoodleModal extends ImmutablePureComponent {
}
};
- /** Key down handler */
+ /**
+ * Key down handler
+ * @param e
+ */
handleKeyDown = (e) => {
if (e.key === 'Control' || e.key === 'Meta') {
this.controlHeld = true;
@@ -292,7 +304,6 @@ class DoodleModal extends ImmutablePureComponent {
/**
* Set reference to the canvas element.
* This is called during component init
- *
* @param elem - canvas element
*/
setCanvasRef = (elem) => {
@@ -334,7 +345,6 @@ class DoodleModal extends ImmutablePureComponent {
/**
* Set up the sketcher instance
- *
* @param canvas - canvas element. Null if we're just resizing
*/
initSketcher (canvas = null) {
@@ -433,7 +443,6 @@ class DoodleModal extends ImmutablePureComponent {
/**
* Palette left click.
* Selects Fg color (or Bg, if Control/Meta is held)
- *
* @param e - event
*/
onPaletteClick = (e) => {
@@ -452,7 +461,6 @@ class DoodleModal extends ImmutablePureComponent {
/**
* Palette right click.
* Selects Bg color
- *
* @param e - event
*/
onPaletteRClick = (e) => {
@@ -463,7 +471,6 @@ class DoodleModal extends ImmutablePureComponent {
/**
* Handle click on the Draw mode button
- *
* @param e - event
*/
setModeDraw = (e) => {
@@ -473,7 +480,6 @@ class DoodleModal extends ImmutablePureComponent {
/**
* Handle click on the Fill mode button
- *
* @param e - event
*/
setModeFill = (e) => {
@@ -483,7 +489,6 @@ class DoodleModal extends ImmutablePureComponent {
/**
* Handle click on Smooth checkbox
- *
* @param e - event
*/
tglSmooth = (e) => {
@@ -493,7 +498,6 @@ class DoodleModal extends ImmutablePureComponent {
/**
* Handle click on Adaptive checkbox
- *
* @param e - event
*/
tglAdaptive = (e) => {
@@ -503,7 +507,6 @@ class DoodleModal extends ImmutablePureComponent {
/**
* Handle change of the Weight input field
- *
* @param e - event
*/
setWeight = (e) => {
@@ -512,7 +515,6 @@ class DoodleModal extends ImmutablePureComponent {
/**
* Set size - clalback from the select box
- *
* @param e - event
*/
changeSize = (e) => {
diff --git a/app/javascript/flavours/glitch/stream.js b/app/javascript/flavours/glitch/stream.js
index 8a60f12b48..66d249f6cd 100644
--- a/app/javascript/flavours/glitch/stream.js
+++ b/app/javascript/flavours/glitch/stream.js
@@ -17,10 +17,10 @@ let sharedConnection;
*/
/**
- * @typedef StreamEvent
- * @property {string} event
- * @property {object} payload
- */
+ * @typedef StreamEvent
+ * @property {string} event
+ * @property {object} payload
+ */
/**
* @type {Array.}
@@ -126,7 +126,7 @@ const sharedCallbacks = {
/**
* @param {string} channelName
* @param {Object.} params
- * @return {string}
+ * @returns {string}
*/
const channelNameWithInlineParams = (channelName, params) => {
if (Object.keys(params).length === 0) {
@@ -140,7 +140,7 @@ const channelNameWithInlineParams = (channelName, params) => {
* @param {string} channelName
* @param {Object.} params
* @param {function(Function, Function): { onConnect: (function(): void), onReceive: (function(StreamEvent): void), onDisconnect: (function(): void) }} callbacks
- * @return {function(): void}
+ * @returns {function(): void}
*/
// @ts-expect-error
export const connectStream = (channelName, params, callbacks) => (dispatch, getState) => {
@@ -227,7 +227,7 @@ const handleEventSourceMessage = (e, received) => {
* @param {string} accessToken
* @param {string} channelName
* @param {{ connected: Function, received: function(StreamEvent): void, disconnected: Function, reconnected: Function }} callbacks
- * @return {WebSocketClient | EventSource}
+ * @returns {WebSocketClient | EventSource}
*/
const createConnection = (streamingAPIBaseURL, accessToken, channelName, { connected, received, disconnected, reconnected }) => {
const params = channelName.split('&');
diff --git a/app/javascript/flavours/glitch/styles/components/media.scss b/app/javascript/flavours/glitch/styles/components/media.scss
index 4cfd9007b4..2f36edd19b 100644
--- a/app/javascript/flavours/glitch/styles/components/media.scss
+++ b/app/javascript/flavours/glitch/styles/components/media.scss
@@ -381,6 +381,7 @@
background: darken($ui-base-color, 8%);
border-radius: 4px;
padding-bottom: 44px;
+ width: 100%;
&.editable {
border-radius: 0;
diff --git a/app/javascript/flavours/glitch/utils/scrollbar.js b/app/javascript/flavours/glitch/utils/scrollbar.js
index 929b036d66..b3f543ffb3 100644
--- a/app/javascript/flavours/glitch/utils/scrollbar.js
+++ b/app/javascript/flavours/glitch/utils/scrollbar.js
@@ -2,7 +2,7 @@
let cachedScrollbarWidth = null;
/**
- * @return {number}
+ * @returns {number}
*/
const getActualScrollbarWidth = () => {
const outer = document.createElement('div');
@@ -20,7 +20,7 @@ const getActualScrollbarWidth = () => {
};
/**
- * @return {number}
+ * @returns {number}
*/
export const getScrollbarWidth = () => {
if (cachedScrollbarWidth !== null) {
diff --git a/app/javascript/mastodon/actions/compose.js b/app/javascript/mastodon/actions/compose.js
index 7e36bd22aa..9dcdcf84c1 100644
--- a/app/javascript/mastodon/actions/compose.js
+++ b/app/javascript/mastodon/actions/compose.js
@@ -408,16 +408,12 @@ export function changeUploadCompose(id, params) {
// Editing already-attached media is deferred to editing the post itself.
// For simplicity's sake, fake an API reply.
if (media && !media.get('unattached')) {
- let { description, focus } = params;
- const data = media.toJS();
-
- if (description) {
- data.description = description;
- }
+ const { focus, ...other } = params;
+ const data = { ...media.toJS(), ...other };
if (focus) {
- focus = focus.split(',');
- data.meta = { focus: { x: parseFloat(focus[0]), y: parseFloat(focus[1]) } };
+ const [x, y] = focus.split(',');
+ data.meta = { focus: { x: parseFloat(x), y: parseFloat(y) } };
}
dispatch(changeUploadComposeSuccess(data, true));
diff --git a/app/javascript/mastodon/actions/picture_in_picture.js b/app/javascript/mastodon/actions/picture_in_picture.js
index 6b9ff7709e..898375abeb 100644
--- a/app/javascript/mastodon/actions/picture_in_picture.js
+++ b/app/javascript/mastodon/actions/picture_in_picture.js
@@ -20,7 +20,7 @@ export const PICTURE_IN_PICTURE_REMOVE = 'PICTURE_IN_PICTURE_REMOVE';
* @param {string} accountId
* @param {string} playerType
* @param {MediaProps} props
- * @return {object}
+ * @returns {object}
*/
export const deployPictureInPicture = (statusId, accountId, playerType, props) => {
// @ts-expect-error
diff --git a/app/javascript/mastodon/actions/streaming.js b/app/javascript/mastodon/actions/streaming.js
index 4d4ea83e45..41cb99e2dd 100644
--- a/app/javascript/mastodon/actions/streaming.js
+++ b/app/javascript/mastodon/actions/streaming.js
@@ -27,7 +27,7 @@ const { messages } = getLocale();
/**
* @param {number} max
- * @return {number}
+ * @returns {number}
*/
const randomUpTo = max =>
Math.floor(Math.random() * Math.floor(max));
@@ -40,7 +40,7 @@ const randomUpTo = max =>
* @param {function(Function, Function): void} [options.fallback]
* @param {function(): void} [options.fillGaps]
* @param {function(object): boolean} [options.accept]
- * @return {function(): void}
+ * @returns {function(): void}
*/
export const connectTimelineStream = (timelineId, channelName, params = {}, options = {}) =>
connectStream(channelName, params, (dispatch, getState) => {
@@ -132,7 +132,7 @@ const refreshHomeTimelineAndNotification = (dispatch, done) => {
};
/**
- * @return {function(): void}
+ * @returns {function(): void}
*/
export const connectUserStream = () =>
// @ts-expect-error
@@ -141,7 +141,7 @@ export const connectUserStream = () =>
/**
* @param {Object} options
* @param {boolean} [options.onlyMedia]
- * @return {function(): void}
+ * @returns {function(): void}
*/
export const connectCommunityStream = ({ onlyMedia } = {}) =>
connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => (fillCommunityTimelineGaps({ onlyMedia })) });
@@ -150,7 +150,7 @@ export const connectCommunityStream = ({ onlyMedia } = {}) =>
* @param {Object} options
* @param {boolean} [options.onlyMedia]
* @param {boolean} [options.onlyRemote]
- * @return {function(): void}
+ * @returns {function(): void}
*/
export const connectPublicStream = ({ onlyMedia, onlyRemote } = {}) =>
connectTimelineStream(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => fillPublicTimelineGaps({ onlyMedia, onlyRemote }) });
@@ -160,20 +160,20 @@ export const connectPublicStream = ({ onlyMedia, onlyRemote } = {}) =>
* @param {string} tagName
* @param {boolean} onlyLocal
* @param {function(object): boolean} accept
- * @return {function(): void}
+ * @returns {function(): void}
*/
export const connectHashtagStream = (columnId, tagName, onlyLocal, accept) =>
connectTimelineStream(`hashtag:${columnId}${onlyLocal ? ':local' : ''}`, `hashtag${onlyLocal ? ':local' : ''}`, { tag: tagName }, { accept });
/**
- * @return {function(): void}
+ * @returns {function(): void}
*/
export const connectDirectStream = () =>
connectTimelineStream('direct', 'direct');
/**
* @param {string} listId
- * @return {function(): void}
+ * @returns {function(): void}
*/
export const connectListStream = listId =>
connectTimelineStream(`list:${listId}`, 'list', { list: listId }, { fillGaps: () => fillListTimelineGaps(listId) });
diff --git a/app/javascript/mastodon/components/blurhash.jsx b/app/javascript/mastodon/components/blurhash.jsx
index 07cd31b6ca..f5c58e04ef 100644
--- a/app/javascript/mastodon/components/blurhash.jsx
+++ b/app/javascript/mastodon/components/blurhash.jsx
@@ -20,9 +20,8 @@ import PropTypes from 'prop-types';
/**
* Component that is used to render blurred of blurhash string
- *
* @param {BlurhashProps} param1 Props of the component
- * @returns Canvas which will render blurred region element to embed
+ * @returns {JSX.Element} Canvas which will render blurred region element to embed
*/
function Blurhash({
hash,
diff --git a/app/javascript/mastodon/components/common_counter.jsx b/app/javascript/mastodon/components/common_counter.jsx
index dd9b62de9b..9964be5166 100644
--- a/app/javascript/mastodon/components/common_counter.jsx
+++ b/app/javascript/mastodon/components/common_counter.jsx
@@ -4,7 +4,6 @@ import { FormattedMessage } from 'react-intl';
/**
* Returns custom renderer for one of the common counter types
- *
* @param {"statuses" | "following" | "followers"} counterType
* Type of the counter
* @param {boolean} isBold Whether display number must be displayed in bold
diff --git a/app/javascript/mastodon/components/hashtag.jsx b/app/javascript/mastodon/components/hashtag.jsx
index 8821c66f02..254fae2fe0 100644
--- a/app/javascript/mastodon/components/hashtag.jsx
+++ b/app/javascript/mastodon/components/hashtag.jsx
@@ -37,7 +37,6 @@ class SilentErrorBoundary extends React.Component {
/**
* Used to render counter of how much people are talking about hashtag
- *
* @type {(displayNumber: JSX.Element, pluralReady: number) => JSX.Element}
*/
export const accountsCountRenderer = (displayNumber, pluralReady) => (
diff --git a/app/javascript/mastodon/components/icon.jsx b/app/javascript/mastodon/components/icon.jsx
deleted file mode 100644
index d3d7c591d6..0000000000
--- a/app/javascript/mastodon/components/icon.jsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import classNames from 'classnames';
-
-export default class Icon extends React.PureComponent {
-
- static propTypes = {
- id: PropTypes.string.isRequired,
- className: PropTypes.string,
- fixedWidth: PropTypes.bool,
- };
-
- render () {
- const { id, className, fixedWidth, ...other } = this.props;
-
- return (
-
- );
- }
-
-}
diff --git a/app/javascript/mastodon/components/icon.tsx b/app/javascript/mastodon/components/icon.tsx
new file mode 100644
index 0000000000..d85fff6ef6
--- /dev/null
+++ b/app/javascript/mastodon/components/icon.tsx
@@ -0,0 +1,14 @@
+import React from 'react';
+import classNames from 'classnames';
+
+type Props = {
+ id: string;
+ className?: string;
+ fixedWidth?: boolean;
+ children?: never;
+ [key: string]: any;
+}
+export const Icon: React.FC = ({ id, className, fixedWidth, ...other }) =>
+ ;
+
+export default Icon;
diff --git a/app/javascript/mastodon/components/icon_with_badge.jsx b/app/javascript/mastodon/components/icon_with_badge.jsx
deleted file mode 100644
index 4214eccfde..0000000000
--- a/app/javascript/mastodon/components/icon_with_badge.jsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import Icon from 'mastodon/components/icon';
-
-const formatNumber = num => num > 40 ? '40+' : num;
-
-const IconWithBadge = ({ id, count, issueBadge, className }) => (
-
-
- {count > 0 && {formatNumber(count)}}
- {issueBadge && }
-
-);
-
-IconWithBadge.propTypes = {
- id: PropTypes.string.isRequired,
- count: PropTypes.number.isRequired,
- issueBadge: PropTypes.bool,
- className: PropTypes.string,
-};
-
-export default IconWithBadge;
diff --git a/app/javascript/mastodon/components/icon_with_badge.tsx b/app/javascript/mastodon/components/icon_with_badge.tsx
new file mode 100644
index 0000000000..487bf326ad
--- /dev/null
+++ b/app/javascript/mastodon/components/icon_with_badge.tsx
@@ -0,0 +1,20 @@
+import React from 'react';
+import { Icon } from './icon';
+
+const formatNumber = (num: number): number | string => num > 40 ? '40+' : num;
+
+type Props = {
+ id: string;
+ count: number;
+ issueBadge: boolean;
+ className: string;
+}
+const IconWithBadge: React.FC = ({ id, count, issueBadge, className }) => (
+
+
+ {count > 0 && {formatNumber(count)}}
+ {issueBadge && }
+
+);
+
+export default IconWithBadge;
diff --git a/app/javascript/flavours/glitch/components/relative_timestamp.jsx b/app/javascript/mastodon/components/relative_timestamp.tsx
similarity index 85%
rename from app/javascript/flavours/glitch/components/relative_timestamp.jsx
rename to app/javascript/mastodon/components/relative_timestamp.tsx
index e6c3e08805..89cad06658 100644
--- a/app/javascript/flavours/glitch/components/relative_timestamp.jsx
+++ b/app/javascript/mastodon/components/relative_timestamp.tsx
@@ -1,6 +1,5 @@
import React from 'react';
-import { injectIntl, defineMessages } from 'react-intl';
-import PropTypes from 'prop-types';
+import { injectIntl, defineMessages, InjectedIntl } from 'react-intl';
const messages = defineMessages({
today: { id: 'relative_time.today', defaultMessage: 'today' },
@@ -28,12 +27,12 @@ const dateFormatOptions = {
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
-};
+} as const;
const shortDateFormatOptions = {
month: 'short',
day: 'numeric',
-};
+} as const;
const SECOND = 1000;
const MINUTE = 1000 * 60;
@@ -42,7 +41,7 @@ const DAY = 1000 * 60 * 60 * 24;
const MAX_DELAY = 2147483647;
-const selectUnits = delta => {
+const selectUnits = (delta: number) => {
const absDelta = Math.abs(delta);
if (absDelta < MINUTE) {
@@ -56,7 +55,7 @@ const selectUnits = delta => {
return 'day';
};
-const getUnitDelay = units => {
+const getUnitDelay = (units: string) => {
switch (units) {
case 'second':
return SECOND;
@@ -71,7 +70,7 @@ const getUnitDelay = units => {
}
};
-export const timeAgoString = (intl, date, now, year, timeGiven, short) => {
+export const timeAgoString = (intl: InjectedIntl, date: Date, now: number, year: number, timeGiven: boolean, short?: boolean) => {
const delta = now - date.getTime();
let relativeTime;
@@ -99,7 +98,7 @@ export const timeAgoString = (intl, date, now, year, timeGiven, short) => {
return relativeTime;
};
-const timeRemainingString = (intl, date, now, timeGiven = true) => {
+const timeRemainingString = (intl: InjectedIntl, date: Date, now: number, timeGiven = true) => {
const delta = date.getTime() - now;
let relativeTime;
@@ -121,15 +120,17 @@ const timeRemainingString = (intl, date, now, timeGiven = true) => {
return relativeTime;
};
-class RelativeTimestamp extends React.Component {
-
- static propTypes = {
- intl: PropTypes.object.isRequired,
- timestamp: PropTypes.string.isRequired,
- year: PropTypes.number.isRequired,
- futureDate: PropTypes.bool,
- short: PropTypes.bool,
- };
+type Props = {
+ intl: InjectedIntl;
+ timestamp: string;
+ year: number;
+ futureDate?: boolean;
+ short?: boolean;
+}
+type States = {
+ now: number;
+}
+class RelativeTimestamp extends React.Component {
state = {
now: this.props.intl.now(),
@@ -140,7 +141,9 @@ class RelativeTimestamp extends React.Component {
short: true,
};
- shouldComponentUpdate (nextProps, nextState) {
+ _timer: number | undefined;
+
+ shouldComponentUpdate (nextProps: Props, nextState: States) {
// As of right now the locale doesn't change without a new page load,
// but we might as well check in case that ever changes.
return this.props.timestamp !== nextProps.timestamp ||
@@ -148,7 +151,7 @@ class RelativeTimestamp extends React.Component {
this.state.now !== nextState.now;
}
- componentWillReceiveProps (nextProps) {
+ UNSAFE_componentWillReceiveProps (nextProps: Props) {
if (this.props.timestamp !== nextProps.timestamp) {
this.setState({ now: this.props.intl.now() });
}
@@ -158,16 +161,16 @@ class RelativeTimestamp extends React.Component {
this._scheduleNextUpdate(this.props, this.state);
}
- componentWillUpdate (nextProps, nextState) {
+ UNSAFE_componentWillUpdate (nextProps: Props, nextState: States) {
this._scheduleNextUpdate(nextProps, nextState);
}
componentWillUnmount () {
- clearTimeout(this._timer);
+ window.clearTimeout(this._timer);
}
- _scheduleNextUpdate (props, state) {
- clearTimeout(this._timer);
+ _scheduleNextUpdate (props: Props, state: States) {
+ window.clearTimeout(this._timer);
const { timestamp } = props;
const delta = (new Date(timestamp)).getTime() - state.now;
@@ -176,7 +179,7 @@ class RelativeTimestamp extends React.Component {
const updateInterval = 1000 * 10;
const delay = delta < 0 ? Math.max(updateInterval, unitDelay - unitRemainder) : Math.max(updateInterval, unitRemainder);
- this._timer = setTimeout(() => {
+ this._timer = window.setTimeout(() => {
this.setState({ now: this.props.intl.now() });
}, delay);
}
diff --git a/app/javascript/mastodon/components/short_number.jsx b/app/javascript/mastodon/components/short_number.jsx
index 861d0bc589..0c40941c0d 100644
--- a/app/javascript/mastodon/components/short_number.jsx
+++ b/app/javascript/mastodon/components/short_number.jsx
@@ -24,7 +24,6 @@ import { FormattedMessage, FormattedNumber } from 'react-intl';
/**
* Component that renders short big number to a shorter version
- *
* @param {ShortNumberProps} param0 Props for the component
* @returns {JSX.Element} Rendered number
*/
@@ -58,7 +57,6 @@ ShortNumber.propTypes = {
/**
* Renders short number into corresponding localizable react fragment
- *
* @param {ShortNumberCounterProps} param0 Props for the component
* @returns {JSX.Element} FormattedMessage ready to be embedded in code
*/
diff --git a/app/javascript/mastodon/features/audio/index.jsx b/app/javascript/mastodon/features/audio/index.jsx
index df40b48f00..53f24c6a39 100644
--- a/app/javascript/mastodon/features/audio/index.jsx
+++ b/app/javascript/mastodon/features/audio/index.jsx
@@ -470,7 +470,7 @@ class Audio extends React.PureComponent {
}
return (
-
+
Did you know? You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!",
+ "onboarding.tips.2fa": "Знаете ли, че? Може да защитите акаунта си, настройвайки двуфакторното удостоверяване в настройките на акаунта си. То работи с всяко приложение TOTP по ваш избор, не е необходим номер телефона!",
"onboarding.tips.accounts_from_other_servers": "Знаете ли, че? Откак Mastodon е децентрализиран, някои профили, които срещате ще бъдат разположени на сървъри различен от вашия. И още може да взаимодействате с тях безпроблемно! Сървърът им е втората половина от потребителското им име!",
- "onboarding.tips.migration": "Did you know? If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
+ "onboarding.tips.migration": "Знаете ли, че? Ако се чувствате, че {domain} не е чудесен избор на сървър в бъдуще, може да се преместите на друг сървър на Mastodon без да загубите последователите си. Дори може да сте съдържатели на свой собствен сървър!",
"onboarding.tips.verification": "Did you know? You can verify your account by putting a link to your Mastodon profile on your own website and adding the website to your profile. No fees or documents necessary!",
"password_confirmation.exceeds_maxlength": "Потвърждаването на паролата превишава максимално допустимата дължина за парола",
"password_confirmation.mismatching": "Потвърждаването на паролата не съвпада",
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index 899994c9e3..b26cfab756 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "স্টেকট্রেস ক্লিপবোর্ডে কপি করুন",
"errors.unexpected_crash.report_issue": "সমস্যার প্রতিবেদন করুন",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "সংবাদ",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json
index 18f0065a5f..1c697daa64 100644
--- a/app/javascript/mastodon/locales/br.json
+++ b/app/javascript/mastodon/locales/br.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Eilañ ar roudoù diveugañ er golver",
"errors.unexpected_crash.report_issue": "Danevellañ ur fazi",
"explore.search_results": "Disoc'hoù an enklask",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Furchal",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/bs.json b/app/javascript/mastodon/locales/bs.json
index 7bb07b7b0d..01db7ea7d7 100644
--- a/app/javascript/mastodon/locales/bs.json
+++ b/app/javascript/mastodon/locales/bs.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 5e660a4892..17d676d299 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copia stacktrace al porta-retalls",
"errors.unexpected_crash.report_issue": "Informa d'un problema",
"explore.search_results": "Resultats de la cerca",
- "explore.suggested_follows": "Per a tu",
+ "explore.suggested_follows": "Persones",
"explore.title": "Explora",
"explore.trending_links": "Notícies",
"explore.trending_statuses": "Tuts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "No tornis a mostrar aquesta pantalla",
"onboarding.actions.go_to_explore": "Mira què és tendència",
"onboarding.actions.go_to_home": "Vés a la teva línia de temps inici",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Malauradament, cap resultat pot ser mostrat ara mateix. Pots provar de fer servir la cerca o visitar la pàgina Explora per a trobar gent a qui seguir o provar-ho de nou més tard.",
"onboarding.follows.lead": "Tu tens cura de la teva línia de temps inici. Com més gent segueixis, més activa i interessant serà. Aquests perfils poden ser un bon punt d'inici—sempre pots acabar deixant-los de seguir!",
"onboarding.follows.title": "Popular a Mastodon",
diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json
index a8bb16a8b8..a58ea542f4 100644
--- a/app/javascript/mastodon/locales/ckb.json
+++ b/app/javascript/mastodon/locales/ckb.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "کۆپیکردنی ستێکتراسی بۆ کلیپ بۆرد",
"errors.unexpected_crash.report_issue": "کێشەی گوزارشت",
"explore.search_results": "ئەنجامەکانی گەڕان",
- "explore.suggested_follows": "بۆ تۆ",
+ "explore.suggested_follows": "People",
"explore.title": "گەڕان",
"explore.trending_links": "هەواڵەکان",
"explore.trending_statuses": "بڵاوکراوەکان",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index 36aed38209..f509e23941 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Cupià stacktrace nant'à u fermacarta",
"errors.unexpected_crash.report_issue": "Palisà prublemu",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index 1a9a4b5200..8d6dfdbdf2 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Zkopírovat stacktrace do schránky",
"errors.unexpected_crash.report_issue": "Nahlásit problém",
"explore.search_results": "Výsledky hledání",
- "explore.suggested_follows": "Pro vás",
+ "explore.suggested_follows": "People",
"explore.title": "Objevit",
"explore.trending_links": "Zprávy",
"explore.trending_statuses": "Příspěvky",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Příště nezobrazovat tuto obrazovku",
"onboarding.actions.go_to_explore": "Podívejte se, co je populární",
"onboarding.actions.go_to_home": "Přejít na svůj domovský feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Populární na Mastodonu",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index 490fdd2e36..82e5aafb6a 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -182,7 +182,7 @@
"conversation.with": "Gyda {names}",
"copypaste.copied": "Wedi ei gopïo",
"copypaste.copy": "Copïo",
- "copypaste.copy_to_clipboard": "Copy to clipboard",
+ "copypaste.copy_to_clipboard": "Copïo i'r clipfwrdd",
"directory.federated": "O'r ffedysawd cyfan",
"directory.local": "O {domain} yn unig",
"directory.new_arrivals": "Defnyddwyr newydd",
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copïo'r olrhain stac i'r clipfwrdd",
"errors.unexpected_crash.report_issue": "Rhoi gwybod am broblem",
"explore.search_results": "Canlyniadau chwilio",
- "explore.suggested_follows": "I chi",
+ "explore.suggested_follows": "Pobl",
"explore.title": "Darganfod",
"explore.trending_links": "Newyddion",
"explore.trending_statuses": "Postiadau",
@@ -440,33 +440,34 @@
"notifications_permission_banner.enable": "Galluogi hysbysiadau bwrdd gwaith",
"notifications_permission_banner.how_to_control": "I dderbyn hysbysiadau pan nad yw Mastodon ar agor, galluogwch hysbysiadau bwrdd gwaith. Gallwch reoli'n union pa fathau o ryngweithiadau sy'n cynhyrchu hysbysiadau bwrdd gwaith trwy'r botwm {icon} uchod unwaith y byddant wedi'u galluogi.",
"notifications_permission_banner.title": "Peidiwch colli dim",
- "onboarding.action.back": "Take me back",
- "onboarding.actions.back": "Take me back",
- "onboarding.actions.close": "Don't show this screen again",
- "onboarding.actions.go_to_explore": "See what's trending",
- "onboarding.actions.go_to_home": "Go to your home feed",
- "onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
- "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
- "onboarding.follows.title": "Popular on Mastodon",
- "onboarding.share.lead": "Let people know how they can find you on Mastodon!",
- "onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
- "onboarding.share.next_steps": "Possible next steps:",
- "onboarding.share.title": "Share your profile",
- "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
- "onboarding.start.skip": "Want to skip right ahead?",
- "onboarding.start.title": "You've made it!",
- "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
- "onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
- "onboarding.steps.publish_status.body": "Say hello to the world.",
- "onboarding.steps.publish_status.title": "Make your first post",
- "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.tips.2fa": "Did you know? You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!",
- "onboarding.tips.accounts_from_other_servers": "Did you know? Since Mastodon is decentralized, some profiles you come across will be hosted on servers other than yours. And yet you can interact with them seamlessly! Their server is in the second half of their username!",
- "onboarding.tips.migration": "Did you know? If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
- "onboarding.tips.verification": "Did you know? You can verify your account by putting a link to your Mastodon profile on your own website and adding the website to your profile. No fees or documents necessary!",
+ "onboarding.action.back": "Ewch â fi yn ôl",
+ "onboarding.actions.back": "Ewch â fi yn ôl",
+ "onboarding.actions.close": "Peidio â dangos y sgrin hon eto",
+ "onboarding.actions.go_to_explore": "Gweld beth yw'r tuedd",
+ "onboarding.actions.go_to_home": "Ewch i'ch ffrwd gartref",
+ "onboarding.compose.template": "Helo, #Mastodon!",
+ "onboarding.follows.empty": "Yn anffodus, nid oes modd dangos unrhyw ganlyniadau ar hyn o bryd. Gallwch geisio defnyddio chwilio neu bori'r dudalen archwilio i ddod o hyd i bobl i'w dilyn, neu ceisio eto yn nes ymlaen.",
+ "onboarding.follows.lead": "Rydych chi'n curadu eich ffrwd gartref eich hun. Po fwyaf o bobl y byddwch chi'n eu dilyn, y mwyaf egnïol a diddorol fydd hi. Gall y proffiliau hyn fod yn fan cychwyn da - gallwch chi bob amser eu dad-ddilyn yn nes ymlaen!",
+ "onboarding.follows.title": "Yn boblogaidd ar Mastodon",
+ "onboarding.share.lead": "Cofiwch ddweud wrth bobl sut y gallan nhw ddod o hyd i chi ar Mastodon!",
+ "onboarding.share.message": "Fi yw {username} ar #Mastodon! Dewch i'm dilyn i yn {url}",
+ "onboarding.share.next_steps": "Camau nesaf posib:",
+ "onboarding.share.title": "Rhannwch eich proffil",
+ "onboarding.start.lead": "Mae eich cyfrif Mastodon newydd yn barod! Dyma sut y gallwch chi wneud y gorau ohono:",
+ "onboarding.start.skip": "Eisiau mynd syth yn eich blaen?",
+ "onboarding.start.title": "Rydych chi wedi cyrraedd!",
+ "onboarding.steps.follow_people.body": "Rydych chi'n curadu eich ffrwd eich hun. Gadewch i ni ei lenwi â phobl ddiddorol.",
+ "onboarding.steps.follow_people.title": "Dilynwch {count, plural, one {one person} other {# people}}",
+ "onboarding.steps.publish_status.body": "Dywedwch helo wrth y byd.",
+ "onboarding.steps.publish_status.title": "Gwnewch eich postiad cyntaf",
+ "onboarding.steps.setup_profile.body": "Mae eraill yn fwy tebygol o ryngweithio â chi gyda phroffil wedi'i lenwi.",
+ "onboarding.steps.setup_profile.title": "Cyfaddaswch eich proffil",
+ "onboarding.steps.share_profile.body": "Gadewch i'ch ffrindiau wybod sut i ddod o hyd i chi ar Mastodon!",
+ "onboarding.steps.share_profile.title": "Rhannwch eich proffil",
+ "onboarding.tips.2fa": "Oeddech chi'n gwybod? Gallwch ddiogelu'ch cyfrif trwy osod dilysiad dau ffactor yng ngosodiadau eich cyfrif. Mae'n gweithio gydag unrhyw app TOTP o'ch dewis, nid oes angen rhif ffôn!",
+ "onboarding.tips.accounts_from_other_servers": "Oeddech chi'n gwybod? Gan fod Mastodon wedi'i ddatganoli, bydd rhai proffiliau y dewch ar eu traws yn cael eu cynnal ar weinyddion heblaw eich un chi. Ac eto gallwch chi ryngweithio â nhw yn hawdd! Mae eu gweinydd yn ail hanner eu henw defnyddiwr!",
+ "onboarding.tips.migration": "Oeddech chi'n gwybod? Os ydych chi'n teimlo nad yw {domain} yn ddewis gweinydd gwych i chi i'r dyfodol, gallwch chi symud i weinydd Mastodon arall heb golli'ch dilynwyr. Gallwch chi hyd yn oed gynnal eich gweinydd eich hun!",
+ "onboarding.tips.verification": "Oeddech chi'n gwybod? Gallwch wirio'ch cyfrif trwy roi dolen i'ch proffil Mastodon ar eich gwefan eich hun ac ychwanegu'r wefan at eich proffil. Nid oes angen ffioedd na dogfennau!",
"password_confirmation.exceeds_maxlength": "Mae'r cadarnhad cyfrinair yn fwy nag uchafswm hyd y cyfrinair",
"password_confirmation.mismatching": "Nid yw'r cadarnhad cyfrinair yn cyfateb",
"picture_in_picture.restore": "Rhowch ef yn ôl",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index e1850ba854..205f2a8136 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopiér stacktrace til udklipsholderen",
"errors.unexpected_crash.report_issue": "Anmeld problem",
"explore.search_results": "Søgeresultater",
- "explore.suggested_follows": "Til dig",
+ "explore.suggested_follows": "People",
"explore.title": "Udforsk",
"explore.trending_links": "Nyheder",
"explore.trending_statuses": "Indlæg",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Vis ikke denne skærm igen",
"onboarding.actions.go_to_explore": "Se, hvad som trender",
"onboarding.actions.go_to_home": "Gå til hjemme-feed'et",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Ingen resultater tilgængelige pt. Prøv at bruge søgning eller gennemse siden for at finde personer at følge, eller forsøg igen senere.",
"onboarding.follows.lead": "Man kurerer sin eget hjemme-feed. Jo flere personer man følger, des mere aktiv og interessant vil det være. Disse profiler kan være et godt udgangspunkt – de kan altid fjernes senere!",
"onboarding.follows.title": "Populært på Mastodon",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index bfd3c0b43f..461470fe68 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -218,7 +218,7 @@
"empty_column.blocks": "Du hast bisher keine Profile gesperrt.",
"empty_column.bookmarked_statuses": "Du hast bisher keine Beiträge als Lesezeichen abgelegt. Sobald du einen Beitrag als Lesezeichen speicherst, wird er hier erscheinen.",
"empty_column.community": "Die lokale Timeline ist leer. Schreibe einen öffentlichen Beitrag, um den Stein ins Rollen zu bringen!",
- "empty_column.direct": "Du hast noch keine Direktnachrichten erhalten. Sobald du eine private Nachricht sendest oder empfängst, wird sie hier zu sehen sein.",
+ "empty_column.direct": "Du hast noch keine Direktnachrichten. Sobald du eine Nachricht sendest oder empfängst, wird sie hier zu sehen sein.",
"empty_column.domain_blocks": "Du hast noch keine Domains gesperrt.",
"empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder vorbei!",
"empty_column.favourited_statuses": "Du hast noch keine Beiträge favorisiert. Sobald du einen favorisierst, wird er hier erscheinen.",
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Fehlerdiagnose in die Zwischenablage kopieren",
"errors.unexpected_crash.report_issue": "Fehler melden",
"explore.search_results": "Suchergebnisse",
- "explore.suggested_follows": "Für dich",
+ "explore.suggested_follows": "Profile",
"explore.title": "Entdecken",
"explore.trending_links": "Neuigkeiten",
"explore.trending_statuses": "Beiträge",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Diese Seite nicht mehr anzeigen",
"onboarding.actions.go_to_explore": "Sieh, was gerade angesagt ist",
"onboarding.actions.go_to_home": "Gehe zu deiner Startseite",
+ "onboarding.compose.template": "Hallo #Mastodon!",
"onboarding.follows.empty": "Bedauerlicherweise können aktuell keine Ergebnisse angezeigt werden. Du kannst die Suche verwenden oder den Reiter „Entdecken“ auswählen, um neue Leute zum Folgen zu finden – oder du versuchst es später erneut.",
"onboarding.follows.lead": "Du verwaltest deine eigene Startseite. Je mehr Leuten du folgst, desto aktiver und interessanter wird sie sein. Diese Profile können ein guter Start sein – du kannst ihnen später immer noch entfolgen!",
"onboarding.follows.title": "Beliebt auf Mastodon",
@@ -461,7 +462,7 @@
"onboarding.steps.publish_status.title": "Erstelle deinen ersten Beitrag",
"onboarding.steps.setup_profile.body": "Mit einem ausgefüllten Profil interagieren andere eher mit dir.",
"onboarding.steps.setup_profile.title": "Personalisiere dein Profil",
- "onboarding.steps.share_profile.body": "Lass deine Freund*innen wissen, wie sie dich auf Mastodon finden können!",
+ "onboarding.steps.share_profile.body": "Lass Deine FreundInnen wissen, wie sie Dich auf Mastodon finden können!",
"onboarding.steps.share_profile.title": "Teile dein Profil",
"onboarding.tips.2fa": "Wusstest du schon? Du kannst die Sicherheit deines Kontos erhöhen, indem du die Zwei-Faktor-Authentisierung in deinen Kontoeinstellungen aktivierst. Dafür ist keine Telefonnummer notwendig und es funktioniert jede beliebige TOTP-App!",
"onboarding.tips.accounts_from_other_servers": "Wusstest du schon? Da Mastodon dezentralisiert ist, werden einige Profile, denen du begegnest, auf anderen Servern als deinem bereitgestellt. Und trotzdem kannst du uneingeschränkt mit ihnen interagieren! Der Servername befindet sich in der zweiten Hälfte ihres Profilnamens!",
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index d9a04c3939..0f44b80afb 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Αντιγραφή μηνυμάτων κώδικα στο πρόχειρο",
"errors.unexpected_crash.report_issue": "Αναφορά προβλήματος",
"explore.search_results": "Αποτελέσματα αναζήτησης",
- "explore.suggested_follows": "Για σένα",
+ "explore.suggested_follows": "Άτομα",
"explore.title": "Εξερεύνηση",
"explore.trending_links": "Νέα",
"explore.trending_statuses": "Αναρτήσεις",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Να μην εμφανιστεί ξανά αυτό",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Πηγαίνετε στην αρχική σας ροή",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Δημοφιλή στο Mastodon",
diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json
index 7ffe42b846..86aa015ad2 100644
--- a/app/javascript/mastodon/locales/en-GB.json
+++ b/app/javascript/mastodon/locales/en-GB.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index 07e1c85305..f45c87a5da 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopii stakspuron en tondujo",
"errors.unexpected_crash.report_issue": "Raporti problemon",
"explore.search_results": "Serĉaj rezultoj",
- "explore.suggested_follows": "Por vi",
+ "explore.suggested_follows": "Homoj",
"explore.title": "Esplori",
"explore.trending_links": "Novaĵoj",
"explore.trending_statuses": "Afiŝoj",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index ca18c161be..b1b6f9d7a9 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copiar stacktrace al portapapeles",
"errors.unexpected_crash.report_issue": "Informar problema",
"explore.search_results": "Resultados de búsqueda",
- "explore.suggested_follows": "Para vos",
+ "explore.suggested_follows": "Cuentas",
"explore.title": "Explorá",
"explore.trending_links": "Noticias",
"explore.trending_statuses": "Mensajes",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "No mostrar esta pantalla de nuevo",
"onboarding.actions.go_to_explore": "Mirá qué está en tendencia",
"onboarding.actions.go_to_home": "Andá a tu línea temporal principal",
+ "onboarding.compose.template": "¡Hola, #Mastodon!",
"onboarding.follows.empty": "Desafortunadamente, no se pueden mostrar resultados en este momento. Podés intentar usar la búsqueda o navegar por la página de exploración para encontrar cuentas a las que seguir, o intentarlo de nuevo más tarde.",
"onboarding.follows.lead": "Vos completás tu propia línea temporal principal. Cuantas más cuentas sigas, más activa e interesante se volverá. Estos perfiles pueden ser un buen punto de partida; ¡podés dejar de seguir estas cuentas cuando quieras!",
"onboarding.follows.title": "Popular en Mastodon",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index 91fe630a83..4deafbbeb3 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copiar el seguimiento de pila en el portapapeles",
"errors.unexpected_crash.report_issue": "Informar problema",
"explore.search_results": "Resultados de búsqueda",
- "explore.suggested_follows": "Para ti",
+ "explore.suggested_follows": "People",
"explore.title": "Descubrir",
"explore.trending_links": "Noticias",
"explore.trending_statuses": "Publicaciones",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "No volver a mostrar esta pantalla",
"onboarding.actions.go_to_explore": "Ver qué es tendencia",
"onboarding.actions.go_to_home": "Ir al inicio",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Desafortunadamente, no se pueden mostrar resultados en este momento. Puedes intentar usar la búsqueda o navegar por la página de exploración para encontrar gente a la que seguir, o inténtalo de nuevo más tarde.",
"onboarding.follows.lead": "Tienes que personalizar tu inicio. Cuantas más personas sigas, más activo e interesante será. Estos perfiles pueden ser un buen punto de partida, ¡pero siempre puedes dejar de seguirlos más adelante!",
"onboarding.follows.title": "Popular en Mastodon",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index 418cbab7dd..915c858001 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -32,7 +32,7 @@
"account.follow": "Seguir",
"account.followers": "Seguidores",
"account.followers.empty": "Todavía nadie sigue a este usuario.",
- "account.followers_counter": "{count, plural, one {{counter} seguidor} other {{counter} seguidores}}",
+ "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}",
"account.following": "Siguiendo",
"account.following_counter": "{count, plural, other {Siguiendo a {counter}}}",
"account.follows.empty": "Este usuario todavía no sigue a nadie.",
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copiar el seguimiento de pila en el portapapeles",
"errors.unexpected_crash.report_issue": "Informar de un problema/error",
"explore.search_results": "Resultados de búsqueda",
- "explore.suggested_follows": "Para ti",
+ "explore.suggested_follows": "Personas",
"explore.title": "Explorar",
"explore.trending_links": "Noticias",
"explore.trending_statuses": "Publicaciones",
@@ -365,7 +365,7 @@
"media_gallery.toggle_visible": "Cambiar visibilidad",
"moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te has mudado a {movedToAccount}.",
"mute_modal.duration": "Duración",
- "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?",
+ "mute_modal.hide_notifications": "¿Ocultar notificaciones de este usuario?",
"mute_modal.indefinite": "Indefinida",
"navigation_bar.about": "Acerca de",
"navigation_bar.blocks": "Usuarios bloqueados",
@@ -445,11 +445,12 @@
"onboarding.actions.close": "No volver a mostrar esta pantalla",
"onboarding.actions.go_to_explore": "Ver qué es tendencia",
"onboarding.actions.go_to_home": "Ir al inicio",
- "onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
+ "onboarding.compose.template": "¡Hola #Mastodon!",
+ "onboarding.follows.empty": "Desafortunadamente, no se pueden mostrar resultados en este momento. Puedes intentar usar la búsqueda o navegar por la página de exploración para encontrar gente a la que seguir, o inténtalo de nuevo más tarde.",
"onboarding.follows.lead": "Tienes que personalizar tu línea de inicio. Cuantas más personas sigas, más activa e interesante será. Estos perfiles pueden ser un buen punto de partida, ¡pero siempre puedes dejar de seguirlos más adelante!",
"onboarding.follows.title": "Popular en Mastodon",
"onboarding.share.lead": "¡Dile a la gente cómo te pueden encontrar en Mastodon!",
- "onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
+ "onboarding.share.message": "¡Soy {username} en #Mastodon! Ven a seguirme en {url}",
"onboarding.share.next_steps": "Posibles siguientes pasos:",
"onboarding.share.title": "Comparte tu perfil",
"onboarding.start.lead": "Tu nueva cuenta de Mastodon está lista. Así es como puedes sacarle el máximo provecho:",
@@ -463,10 +464,10 @@
"onboarding.steps.setup_profile.title": "Personaliza tu perfil",
"onboarding.steps.share_profile.body": "¡Dile a tus amigos cómo encontrarte en Mastodon!",
"onboarding.steps.share_profile.title": "Comparte tu perfil",
- "onboarding.tips.2fa": "Did you know? You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!",
+ "onboarding.tips.2fa": "¿Sabías? Puedes proteger tu cuenta configurando la autenticación de dos factores en la configuración de tu cuenta. Funciona con cualquier aplicación TOTP de tu elección, ¡no necesitas número de teléfono!",
"onboarding.tips.accounts_from_other_servers": "¿Sabías que? Como Mastodon es descentralizado, algunos perfiles que encuentras están alojados en servidores distintos del tuyo. Y sin embargo, ¡puedes interactuar con ellos! ¡Su servidor corresponde a la segunda mitad de su nombre de usuario!",
- "onboarding.tips.migration": "Did you know? If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
- "onboarding.tips.verification": "Did you know? You can verify your account by putting a link to your Mastodon profile on your own website and adding the website to your profile. No fees or documents necessary!",
+ "onboarding.tips.migration": "¿Sabías? Si en el futuro piensas que {domain} no es el servidor adecuado para ti, puedes moverte a otro servidor de Mastodon sin perder a tus seguidores. ¡Incluso puedes alojar tu propio servidor!",
+ "onboarding.tips.verification": "¿Sabías? Puedes verificar tu cuenta poniendo un enlace a tu perfil de Mastodon en tu propio sitio web y añadiendo el sitio web a tu perfil. ¡No se necesitan comisiones ni documentos!",
"password_confirmation.exceeds_maxlength": "La contraseña de confirmación excede la longitud máxima de la contraseña",
"password_confirmation.mismatching": "La contraseña de confirmación no coincide",
"picture_in_picture.restore": "Restaurar",
diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json
index 0db20482be..981dd05c15 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopeeri stacktrace lõikelauale",
"errors.unexpected_crash.report_issue": "Teavita veast",
"explore.search_results": "Otsitulemused",
- "explore.suggested_follows": "Kasutajad",
+ "explore.suggested_follows": "People",
"explore.title": "Avasta",
"explore.trending_links": "Uudised",
"explore.trending_statuses": "Postitused",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Ära näita seda ekraani uuesti",
"onboarding.actions.go_to_explore": "Vaata, mis on trendikas",
"onboarding.actions.go_to_home": "Mine oma koduvoogu",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "Haldad ise oma koduvoogu. Mida rohkemaid inimesi jälgid, seda aktiivsem ja huvitavam see on. Need profiilid võiksid olla head alustamiskohad — saad nende jälgimise alati lõpetada!",
"onboarding.follows.title": "Populaarne Mastodonis",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index 3949a468e8..4ace654f16 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -182,7 +182,7 @@
"conversation.with": "Hauekin: {names}",
"copypaste.copied": "Kopiatuta",
"copypaste.copy": "Kopiatu",
- "copypaste.copy_to_clipboard": "Copy to clipboard",
+ "copypaste.copy_to_clipboard": "Kopiatu arbelera",
"directory.federated": "Fedibertso ezagunekoak",
"directory.local": "{domain} domeinukoak soilik",
"directory.new_arrivals": "Iritsi berriak",
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopiatu irteera arbelera",
"errors.unexpected_crash.report_issue": "Eman arazoaren berri",
"explore.search_results": "Bilaketaren emaitzak",
- "explore.suggested_follows": "Zuretzako",
+ "explore.suggested_follows": "Jendea",
"explore.title": "Arakatu",
"explore.trending_links": "Berriak",
"explore.trending_statuses": "Tutak",
@@ -440,33 +440,34 @@
"notifications_permission_banner.enable": "Gaitu mahaigaineko jakinarazpenak",
"notifications_permission_banner.how_to_control": "Mastodon irekita ez dagoenean jakinarazpenak jasotzeko, gaitu mahaigaineko jakinarazpenak. Mahaigaineko jakinarazpenak ze elkarrekintzak eragingo dituzten zehazki kontrolatu dezakezu goiko {icon} botoia erabiliz, gaituta daudenean.",
"notifications_permission_banner.title": "Ez galdu ezer inoiz",
- "onboarding.action.back": "Take me back",
- "onboarding.actions.back": "Take me back",
- "onboarding.actions.close": "Don't show this screen again",
- "onboarding.actions.go_to_explore": "See what's trending",
- "onboarding.actions.go_to_home": "Go to your home feed",
- "onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
- "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
- "onboarding.follows.title": "Popular on Mastodon",
- "onboarding.share.lead": "Let people know how they can find you on Mastodon!",
- "onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
- "onboarding.share.next_steps": "Possible next steps:",
- "onboarding.share.title": "Share your profile",
- "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
- "onboarding.start.skip": "Want to skip right ahead?",
- "onboarding.start.title": "You've made it!",
- "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
- "onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
- "onboarding.steps.publish_status.body": "Say hello to the world.",
- "onboarding.steps.publish_status.title": "Make your first post",
+ "onboarding.action.back": "Atzera egin",
+ "onboarding.actions.back": "Atzera egin",
+ "onboarding.actions.close": "Ez erakutsi pantaila hau berriro",
+ "onboarding.actions.go_to_explore": "Ikusi zer dagoen pil-pilean",
+ "onboarding.actions.go_to_home": "Joan hasierara",
+ "onboarding.compose.template": "Kaixo #Mastodon!",
+ "onboarding.follows.empty": "Zoritxarrez, ezin da emaitzik erakutsi orain. Bilaketa erabil dezakezu edo Arakatu orrian jendea bilatu jarraitzeko, edo saiatu geroago.",
+ "onboarding.follows.lead": "Hasierako orria zuk pertsonalizatzen duzu. Gero eta jende gehiago jarraitu, orduan eta aktibo eta interesgarriago izango da. Profil hauek egokiak izan daitezke hasteko, beti ere, geroago jarraitzeari utz diezazkiekezu!",
+ "onboarding.follows.title": "Mastodonen pil-pilean",
+ "onboarding.share.lead": "Ezagutarazi jendeari nola aurki zaitzaketen Mastodonen!",
+ "onboarding.share.message": "{username} naiz #Mastodon-en! Jarrai iezadazu hemen: {url}",
+ "onboarding.share.next_steps": "Hurrengo urrats posibleak:",
+ "onboarding.share.title": "Partekatu zure profila",
+ "onboarding.start.lead": "Zure Mastodoneko kontu berria prest dago. Jakin nola atera diezaioekun etekin handiena hemen:",
+ "onboarding.start.skip": "Urrats guztiak saltatu nahi dituzu?",
+ "onboarding.start.title": "Lortu duzu!",
+ "onboarding.steps.follow_people.body": "Zure jarioa zuk pertsonalizatzen duzu. Bete dezagun jende interesgarriaz.",
+ "onboarding.steps.follow_people.title": "Jarraitu {count, plural, one {pertsona bat} other {# pertsona}}",
+ "onboarding.steps.publish_status.body": "Agurtu munduari.",
+ "onboarding.steps.publish_status.title": "Sortu zure lehen argitalpena",
"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.tips.2fa": "Did you know? You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!",
+ "onboarding.tips.2fa": "Bazenekien? Zure kontua babes dezakezu bi faktoreko autentifikazioa zure kontuko ezarpenetan ezarriaz. Darabilzun edozein TOTP aplikaziorekin dabil, ez da telefono-zenbakirik behar!",
"onboarding.tips.accounts_from_other_servers": "Did you know? Since Mastodon is decentralized, some profiles you come across will be hosted on servers other than yours. And yet you can interact with them seamlessly! Their server is in the second half of their username!",
- "onboarding.tips.migration": "Did you know? If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
- "onboarding.tips.verification": "Did you know? You can verify your account by putting a link to your Mastodon profile on your own website and adding the website to your profile. No fees or documents necessary!",
+ "onboarding.tips.migration": "Bazenekien? Uste baduzu {domain} ez dela aukera on bat zuretzako etorkizunari begira, beste Mastodoneko instantzia batera alda zaitezke zure jarraitzaileak galdu gabe. Zure zerbitzaria ostata dezakezu eta guzti!",
+ "onboarding.tips.verification": "Bazenekien? Zure kontua egiazta dezakezu zure webgunean zure Mastodoneko profilaren esteka erantsiaz, zure webgunea Mastodoneko profilean ere duzularik. Kuota edo dokumenturik gabe!",
"password_confirmation.exceeds_maxlength": "Pasahitzaren berrespenak pasahitzaren gehienezko luzera gainditzen du",
"password_confirmation.mismatching": "Pasahitzaren berrespena ez dator bat",
"picture_in_picture.restore": "Leheneratu",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 68b4f3f953..fb5c979efc 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "رونوشت از جزئیات اشکال",
"errors.unexpected_crash.report_issue": "گزارش مشکل",
"explore.search_results": "نتایج جستوجو",
- "explore.suggested_follows": "برای شما",
+ "explore.suggested_follows": "People",
"explore.title": "کاوش",
"explore.trending_links": "اخبار",
"explore.trending_statuses": "فرستهها",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index 74e9c7c7c4..f8be936603 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopioi pinon jäljitys leikepöydälle",
"errors.unexpected_crash.report_issue": "Ilmoita ongelmasta",
"explore.search_results": "Hakutulokset",
- "explore.suggested_follows": "Sinulle",
+ "explore.suggested_follows": "Ihmiset",
"explore.title": "Selaa",
"explore.trending_links": "Uutiset",
"explore.trending_statuses": "Julkaisut",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Älä näytä tätä uudelleen",
"onboarding.actions.go_to_explore": "Katso, mikä on trendikästä",
"onboarding.actions.go_to_home": "Siirry kotisyötteeseesi",
+ "onboarding.compose.template": "Tervehdys, #Mastodon!",
"onboarding.follows.empty": "Valitettavasti tuloksia ei voida näyttää juuri nyt. Voit kokeilla hakua tai selata hakusivua löytääksesi seurattavaa, tai yrittää myöhemmin uudelleen.",
"onboarding.follows.lead": "Kokoat oman kotisyötteesi itse. Mitä enemmän ihmisiä seuraat, sitä aktiivisempi ja kiinnostavampi syöte on. Nämä profiilit voivat olla alkuun hyvä lähtökohta — voit aina lopettaa niiden seuraamisen myöhemmin!",
"onboarding.follows.title": "Suosittua Mastodonissa",
diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json
index f42d1a1d6c..56c4a26d23 100644
--- a/app/javascript/mastodon/locales/fo.json
+++ b/app/javascript/mastodon/locales/fo.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Avrita stakkaslóðina til setiborðið",
"errors.unexpected_crash.report_issue": "Fráboða trupulleika",
"explore.search_results": "Leitiúrslit",
- "explore.suggested_follows": "Til tín",
+ "explore.suggested_follows": "Fólk",
"explore.title": "Rannsaka",
"explore.trending_links": "Tíðindi",
"explore.trending_statuses": "Postar",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Ikki vísa hendan skermin aftur",
"onboarding.actions.go_to_explore": "Sí rákið",
"onboarding.actions.go_to_home": "Far til heimarásina",
+ "onboarding.compose.template": "Hey #Mastodon!",
"onboarding.follows.empty": "Tíverri kunnu eingi úrslit vísast beint nú. Tú kanst royna at brúka leiting ella at kaga gjøgnum Rannsaka síðuna fyri at finna fólk at fylgja - ella royna aftur seinni.",
"onboarding.follows.lead": "Tú snikkar sjálv/ur tína heimarás til. Jú fleiri fólk, tú fylgir, jú virknari og áhugaverdari verður tað. Hesir vangar kunnu vera ein góð byrjan — tú kanst altíð gevast at fylgja teimum seinni!",
"onboarding.follows.title": "Vælumtókt á Mastodon",
diff --git a/app/javascript/mastodon/locales/fr-QC.json b/app/javascript/mastodon/locales/fr-QC.json
index af175099b3..640bdf0c93 100644
--- a/app/javascript/mastodon/locales/fr-QC.json
+++ b/app/javascript/mastodon/locales/fr-QC.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copier la trace d'appels dans le presse-papier",
"errors.unexpected_crash.report_issue": "Signaler un problème",
"explore.search_results": "Résultats",
- "explore.suggested_follows": "Pour vous",
+ "explore.suggested_follows": "People",
"explore.title": "Explorer",
"explore.trending_links": "Nouvelles",
"explore.trending_statuses": "Messages",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index e49bb6d74b..75b7890d27 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copier la trace d'appels dans le presse-papier",
"errors.unexpected_crash.report_issue": "Signaler le problème",
"explore.search_results": "Résultats de la recherche",
- "explore.suggested_follows": "Pour vous",
+ "explore.suggested_follows": "People",
"explore.title": "Explorer",
"explore.trending_links": "Nouvelles",
"explore.trending_statuses": "Messages",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json
index bae52ad86f..a8827a6cea 100644
--- a/app/javascript/mastodon/locales/fy.json
+++ b/app/javascript/mastodon/locales/fy.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Stacktrace nei klamboerd kopiearje",
"errors.unexpected_crash.report_issue": "Technysk probleem melde",
"explore.search_results": "Sykresultaten",
- "explore.suggested_follows": "Foar jo",
+ "explore.suggested_follows": "People",
"explore.title": "Ferkenne",
"explore.trending_links": "Nijs",
"explore.trending_statuses": "Berjochten",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Dit skerm net mear toane",
"onboarding.actions.go_to_explore": "De aktuele trends besjen",
"onboarding.actions.go_to_home": "Gean nei jo startside",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Spitigernôch kinne op dit stuit gjin resultaten toand wurde. Jo kinne probearje te sykjen of te blêdzjen troch de ferkenningsside om minsken te finen dy’t jo folgje kinne, of probearje it letter opnij.",
"onboarding.follows.lead": "Jo beheare jo eigen startside. Hoe mear minsken jo folgje, hoe aktiver en ynteressanter it wêze sil. Dizze profilen kinne in goed startpunt wêze, jo kinne se letter altyd ûntfolgje!",
"onboarding.follows.title": "Populêr op Mastodon",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index 9f1217758f..da3f1c9bfb 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -39,7 +39,7 @@
"account.follows_you": "Do do leanúint",
"account.go_to_profile": "Téigh go dtí próifíl",
"account.hide_reblogs": "Folaigh moltaí ó @{name}",
- "account.in_memoriam": "In Memoriam.",
+ "account.in_memoriam": "Cuimhneachán.",
"account.joined_short": "Cláraithe",
"account.languages": "Athraigh teangacha foscríofa",
"account.link_verified_on": "Seiceáladh úinéireacht an naisc seo ar {date}",
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Tuairiscigh deacracht",
"explore.search_results": "Torthaí cuardaigh",
- "explore.suggested_follows": "Duitse",
+ "explore.suggested_follows": "People",
"explore.title": "Féach thart",
"explore.trending_links": "Nuacht",
"explore.trending_statuses": "Postálacha",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json
index 1040cdf0fb..ebd2dae7f4 100644
--- a/app/javascript/mastodon/locales/gd.json
+++ b/app/javascript/mastodon/locales/gd.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Cuir lethbhreac dhen stacktrace air an stòr-bhòrd",
"errors.unexpected_crash.report_issue": "Dèan aithris air an duilgheadas",
"explore.search_results": "Toraidhean an luirg",
- "explore.suggested_follows": "Dhut-sa",
+ "explore.suggested_follows": "People",
"explore.title": "Rùraich",
"explore.trending_links": "Naidheachdan",
"explore.trending_statuses": "Postaichean",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 9b6cd28832..9865e57b2d 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copiar trazas (stacktrace) ó portapapeis",
"errors.unexpected_crash.report_issue": "Informar sobre un problema",
"explore.search_results": "Resultados da busca",
- "explore.suggested_follows": "Para ti",
+ "explore.suggested_follows": "Persoas",
"explore.title": "Descubrir",
"explore.trending_links": "Novas",
"explore.trending_statuses": "Publicacións",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Non mostrar esta pantalla de novo",
"onboarding.actions.go_to_explore": "Mira do que se está a falar",
"onboarding.actions.go_to_home": "Vai á cronoloxía de inicio",
+ "onboarding.compose.template": "Ola #Mastodon!",
"onboarding.follows.empty": "Desgraciadamente agora mesmo non hai nada que mostrar. Podes intentalo coa busca ou na páxina descubrir para atopar persoas ás que seguir, ou intentalo máis tarde.",
"onboarding.follows.lead": "Podes facer que a túa cronoloxía de inicio sexa como ti a queres. Canta máis xente sigas máis interesante será. Estes perfís poderían axudarche a comezar —sempre poderás deixar de seguilos despois!",
"onboarding.follows.title": "Popular en Mastodon",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index 8308943f73..2b63455b29 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "להעתיק את הקוד ללוח הכתיבה",
"errors.unexpected_crash.report_issue": "דווח על בעיה",
"explore.search_results": "תוצאות חיפוש",
- "explore.suggested_follows": "עבורך",
+ "explore.suggested_follows": "אנשים",
"explore.title": "סיור",
"explore.trending_links": "חדשות",
"explore.trending_statuses": "הודעות",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "אל תציג זאת שוב",
"onboarding.actions.go_to_explore": "הצגת מגמות",
"onboarding.actions.go_to_home": "מעבר לזרם הודעות הנעקבים",
+ "onboarding.compose.template": "שלום #מסטודון!",
"onboarding.follows.empty": "למצער, תוצאות לחיפושך אינן בנמצא. ניתן להשתמש בחיפוש או בדף החקירות לשם מציאת אנשים ולעקבם. אפשר גם לנסות שוב אחר כך.",
"onboarding.follows.lead": "אתם אוצרים את הזרם הבייתי שלכם. ככל שתעקבו אחרי יותר אנשים, הוא יהיה עשיר ופעיל יותר. הנה כמה פרופילים להתחיל בהם - תמיד ניתן להפסיק מעקב אחריהם בהמשך!",
"onboarding.follows.title": "פופולארי על מסטודון",
diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json
index 71e18c4fdb..57dc03138e 100644
--- a/app/javascript/mastodon/locales/hi.json
+++ b/app/javascript/mastodon/locales/hi.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "स्टैकट्रेस को क्लिपबोर्ड पर कॉपी करें",
"errors.unexpected_crash.report_issue": "समस्या सूचित करें",
"explore.search_results": "सर्च रिजल्ट्स",
- "explore.suggested_follows": "आपके लिए",
+ "explore.suggested_follows": "People",
"explore.title": "एक्स्प्लोर",
"explore.trending_links": "समाचार",
"explore.trending_statuses": "पोस्ट्स",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index 351de35023..ac5fd7232c 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopiraj stacktrace u međuspremnik",
"errors.unexpected_crash.report_issue": "Prijavi problem",
"explore.search_results": "Rezultati pretrage",
- "explore.suggested_follows": "Za vas",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "Novosti",
"explore.trending_statuses": "Objave",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index d770ddd9cb..f01e5a7f20 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -132,7 +132,7 @@
"compose_form.hashtag_warning": "Ez a bejegyzésed nem fog megjelenni semmilyen hashtag alatt, mivel nem nyilvános. Csak a nyilvános bejegyzések kereshetők hashtaggel.",
"compose_form.lock_disclaimer": "A fiókod nincs {locked}. Bárki követni tud, hogy megtekintse a kizárólag követőknek szánt bejegyzéseket.",
"compose_form.lock_disclaimer.lock": "lezárva",
- "compose_form.placeholder": "Mire gondolunk éppen?",
+ "compose_form.placeholder": "Mi jár a fejedben?",
"compose_form.poll.add_option": "Lehetőség hozzáadása",
"compose_form.poll.duration": "Szavazás időtartama",
"compose_form.poll.option_placeholder": "{number}. lehetőség",
@@ -148,7 +148,7 @@
"compose_form.sensitive.unmarked": "{count, plural, one {A médiát nem jelölték kényesnek} other {A médiát nem jelölték kényesnek}}",
"compose_form.spoiler.marked": "Tartalmi figyelmeztetés eltávolítása",
"compose_form.spoiler.unmarked": "Tartalmi figyelmeztetés hozzáadása",
- "compose_form.spoiler_placeholder": "A figyelmeztetés beírása ide",
+ "compose_form.spoiler_placeholder": "Írd ide a figyelmeztetést",
"confirmation_modal.cancel": "Mégsem",
"confirmations.block.block_and_report": "Letiltás és jelentés",
"confirmations.block.confirm": "Letiltás",
@@ -240,11 +240,11 @@
"errors.unexpected_crash.copy_stacktrace": "Veremkiíratás vágólapra másolása",
"errors.unexpected_crash.report_issue": "Probléma jelentése",
"explore.search_results": "Keresési találatok",
- "explore.suggested_follows": "Nekem",
+ "explore.suggested_follows": "Emberek",
"explore.title": "Felfedezés",
"explore.trending_links": "Hírek",
"explore.trending_statuses": "Bejegyzések",
- "explore.trending_tags": "#Címkék",
+ "explore.trending_tags": "Hashtagek",
"filter_modal.added.context_mismatch_explanation": "Ez a szűrőkategória nem érvényes abban a környezetben, amelyből ez a bejegyzés elérésre kerül. Ha ebben a környezetben is szűrni szeretnénk a bejegyzést, akkor szerkeszteni kell a szűrőt.",
"filter_modal.added.context_mismatch_title": "Környezeti eltérés.",
"filter_modal.added.expired_explanation": "Ez a szűrőkategória elévült, a használatához módosítani kell a lejárati dátumot.",
@@ -264,7 +264,7 @@
"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 a fiók követési kéréseit.",
- "followed_tags": "Követett #címkék",
+ "followed_tags": "Követett hashtagek",
"footer.about": "Névjegy",
"footer.directory": "Profiltár",
"footer.get_app": "Alkalmazás beszerzése",
@@ -279,11 +279,11 @@
"hashtag.column_header.tag_mode.any": "vagy {additional}",
"hashtag.column_header.tag_mode.none": "{additional} nélkül",
"hashtag.column_settings.select.no_options_message": "Nincs javaslat",
- "hashtag.column_settings.select.placeholder": "#Címkék megadása…",
+ "hashtag.column_settings.select.placeholder": "Addj meg hashtageket…",
"hashtag.column_settings.tag_mode.all": "Mindegyik",
"hashtag.column_settings.tag_mode.any": "Bármelyik",
"hashtag.column_settings.tag_mode.none": "Egyik sem",
- "hashtag.column_settings.tag_toggle": "További címkék felvétele ehhez az oszlophoz",
+ "hashtag.column_settings.tag_toggle": "Új címkék felvétele ehhez az oszlophoz",
"hashtag.follow": "Hashtag követése",
"hashtag.unfollow": "Hashtag követésének megszüntetése",
"home.column_settings.basic": "Alapvető",
@@ -335,7 +335,7 @@
"keyboard_shortcuts.search": "Keresősáv fókuszálása",
"keyboard_shortcuts.spoilers": "Tartalmi figyelmeztetés mező megjelenítése/elrejtése",
"keyboard_shortcuts.start": "\"Első lépések\" oszlop megnyitása",
- "keyboard_shortcuts.toggle_hidden": "Tartalmi figyelmeztetéssel mögötti szöveg megjelenítése/elrejtése",
+ "keyboard_shortcuts.toggle_hidden": "Tartalmi figyelmeztetéssel ellátott szöveg megjelenítése/elrejtése",
"keyboard_shortcuts.toggle_sensitivity": "Média megjelenítése/elrejtése",
"keyboard_shortcuts.toot": "Új bejegyzés írása",
"keyboard_shortcuts.unfocus": "Szerkesztés/keresés fókuszból való kivétele",
@@ -380,7 +380,7 @@
"navigation_bar.favourites": "Kedvencek",
"navigation_bar.filters": "Némított szavak",
"navigation_bar.follow_requests": "Követési kérelmek",
- "navigation_bar.followed_tags": "Követett #címkék",
+ "navigation_bar.followed_tags": "Követett hashtagek",
"navigation_bar.follows_and_followers": "Követettek és követők",
"navigation_bar.lists": "Listák",
"navigation_bar.logout": "Kijelentkezés",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Ez a képernyő ne jelenjen meg újra",
"onboarding.actions.go_to_explore": "Felkapottak megtekintése",
"onboarding.actions.go_to_home": "Ugrás a saját hírfolyamra",
+ "onboarding.compose.template": "Üdvözlet, #Mastodon!",
"onboarding.follows.empty": "Sajnos jelenleg nem jeleníthető meg eredmény. Kipróbálhatod a keresést vagy böngészheted a felfedező oldalon a követni kívánt személyeket, vagy próbáld meg később.",
"onboarding.follows.lead": "Mindenki maga válogatja össze a saját hírfolyamát. Minél több embert követsz, annál aktívabb és érdekesebb a dolog. Ezek a profilok jó kiindulási alapot jelenthetnek – később bármikor leállíthatod a követésüket!",
"onboarding.follows.title": "Népszerű a Mastodonon",
@@ -554,12 +555,12 @@
"search.quick_action.go_to_hashtag": "Ugrás a következő hashtaghez: {x}",
"search.quick_action.open_url": "Webcím megnyitása a Mastodonon",
"search.quick_action.status_search": "Bejegyzések a következő keresésre: {x}",
- "search.search_or_paste": "Keresés vagy webcím beillesztése",
+ "search.search_or_paste": "Keresés vagy URL beillesztése",
"search_popout.quick_actions": "Gyors műveletek",
"search_popout.recent": "Legutóbbi keresések",
"search_results.accounts": "Profilok",
"search_results.all": "Összes",
- "search_results.hashtags": "#Címkék",
+ "search_results.hashtags": "Hashtagek",
"search_results.nothing_found": "Nincs találat ezekre a keresési kifejezésekre",
"search_results.statuses": "Bejegyzések",
"search_results.statuses_fts_disabled": "Ezen a Mastodon szerveren nem engedélyezett a bejegyzések tartalom szerinti keresése.",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index 845c9abc3d..3bd57ca57c 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Պատճենել սթաքթրեյսը սեղմատախտակին",
"errors.unexpected_crash.report_issue": "Զեկուցել խնդրի մասին",
"explore.search_results": "Որոնման արդիւնքներ",
- "explore.suggested_follows": "Քեզ համար",
+ "explore.suggested_follows": "People",
"explore.title": "Բացայայտել",
"explore.trending_links": "Նորութիւններ",
"explore.trending_statuses": "Գրառումներ",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index 31e2839696..7cc8281e09 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Salin stacktrace ke papan klip",
"errors.unexpected_crash.report_issue": "Laporkan masalah",
"explore.search_results": "Hasil pencarian",
- "explore.suggested_follows": "Untuk Anda",
+ "explore.suggested_follows": "People",
"explore.title": "Jelajahi",
"explore.trending_links": "Berita",
"explore.trending_statuses": "Kiriman",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json
index b720ec213f..c4eb719d75 100644
--- a/app/javascript/mastodon/locales/ig.json
+++ b/app/javascript/mastodon/locales/ig.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Kpesa nsogbu",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index fb880145b0..ed3cf0520c 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopiez amastraso a klipplanko",
"errors.unexpected_crash.report_issue": "Reportigez problemo",
"explore.search_results": "Trovuri",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explorez",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index 56ac8a799d..e6657a84f7 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Afrita rakningarupplýsingar (stacktrace) á klippispjald",
"errors.unexpected_crash.report_issue": "Tilkynna vandamál",
"explore.search_results": "Leitarniðurstöður",
- "explore.suggested_follows": "Fyrir þig",
+ "explore.suggested_follows": "Fólk",
"explore.title": "Kanna",
"explore.trending_links": "Fréttir",
"explore.trending_statuses": "Færslur",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Ekki birta þetta aftur",
"onboarding.actions.go_to_explore": "Sjáðu hvað er í umræðunni",
"onboarding.actions.go_to_home": "Fara á heimastreymið þitt",
+ "onboarding.compose.template": "Halló #Mastodon!",
"onboarding.follows.empty": "Því miður er ekki hægt að birta neinar niðurstöður í augnablikinu. Þú getur reynt að nota leitina eða skoðað könnunarsíðuna til að finna fólk til að fylgjast með, nú eða prófað aftur síðar.",
"onboarding.follows.lead": "Þú ræktar heimastreymið þitt. Því fleira fólki sem þú fylgist með, því virkara og áhugaverðara verður það. Að fylgjast með þessum notendum gæti verið ágætt til að byrja með - þú getur alltaf hætt að fylgjast með þeim síðar!",
"onboarding.follows.title": "Vinsælt á Mastodon",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index fd18e388da..af2b8e64d7 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copia stacktrace negli appunti",
"errors.unexpected_crash.report_issue": "Segnala un problema",
"explore.search_results": "Risultati della ricerca",
- "explore.suggested_follows": "Per te",
+ "explore.suggested_follows": "Persone",
"explore.title": "Esplora",
"explore.trending_links": "Novità",
"explore.trending_statuses": "Post",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Non mostrare più",
"onboarding.actions.go_to_explore": "Guarda le tendenze",
"onboarding.actions.go_to_home": "Vai alla cronologia della tua home",
+ "onboarding.compose.template": "Ciao #Mastodon!",
"onboarding.follows.empty": "Sfortunatamente, nessun risultato può essere mostrato in questo momento. Puoi provare a utilizzare la ricerca o sfogliare la pagina di esplorazione per trovare persone da seguire, oppure riprova più tardi.",
"onboarding.follows.lead": "La cronologia della tua home è gestita da te. Più persone segui, più attiva e interessante sarà. Questi profili possono essere un buon punto di partenza; puoi sempre smettere di seguirli in seguito!",
"onboarding.follows.title": "Popolare su Mastodon",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 86a56ff53c..5b9cf1752e 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "スタックトレースをクリップボードにコピー",
"errors.unexpected_crash.report_issue": "問題を報告",
"explore.search_results": "検索結果",
- "explore.suggested_follows": "おすすめ",
+ "explore.suggested_follows": "ユーザー",
"explore.title": "エクスプローラー",
"explore.trending_links": "ニュース",
"explore.trending_statuses": "投稿",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "今後この画面を表示しない",
"onboarding.actions.go_to_explore": "話題をさがす",
"onboarding.actions.go_to_home": "タイムラインに移動",
+ "onboarding.compose.template": "#Mastodon はじめました",
"onboarding.follows.empty": "おすすめに表示できるアカウントはまだありません。検索や「見つける」を活用して、ほかのアカウントを探してみましょう。",
"onboarding.follows.lead": "自分の手でタイムラインを作ってみましょう。フォローを増やせば、タイムラインはより賑やかでおもしろいものになります。最初のフォローの参考になりそうなアカウントをいくつか表示しています。気になったものがあれば、ここからフォローしてみましょう。フォローはいつでも解除して大丈夫です。",
"onboarding.follows.title": "おすすめのアカウント",
@@ -463,10 +464,10 @@
"onboarding.steps.setup_profile.title": "プロフィールを完成させる",
"onboarding.steps.share_profile.body": "Mastodon アカウントをほかの人に紹介しましょう。",
"onboarding.steps.share_profile.title": "プロフィールをシェアする",
- "onboarding.tips.2fa": "Did you know? You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!",
+ "onboarding.tips.2fa": "ワンポイント アカウント設定から2要素認証を有効にして、アカウントのセキュリティを強化しておきましょう。認証には任意のワンタイムパスワード(TOTP)アプリを利用でき、電話番号は不要です。",
"onboarding.tips.accounts_from_other_servers": "ワンポイント Mastodon はたくさんのサーバーがつながりあってできている非中央集権型のSNSです。いくつかのアカウントはこことは別のサーバーに所属していることがありますが、サーバーの違いを意識しなくても同じようにフォローすることができます。サーバーが異なる場合は、ユーザー名の後半にサーバー名が表示されます。",
- "onboarding.tips.migration": "Did you know? If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
- "onboarding.tips.verification": "Did you know? You can verify your account by putting a link to your Mastodon profile on your own website and adding the website to your profile. No fees or documents necessary!",
+ "onboarding.tips.migration": "ワンポイント もしも {domain} の雰囲気が合わないと感じたときは、ほかのMastodonサーバーにフォロワーを引き継いだまま引っ越しできます。また、自分で独自のサーバーを開設することも可能です。",
+ "onboarding.tips.verification": "ワンポイント webサイトを持っている場合は、webサイトにMastodonアカウントへのリンクを掲載し、さらにアカウントのプロフィール側にもwebサイトへのリンクを追加することで、アカウントが自分のものであることを証明できます。課金や書類の提出は必要ありません。",
"password_confirmation.exceeds_maxlength": "パスワードの最大文字数を超えています",
"password_confirmation.mismatching": "入力済みのパスワードと一致しません",
"picture_in_picture.restore": "元に戻す",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index 51c4073efd..2d84b4011b 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json
index aee2e2f1b7..16748208b0 100644
--- a/app/javascript/mastodon/locales/kab.json
+++ b/app/javascript/mastodon/locales/kab.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Nɣel stacktrace ɣef wafus",
"errors.unexpected_crash.report_issue": "Mmel ugur",
"explore.search_results": "Igemmaḍ n unadi",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Snirem",
"explore.trending_links": "Isallen",
"explore.trending_statuses": "Tisuffiɣin",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json
index 0e39264f99..3876866961 100644
--- a/app/javascript/mastodon/locales/kk.json
+++ b/app/javascript/mastodon/locales/kk.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Жиынтықты көшіріп ал клипбордқа",
"errors.unexpected_crash.report_issue": "Мәселені хабарла",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json
index d8c85517d8..f820dbc43c 100644
--- a/app/javascript/mastodon/locales/kn.json
+++ b/app/javascript/mastodon/locales/kn.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 20a53bf4df..8030fd65f5 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "에러 내용을 클립보드에 복사",
"errors.unexpected_crash.report_issue": "문제 신고",
"explore.search_results": "검색 결과",
- "explore.suggested_follows": "추천",
+ "explore.suggested_follows": "사람들",
"explore.title": "둘러보기",
"explore.trending_links": "소식",
"explore.trending_statuses": "게시물",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "이 화면을 다시 보지 않기",
"onboarding.actions.go_to_explore": "무엇이 유행인지 보기",
"onboarding.actions.go_to_home": "홈 피드로 가기",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "안타깝지만 아직은 아무 것도 보여드릴 수 없습니다. 검색을 이용하거나 발견하기 페이지에서 팔로우 할 사람을 찾을 수 있습니다. 아니면 잠시 후에 다시 시도하세요.",
"onboarding.follows.lead": "내 피드는 내가 만듭니다. 더 많은 사람을 팔로우 할 수록 더 활성화되고 흥미로울 것입니다. 이 계정들이 첫 상대로 좋을 것 같습니다. 나중에 언제든지 팔로우를 해제할 수 있습니다!",
"onboarding.follows.title": "마스토돈 속 인기물",
diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json
index da1589a77a..717c0a0889 100644
--- a/app/javascript/mastodon/locales/ku.json
+++ b/app/javascript/mastodon/locales/ku.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Şopa gemara (stacktrace) tûrikê ra jê bigire",
"errors.unexpected_crash.report_issue": "Pirsgirêkekê ragihîne",
"explore.search_results": "Encamên lêgerînê",
- "explore.suggested_follows": "Ji bo te",
+ "explore.suggested_follows": "People",
"explore.title": "Vekole",
"explore.trending_links": "Nûçe",
"explore.trending_statuses": "Şandî",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json
index 2d6cff6f3f..47fe1c3012 100644
--- a/app/javascript/mastodon/locales/kw.json
+++ b/app/javascript/mastodon/locales/kw.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Dasskrifa daslergh dhe'n astel glypp",
"errors.unexpected_crash.report_issue": "Reportya kudyn",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json
index 250586ecd1..f947f934b8 100644
--- a/app/javascript/mastodon/locales/la.json
+++ b/app/javascript/mastodon/locales/la.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Contributa",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index 51f29375aa..cc2b3598d8 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index cec437a39b..3d7578febc 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopēt stacktrace uz starpliktuvi",
"errors.unexpected_crash.report_issue": "Ziņot par problēmu",
"explore.search_results": "Meklēšanas rezultāti",
- "explore.suggested_follows": "Tev",
+ "explore.suggested_follows": "Cilvēki",
"explore.title": "Pārlūkot",
"explore.trending_links": "Jaunumi",
"explore.trending_statuses": "Ziņas",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Vairs nerādīt šo ekrānu",
"onboarding.actions.go_to_explore": "Skatīt tendences",
"onboarding.actions.go_to_home": "Dodieties uz manu mājas plūsmu",
+ "onboarding.compose.template": "Sveiki, #Mastodon!",
"onboarding.follows.empty": "Diemžēl pašlaik nevar parādīt rezultātus. Vari mēģināt izmantot meklēšanu vai pārlūkot izpētes lapu, lai atrastu personas, kurām sekot, vai mēģināt vēlreiz vēlāk.",
"onboarding.follows.lead": "Savu mājas plūsmu veido tu pats. Jo vairāk cilvēkiem tu sekosi, jo aktīvāk un interesantāk viss būs. Šie profili var būt labs sākumpunkts — vēlāk vienmēr varēsi pārstāt sekot!",
"onboarding.follows.title": "Populārs Mastodon",
diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json
index 3b789942f9..6e779e26fa 100644
--- a/app/javascript/mastodon/locales/mk.json
+++ b/app/javascript/mastodon/locales/mk.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Пријавете проблем",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json
index 4cbbcde57b..50c239daf1 100644
--- a/app/javascript/mastodon/locales/ml.json
+++ b/app/javascript/mastodon/locales/ml.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "പ്രശ്നം അറിയിക്കുക",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "പര്യവേക്ഷണം നടത്തുക",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json
index b15050b52d..09ee8da5d4 100644
--- a/app/javascript/mastodon/locales/mr.json
+++ b/app/javascript/mastodon/locales/mr.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index 3bf84ecf28..4a5a01fabd 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Salin surih tindanan ke papan keratan",
"errors.unexpected_crash.report_issue": "Laporkan masalah",
"explore.search_results": "Hasil carian",
- "explore.suggested_follows": "Untuk anda",
+ "explore.suggested_follows": "People",
"explore.title": "Terokai",
"explore.trending_links": "Baru",
"explore.trending_statuses": "Hantar",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json
index 877cca3a4d..08bd29094f 100644
--- a/app/javascript/mastodon/locales/my.json
+++ b/app/javascript/mastodon/locales/my.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "stacktrace ကို ကလစ်ဘုတ်သို့ ကူးယူပါ",
"errors.unexpected_crash.report_issue": "အဆင်မပြေမှုကို တိုင်ကြားရန်",
"explore.search_results": "ရှာဖွေမှုရလဒ်များ",
- "explore.suggested_follows": "သင့်အတွက်",
+ "explore.suggested_follows": "လူများ",
"explore.title": "စူးစမ်းရန်",
"explore.trending_links": "သတင်းများ",
"explore.trending_statuses": "ပို့စ်တင်မယ်",
@@ -445,28 +445,29 @@
"onboarding.actions.close": "ဤစခရင်ကို ထပ်မပြပါနှင့်",
"onboarding.actions.go_to_explore": "ခေတ်စားနေသည်များကို ကြည့်ပါ",
"onboarding.actions.go_to_home": "ပင်မစာမျက်နှာသို့ သွားပါ",
- "onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
- "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
+ "onboarding.compose.template": "မင်္ဂလာပါ #Mastodon",
+ "onboarding.follows.empty": "ယခုအချိန် မည်သည့်ရလဒ်ကိုမျှ မပြသနိုင်ပါ။ လူများကိုစောင့်ကြည့်ရန်အတွက် Explore စာမျက်နှာကို အသုံးပြု၍ စမ်းကြည့်နိုင်သည် သို့မဟုတ် နောက်မှ ထပ်စမ်းကြည့်ပါ။",
+ "onboarding.follows.lead": "သင့်ကိုယ်ပိုင်ပို့စ်များ တင်နိုင်သည်။ သင်စောင့်ကြည့်သူ များလေလေ၊ စိတ်ဝင်စားစရာကောင်းသောပို့စ်များ တွေ့ရလေဖြစ်သည်။ ဤပရိုဖိုင်များမှာ ကောင်းမွန်သောအစပြုမှုတစ်ခုဖြစ်ပြီး ၎င်းတို့ကိုစောင့်ကြည့်ခြင်းမှလည်း အချိန်မရွေး ပယ်ဖျက်နိုင်ပါသည်။",
"onboarding.follows.title": "Mastodon တွင် ရေပန်းစားခြင်း",
"onboarding.share.lead": "Mastodon တွင် သင့်အား မည်သို့ရှာတွေ့နိုင်သည်ကို အသိပေးပါ။",
- "onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
+ "onboarding.share.message": "Mastodon ရှိ ကျွန်ုပ်၏အမည်မှာ {username} ဖြစ်သည်။ ကျွန်ုပ်ကို {url} တွင် စောင့်ကြည့်နိုင်ပါသည်",
"onboarding.share.next_steps": "ဖြစ်နိုင်ချေရှိသော နောက်အဆင့်များ -",
"onboarding.share.title": "သင့်ပရိုဖိုင်ကို မျှဝေပါ",
"onboarding.start.lead": "သင့် Mastodon အကောင့်အသစ်မှာ အသုံးပြုနိုင်ပါပြီ။ အကောင်းဆုံးဖြစ်အောင် သင်ပြုလုပ်နိုင်သည် -",
"onboarding.start.skip": "ရှေ့ကို ကျော်သွားချင်ပါသလား။",
"onboarding.start.title": "ပြုလုပ်ပြီးပြီ။",
- "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
+ "onboarding.steps.follow_people.body": "သင်သည် ကိုယ်ပိုင်ပို့စ်များ တင်နိုင်သည်။ စိတ်ဝင်စားသူများနဲ့ အပြန်အလှန်စောင့်ကြည့်နိုင်ပါပြီ။",
"onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
"onboarding.steps.publish_status.body": "ကမ္ဘာကြီးကို နှုတ်ဆက်လိုက်ပါ။",
"onboarding.steps.publish_status.title": "ပထမဆုံးပို့စ်တင်လိုက်ပါ။",
- "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
+ "onboarding.steps.setup_profile.body": "အခြားသူများမှာလည်း သင်နှင့် အပြန်အလှန် တုံ့ပြန်နိုင်ပါသည်။",
"onboarding.steps.setup_profile.title": "သင့်ပရိုဖိုင်ကို စိတ်ကြိုက်ပြင်ဆင်လိုက်ပါ",
"onboarding.steps.share_profile.body": "Mastodon တွင် သင့်ကို သူငယ်ချင်းများ မည်သို့ရှာတွေ့နိုင်သည်ကို အသိပေးပါ။",
"onboarding.steps.share_profile.title": "သင့်ပရိုဖိုင်ကို မျှဝေပါ",
- "onboarding.tips.2fa": "Did you know? You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!",
+ "onboarding.tips.2fa": "သင်သိပါသလား။ သင့်အကောင့်သတ်မှတ်ချက်များတွင် နှစ်ဆင့်ခံလုံခြုံရေးစနစ် ထည့်သွင်းခြင်းဖြင့် သင့်အကောင့်ကို လုံခြုံစေနိုင်ပါသည်။ ထိုစနစ်မှာ သင်နှစ်သက်ရာ TOTP အက်ပ်နှင့် အလုပ်လုပ်ပြီး ဖုန်းနံပါတ်ထည့်ရန်မလိုပါ။",
"onboarding.tips.accounts_from_other_servers": "Did you know? Since Mastodon is decentralized, some profiles you come across will be hosted on servers other than yours. And yet you can interact with them seamlessly! Their server is in the second half of their username!",
- "onboarding.tips.migration": "Did you know? If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
- "onboarding.tips.verification": "Did you know? You can verify your account by putting a link to your Mastodon profile on your own website and adding the website to your profile. No fees or documents necessary!",
+ "onboarding.tips.migration": "သင်သိပါသလား? အကယ်၍ {domain} သည် နောင်တွင် သင့်အတွက် အဆင်မပြေပါက သင့်စောင့်ကြည့်သူများကို မဆုံးရှုံးစေဘဲ အခြား Mastodon ဆာဗာသို့ ပြောင်းရွှေ့နိုင်ပါသည်။ သင့် ကိုယ်ပိုင်ဆာဗာတစ်လုံး ပြုလုပ်၍ပင် ဆောင်ရွက်နိုင်ပါသည်။",
+ "onboarding.tips.verification": "သင်သိပါသလား။ သင့်ဝဘ်ဆိုက်တွင် Mastodon ပရိုဖိုင်အတွက် လင့်ခ်ထည့်ထားပြီး သင့်ပရိုဖိုင်တွင် ဝဘ်ဆိုက်ထည့်ထားခြင်းဖြင့် သင့်အကောင့်ကို အတည်ပြုနိုင်သည်။ အခကြေးငွေ သို့မဟုတ် စာရွက်စာတမ်းများ မလိုအပ်ပါ။",
"password_confirmation.exceeds_maxlength": "စကားဝှက်အတည်ပြုခြင်းတွင် အများဆုံးစကားဝှက်အရှည်ထက် ကျော်လွန်နေပါသည်",
"password_confirmation.mismatching": "စကားဝှက်အတည်ပြုချက်မှာ မကိုက်ညီပါ",
"picture_in_picture.restore": "ပြန်ထားပါ",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 4e4320c1d4..b60aba5624 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Stacktrace naar klembord kopiëren",
"errors.unexpected_crash.report_issue": "Technisch probleem melden",
"explore.search_results": "Zoekresultaten",
- "explore.suggested_follows": "Voor jou",
+ "explore.suggested_follows": "Mensen",
"explore.title": "Verkennen",
"explore.trending_links": "Nieuws",
"explore.trending_statuses": "Berichten",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Dit scherm niet meer weergeven",
"onboarding.actions.go_to_explore": "De huidige trends bekijken",
"onboarding.actions.go_to_home": "Ga naar je starttijdlijn",
+ "onboarding.compose.template": "Hallo #Mastodon!",
"onboarding.follows.empty": "Helaas kunnen op dit moment geen resultaten worden getoond. Je kunt proberen te zoeken of te bladeren door de verkenningspagina om mensen te vinden die je kunt volgen, of probeer het later opnieuw.",
"onboarding.follows.lead": "Je beheert je eigen starttijdlijn. Hoe meer mensen je volgt, hoe actiever en interessanter het zal zijn. Deze profielen kunnen een goed startpunt zijn, je kan ze later altijd niet meer volgen!",
"onboarding.follows.title": "Populair op Mastodon",
diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json
index 57706abbba..e3c979de49 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopier stacktrace til utklippstavla",
"errors.unexpected_crash.report_issue": "Rapporter problem",
"explore.search_results": "Søkeresultat",
- "explore.suggested_follows": "For deg",
+ "explore.suggested_follows": "People",
"explore.title": "Utforsk",
"explore.trending_links": "Nytt",
"explore.trending_statuses": "Innlegg",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index 8942b7d3bf..c04d300e4a 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -182,7 +182,7 @@
"conversation.with": "Med {names}",
"copypaste.copied": "Kopiert",
"copypaste.copy": "Kopier",
- "copypaste.copy_to_clipboard": "Copy to clipboard",
+ "copypaste.copy_to_clipboard": "Kopier til utklippstavle",
"directory.federated": "Fra det kjente strømiverset",
"directory.local": "Kun fra {domain}",
"directory.new_arrivals": "Nye ankomster",
@@ -224,7 +224,7 @@
"empty_column.favourited_statuses": "Du har ikke noen favorittinnlegg enda. Når du favorittmarkerer et inlegg, vil det dukke opp her.",
"empty_column.favourites": "Ingen har favorittmarkert dette innlegget ennå. Når noen gjør det, vil de dukke opp her.",
"empty_column.follow_requests": "Du har ingen følgeforespørsler enda. Når du mottar en, vil den dukke opp her.",
- "empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.",
+ "empty_column.followed_tags": "Du har ikke fulgt noen emneknagger ennå. Når du gjør det, vil de vises her.",
"empty_column.hashtag": "Det er ingenting i denne emneknaggen ennå.",
"empty_column.home": "Hjem-tidslinjen din er tom! Følg flere folk for å fylle den. {suggestions}",
"empty_column.home.suggestions": "Se noen forslag",
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopier stacktrace-en til utklippstavlen",
"errors.unexpected_crash.report_issue": "Rapporter en feil",
"explore.search_results": "Søkeresultater",
- "explore.suggested_follows": "For deg",
+ "explore.suggested_follows": "Personer",
"explore.title": "Utforsk",
"explore.trending_links": "Nyheter",
"explore.trending_statuses": "Innlegg",
@@ -264,7 +264,7 @@
"follow_request.authorize": "Autoriser",
"follow_request.reject": "Avvis",
"follow_requests.unlocked_explanation": "Selv om kontoen din ikke er låst, tror {domain} ansatte at du kanskje vil gjennomgå forespørsler fra disse kontoene manuelt.",
- "followed_tags": "Followed hashtags",
+ "followed_tags": "Fulgte emneknagger",
"footer.about": "Om",
"footer.directory": "Profilkatalog",
"footer.get_app": "Last ned appen",
@@ -292,7 +292,7 @@
"home.hide_announcements": "Skjul kunngjøring",
"home.show_announcements": "Vis kunngjøring",
"interaction_modal.description.favourite": "Med en konto på Mastodon, kan du favorittmarkere dette innlegget for å la forfatteren vite at du satte pris på det, og lagre innlegget til senere.",
- "interaction_modal.description.follow": "Med en konto på Mastodon, kan du følge {name} for å få innleggene deres i hjem-feeden din.",
+ "interaction_modal.description.follow": "Med en konto på Mastodon, kan du følge {name} for å få innleggene deres i tidslinjen din.",
"interaction_modal.description.reblog": "Med en konto på Mastodon, kan du fremheve dette innlegget for å dele det med dine egne følgere.",
"interaction_modal.description.reply": "Med en konto på Mastodon, kan du svare på dette innlegget.",
"interaction_modal.on_another_server": "På en annen server",
@@ -440,33 +440,34 @@
"notifications_permission_banner.enable": "Skru på skrivebordsvarsler",
"notifications_permission_banner.how_to_control": "For å motta varsler når Mastodon ikke er åpne, aktiver desktop varsler. Du kan kontrollere nøyaktig hvilke typer interaksjoner genererer skrivebordsvarsler gjennom {icon} -knappen ovenfor når de er aktivert.",
"notifications_permission_banner.title": "Aldri gå glipp av noe",
- "onboarding.action.back": "Take me back",
- "onboarding.actions.back": "Take me back",
- "onboarding.actions.close": "Don't show this screen again",
- "onboarding.actions.go_to_explore": "See what's trending",
- "onboarding.actions.go_to_home": "Go to your home feed",
- "onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
+ "onboarding.action.back": "Ta meg tilbake",
+ "onboarding.actions.back": "Ta meg tilbake",
+ "onboarding.actions.close": "Ikke vis dette flere ganger",
+ "onboarding.actions.go_to_explore": "Se hva som er populært",
+ "onboarding.actions.go_to_home": "Gå til din tidslinje",
+ "onboarding.compose.template": "Hallo #Mastodon!",
+ "onboarding.follows.empty": "Dessverre kan ingen resultater vises akkurat nå. Du kan prøve å bruke søk eller bla gjennom utforske-siden for å finne folk å følge, eller prøve igjen senere.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
- "onboarding.follows.title": "Popular on Mastodon",
+ "onboarding.follows.title": "Populært på Mastodon",
"onboarding.share.lead": "Let people know how they can find you on Mastodon!",
- "onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
+ "onboarding.share.message": "Jeg er {username} på #Mastodon! Kom og følg meg på {url}",
"onboarding.share.next_steps": "Possible next steps:",
"onboarding.share.title": "Share your profile",
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
- "onboarding.start.skip": "Want to skip right ahead?",
- "onboarding.start.title": "You've made it!",
- "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
- "onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
+ "onboarding.start.skip": "Vil du hoppe over dette?",
+ "onboarding.start.title": "Du klarte det!",
+ "onboarding.steps.follow_people.body": "Du bestemmer over din egen tidslinje. La oss fylle den med ineressante personer.",
+ "onboarding.steps.follow_people.title": "Følg {count, plural, one {en person} other {# personer}}",
"onboarding.steps.publish_status.body": "Say hello to the world.",
"onboarding.steps.publish_status.title": "Make your first post",
"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.tips.2fa": "Did you know? You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!",
+ "onboarding.tips.2fa": "Visste du? Du kan sikre kontoen din ved å sette opp 2-trinnsinnlogging i kontoinnstillingene dine. Det fungerer med enhver TOTP-app du velger selv, intet telefonnummer nødvendig!",
"onboarding.tips.accounts_from_other_servers": "Did you know? Since Mastodon is decentralized, some profiles you come across will be hosted on servers other than yours. And yet you can interact with them seamlessly! Their server is in the second half of their username!",
- "onboarding.tips.migration": "Did you know? If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
- "onboarding.tips.verification": "Did you know? You can verify your account by putting a link to your Mastodon profile on your own website and adding the website to your profile. No fees or documents necessary!",
+ "onboarding.tips.migration": "Visste du? Hvis du føler at {domain} ikke er et flott servervalg for deg i fremtiden, kan du flytte til en annen Mastodon-server uten å miste følgerene dine. Du kan også være vert for din egen server!",
+ "onboarding.tips.verification": "Visste du? Du kan bekrefte kontoen din ved å legge en lenke til Mastodon-profilen din på ditt eget nettsted og legge nettstedet til i profilen din. Ingen gebyrer eller dokumenter nødvendig!",
"password_confirmation.exceeds_maxlength": "Passordbekreftelsen overskrider den maksimale passordlengden",
"password_confirmation.mismatching": "Passordene er ulike",
"picture_in_picture.restore": "Legg den tilbake",
@@ -492,7 +493,7 @@
"privacy_policy.title": "Personvernregler",
"refresh": "Oppfrisk",
"regeneration_indicator.label": "Laster…",
- "regeneration_indicator.sublabel": "Dine startside forberedes!",
+ "regeneration_indicator.sublabel": "Dine tidslinje blir gjort klar!",
"relative_time.days": "{number}d",
"relative_time.full.days": "{number, plural, one {# dag} other {# dager}} siden",
"relative_time.full.hours": "{number, plural, one {# time} other {# timer}} siden",
@@ -541,7 +542,7 @@
"report.thanks.title": "Ønsker du ikke å se dette?",
"report.thanks.title_actionable": "Takk for at du rapporterer, vi skal se på dette.",
"report.unfollow": "Slutt å følge @{name}",
- "report.unfollow_explanation": "Du følger denne kontoen. For ikke å se innleggene deres i din hjem-feed lenger, slutt å følge dem.",
+ "report.unfollow_explanation": "Du følger denne kontoen. For ikke å se innleggene deres i din tidslinje lenger, slutt å følge dem.",
"report_notification.attached_statuses": "{count, plural,one {{count} innlegg} other {{count} innlegg}} vedlagt",
"report_notification.categories.other": "Annet",
"report_notification.categories.spam": "Søppelpost",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index f763d25668..652255e4af 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copiar las traças al quichapapièrs",
"errors.unexpected_crash.report_issue": "Senhalar un problèma",
"explore.search_results": "Resultats de recèrca",
- "explore.suggested_follows": "Per vos",
+ "explore.suggested_follows": "People",
"explore.title": "Explorar",
"explore.trending_links": "Novèlas",
"explore.trending_statuses": "Publicacions",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json
index c160d1b11f..f142264282 100644
--- a/app/javascript/mastodon/locales/pa.json
+++ b/app/javascript/mastodon/locales/pa.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index e20a75743a..417cc54cd4 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Skopiuj stacktrace do schowka",
"errors.unexpected_crash.report_issue": "Zgłoś problem",
"explore.search_results": "Wyniki wyszukiwania",
- "explore.suggested_follows": "Dla Ciebie",
+ "explore.suggested_follows": "Ludzie",
"explore.title": "Odkrywaj",
"explore.trending_links": "Aktualności",
"explore.trending_statuses": "Posty",
@@ -445,8 +445,9 @@
"onboarding.actions.close": "Nie pokazuj ponownie",
"onboarding.actions.go_to_explore": "Zobacz co się dzieje",
"onboarding.actions.go_to_home": "Przejdź do swojego kanału głównego",
- "onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
- "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
+ "onboarding.compose.template": "Witaj #Mastodon!",
+ "onboarding.follows.empty": "Niestety w tej chwili nie można przedstawić żadnych wyników. Możesz spróbować wyszukać lub przeglądać stronę, aby znaleźć osoby do śledzenia, lub spróbować ponownie później.",
+ "onboarding.follows.lead": "Zarządasz swoim własnym kanałem. Im więcej ludzi śledzisz, tym bardziej aktywny i ciekawy będzie Twój kanał. Te profile mogą być dobrym punktem wyjścia— możesz przestać je obserwować w dowolnej chwili!",
"onboarding.follows.title": "Popularne na Mastodonie",
"onboarding.share.lead": "Daj znać ludziom, jak mogą cię znaleźć na Mastodonie!",
"onboarding.share.message": "Jestem {username} na #Mastodon! Śledź mnie tutaj {url}",
@@ -459,13 +460,13 @@
"onboarding.steps.follow_people.title": "Obserwuj {count, plural, one {jedną osobę} few {# osoby} many {# osób} other {# osób}}",
"onboarding.steps.publish_status.body": "Przywitaj się ze światem.",
"onboarding.steps.publish_status.title": "Utwórz swój pierwszy post",
- "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
+ "onboarding.steps.setup_profile.body": "Inni użytkownicy są bardziej skłonni do interakcji z Tobą jeśli posiadasz wypełniony profil.",
"onboarding.steps.setup_profile.title": "Spersonalizuj swój profil",
"onboarding.steps.share_profile.body": "Poinformuj swoich przyjaciół jak znaleźć cię na Mastodonie!",
"onboarding.steps.share_profile.title": "Udostępnij swój profil",
"onboarding.tips.2fa": "Czy wiesz? Możesz zabezpieczyć swoje konto poprzez skonfigurowanie uwierzytelniania dwuetapowego w ustawieniach konta. Działa z wybraną przez Ciebie aplikacją TOTP, żaden numer telefonu nie jest wymagany!",
"onboarding.tips.accounts_from_other_servers": "Czy wiesz? Ponieważ Mastodon jest zdecentralizowany, niektóre profile, z którymi się spotkasz, będą hostowane na serwerach innych niż twoje. A mimo to możesz z nimi bezproblemowo wchodzić w interakcje! Ich serwer jest w drugiej połowie ich nazwy użytkownika!",
- "onboarding.tips.migration": "Did you know? If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
+ "onboarding.tips.migration": "Czy wiesz? Jeśli uważasz, że {domain} nie jest dla Ciebie dobrym wyborem na serwer w przyszłości, możesz przenieść się na inny serwer Mastodona bez utraty obserwujących. Możesz nawet hostować swój własny serwer!",
"onboarding.tips.verification": "Czy wiesz? Możesz zweryfikować swoje konto, umieszczając link do profilu Mastodon na swojej własnej stronie internetowej, a następnie dodając stronę do swojego profilu. Żadne opłaty lub dokumenty nie są wymagane!",
"password_confirmation.exceeds_maxlength": "Potwierdzenie hasła przekracza maksymalną długość hasła",
"password_confirmation.mismatching": "Wprowadzone hasła różnią się od siebie",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index 42c849fad2..8057290da1 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copiar dados do erro para área de transferência",
"errors.unexpected_crash.report_issue": "Reportar problema",
"explore.search_results": "Resultado da pesquisa",
- "explore.suggested_follows": "Para você",
+ "explore.suggested_follows": "People",
"explore.title": "Explorar",
"explore.trending_links": "Notícias",
"explore.trending_statuses": "Publicações",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Não mostre esta tela novamente",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Ir para sua página inicial",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular no Mastodon",
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index 19bfa8b5ff..0aaa83443e 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -182,7 +182,7 @@
"conversation.with": "Com {names}",
"copypaste.copied": "Copiado",
"copypaste.copy": "Copiar",
- "copypaste.copy_to_clipboard": "Copy to clipboard",
+ "copypaste.copy_to_clipboard": "Copiar para a área de transferência",
"directory.federated": "Do fediverso conhecido",
"directory.local": "Apenas de {domain}",
"directory.new_arrivals": "Recém chegados",
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copiar a stacktrace para o clipboard",
"errors.unexpected_crash.report_issue": "Reportar problema",
"explore.search_results": "Resultados da pesquisa",
- "explore.suggested_follows": "Para si",
+ "explore.suggested_follows": "Pessoas",
"explore.title": "Explorar",
"explore.trending_links": "Notícias",
"explore.trending_statuses": "Publicações",
@@ -440,33 +440,34 @@
"notifications_permission_banner.enable": "Ativar notificações no ambiente de trabalho",
"notifications_permission_banner.how_to_control": "Para receber notificações quando o Mastodon não estiver aberto, ative as notificações no ambiente de trabalho. Depois da sua ativação, pode controlar precisamente quais tipos de interações geram notificações, através do botão {icon} acima.",
"notifications_permission_banner.title": "Nunca perca nada",
- "onboarding.action.back": "Take me back",
- "onboarding.actions.back": "Take me back",
- "onboarding.actions.close": "Don't show this screen again",
- "onboarding.actions.go_to_explore": "See what's trending",
- "onboarding.actions.go_to_home": "Go to your home feed",
- "onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
- "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
- "onboarding.follows.title": "Popular on Mastodon",
- "onboarding.share.lead": "Let people know how they can find you on Mastodon!",
- "onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
- "onboarding.share.next_steps": "Possible next steps:",
- "onboarding.share.title": "Share your profile",
- "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
- "onboarding.start.skip": "Want to skip right ahead?",
- "onboarding.start.title": "You've made it!",
- "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
- "onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
- "onboarding.steps.publish_status.body": "Say hello to the world.",
- "onboarding.steps.publish_status.title": "Make your first post",
- "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.tips.2fa": "Did you know? You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!",
- "onboarding.tips.accounts_from_other_servers": "Did you know? Since Mastodon is decentralized, some profiles you come across will be hosted on servers other than yours. And yet you can interact with them seamlessly! Their server is in the second half of their username!",
- "onboarding.tips.migration": "Did you know? If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
- "onboarding.tips.verification": "Did you know? You can verify your account by putting a link to your Mastodon profile on your own website and adding the website to your profile. No fees or documents necessary!",
+ "onboarding.action.back": "Voltar atrás",
+ "onboarding.actions.back": "Voltar atrás",
+ "onboarding.actions.close": "Não exibir isto novamente",
+ "onboarding.actions.go_to_explore": "Veja as tendências atuais",
+ "onboarding.actions.go_to_home": "Ir para a sua página inicial",
+ "onboarding.compose.template": "Olá #Mastodon!",
+ "onboarding.follows.empty": "Infelizmente, não é possível mostrar resultados neste momento. Pode tentar utilizar a pesquisa ou navegar na página \"Explorar\" para encontrar pessoas para seguir ou tentar novamente mais tarde.",
+ "onboarding.follows.lead": "Você personaliza a sua própria página inicial. Quanto mais pessoas seguir, mais ativa e interessante ela será. Estes perfis podem ser um bom ponto de partida - pode sempre deixar de os seguir mais tarde!",
+ "onboarding.follows.title": "Popular no Mastodon",
+ "onboarding.share.lead": "Deixe as pessoas saber como o podem encontrar no Mastodon!",
+ "onboarding.share.message": "Eu sou {username} no #Mastodon! Venha seguir-me em {url}",
+ "onboarding.share.next_steps": "Próximos passos possíveis:",
+ "onboarding.share.title": "Partilhe o seu perfil",
+ "onboarding.start.lead": "A sua nova conta no Mastodon está pronta. Aqui está como pode tirar dela melhor proveito:",
+ "onboarding.start.skip": "Quer saltar à frente?",
+ "onboarding.start.title": "Conseguiu!",
+ "onboarding.steps.follow_people.body": "Você personaliza a sua própria página inicial. Vamos preenche-la com pessoas interessantes.",
+ "onboarding.steps.follow_people.title": "Siga {count, plural, one {uma pessoa} other {# pessoas}}",
+ "onboarding.steps.publish_status.body": "Diga olá para o mundo.",
+ "onboarding.steps.publish_status.title": "Faça a sua primeira publicação",
+ "onboarding.steps.setup_profile.body": "É mais provável que outros interajam consigo se preencher o seu perfil.",
+ "onboarding.steps.setup_profile.title": "Personalize o seu perfil",
+ "onboarding.steps.share_profile.body": "Diga aos seus amigos como o encontrarem no Mastodon!",
+ "onboarding.steps.share_profile.title": "Partilhe o seu perfil",
+ "onboarding.tips.2fa": "Sabia? Pode proteger a sua conta ativando a autenticação em duas etapas nas configurações de conta. Funciona com qualquer aplicativo TOTP à sua escolha, sem necessitar de um número de telefone!",
+ "onboarding.tips.accounts_from_other_servers": "Sabia? Como o Mastodon é descentralizado, alguns perfis que você encontra serão hospedados em outros servidores que não os seus. E ainda assim você pode interagir com eles perfeitamente! O servidor deles está na segunda metade do nome de usuário!",
+ "onboarding.tips.migration": "Sabia? Se, no futuro, sentir que {domain} não é uma ótima escolha de servidor para si, pode mudar para outro servidor Mastodon sem perder os seus seguidores. Pode até mesmo hospedar o seu próprio servidor!",
+ "onboarding.tips.verification": "Sabia? Pode verificar a sua conta colocando um link para o seu perfil Mastodon no seu site e adicionando o endereço do site ao seu perfil. Não são necessárias taxas ou documentos!",
"password_confirmation.exceeds_maxlength": "A confirmação da palavra-passe excede o tamanho máximo para a palavra-passe",
"password_confirmation.mismatching": "A confirmação da palavra-passe não corresponde",
"picture_in_picture.restore": "Colocá-lo de volta",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index 4d8cd34c24..45324fb727 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copiere stacktrace în clipboard",
"errors.unexpected_crash.report_issue": "Raportează o problemă",
"explore.search_results": "Rezultatele căutării",
- "explore.suggested_follows": "Pentru tine",
+ "explore.suggested_follows": "People",
"explore.title": "Explorează",
"explore.trending_links": "Noutăți",
"explore.trending_statuses": "Postări",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 32c1d385ed..9f7c80cff9 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Скопировать диагностическую информацию",
"errors.unexpected_crash.report_issue": "Сообщить о проблеме",
"explore.search_results": "Результаты поиска",
- "explore.suggested_follows": "Для вас",
+ "explore.suggested_follows": "Люди",
"explore.title": "Обзор",
"explore.trending_links": "Новости",
"explore.trending_statuses": "Посты",
@@ -445,11 +445,12 @@
"onboarding.actions.close": "Больше не показывать этот экран",
"onboarding.actions.go_to_explore": "Посмотреть, что актуально",
"onboarding.actions.go_to_home": "Перейти к домашней ленте новостей",
- "onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
+ "onboarding.compose.template": "Привет, #Mastodon!",
+ "onboarding.follows.empty": "К сожалению, сейчас нет результатов. Вы можете попробовать использовать поиск или просмотреть страницу \"Исследования\", чтобы найти людей, за которыми можно следить, или повторить попытку позже.",
"onboarding.follows.lead": "Вы сами формируете свою домашнюю ленту. Чем больше людей, за которыми вы следите, тем активнее и интереснее она будет. Эти профили могут быть хорошей отправной точкой - вы всегда можете от них отказаться!",
"onboarding.follows.title": "Популярно на Mastodon",
"onboarding.share.lead": "Расскажите людям, как они могут найти вас на Mastodon!",
- "onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
+ "onboarding.share.message": "Я {username} на #Mastodon! Следуйте за мной по адресу {url}",
"onboarding.share.next_steps": "Возможные дальнейшие шаги:",
"onboarding.share.title": "Поделиться вашим профилем",
"onboarding.start.lead": "Ваш новый аккаунт Mastodon готов к работе. Вот как вы можете использовать его по максимуму:",
@@ -463,10 +464,10 @@
"onboarding.steps.setup_profile.title": "Настройте свой профиль",
"onboarding.steps.share_profile.body": "Расскажите своим друзьям как найти вас на Mastodon!",
"onboarding.steps.share_profile.title": "Поделитесь вашим профилем",
- "onboarding.tips.2fa": "Did you know? You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!",
+ "onboarding.tips.2fa": "Знаете ли вы? Вы можете защитить свой аккаунт, настроив двухфакторную аутентификацию в настройках аккаунта. Она работает с любым приложением TOTP по вашему выбору, номер телефона не требуется!",
"onboarding.tips.accounts_from_other_servers": "Знали ли вы? Поскольку Mastodon децентрализован, некоторые профили, с которыми вы столкнетесь, будут размещены на серверах, отличных от вашего. И все же вы можете взаимодействовать с ними без проблем! Их сервер находится во второй половине имени пользователя!",
- "onboarding.tips.migration": "Did you know? If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
- "onboarding.tips.verification": "Did you know? You can verify your account by putting a link to your Mastodon profile on your own website and adding the website to your profile. No fees or documents necessary!",
+ "onboarding.tips.migration": "Знаете ли вы? Если вы чувствуете, что {domain} не подходит вам в качестве сервера в будущем, вы можете переехать на другой сервер Mastodon без потери своих последователей. Вы даже можете разместить свой собственный сервер!",
+ "onboarding.tips.verification": "Знали ли вы? Вы можете подтвердить свою учетную запись, разместив ссылку на свой профиль Mastodon на собственном сайте и добавив сайт в свой профиль. Никаких сборов или документов не требуется!",
"password_confirmation.exceeds_maxlength": "Срок подтверждения пароля превышает максимальную длину пароля",
"password_confirmation.mismatching": "Введенные пароли не совпадают.",
"picture_in_picture.restore": "Вернуть обратно",
diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json
index 82243f05ad..8947465aa9 100644
--- a/app/javascript/mastodon/locales/sa.json
+++ b/app/javascript/mastodon/locales/sa.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "स्तेक्त्रेसमनुलिपिं कुरु क्लिप्फलकं",
"errors.unexpected_crash.report_issue": "दोषमावेदय",
"explore.search_results": "परिणामानविच्छ",
- "explore.suggested_follows": "तुभ्यम्",
+ "explore.suggested_follows": "People",
"explore.title": "अन्विच्छ",
"explore.trending_links": "वार्ताः",
"explore.trending_statuses": "पत्राणि",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json
index 07ab7ebf26..7d318d0bab 100644
--- a/app/javascript/mastodon/locales/sc.json
+++ b/app/javascript/mastodon/locales/sc.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Còpia stacktrace in punta de billete",
"errors.unexpected_crash.report_issue": "Sinnala unu problema",
"explore.search_results": "Resurtados de sa chirca",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json
index 47d18bce4c..1da29dfcd4 100644
--- a/app/javascript/mastodon/locales/sco.json
+++ b/app/javascript/mastodon/locales/sco.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace tae yer clipboord",
"errors.unexpected_crash.report_issue": "Sen in a issue",
"explore.search_results": "Seirch finnins",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Splore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json
index 2fba412650..3e90a30f69 100644
--- a/app/javascript/mastodon/locales/si.json
+++ b/app/javascript/mastodon/locales/si.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "ස්ටැක්ට්රේස් පසුරු පුවරුවට පිටපත් කරන්න",
"errors.unexpected_crash.report_issue": "ගැටළුව වාර්තාව",
"explore.search_results": "සෙවුම් ප්රතිඵල",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "ගවේශණය",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index debd8e7699..6a6f8845ed 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Skopíruj stacktrace do schránky",
"errors.unexpected_crash.report_issue": "Nahlás problém",
"explore.search_results": "Výsledky hľadania",
- "explore.suggested_follows": "Pre teba",
+ "explore.suggested_follows": "Ľudia",
"explore.title": "Objavuj",
"explore.trending_links": "Novinky",
"explore.trending_statuses": "Príspevky",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Nazdar #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index 485e3890b3..6c5943e2d2 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopiraj sledenje skladu na odložišče",
"errors.unexpected_crash.report_issue": "Prijavi težavo",
"explore.search_results": "Rezultati iskanja",
- "explore.suggested_follows": "Za vas",
+ "explore.suggested_follows": "People",
"explore.title": "Razišči",
"explore.trending_links": "Novice",
"explore.trending_statuses": "Objave",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Tega zaslona ne kaži več",
"onboarding.actions.go_to_explore": "Poglejte, kaj je v trendu",
"onboarding.actions.go_to_home": "Pojdite na svoj domači vir",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Priljubljeno na Mastodonu",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index a06e36f82f..560ef73752 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopjo stacktrace-in në të papastër",
"errors.unexpected_crash.report_issue": "Raportoni problemin",
"explore.search_results": "Përfundime kërkimi",
- "explore.suggested_follows": "Për ju",
+ "explore.suggested_follows": "Persona",
"explore.title": "Eksploroni",
"explore.trending_links": "Lajme",
"explore.trending_statuses": "Postime",
@@ -445,28 +445,29 @@
"onboarding.actions.close": "Mos e shfaq sërish këtë skenë",
"onboarding.actions.go_to_explore": "Shihni ç’është në modë",
"onboarding.actions.go_to_home": "Kaloni te prurja juaj kryesore",
- "onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
- "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
+ "onboarding.compose.template": "Tungjatjeta #Mastodon!",
+ "onboarding.follows.empty": "Mjerisht, s’mund të shfaqen përfundime tani. Mund të provoni të përdorni kërkimin, ose të shfletoni faqen e eksplorimit, që të gjeni persona për ndjekje, ose të riprovoni më vonë.",
+ "onboarding.follows.lead": "Ju kujdeseni për prurjen tuaj. Sa më tepër persona të tjerë të ndiqni, aq më aktive dhe interesante do të bëhet ajo. Këto profile mund të jenë një pikënisje e mirë—mundeni përherë të ndërpritni ndjekjen e tyre më vonë!",
"onboarding.follows.title": "Popullore në Mastodon",
"onboarding.share.lead": "Bëjuni të ditur njerëzve se si mund t’ju gjejnë në Mastodon!",
- "onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
+ "onboarding.share.message": "Jam {username} në #Mastodon! Ejani dhe ndiqmëni te {url}",
"onboarding.share.next_steps": "Hapa pasues të mundshëm:",
"onboarding.share.title": "Ndani me të tjerët profilin tuaj",
- "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
- "onboarding.start.skip": "Want to skip right ahead?",
- "onboarding.start.title": "You've made it!",
- "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
+ "onboarding.start.lead": "Llogaria juaj e re Mastodon është gati për punë. Ja se si të përfitoni maksimumin prej saj:",
+ "onboarding.start.skip": "Doni të hidheni drejt e në punë?",
+ "onboarding.start.title": "Ia dolët!",
+ "onboarding.steps.follow_people.body": "Ju kujdeseni për prurjen tuaj. Le ta mbushim me persona interesantë.",
"onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
- "onboarding.steps.publish_status.body": "Say hello to the world.",
- "onboarding.steps.publish_status.title": "Make your first post",
- "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.tips.2fa": "Did you know? You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!",
- "onboarding.tips.accounts_from_other_servers": "Did you know? Since Mastodon is decentralized, some profiles you come across will be hosted on servers other than yours. And yet you can interact with them seamlessly! Their server is in the second half of their username!",
- "onboarding.tips.migration": "Did you know? If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
- "onboarding.tips.verification": "Did you know? You can verify your account by putting a link to your Mastodon profile on your own website and adding the website to your profile. No fees or documents necessary!",
+ "onboarding.steps.publish_status.body": "Përshëndetni botën.",
+ "onboarding.steps.publish_status.title": "Shkruani postimin tuaj të parë",
+ "onboarding.steps.setup_profile.body": "Ka më tepër gjasa që të tjerët të ndërveprojnë me ju, kur keni një profil të plotësuar.",
+ "onboarding.steps.setup_profile.title": "Personalizoni profilin tuaj",
+ "onboarding.steps.share_profile.body": "Bëjuni të ditur shokëve si t’ju gjejnë në Mastodon!",
+ "onboarding.steps.share_profile.title": "Ndani me të tjerët profilin tuaj",
+ "onboarding.tips.2fa": "E dini? Mund të siguroni llogarinë tuaj duke ujdisur mirëfilltësim dyfaktorësh, që nga rregullimet e llogarisë tuaj. Funksionon me çfarëdo aplikacioni TOTP që doni, pa pasur nevojë për numër telefoni!",
+ "onboarding.tips.accounts_from_other_servers": "E dini? Ngaqë Mastodon-i është i decentralizuar, disa profile që hasni, do të jenë të strehuar në shërbyes të tjerë nga ai i juaji. E megjithatë, mundeni të ndërveproni me ta në mënyrë të pacen! Shërbyesi i tyre gjendet në pjesën e dytë të emrit të përdoruesit të gjithkujt!",
+ "onboarding.tips.migration": "E dini? Nëse ju duket se {domain} s’është zgjidhje kushedi për shërbyes për ju në të ardhmen, mund të kaloni te një shërbyes tjetër Mastodon, pa humbur ndjekësit tuaj. Mundeni edhe të strehoni vetë shërbyesin tuaj!",
+ "onboarding.tips.verification": "E dini? Mund të verifikoni llogarinë tuaj duke vendosur në sajtin tuaj një lidhje për te profili juaj Mastodon dhe duke shtuar sajtin tuaj te profili juaj. Pa tarifa, apo pa u dashur dokumente!",
"password_confirmation.exceeds_maxlength": "Fjalëkalimi i ripohuar tejkalon gjatësinë maksimum të fjalëkalimeve",
"password_confirmation.mismatching": "Fjalëkalimi i ripohuar nuk përkon",
"picture_in_picture.restore": "Ktheje ku qe",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index ee2db4d539..e860c8fc37 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopiraj „stacktrace” u klipbord",
"errors.unexpected_crash.report_issue": "Prijavi problem",
"explore.search_results": "Rezultati pretrage",
- "explore.suggested_follows": "Za Vas",
+ "explore.suggested_follows": "People",
"explore.title": "Istraži",
"explore.trending_links": "Vesti",
"explore.trending_statuses": "Objave",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index 0432869f6a..c20657a876 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Копирај „stacktrace” у клипборд",
"errors.unexpected_crash.report_issue": "Пријави проблем",
"explore.search_results": "Резултати претраге",
- "explore.suggested_follows": "За Вас",
+ "explore.suggested_follows": "People",
"explore.title": "Истражи",
"explore.trending_links": "Вести",
"explore.trending_statuses": "Објаве",
@@ -445,11 +445,12 @@
"onboarding.actions.close": "Не приказуј овај екран поново",
"onboarding.actions.go_to_explore": "Погледај шта је у тренду",
"onboarding.actions.go_to_home": "Иди на почетну страницу",
- "onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
+ "onboarding.compose.template": "Hello #Mastodon!",
+ "onboarding.follows.empty": "Нажалост, тренутно се не могу приказати резултати. Можете покушати са коришћењем претраге или прегледањем странице за истраживање да бисте пронашли људе које ћете пратити или покушајте поново касније.",
"onboarding.follows.lead": "Ви сами бирате своју почетну страницу. Што више људи пратите, то ће бити активније и занимљивије. Ови профили могу бити добра полазна тачка—увек можете да их престанете пратити касније!",
"onboarding.follows.title": "Популарно на Mastodon-у",
"onboarding.share.lead": "Нека људи знају како могу да вас пронађу на Mastodon-у!",
- "onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
+ "onboarding.share.message": "Ја сам {username} на #Mastodon-у! Пратите ме на {url}",
"onboarding.share.next_steps": "Могући следећи кораци:",
"onboarding.share.title": "Поделите свој профил",
"onboarding.start.lead": "Ваш нови Mastodon налог је спреман. Ево како то можете искористити на најбољи начин:",
@@ -463,10 +464,10 @@
"onboarding.steps.setup_profile.title": "Прилагодите свој профил",
"onboarding.steps.share_profile.body": "Нека ваши пријатељи знају како да вас пронађу на Mastodon-у!",
"onboarding.steps.share_profile.title": "Поделите свој профил",
- "onboarding.tips.2fa": "Did you know? You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!",
+ "onboarding.tips.2fa": "Да ли сте знали? Можете да заштитите свој налог подешавањем двоструке потврде идентитета у подешавањима налога. Ради са било којом TOTP апликацијом по вашем избору, није потребан број телефона!",
"onboarding.tips.accounts_from_other_servers": "Да ли сте знали? Пошто је Mastodon децентрализован, неки профили на које наиђете биће смештени на серверима различитим од вашег. А ипак можете да комуницирате са њима беспрекорно! Њихов сервер је у другој половини њиховог корисничког имена!",
- "onboarding.tips.migration": "Did you know? If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
- "onboarding.tips.verification": "Did you know? You can verify your account by putting a link to your Mastodon profile on your own website and adding the website to your profile. No fees or documents necessary!",
+ "onboarding.tips.migration": "Да ли сте знали? Ако сматрате да {domain} није одличан избор сервера за вас у будућности, можете да пређете на други Mastodon сервер без губитка пратилаца. Можете чак и да хостујете сопствени сервер!",
+ "onboarding.tips.verification": "Да ли сте знали? Можете да верификујете свој налог тако што ћете ставити везу до свог Mastodon профила на свој веб сајт и додати веб сајт свом профилу. Нису потребне никакве накнаде или документи!",
"password_confirmation.exceeds_maxlength": "Потврда лозинке премашује максималну дужину лозинке",
"password_confirmation.mismatching": "Потврда лозинке се не подудара",
"picture_in_picture.restore": "Врати назад",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 9acf385283..795ffe377c 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -182,7 +182,7 @@
"conversation.with": "Med {names}",
"copypaste.copied": "Kopierad",
"copypaste.copy": "Kopiera",
- "copypaste.copy_to_clipboard": "Copy to clipboard",
+ "copypaste.copy_to_clipboard": "Kopiera till urklipp",
"directory.federated": "Från känt fediversum",
"directory.local": "Endast från {domain}",
"directory.new_arrivals": "Nyanlända",
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Kopiera stacktrace till urklipp",
"errors.unexpected_crash.report_issue": "Rapportera problem",
"explore.search_results": "Sökresultat",
- "explore.suggested_follows": "För dig",
+ "explore.suggested_follows": "Personer",
"explore.title": "Utforska",
"explore.trending_links": "Nyheter",
"explore.trending_statuses": "Inlägg",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hallå #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
@@ -462,7 +463,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": "Dela din profil",
"onboarding.tips.2fa": "Did you know? You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!",
"onboarding.tips.accounts_from_other_servers": "Did you know? Since Mastodon is decentralized, some profiles you come across will be hosted on servers other than yours. And yet you can interact with them seamlessly! Their server is in the second half of their username!",
"onboarding.tips.migration": "Did you know? If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json
index 5600422fc7..ca773f3880 100644
--- a/app/javascript/mastodon/locales/szl.json
+++ b/app/javascript/mastodon/locales/szl.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index 7d20a23329..6c048c13d0 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Stacktrace-ஐ clipboard-ல் நகலெடு",
"errors.unexpected_crash.report_issue": "புகாரளி",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json
index 40759754f2..a7bd1f5baa 100644
--- a/app/javascript/mastodon/locales/tai.json
+++ b/app/javascript/mastodon/locales/tai.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index 11deeb8dc2..5166282a61 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index 2443dfd227..367fe69494 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "คัดลอกการติดตามสแตกไปยังคลิปบอร์ด",
"errors.unexpected_crash.report_issue": "รายงานปัญหา",
"explore.search_results": "ผลลัพธ์การค้นหา",
- "explore.suggested_follows": "สำหรับคุณ",
+ "explore.suggested_follows": "ผู้คน",
"explore.title": "สำรวจ",
"explore.trending_links": "ข่าว",
"explore.trending_statuses": "โพสต์",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "ไม่ต้องแสดงหน้าจอนี้อีก",
"onboarding.actions.go_to_explore": "ดูสิ่งที่กำลังนิยม",
"onboarding.actions.go_to_home": "ไปยังฟีดหน้าแรกของคุณ",
+ "onboarding.compose.template": "สวัสดี #Mastodon!",
"onboarding.follows.empty": "น่าเสียดาย ไม่สามารถแสดงผลลัพธ์ได้ในตอนนี้ คุณสามารถลองใช้การค้นหาหรือเรียกดูหน้าสำรวจเพื่อค้นหาผู้คนที่จะติดตาม หรือลองอีกครั้งในภายหลัง",
"onboarding.follows.lead": "คุณเรียบเรียงฟีดหน้าแรกของคุณเอง ยิ่งคุณติดตามผู้คนมากเท่าไร ฟีดหน้าแรกก็จะยิ่งมีการใช้งานและน่าสนใจมากขึ้นเท่านั้น โปรไฟล์เหล่านี้อาจเป็นจุดเริ่มต้นที่ดี—คุณสามารถเลิกติดตามเขาได้ในภายหลังเสมอ!",
"onboarding.follows.title": "เป็นที่นิยมใน Mastodon",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 1f6ad6e6ea..4fa354bdd2 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Yığın izlemeyi (stacktrace) panoya kopyala",
"errors.unexpected_crash.report_issue": "Sorun bildir",
"explore.search_results": "Arama sonuçları",
- "explore.suggested_follows": "Sizin için",
+ "explore.suggested_follows": "İnsanlar",
"explore.title": "Keşfet",
"explore.trending_links": "Haberler",
"explore.trending_statuses": "Gönderiler",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Bunu tekrar gösterme",
"onboarding.actions.go_to_explore": "Öne çıkanları gör",
"onboarding.actions.go_to_home": "Ana akışına git",
+ "onboarding.compose.template": "Merhaba #Mastodon!",
"onboarding.follows.empty": "Maalesef şu an bir sonuç gösterilemiyor. Takip edilecek kişileri bulmak için arama veya keşfet sayfasına gözatmayı kullanabilirsiniz veya daha sonra tekrar deneyin.",
"onboarding.follows.lead": "Kendi ana akışınızı siz düzenliyorsunuz. Siz daha fazla insanı takip ettikçe, daha etkin ve ilgi çekici olacaktır. Bu profiller iyi bir başlangıç olabilir, isterseniz izlemeyi daha sonra bırakabilirsiniz!",
"onboarding.follows.title": "Mastodon'da Popüler",
diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json
index 0fc45cb0f6..9cab1a9010 100644
--- a/app/javascript/mastodon/locales/tt.json
+++ b/app/javascript/mastodon/locales/tt.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Хата турында белдерү",
"explore.search_results": "Search results",
- "explore.suggested_follows": "Сез өчен",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "Яңалыклар",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json
index c160d1b11f..f142264282 100644
--- a/app/javascript/mastodon/locales/ug.json
+++ b/app/javascript/mastodon/locales/ug.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 7c2e56e562..aa0e70f7b8 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Скопіювати трасування стека у буфер обміну",
"errors.unexpected_crash.report_issue": "Повідомити про проблему",
"explore.search_results": "Результати пошуку",
- "explore.suggested_follows": "Для вас",
+ "explore.suggested_follows": "Люди",
"explore.title": "Огляд",
"explore.trending_links": "Новини",
"explore.trending_statuses": "Дописи",
@@ -445,7 +445,8 @@
"onboarding.actions.close": "Більше не показувати цей екран",
"onboarding.actions.go_to_explore": "Переглянути тенденції",
"onboarding.actions.go_to_home": "Перейти до вашої домашньої стрічки",
- "onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
+ "onboarding.compose.template": "Привіт #Mastodon!",
+ "onboarding.follows.empty": "На жаль, жоден результат не може бути показаний просто зараз. Ви можете спробувати скористатися пошуком або переглядом сторінки огляду, щоб знайти людей для слідкування або повторіть спробу пізніше.",
"onboarding.follows.lead": "Ви керуєте головною стрічкою. Чим більше підписок на людей, тим вона активніша й цікавіша. Ці профілі можуть бути хорошою відправною точкою - ви завжди можете відписатися від них пізніше!",
"onboarding.follows.title": "Популярне в Mastodon",
"onboarding.share.lead": "Розкажіть людям про те, як вони можуть знайти вас на Mastodon!",
@@ -463,10 +464,10 @@
"onboarding.steps.setup_profile.title": "Персоналізуйте свій профіль",
"onboarding.steps.share_profile.body": "Розкажіть друзям, як знайти вас на Mastodon!",
"onboarding.steps.share_profile.title": "Поділитися своїм профілем",
- "onboarding.tips.2fa": "Чи знаєте ви? Ви можете захистити свій обліковий запис, налаштувавши двофакторну автентифікацію в налаштуваннях свого облікового запису. Це працює з будь-яким TOTP додатком на ваш вибір, без потреби номеру телефону!",
+ "onboarding.tips.2fa": "Чи знаєте ви? Ви можете захистити свій обліковий запис, налаштувавши двофакторну автентифікацію в налаштуваннях свого облікового запису. Це працює з будь-яким TOTP-застосунком, без потреби номера телефону!",
"onboarding.tips.accounts_from_other_servers": "Чи знаєте ви? Оскільки Mastodon децентралізований, деякі профілі, які ви відвідуєте, будуть розміщені на інших серверах. І все ж ви можете взаємодіяти з ними! Назва їхнього сервера розміщена у другій половині імені!",
- "onboarding.tips.migration": "Did you know? If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!",
- "onboarding.tips.verification": "Did you know? You can verify your account by putting a link to your Mastodon profile on your own website and adding the website to your profile. No fees or documents necessary!",
+ "onboarding.tips.migration": "Чи знаєте ви? Якщо ви відчуваєте, що {domain} не найкращий вибір сервера в майбутньому, ви можете перейти на інший сервер Mastodon, не втративши при цьому своїх підписників. Ви навіть можете створити власний сервер!",
+ "onboarding.tips.verification": "Чи знаєте ви? Ви можете перевірити свій обліковий запис, розмістивши посилання на ваш профіль Mastodon на вашому вебсайті та додавши сайт до вашого профілю. Без плати чи документів!",
"password_confirmation.exceeds_maxlength": "Підтвердження пароля перевищує максимально допустиму довжину пароля",
"password_confirmation.mismatching": "Підтвердження пароля не збігається",
"picture_in_picture.restore": "Повернути назад",
diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json
index f332720dc2..c9cd6e31bb 100644
--- a/app/javascript/mastodon/locales/ur.json
+++ b/app/javascript/mastodon/locales/ur.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "مسئلہ کی اطلاع کریں",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/uz.json b/app/javascript/mastodon/locales/uz.json
index a9d635ed61..edadd69261 100644
--- a/app/javascript/mastodon/locales/uz.json
+++ b/app/javascript/mastodon/locales/uz.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Stacktrace-ni vaqtinchalik xotiraga nusxalash",
"errors.unexpected_crash.report_issue": "Muammo haqida xabar berish",
"explore.search_results": "Qidiruv natijalari",
- "explore.suggested_follows": "Siz uchun",
+ "explore.suggested_follows": "People",
"explore.title": "Ko'rib chiqish",
"explore.trending_links": "Yangiliklar",
"explore.trending_statuses": "Postlar",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
index f553fcb195..1b2686e251 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Sao chép stacktrace vào clipboard",
"errors.unexpected_crash.report_issue": "Báo cáo lỗi",
"explore.search_results": "Kết quả tìm kiếm",
- "explore.suggested_follows": "Đề xuất",
+ "explore.suggested_follows": "Mọi người",
"explore.title": "Khám phá",
"explore.trending_links": "Tin tức",
"explore.trending_statuses": "Tút",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Không hiển thị lại",
"onboarding.actions.go_to_explore": "Xem những gì đang thịnh hành",
"onboarding.actions.go_to_home": "Đi đến bảng tin",
+ "onboarding.compose.template": "Xin chào #Mastodon!",
"onboarding.follows.empty": "Không có kết quả có thể được hiển thị lúc này. Bạn có thể thử sử dụng tính năng tìm kiếm hoặc duyệt qua trang khám phá để tìm những người theo dõi hoặc thử lại sau.",
"onboarding.follows.lead": "Bạn quản lý bảng tin của riêng bạn. Bạn càng theo dõi nhiều người, nó sẽ càng sôi động và thú vị. Những hồ sơ này có thể là một điểm khởi đầu tốt—bạn luôn có thể hủy theo dõi họ sau!",
"onboarding.follows.title": "Thịnh hành trên Mastodon",
diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json
index ce79e7656e..2433fb728f 100644
--- a/app/javascript/mastodon/locales/zgh.json
+++ b/app/javascript/mastodon/locales/zgh.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
- "explore.suggested_follows": "For you",
+ "explore.suggested_follows": "People",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 14e926bc81..7b1f3b5656 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "把堆栈跟踪信息复制到剪贴板",
"errors.unexpected_crash.report_issue": "报告问题",
"explore.search_results": "搜索结果",
- "explore.suggested_follows": "为你推荐",
+ "explore.suggested_follows": "用户",
"explore.title": "探索",
"explore.trending_links": "新闻",
"explore.trending_statuses": "嘟文",
@@ -440,24 +440,25 @@
"notifications_permission_banner.enable": "启用桌面通知",
"notifications_permission_banner.how_to_control": "启用桌面通知以在 Mastodon 未打开时接收通知。你可以通过交互通过上面的 {icon} 按钮来精细控制可以发送桌面通知的交互类型。",
"notifications_permission_banner.title": "精彩不容错过",
- "onboarding.action.back": "Take me back",
- "onboarding.actions.back": "Take me back",
+ "onboarding.action.back": "带我返回",
+ "onboarding.actions.back": "带我返回",
"onboarding.actions.close": "不再显示此画面",
"onboarding.actions.go_to_explore": "看看有什么新鲜事",
"onboarding.actions.go_to_home": "转到主页订阅流",
+ "onboarding.compose.template": "你好 #Mastodon!",
"onboarding.follows.empty": "很抱歉,现在无法显示任何结果。您可以尝试使用搜索或浏览探索页面来查找要关注的人,或稍后再试。",
- "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
- "onboarding.follows.title": "Popular on Mastodon",
- "onboarding.share.lead": "Let people know how they can find you on Mastodon!",
+ "onboarding.follows.lead": "你管理你自己的家庭饲料。你关注的人越多,它将越活跃和有趣。 这些配置文件可能是一个很好的起点——你可以随时取消关注它们!",
+ "onboarding.follows.title": "在Mastodon上流行的",
+ "onboarding.share.lead": "让人们知道他们如何在Mastodon找到你!",
"onboarding.share.message": "我是来自 #Mastodon 的 {username}!请在 {url} 关注我。",
- "onboarding.share.next_steps": "Possible next steps:",
- "onboarding.share.title": "Share your profile",
- "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
- "onboarding.start.skip": "Want to skip right ahead?",
- "onboarding.start.title": "You've made it!",
+ "onboarding.share.next_steps": "可能的下一步:",
+ "onboarding.share.title": "分享你的个人资料",
+ "onboarding.start.lead": "您新的 Mastodon 帐户已准备好。下面是如何最大限度地利用它:",
+ "onboarding.start.skip": "想要在前面跳过吗?",
+ "onboarding.start.title": "你已经成功了!",
"onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
"onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
- "onboarding.steps.publish_status.body": "Say hello to the world.",
+ "onboarding.steps.publish_status.body": "向世界问声好吧。",
"onboarding.steps.publish_status.title": "发布你的第一篇嘟文",
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
"onboarding.steps.setup_profile.title": "自定义你的个人资料",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 690bedb788..0952857e22 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "複製 stacktrace 到剪貼簿",
"errors.unexpected_crash.report_issue": "舉報問題",
"explore.search_results": "搜尋結果",
- "explore.suggested_follows": "為您推薦",
+ "explore.suggested_follows": "People",
"explore.title": "探索",
"explore.trending_links": "最新消息",
"explore.trending_statuses": "帖文",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
+ "onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index a5927d9954..c4c8b761e1 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -240,7 +240,7 @@
"errors.unexpected_crash.copy_stacktrace": "複製 stacktrace 到剪貼簿",
"errors.unexpected_crash.report_issue": "回報問題",
"explore.search_results": "搜尋結果",
- "explore.suggested_follows": "為您推薦",
+ "explore.suggested_follows": "使用者",
"explore.title": "探索",
"explore.trending_links": "最新消息",
"explore.trending_statuses": "嘟文",
@@ -445,6 +445,7 @@
"onboarding.actions.close": "不再顯示此畫面",
"onboarding.actions.go_to_explore": "看看發生什麼新鮮事",
"onboarding.actions.go_to_home": "前往您的首頁時間軸",
+ "onboarding.compose.template": "哈囉 #Mastodon!",
"onboarding.follows.empty": "很遺憾,目前未能顯示任何結果。您可以嘗試使用搜尋、瀏覽探索頁面以找尋人們跟隨、或稍候再試。",
"onboarding.follows.lead": "您建立自己的首頁時間軸。若您跟隨更多人的話,它將會變得更活躍有趣。這些個人檔案也許是個好起點,您可以隨時取消跟隨他們!",
"onboarding.follows.title": "Mastodon 上之流行內容",
diff --git a/app/javascript/mastodon/stream.js b/app/javascript/mastodon/stream.js
index 95e0359d0a..ff3af5fd88 100644
--- a/app/javascript/mastodon/stream.js
+++ b/app/javascript/mastodon/stream.js
@@ -17,10 +17,10 @@ let sharedConnection;
*/
/**
- * @typedef StreamEvent
- * @property {string} event
- * @property {object} payload
- */
+ * @typedef StreamEvent
+ * @property {string} event
+ * @property {object} payload
+ */
/**
* @type {Array.}
@@ -126,7 +126,7 @@ const sharedCallbacks = {
/**
* @param {string} channelName
* @param {Object.} params
- * @return {string}
+ * @returns {string}
*/
const channelNameWithInlineParams = (channelName, params) => {
if (Object.keys(params).length === 0) {
@@ -140,7 +140,7 @@ const channelNameWithInlineParams = (channelName, params) => {
* @param {string} channelName
* @param {Object.} params
* @param {function(Function, Function): { onConnect: (function(): void), onReceive: (function(StreamEvent): void), onDisconnect: (function(): void) }} callbacks
- * @return {function(): void}
+ * @returns {function(): void}
*/
// @ts-expect-error
export const connectStream = (channelName, params, callbacks) => (dispatch, getState) => {
@@ -227,7 +227,7 @@ const handleEventSourceMessage = (e, received) => {
* @param {string} accessToken
* @param {string} channelName
* @param {{ connected: Function, received: function(StreamEvent): void, disconnected: Function, reconnected: Function }} callbacks
- * @return {WebSocketClient | EventSource}
+ * @returns {WebSocketClient | EventSource}
*/
const createConnection = (streamingAPIBaseURL, accessToken, channelName, { connected, received, disconnected, reconnected }) => {
const params = channelName.split('&');
diff --git a/app/javascript/mastodon/utils/scrollbar.js b/app/javascript/mastodon/utils/scrollbar.js
index 6f0ee010b5..ca87dd76f5 100644
--- a/app/javascript/mastodon/utils/scrollbar.js
+++ b/app/javascript/mastodon/utils/scrollbar.js
@@ -4,7 +4,7 @@ import { isMobile } from '../is_mobile';
let cachedScrollbarWidth = null;
/**
- * @return {number}
+ * @returns {number}
*/
const getActualScrollbarWidth = () => {
const outer = document.createElement('div');
@@ -22,7 +22,7 @@ const getActualScrollbarWidth = () => {
};
/**
- * @return {number}
+ * @returns {number}
*/
export const getScrollbarWidth = () => {
if (cachedScrollbarWidth !== null) {
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 49875524da..bd01d8bd1e 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -1155,6 +1155,7 @@ body > [data-popper-placement] {
.video-player,
.audio-player,
.attachment-list,
+ .picture-in-picture-placeholder,
.status-card {
margin-inline-start: 46px + 10px;
width: calc(100% - (46px + 10px));
@@ -6522,6 +6523,7 @@ a.status-card.compact:hover {
background: darken($ui-base-color, 8%);
border-radius: 4px;
padding-bottom: 44px;
+ width: 100%;
&.editable {
border-radius: 0;
diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss
index d17303b854..03e06c1000 100644
--- a/app/javascript/styles/mastodon/forms.scss
+++ b/app/javascript/styles/mastodon/forms.scss
@@ -722,7 +722,7 @@ code {
}
}
- @media screen and (width <= 740px) and (width >= 441px) {
+ @media screen and (440px < width <= 740px) {
margin-top: 40px;
}
diff --git a/app/lib/connection_pool/shared_connection_pool.rb b/app/lib/connection_pool/shared_connection_pool.rb
index 2865a4108d..7415296525 100644
--- a/app/lib/connection_pool/shared_connection_pool.rb
+++ b/app/lib/connection_pool/shared_connection_pool.rb
@@ -37,7 +37,17 @@ class ConnectionPool::SharedConnectionPool < ConnectionPool
end
def checkin(preferred_tag)
- if ::Thread.current[key(preferred_tag)]
+ if preferred_tag.is_a?(Hash) && preferred_tag[:force]
+ # ConnectionPool 2.4+ calls `checkin(force: true)` after fork.
+ # When this happens, we should remove all connections from Thread.current
+
+ ::Thread.current.keys.each do |name| # rubocop:disable Style/HashEachMethods
+ next unless name.to_s.start_with?("#{@key}-")
+
+ @available.push(::Thread.current[name])
+ ::Thread.current[name] = nil
+ end
+ elsif ::Thread.current[key(preferred_tag)]
if ::Thread.current[key_count(preferred_tag)] == 1
@available.push(::Thread.current[key(preferred_tag)])
::Thread.current[key(preferred_tag)] = nil
diff --git a/app/models/appeal.rb b/app/models/appeal.rb
index 6fbf60b39e..f1290ad01a 100644
--- a/app/models/appeal.rb
+++ b/app/models/appeal.rb
@@ -19,7 +19,7 @@ class Appeal < ApplicationRecord
MAX_STRIKE_AGE = 20.days
belongs_to :account
- belongs_to :strike, class_name: 'AccountWarning', foreign_key: 'account_warning_id'
+ belongs_to :strike, class_name: 'AccountWarning', foreign_key: 'account_warning_id', inverse_of: :appeal
belongs_to :approved_by_account, class_name: 'Account', optional: true
belongs_to :rejected_by_account, class_name: 'Account', optional: true
diff --git a/app/models/concerns/account_interactions.rb b/app/models/concerns/account_interactions.rb
index 48ab1349dd..b2ccddef32 100644
--- a/app/models/concerns/account_interactions.rb
+++ b/app/models/concerns/account_interactions.rb
@@ -81,8 +81,10 @@ module AccountInteractions
# Follow relations
has_many :follow_requests, dependent: :destroy
- has_many :active_relationships, class_name: 'Follow', foreign_key: 'account_id', dependent: :destroy
- has_many :passive_relationships, class_name: 'Follow', foreign_key: 'target_account_id', dependent: :destroy
+ with_options class_name: 'Follow', dependent: :destroy do
+ has_many :active_relationships, foreign_key: 'account_id', inverse_of: :account
+ has_many :passive_relationships, foreign_key: 'target_account_id', inverse_of: :target_account
+ end
has_many :following, -> { order('follows.id desc') }, through: :active_relationships, source: :target_account
has_many :followers, -> { order('follows.id desc') }, through: :passive_relationships, source: :account
@@ -91,15 +93,19 @@ module AccountInteractions
has_many :account_notes, dependent: :destroy
# Block relationships
- has_many :block_relationships, class_name: 'Block', foreign_key: 'account_id', dependent: :destroy
+ with_options class_name: 'Block', dependent: :destroy do
+ has_many :block_relationships, foreign_key: 'account_id', inverse_of: :account
+ has_many :blocked_by_relationships, foreign_key: :target_account_id, inverse_of: :target_account
+ end
has_many :blocking, -> { order('blocks.id desc') }, through: :block_relationships, source: :target_account
- has_many :blocked_by_relationships, class_name: 'Block', foreign_key: :target_account_id, dependent: :destroy
has_many :blocked_by, -> { order('blocks.id desc') }, through: :blocked_by_relationships, source: :account
# Mute relationships
- has_many :mute_relationships, class_name: 'Mute', foreign_key: 'account_id', dependent: :destroy
+ with_options class_name: 'Mute', dependent: :destroy do
+ has_many :mute_relationships, foreign_key: 'account_id', inverse_of: :account
+ has_many :muted_by_relationships, foreign_key: :target_account_id, inverse_of: :target_account
+ end
has_many :muting, -> { order('mutes.id desc') }, through: :mute_relationships, source: :target_account
- has_many :muted_by_relationships, class_name: 'Mute', foreign_key: :target_account_id, dependent: :destroy
has_many :muted_by, -> { order('mutes.id desc') }, through: :muted_by_relationships, source: :account
has_many :conversation_mutes, dependent: :destroy
has_many :domain_blocks, class_name: 'AccountDomainBlock', dependent: :destroy
diff --git a/app/models/concerns/attachmentable.rb b/app/models/concerns/attachmentable.rb
index d44c224381..9cafedc209 100644
--- a/app/models/concerns/attachmentable.rb
+++ b/app/models/concerns/attachmentable.rb
@@ -46,7 +46,7 @@ module Attachmentable
def set_file_extension(attachment) # rubocop:disable Naming/AccessorMethodName
return if attachment.blank?
- attachment.instance_write :file_name, [Paperclip::Interpolations.basename(attachment, :original), appropriate_extension(attachment)].delete_if(&:blank?).join('.')
+ attachment.instance_write :file_name, [Paperclip::Interpolations.basename(attachment, :original), appropriate_extension(attachment)].compact_blank!.join('.')
end
def check_image_dimension(attachment)
diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb
index b5a07a5a00..c822ef5328 100644
--- a/app/models/custom_emoji.rb
+++ b/app/models/custom_emoji.rb
@@ -37,7 +37,8 @@ class CustomEmoji < ApplicationRecord
IMAGE_MIME_TYPES = %w(image/png image/gif image/webp).freeze
belongs_to :category, class_name: 'CustomEmojiCategory', optional: true
- has_one :local_counterpart, -> { where(domain: nil) }, class_name: 'CustomEmoji', primary_key: :shortcode, foreign_key: :shortcode
+
+ has_one :local_counterpart, -> { where(domain: nil) }, class_name: 'CustomEmoji', primary_key: :shortcode, foreign_key: :shortcode, inverse_of: false
has_attached_file :image, styles: { static: { format: 'png', convert_options: '-coalesce +profile "!icc,*" +set modify-date +set create-date' } }, validate_media_type: false
diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb
index fbb045416c..06d35d8bee 100644
--- a/app/models/domain_block.rb
+++ b/app/models/domain_block.rb
@@ -25,7 +25,7 @@ class DomainBlock < ApplicationRecord
validates :domain, presence: true, uniqueness: true, domain: true
- has_many :accounts, foreign_key: :domain, primary_key: :domain
+ has_many :accounts, foreign_key: :domain, primary_key: :domain, inverse_of: false
delegate :count, to: :accounts, prefix: true
scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) }
diff --git a/app/models/follow_recommendation.rb b/app/models/follow_recommendation.rb
index 602d329858..123570b124 100644
--- a/app/models/follow_recommendation.rb
+++ b/app/models/follow_recommendation.rb
@@ -12,7 +12,7 @@
class FollowRecommendation < ApplicationRecord
self.primary_key = :account_id
- belongs_to :account_summary, foreign_key: :account_id
+ belongs_to :account_summary, foreign_key: :account_id, inverse_of: false
belongs_to :account
scope :localized, ->(locale) { joins(:account_summary).merge(AccountSummary.localized(locale)) }
diff --git a/app/models/instance.rb b/app/models/instance.rb
index 1f96d37286..95231c52a7 100644
--- a/app/models/instance.rb
+++ b/app/models/instance.rb
@@ -13,11 +13,13 @@ class Instance < ApplicationRecord
attr_accessor :failure_days
- has_many :accounts, foreign_key: :domain, primary_key: :domain
+ has_many :accounts, foreign_key: :domain, primary_key: :domain, inverse_of: false
- belongs_to :domain_block, foreign_key: :domain, primary_key: :domain
- belongs_to :domain_allow, foreign_key: :domain, primary_key: :domain
- belongs_to :unavailable_domain, foreign_key: :domain, primary_key: :domain # skipcq: RB-RL1031
+ with_options foreign_key: :domain, primary_key: :domain, inverse_of: false do
+ belongs_to :domain_block
+ belongs_to :domain_allow
+ belongs_to :unavailable_domain # skipcq: RB-RL1031
+ end
scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) }
diff --git a/app/models/notification.rb b/app/models/notification.rb
index 3eaf557b08..8ba506fa1b 100644
--- a/app/models/notification.rb
+++ b/app/models/notification.rb
@@ -55,13 +55,15 @@ class Notification < ApplicationRecord
belongs_to :from_account, class_name: 'Account', optional: true
belongs_to :activity, polymorphic: true, optional: true
- belongs_to :mention, foreign_key: 'activity_id', optional: true
- belongs_to :status, foreign_key: 'activity_id', optional: true
- belongs_to :follow, foreign_key: 'activity_id', optional: true
- belongs_to :follow_request, foreign_key: 'activity_id', optional: true
- belongs_to :favourite, foreign_key: 'activity_id', optional: true
- belongs_to :poll, foreign_key: 'activity_id', optional: true
- belongs_to :report, foreign_key: 'activity_id', optional: true
+ with_options foreign_key: 'activity_id', optional: true do
+ belongs_to :mention, inverse_of: :notification
+ belongs_to :status, inverse_of: :notification
+ belongs_to :follow, inverse_of: :notification
+ belongs_to :follow_request, inverse_of: :notification
+ belongs_to :favourite, inverse_of: :notification
+ belongs_to :poll, inverse_of: false
+ belongs_to :report, inverse_of: false
+ end
validates :type, inclusion: { in: TYPES }
diff --git a/app/models/poll.rb b/app/models/poll.rb
index dd35e953b8..74a77978b9 100644
--- a/app/models/poll.rb
+++ b/app/models/poll.rb
@@ -101,7 +101,7 @@ class Poll < ApplicationRecord
end
def prepare_options
- self.options = options.map(&:strip).reject(&:blank?)
+ self.options = options.map(&:strip).compact_blank
end
def reset_parent_cache
diff --git a/app/models/status.rb b/app/models/status.rb
index 863e1a56b5..b69d2b0649 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -58,7 +58,7 @@ class Status < ApplicationRecord
belongs_to :account, inverse_of: :statuses
belongs_to :in_reply_to_account, class_name: 'Account', optional: true
belongs_to :conversation, optional: true
- belongs_to :preloadable_poll, class_name: 'Poll', foreign_key: 'poll_id', optional: true
+ belongs_to :preloadable_poll, class_name: 'Poll', foreign_key: 'poll_id', optional: true, inverse_of: false
belongs_to :thread, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :replies, optional: true
belongs_to :reblog, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblogs, optional: true
diff --git a/app/models/user.rb b/app/models/user.rb
index daf8768e8d..7181cf8d6e 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -445,7 +445,6 @@ class User < ApplicationRecord
return if chosen_languages.nil?
chosen_languages.compact_blank!
-
self.chosen_languages = nil if chosen_languages.empty?
end
diff --git a/app/services/import_service.rb b/app/services/import_service.rb
index 56f191c1fe..f6c94cbb6f 100644
--- a/app/services/import_service.rb
+++ b/app/services/import_service.rb
@@ -132,7 +132,7 @@ class ImportService < BaseService
def parse_import_data!(default_headers)
data = CSV.parse(import_data, headers: true)
data = CSV.parse(import_data, headers: default_headers) unless data.headers&.first&.strip&.include?(' ')
- @data = data.reject(&:blank?)
+ @data = data.compact_blank
end
def import_data
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 95c6e790f6..59f077bb4f 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -56,7 +56,7 @@ Rails.application.configure do
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# English when a translation cannot be found).
- config.i18n.fallbacks = true
+ config.i18n.fallbacks = [:en]
# Send deprecation notices to registered listeners.
config.active_support.deprecation = :notify
diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb
index bd37f67093..b72cbe1927 100644
--- a/config/initializers/paperclip.rb
+++ b/config/initializers/paperclip.rb
@@ -7,7 +7,7 @@ Paperclip.interpolates :filename do |attachment, style|
if style == :original
attachment.original_filename
else
- [basename(attachment, style), extension(attachment, style)].delete_if(&:blank?).join('.')
+ [basename(attachment, style), extension(attachment, style)].compact_blank!.join('.')
end
end
diff --git a/config/locales/af.yml b/config/locales/af.yml
index ed86619911..1dbf99afe9 100644
--- a/config/locales/af.yml
+++ b/config/locales/af.yml
@@ -91,13 +91,7 @@ af:
approve_appeal: Aanvaar appèl
reject_appeal: Verwerp appèl
errors:
- '400': The request you submitted was invalid or malformed.
'403': Jy het nie toestemming om hierdie bladsy te sien nie.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
exports:
bookmarks: Boekmerke
lists: Lyste
diff --git a/config/locales/bn.yml b/config/locales/bn.yml
index 84eb59a08e..24b85f13f7 100644
--- a/config/locales/bn.yml
+++ b/config/locales/bn.yml
@@ -224,13 +224,5 @@ bn:
report_notes:
created_msg: রিপোর্ট নোট সফলভাবে তৈরি করা হয়েছে!
destroyed_msg: রিপোর্ট নোট সফলভাবে মোছা হয়েছে!
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
verification:
verification: সত্যতা নির্ধারণ
diff --git a/config/locales/br.yml b/config/locales/br.yml
index fc4e3d9825..3ab23a4a1e 100644
--- a/config/locales/br.yml
+++ b/config/locales/br.yml
@@ -334,14 +334,6 @@ br:
created_at: Deiziad
title_actions:
none: Diwall
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
exports:
archive_takeout:
date: Deiziad
diff --git a/config/locales/bs.yml b/config/locales/bs.yml
index 2709636c9f..b7817c17fe 100644
--- a/config/locales/bs.yml
+++ b/config/locales/bs.yml
@@ -1,10 +1,2 @@
---
bs:
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
diff --git a/config/locales/en.yml b/config/locales/en.yml
index e5b30d7e38..ddefbc49b1 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -771,7 +771,7 @@ en:
remove_from_report: Remove from report
report: Report
deleted: Deleted
- favourites: Favourites
+ favourites: Favorites
history: Version history
in_reply_to: Replying to
language: Language
@@ -852,14 +852,14 @@ en:
statuses:
allow: Allow post
allow_account: Allow author
- description_html: These are posts that your server knows about that are currently being shared and favourited a lot at the moment. It can help your new and returning users to find more people to follow. No posts are displayed publicly until you approve the author, and the author allows their account to be suggested to others. You can also allow or reject individual posts.
+ description_html: These are posts that your server knows about that are currently being shared and favorited a lot at the moment. It can help your new and returning users to find more people to follow. No posts are displayed publicly until you approve the author, and the author allows their account to be suggested to others. You can also allow or reject individual posts.
disallow: Disallow post
disallow_account: Disallow author
no_status_selected: No trending posts were changed as none were selected
not_discoverable: Author has not opted-in to being discoverable
shared_by:
- one: Shared or favourited one time
- other: Shared and favourited %{friendly_count} times
+ one: Shared or favorited one time
+ other: Shared and favorited %{friendly_count} times
title: Trending posts
tags:
current_score: Current score %{score}
@@ -1337,9 +1337,9 @@ en:
sign_up:
subject: "%{name} signed up"
favourite:
- body: 'Your post was favourited by %{name}:'
- subject: "%{name} favourited your post"
- title: New favourite
+ body: 'Your post was favorited by %{name}:'
+ subject: "%{name} favorited your post"
+ title: New favorite
follow:
body: "%{name} is now following you!"
subject: "%{name} is now following you"
@@ -1572,10 +1572,10 @@ en:
enabled_hint: Automatically deletes your posts once they reach a specified age threshold, unless they match one of the exceptions below
exceptions: Exceptions
explanation: Because deleting posts is an expensive operation, this is done slowly over time when the server is not otherwise busy. For this reason, your posts may be deleted a while after they reach the age threshold.
- ignore_favs: Ignore favourites
+ ignore_favs: Ignore favorites
ignore_reblogs: Ignore boosts
interaction_exceptions: Exceptions based on interactions
- interaction_exceptions_explanation: Note that there is no guarantee for posts to be deleted if they go below the favourite or boost threshold after having once gone over them.
+ interaction_exceptions_explanation: Note that there is no guarantee for posts to be deleted if they go below the favorite or boost threshold after having once gone over them.
keep_direct: Keep direct messages
keep_direct_hint: Doesn't delete any of your direct messages
keep_media: Keep posts with media attachments
@@ -1586,8 +1586,8 @@ en:
keep_polls_hint: Doesn't delete any of your polls
keep_self_bookmark: Keep posts you bookmarked
keep_self_bookmark_hint: Doesn't delete your own posts if you have bookmarked them
- keep_self_fav: Keep posts you favourited
- keep_self_fav_hint: Doesn't delete your own posts if you have favourited them
+ keep_self_fav: Keep posts you favorited
+ keep_self_fav_hint: Doesn't delete your own posts if you have favorited them
min_age:
'1209600': 2 weeks
'15778476': 6 months
@@ -1598,8 +1598,8 @@ en:
'63113904': 2 years
'7889238': 3 months
min_age_label: Age threshold
- min_favs: Keep posts favourited at least
- min_favs_hint: Doesn't delete any of your posts that has received at least this number of favourites. Leave blank to delete posts regardless of their number of favourites
+ min_favs: Keep posts favorited at least
+ min_favs_hint: Doesn't delete any of your posts that has received at least this number of favorites. Leave blank to delete posts regardless of their number of favorites
min_reblogs: Keep posts boosted at least
min_reblogs_hint: Doesn't delete any of your posts that has been boosted at least this number of times. Leave blank to delete posts regardless of their number of boosts
stream_entries:
diff --git a/config/locales/ga.yml b/config/locales/ga.yml
index 8a7f43c862..65da86372b 100644
--- a/config/locales/ga.yml
+++ b/config/locales/ga.yml
@@ -94,6 +94,7 @@ ga:
search: Cuardaigh
security_measures:
only_password: Pasfhocal amháin
+ password_and_2fa: Pasfhocal agus fíordheimhniú déshraithe
sensitized: Marcáladh mar íogair
silence: Teorannaigh
silenced: Teoranta
@@ -238,6 +239,7 @@ ga:
status: Stádas
reports:
are_you_sure: An bhfuil tú cinnte?
+ cancel: Cealaigh
category: Catagóir
created_at: Tuairiscithe
delete_and_resolve: Scrios postálacha
@@ -361,14 +363,6 @@ ga:
title_actions:
none: Rabhadh
your_appeal_pending: Chuir tú achomharc isteach
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
exports:
archive_takeout:
date: Dáta
diff --git a/config/locales/hi.yml b/config/locales/hi.yml
index 809e425d83..8870fb8f92 100644
--- a/config/locales/hi.yml
+++ b/config/locales/hi.yml
@@ -7,14 +7,6 @@ hi:
upload_check_privacy_error_object_storage:
action: अधिक जानकारी हेतु यहां क्लिक करें।
message_html: " आपके वेब सर्वर का कन्फिगरेशन सही नहीं है। उपयोगकर्ताओं की निजता खतरे में है। "
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
relationships:
follow_failure: चुने हुए अकाउंट्स में से कुछ को फ़ॉलो नहीं किया जा सकता
sessions:
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index 44f408d304..dda7b22197 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -73,14 +73,6 @@ hr:
less_than_x_seconds: Upravo sada
over_x_years: "%{count}god"
x_months: "%{count}mj"
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
exports:
archive_takeout:
date: Datum
diff --git a/config/locales/hy.yml b/config/locales/hy.yml
index 540ef36167..658b982f08 100644
--- a/config/locales/hy.yml
+++ b/config/locales/hy.yml
@@ -529,15 +529,10 @@ hy:
domain_validator:
invalid_domain: անվաւէր տիրոյթի անուն
errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
'404': Էջը, որը փնտրում ես գոյութիւն չունի։
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
'429': Չափազանց շատ հարցումներ
'500':
title: Էջը ճիշտ չէ
- '503': The page could not be served due to a temporary server failure.
existing_username_validator:
not_found: չյաջողուեց գտնել այս ծածկագրով լոկալ օգտատիրոջ
not_found_multiple: չյաջողուեց գտնել %{usernames}
diff --git a/config/locales/ig.yml b/config/locales/ig.yml
index 6459396380..f52e594c83 100644
--- a/config/locales/ig.yml
+++ b/config/locales/ig.yml
@@ -1,10 +1,2 @@
---
ig:
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index 6766b160f9..a232623667 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -263,10 +263,8 @@ ka:
proceed: ანგარიშის გაუქმება
success_msg: თქვენი ანგარიში წარმატებით გაუქმდა
errors:
- '400': The request you submitted was invalid or malformed.
'403': ამ გვერდის ხილვის უფლება არ გაქვთ.
'404': გვერდი რომელსაც ეძებთ არ არსებობს.
- '406': This page is not available in the requested format.
'410': გვერდი რომელსაც ეძებდით აღარ არსებობს.
'422':
content: უსაფრთხოების ვერიფიკაცია ვერ მოხერხდა. ბლოკავთ ქუქის?
@@ -275,7 +273,6 @@ ka:
'500':
content: ბოდიში, ჩვენ მხარეს რაღაც არია.
title: გვერდი არაა სწორი
- '503': The page could not be served due to a temporary server failure.
noscript_html: მასტოდონ ვებ-აპლიკაციის გამოყენებისთვის, გთხოვთ ჩართოთ ჯავასკრიპტი. სხვა შემთხვევაში, მასტოდონის თქვენი პატფორმისთვის სცადეთ გამოიყენოთ ერთ-ერთი მშობლიური აპლიკაცია.
exports:
archive_takeout:
diff --git a/config/locales/kn.yml b/config/locales/kn.yml
index 998f613ef7..8806816165 100644
--- a/config/locales/kn.yml
+++ b/config/locales/kn.yml
@@ -1,10 +1,2 @@
---
kn:
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
diff --git a/config/locales/kw.yml b/config/locales/kw.yml
index 4085046cf6..b7731ca1a3 100644
--- a/config/locales/kw.yml
+++ b/config/locales/kw.yml
@@ -5,13 +5,5 @@ kw:
email: Ebost
followers: Holyoryon
title: Akontow
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
settings:
account: Akont
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index 2a4acb8312..ab31b3989e 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -298,10 +298,8 @@ lt:
proceed: Ištrinti paskyrą
success_msg: Jūsų paskyra sėkmingai ištrinta
errors:
- '400': The request you submitted was invalid or malformed.
'403': Jūs neturie prieigos matyti šiam puslapiui.
'404': Puslapis nerastas.
- '406': This page is not available in the requested format.
'410': Puslapis neegzistuoja.
'422':
content: Apsaugos patvirtinmas klaidingas. Ar jūs blokuojate sausainius?
@@ -310,7 +308,6 @@ lt:
'500':
content: Atsiprašome, tačiau mūsų pusėje įvyko klaida.
title: Netinkamas puslapis
- '503': The page could not be served due to a temporary server failure.
noscript_html: Kad naudotumėtės Mastodon web aplikacija, prašome įsijungti JavaScript. Alternatyviai, pabandykite viena iš vietinių aplikacijų Mastodon savo platformai.
exports:
archive_takeout:
diff --git a/config/locales/mk.yml b/config/locales/mk.yml
index 9504dc972e..de46b2f73b 100644
--- a/config/locales/mk.yml
+++ b/config/locales/mk.yml
@@ -1,10 +1,2 @@
---
mk:
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
diff --git a/config/locales/ml.yml b/config/locales/ml.yml
index 6db786ad98..9a3471d1a0 100644
--- a/config/locales/ml.yml
+++ b/config/locales/ml.yml
@@ -78,14 +78,6 @@ ml:
all: എല്ലാം
authorize_follow:
following: 'വിജയകരം! നിങ്ങൾ ഇപ്പോൾ പിന്തുടരുന്നു:'
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
filters:
contexts:
notifications: അറിയിപ്പുകൾ
diff --git a/config/locales/mr.yml b/config/locales/mr.yml
index 161e5e5717..de65b2f4a2 100644
--- a/config/locales/mr.yml
+++ b/config/locales/mr.yml
@@ -1,10 +1,2 @@
---
mr:
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index d6c3140a4b..8affb7745d 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -560,7 +560,6 @@ oc:
domain_validator:
invalid_domain: es pas un nom de domeni valid
errors:
- '400': The request you submitted was invalid or malformed.
'403': Avètz pas l’autorizacion de veire aquesta pagina.
'404': La pagina que cercatz existís pas aquí.
'406': La pagina es pas disponibla dins lo format demandat.
@@ -572,7 +571,6 @@ oc:
'500':
content: Un quicomet a pas foncionat coma caliá.
title: Aquesta pagina es pas corrècta
- '503': The page could not be served due to a temporary server failure.
noscript_html: Per utilizar l’aplicacion web de Mastodon, mercés d’activar JavaScript. O podètz utilizar una aplicacion per vòstra plataforma coma alernativa.
existing_username_validator:
not_found: impossible de trobar un utilizaire local amb aqueste nom d’utilizaire
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index dc20202ecf..31a1236b83 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -1057,6 +1057,7 @@ pl:
security: Bezpieczeństwo
set_new_password: Ustaw nowe hasło
setup:
+ email_below_hint_html: Sprawdź folder ze spamem lub poproś o inny link potwierdzający. Możesz poprawić swój adres e-mail, jeśli jest niepoprawny.
email_settings_hint_html: Kliknij link, który wysłaliśmy do Ciebie w celu zweryfikowania %{email}. Poczekamy tutaj.
link_not_received: Nie otrzymano linku?
new_confirmation_instructions_sent: Za kilka minut otrzymasz nowy e-mail z linkiem potwierdzającym!
@@ -1065,6 +1066,7 @@ pl:
preamble_html: Zaloguj się przy użyciu danych logowania %{domain}. Jeśli Twoje konto jest hostowane na innym serwerze, nie będziesz mógł się zalogować tutaj.
title: Zaloguj się do %{domain}
sign_up:
+ manual_review: Rejestracja na %{domain} przechodzi przez ręczne sprawdzanie przez naszych moderatorów. Aby pomóc nam usprawnić ten proces, napisz coś o sobie oraz dlaczego chcesz założyć konto na %{domain}.
preamble: Z kontem na tym serwerze Mastodon będziesz mógł obserwować każdą inną osobę w sieci, niezależnie od miejsca przechowywania ich konta.
title: Skonfigurujmy Twoje konto na %{domain}.
status:
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
index bc1a1d223b..a751669ca0 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -492,10 +492,8 @@ ro:
email_change_html: Puteți schimba adresa de e-mail fără a șterge contul dvs
email_contact_html: Dacă tot nu ajunge, puteți trimite e-mail la %{email} pentru ajutor
errors:
- '400': The request you submitted was invalid or malformed.
'403': Nu ai permisiunea să vizitezi această pagină.
'404': Pagina pe care o cauți nu există.
- '406': This page is not available in the requested format.
'410': Pagina pe care o cauți nu mai există.
'422':
content: Verificarea securității a eșuat. Ai blocat cookiurile?
@@ -504,7 +502,6 @@ ro:
'500':
content: Ne pare rău, dar ceva a funcționat greșit. Încercați din nou!?
title: Această pagină nu este corectă
- '503': The page could not be served due to a temporary server failure.
noscript_html: Pentru a utiliza o aplicație web Mastodon, te rog activează JavaScript. Alternativ, încearcă una din aplicațiile native Mastodon pentru platforma ta.
exports:
archive_takeout:
diff --git a/config/locales/sa.yml b/config/locales/sa.yml
index f8c64a7854..84df86ceb9 100644
--- a/config/locales/sa.yml
+++ b/config/locales/sa.yml
@@ -1,10 +1,2 @@
---
sa:
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml
index 39190ad9b4..3597544ce3 100644
--- a/config/locales/simple_form.ga.yml
+++ b/config/locales/simple_form.ga.yml
@@ -3,15 +3,15 @@ ga:
simple_form:
hints:
account_alias:
- acct: Sonraigh ainm@fearann an chuntais ar mhaith leat aistriú uaidh
+ acct: Sonraigh ainm@fearann don chuntas ar mhaith leat aistriú uaidh
account_migration:
- acct: Sonraigh ainm@fearann an chuntais ar mhaith leat aistriú chuige
+ acct: Sonraigh ainm@fearann don chuntas ar mhaith leat aistriú chuige
admin_account_action:
types:
- disable: Cuir cosc ar an úsáideoir a chuntas a úsáid, ach ná scrios nó folaigh a bhfuil ann.
+ disable: Cuir cosc ar an úsáideoir a chuntas a úsáid, ach ná scrios ná folaigh a bhfuil ann.
defaults:
- setting_display_media_hide_all: Folaítear meáin i gcónaí
- setting_display_media_show_all: Go dtaispeántar meáin i gcónaí
+ setting_display_media_hide_all: Folaigh meáin i gcónaí
+ setting_display_media_show_all: Taispeáin meáin i gcónaí
labels:
account:
fields:
@@ -40,7 +40,7 @@ ga:
setting_display_media_hide_all: Cuir uile i bhfolach
setting_display_media_show_all: Taispeáin uile
setting_theme: Téama suímh
- setting_trends: Taispeáin treochta an lae
+ setting_trends: Taispeáin treochtaí an lae inniu
title: Teideal
username: Ainm úsáideora
featured_tag:
diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml
index d0e7d165bb..cfb4dc5ba3 100644
--- a/config/locales/simple_form.vi.yml
+++ b/config/locales/simple_form.vi.yml
@@ -59,6 +59,7 @@ vi:
setting_show_application: Tên ứng dụng bạn dùng để đăng tút sẽ hiện trong chi tiết của tút
setting_use_blurhash: Lớp phủ mờ dựa trên màu sắc của hình ảnh nhạy cảm
setting_use_pending_items: Dồn lại toàn bộ tút mới và chỉ hiển thị khi nhấn vào
+ username: Chỉ chấp nhận ký tự, số và dấu gạch dưới
whole_word: Khi từ khóa hoặc cụm từ là chữ và số, nó sẽ chỉ hiện ra những từ chính xác như vậy
domain_allow:
domain: Máy chủ này sẽ tiếp nhận dữ liệu, rồi sau đó xử lý và lưu trữ
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index c86cf7a419..2d2dfa2d52 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -982,6 +982,7 @@ sq:
prefix_invited_by_user: "@%{name} ju fton të bëheni pjesë e këtij shërbyesi Mastodon!"
prefix_sign_up: Regjistrohuni në Mastodon që sot!
suffix: Me një llogari, do të jeni në gjendje të ndiqni persona, përditësime postimesh dhe të shkëmbeni mesazhe me përdorues nga cilido shërbyes Mastodon, etj!
+ didnt_get_confirmation: S’morët një lidhje ripohimi?
dont_have_your_security_key: S’i keni kyçet tuaj të sigurisë?
forgot_password: Harruat fjalëkalimin tuaj?
invalid_reset_password_token: Token-i i ricaktimit të fjalëkalimit është i pavlefshëm ose ka skaduar. Ju lutemi, kërkoni një të ri.
@@ -994,11 +995,16 @@ sq:
migrate_account_html: Nëse doni ta ridrejtoni këtë llogari te një tjetër, këtë mund ta formësoni këtu.
or_log_in_with: Ose bëni hyrjen me
privacy_policy_agreement_html: I kam lexuar dhe pajtohem me rregullat e privatësisë
+ progress:
+ confirm: Email ripohimi
+ details: Hollësitë tuaja
+ review: Shqyrtimi ynë
providers:
cas: CAS
saml: SAML
register: Regjistrohuni
registration_closed: "%{instance} s’pranon anëtarë të rinj"
+ resend_confirmation: Ridërgo lidhje ripohimi
reset_password: Ricaktoni fjalëkalimin
rules:
accept: Pranoje
@@ -1007,10 +1013,17 @@ sq:
title: Disa rregulla bazë.
security: Siguri
set_new_password: Caktoni fjalëkalim të ri
+ setup:
+ email_below_hint_html: Shihni te dosja juaj e të padëshiruara, ose kërkoni një tjetër. Mund të ndreqni adresën tuaj email, nëse është e gabuar.
+ email_settings_hint_html: Që të verifikoni %{email}, klikoni lidhjen që ju dërguam. Do të presim këtu.
+ link_not_received: S’morët lidhje?
+ new_confirmation_instructions_sent: Pas pak minutash do të merrni një email të ri me lidhjen e ripohimit!
+ title: Shihni te email-et tuaj
sign_in:
preamble_html: Hyni me kredencialet tuaja për te %{domain}. Nëse llogaria juaj strehohet në një tjetër shërbyes, s’do të jeni në gjendje të bëni hyrjen këtu.
title: Bëni hyrjen te %{domain}
sign_up:
+ manual_review: Regjistrimet te %{domain} kalojnë një shqyrtim dorazi nga moderatorët tanë. Që të na ndihmoni të përfundojmë regjistrimin tuaj, na shkruani pakëz mbi veten dhe pse doni një llogari në %{domain}.
preamble: Me një llogari në këtë shërbyes Mastodon, do të jeni në gjendje të ndiqni cilindo person tjetër në rrjet, pavarësisht se ku strehohet llogaria e tyre.
title: Le të ujdisim llogarinë tuaj në %{domain}.
status:
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index c7cc4c68db..4e93e6390f 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -125,6 +125,8 @@ sv:
removed_header_msg: Tog bort %{username}s sidhuvudsbild
resend_confirmation:
already_confirmed: Den här användaren är redan bekräftad
+ send: Skicka bekräftelselänken igen
+ success: Bekräftelselänken har skickats!
reset: Återställ
reset_password: Återställ lösenord
resubscribe: Starta en ny prenumeration
@@ -986,6 +988,7 @@ sv:
prefix_invited_by_user: "@%{name} bjuder in dig att gå med i en Mastodon-server!"
prefix_sign_up: Registrera dig på Mastodon idag!
suffix: Med ett konto kommer du att kunna följa personer, göra inlägg och utbyta meddelanden med användare från andra Mastodon-servrar, och ännu mer!
+ didnt_get_confirmation: Fick du ingen bekräftelselänk?
dont_have_your_security_key: Har du inte din säkerhetsnyckel?
forgot_password: Glömt ditt lösenord?
invalid_reset_password_token: Lösenordsåterställningstoken är ogiltig eller utgått. Vänligen be om en ny.
@@ -998,11 +1001,15 @@ sv:
migrate_account_html: Om du vill omdirigera detta konto till ett annat, kan du konfigurera det här.
or_log_in_with: Eller logga in med
privacy_policy_agreement_html: Jag har läst och godkänner integritetspolicyn
+ progress:
+ confirm: Bekräfta e-postadress
+ details: Dina uppgifter
providers:
cas: CAS
saml: SAML
register: Registrera
registration_closed: "%{instance} accepterar inte nya medlemmar"
+ resend_confirmation: Skicka bekräftelselänken igen
reset_password: Återställ lösenord
rules:
accept: Godkänn
@@ -1011,6 +1018,8 @@ sv:
title: Några grundregler.
security: Säkerhet
set_new_password: Skriv in nytt lösenord
+ setup:
+ link_not_received: Fick du ingen länk?
sign_in:
preamble_html: Logga in med dina användaruppgifter på %{domain}. Om ditt konto finns på en annan server kommer du inte att kunna logga in här.
title: Logga in på %{domain}
diff --git a/config/locales/szl.yml b/config/locales/szl.yml
index 2e059c51ac..bfcf2a6add 100644
--- a/config/locales/szl.yml
+++ b/config/locales/szl.yml
@@ -1,10 +1,2 @@
---
szl:
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
diff --git a/config/locales/ta.yml b/config/locales/ta.yml
index 2d2bce86ad..6386301bb1 100644
--- a/config/locales/ta.yml
+++ b/config/locales/ta.yml
@@ -197,14 +197,6 @@ ta:
errors:
invalid_key: ஒரு முறையான Ed25519 அல்லது Curve25519 key அல்ல
invalid_signature: ஒரு முறையான Ed25519 அடையாளம் அல்ல
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
filters:
index:
empty: தடுப்புகள் ஏதும் இல்லை.
diff --git a/config/locales/te.yml b/config/locales/te.yml
index e3b3f97ab6..a5eb8d7794 100644
--- a/config/locales/te.yml
+++ b/config/locales/te.yml
@@ -70,11 +70,3 @@ te:
moderation_notes: మోడరేషన్ నోట్స్
most_recent_activity: ఇటీవల యాక్టివిటీ
most_recent_ip: ఇటీవలి IP
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
diff --git a/config/locales/tt.yml b/config/locales/tt.yml
index d260e8be20..642ef8233c 100644
--- a/config/locales/tt.yml
+++ b/config/locales/tt.yml
@@ -140,14 +140,6 @@ tt:
x_minutes: "%{count}м"
x_months: "%{count}ай"
x_seconds: "%{count}сек"
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
exports:
archive_takeout:
date: Көне
diff --git a/config/locales/ug.yml b/config/locales/ug.yml
index ea5bdb5c88..48684f9ebe 100644
--- a/config/locales/ug.yml
+++ b/config/locales/ug.yml
@@ -1,10 +1,2 @@
---
ug:
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
diff --git a/config/locales/ur.yml b/config/locales/ur.yml
index a5ae83fd42..79c5de2dfb 100644
--- a/config/locales/ur.yml
+++ b/config/locales/ur.yml
@@ -1,10 +1,2 @@
---
ur:
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
diff --git a/config/locales/uz.yml b/config/locales/uz.yml
index caed654ec7..403ffd33cf 100644
--- a/config/locales/uz.yml
+++ b/config/locales/uz.yml
@@ -39,11 +39,3 @@ uz:
most_recent_ip: Eng oxirgi IP
perform_full_suspension: To'xtatilgan
reject: Rad etish
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
index 642d6e551e..92a90e52c1 100644
--- a/config/locales/vi.yml
+++ b/config/locales/vi.yml
@@ -983,11 +983,17 @@ vi:
migrate_account_html: Nếu bạn muốn bỏ tài khoản này để dùng một tài khoản khác, bạn có thể thiết lập tại đây.
or_log_in_with: Hoặc đăng nhập bằng
privacy_policy_agreement_html: Tôi đã đọc và đồng ý chính sách bảo mật
+ progress:
+ confirm: Xác minh email
+ details: Thông tin của bạn
+ review: Đợi duyệt
+ rules: Đọc nội quy
providers:
cas: CAS
saml: SAML
register: Đăng ký
registration_closed: "%{instance} tạm ngưng đăng ký mới"
+ resend_confirmation: Gửi lại email xác nhận
reset_password: Đặt lại mật khẩu
rules:
accept: Chấp nhận
@@ -996,10 +1002,17 @@ vi:
title: Nội quy máy chủ.
security: Bảo mật
set_new_password: Đặt mật khẩu mới
+ setup:
+ email_below_hint_html: Kiểm tra thư rác của bạn hoặc yêu cầu gửi lại. Bạn có thể sửa địa chỉ email của mình nếu sai.
+ email_settings_hint_html: Nhấn vào liên kết chúng tôi vừa gửi để xác minh %{email}. Nhanh nhé bạn.
+ link_not_received: Không nhận được mã?
+ new_confirmation_instructions_sent: Bạn sẽ nhận được một email mới với liên kết xác nhận sau vài phút!
+ title: Kiểm tra hộp thư của bạn
sign_in:
preamble_html: Đăng nhập bằng tài khoản %{domain}. Nếu tài khoản của bạn được lưu trữ trên một máy chủ khác, bạn sẽ không thể đăng nhập tại đây.
title: Đăng nhập %{domain}
sign_up:
+ manual_review: Đăng ký trên %{domain} cần duyệt thủ công. Để giúp chúng tôi xử lý nhanh, hãy viết một chút về bản thân và lý do bạn muốn có một tài khoản trên %{domain}.
preamble: Với tài khoản trên máy chủ Mastodon này, bạn sẽ có thể theo dõi bất kỳ người nào trên các máy chủ khác, bất kể tài khoản của họ ở đâu.
title: Cho phép bạn đăng ký trên %{domain}.
status:
diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml
index 4750a6cee5..3cbd31de59 100644
--- a/config/locales/zgh.yml
+++ b/config/locales/zgh.yml
@@ -83,14 +83,6 @@ zgh:
title: ⴹⴼⵕ %{acct}
deletes:
proceed: ⴽⴽⵙ ⴰⵎⵉⴹⴰⵏ
- errors:
- '400': The request you submitted was invalid or malformed.
- '403': You don't have permission to view this page.
- '404': The page you are looking for isn't here.
- '406': This page is not available in the requested format.
- '410': The page you were looking for doesn't exist here anymore.
- '429': Too many requests
- '503': The page could not be served due to a temporary server failure.
exports:
archive_takeout:
date: ⴰⵣⵎⵣ
diff --git a/config/routes.rb b/config/routes.rb
index 26d5c3526e..89f3fd18b9 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -85,6 +85,8 @@ Rails.application.routes.draw do
}
get '/users/:username', to: redirect('/@%{username}'), constraints: lambda { |req| req.format.nil? || req.format.html? }
+ get '/users/:username/following', to: redirect('/@%{username}/following'), constraints: lambda { |req| req.format.nil? || req.format.html? }
+ get '/users/:username/followers', to: redirect('/@%{username}/followers'), constraints: lambda { |req| req.format.nil? || req.format.html? }
get '/users/:username/statuses/:id', to: redirect('/@%{username}/%{id}'), constraints: lambda { |req| req.format.nil? || req.format.html? }
get '/authorize_follow', to: redirect { |_, request| "/authorize_interaction?#{request.params.to_query}" }
diff --git a/crowdin.yml b/crowdin.yml
index 6d84ab0a10..7cb74c4010 100644
--- a/crowdin.yml
+++ b/crowdin.yml
@@ -1,4 +1,6 @@
commit_message: '[ci skip]'
+skip_untranslated_strings: true
+
files:
- source: /app/javascript/mastodon/locales/en.json
translation: /app/javascript/mastodon/locales/%two_letters_code%.json
diff --git a/db/migrate/20170920024819_status_ids_to_timestamp_ids.rb b/db/migrate/20170920024819_status_ids_to_timestamp_ids.rb
index 8679f8ece8..82e91f1e11 100644
--- a/db/migrate/20170920024819_status_ids_to_timestamp_ids.rb
+++ b/db/migrate/20170920024819_status_ids_to_timestamp_ids.rb
@@ -4,7 +4,7 @@ class StatusIdsToTimestampIds < ActiveRecord::Migration[5.1]
Mastodon::Snowflake.define_timestamp_id
# Set up the statuses.id column to use our timestamp-based IDs.
- ActiveRecord::Base.connection.execute(<<~SQL)
+ ActiveRecord::Base.connection.execute(<<~SQL.squish)
ALTER TABLE statuses
ALTER COLUMN id
SET DEFAULT timestamp_id('statuses')
@@ -21,7 +21,7 @@ class StatusIdsToTimestampIds < ActiveRecord::Migration[5.1]
# We lock the table during this so that the ID won't get clobbered,
# but ID is indexed, so this should be a fast operation.
- ActiveRecord::Base.connection.execute(<<~SQL)
+ ActiveRecord::Base.connection.execute(<<~SQL.squish)
LOCK statuses;
SELECT setval('statuses_id_seq', (SELECT MAX(id) FROM statuses));
ALTER TABLE statuses
diff --git a/db/migrate/20180608213548_reject_following_blocked_users.rb b/db/migrate/20180608213548_reject_following_blocked_users.rb
index 78f8df5383..bb21bd8fa0 100644
--- a/db/migrate/20180608213548_reject_following_blocked_users.rb
+++ b/db/migrate/20180608213548_reject_following_blocked_users.rb
@@ -2,14 +2,14 @@ class RejectFollowingBlockedUsers < ActiveRecord::Migration[5.2]
disable_ddl_transaction!
def up
- blocked_follows = Follow.find_by_sql(<<-SQL)
+ blocked_follows = Follow.find_by_sql(<<-SQL.squish)
select f.* from follows f
inner join blocks b on
f.account_id = b.target_account_id and
f.target_account_id = b.account_id
SQL
- domain_blocked_follows = Follow.find_by_sql(<<-SQL)
+ domain_blocked_follows = Follow.find_by_sql(<<-SQL.squish)
select f.* from follows f
inner join accounts following on f.account_id = following.id
inner join account_domain_blocks b on
diff --git a/db/migrate/20230215074423_move_user_settings.rb b/db/migrate/20230215074423_move_user_settings.rb
index 8dbca9ecd2..2fac886bd6 100644
--- a/db/migrate/20230215074423_move_user_settings.rb
+++ b/db/migrate/20230215074423_move_user_settings.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class MoveUserSettings < ActiveRecord::Migration[6.1]
+ disable_ddl_transaction!
+
class User < ApplicationRecord; end
MAPPING = {
@@ -57,26 +59,29 @@ class MoveUserSettings < ActiveRecord::Migration[6.1]
end
def up
- User.find_each do |user|
- previous_settings = LegacySetting.where(thing_type: 'User', thing_id: user.id).index_by(&:var)
+ User.find_in_batches do |users|
+ previous_settings_for_batch = LegacySetting.where(thing_type: 'User', thing_id: users.map(&:id)).group_by(&:thing_id)
- user_settings = {}
+ users.each do |user|
+ previous_settings = previous_settings_for_batch[user.id]&.index_by(&:var) || {}
+ user_settings = {}
- MAPPING.each do |legacy_key, new_key|
- value = previous_settings[legacy_key]&.value
+ MAPPING.each do |legacy_key, new_key|
+ value = previous_settings[legacy_key]&.value
- next if value.blank?
+ next if value.blank?
- if value.is_a?(Hash)
- value.each do |nested_key, nested_value|
- user_settings[MAPPING[legacy_key][nested_key.to_sym]] = nested_value
+ if value.is_a?(Hash)
+ value.each do |nested_key, nested_value|
+ user_settings[MAPPING[legacy_key][nested_key.to_sym]] = nested_value
+ end
+ else
+ user_settings[new_key] = value
end
- else
- user_settings[new_key] = value
end
- end
- user.update_column('settings', Oj.dump(user_settings)) # rubocop:disable Rails/SkipsModelValidations
+ user.update_column('settings', Oj.dump(user_settings)) # rubocop:disable Rails/SkipsModelValidations
+ end
end
end
diff --git a/db/migrate/20230215074424_move_glitch_user_settings.rb b/db/migrate/20230215074424_move_glitch_user_settings.rb
index 76fafdd761..e47a84ebce 100644
--- a/db/migrate/20230215074424_move_glitch_user_settings.rb
+++ b/db/migrate/20230215074424_move_glitch_user_settings.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
class MoveGlitchUserSettings < ActiveRecord::Migration[6.1]
+ disable_ddl_transaction!
+
class User < ApplicationRecord; end
MAPPING = {
@@ -29,27 +31,30 @@ class MoveGlitchUserSettings < ActiveRecord::Migration[6.1]
end
def up
- User.find_each do |user|
- previous_settings = LegacySetting.where(thing_type: 'User', thing_id: user.id).index_by(&:var)
+ User.find_in_batches do |users|
+ previous_settings_for_batch = LegacySetting.where(thing_type: 'User', thing_id: users.map(&:id)).group_by(&:thing_id)
- user_settings = Oj.load(user.settings || '{}')
- user_settings.delete('theme')
+ users.each do |user|
+ previous_settings = previous_settings_for_batch[user.id]&.index_by(&:var) || {}
+ user_settings = Oj.load(user.settings || '{}')
+ user_settings.delete('theme')
- MAPPING.each do |legacy_key, new_key|
- value = previous_settings[legacy_key]&.value
+ MAPPING.each do |legacy_key, new_key|
+ value = previous_settings[legacy_key]&.value
- next if value.blank?
+ next if value.blank?
- if value.is_a?(Hash)
- value.each do |nested_key, nested_value|
- user_settings[MAPPING[legacy_key][nested_key.to_sym]] = nested_value
+ if value.is_a?(Hash)
+ value.each do |nested_key, nested_value|
+ user_settings[MAPPING[legacy_key][nested_key.to_sym]] = nested_value
+ end
+ else
+ user_settings[new_key] = value
end
- else
- user_settings[new_key] = value
end
- end
- user.update_column('settings', Oj.dump(user_settings)) # rubocop:disable Rails/SkipsModelValidations
+ user.update_column('settings', Oj.dump(user_settings)) # rubocop:disable Rails/SkipsModelValidations
+ end
end
end
diff --git a/db/post_migrate/20190519130537_remove_boosts_widening_audience.rb b/db/post_migrate/20190519130537_remove_boosts_widening_audience.rb
index d2d9242392..f1708b2e11 100644
--- a/db/post_migrate/20190519130537_remove_boosts_widening_audience.rb
+++ b/db/post_migrate/20190519130537_remove_boosts_widening_audience.rb
@@ -2,7 +2,7 @@ class RemoveBoostsWideningAudience < ActiveRecord::Migration[5.2]
disable_ddl_transaction!
def up
- public_boosts = Status.find_by_sql(<<-SQL)
+ public_boosts = Status.find_by_sql(<<-SQL.squish)
SELECT boost.id
FROM statuses AS boost
LEFT JOIN statuses AS boosted ON boost.reblog_of_id = boosted.id
diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb
index ebfb609791..43269334a5 100644
--- a/lib/mastodon/accounts_cli.rb
+++ b/lib/mastodon/accounts_cli.rb
@@ -545,7 +545,7 @@ module Mastodon
User.pending.find_each(&:approve!)
say('OK', :green)
elsif options[:number]&.positive?
- User.pending.limit(options[:number]).each(&:approve!)
+ User.pending.order(created_at: :asc).limit(options[:number]).each(&:approve!)
say('OK', :green)
elsif username.present?
account = Account.find_local(username)
diff --git a/lib/mastodon/ip_blocks_cli.rb b/lib/mastodon/ip_blocks_cli.rb
index 08939c0926..3b99595857 100644
--- a/lib/mastodon/ip_blocks_cli.rb
+++ b/lib/mastodon/ip_blocks_cli.rb
@@ -108,9 +108,9 @@ module Mastodon
IpBlock.where(severity: :no_access).find_each do |ip_block|
case options[:format]
when 'nginx'
- puts "deny #{ip_block.ip}/#{ip_block.ip.prefix};"
+ say "deny #{ip_block.ip}/#{ip_block.ip.prefix};"
else
- puts "#{ip_block.ip}/#{ip_block.ip.prefix}"
+ say "#{ip_block.ip}/#{ip_block.ip.prefix}"
end
end
end
diff --git a/lib/mastodon/snowflake.rb b/lib/mastodon/snowflake.rb
index 8030288aff..32ed140c30 100644
--- a/lib/mastodon/snowflake.rb
+++ b/lib/mastodon/snowflake.rb
@@ -146,7 +146,7 @@ module Mastodon::Snowflake
private
def already_defined?
- connection.execute(<<~SQL).values.first.first
+ connection.execute(<<~SQL.squish).values.first.first
SELECT EXISTS(
SELECT * FROM pg_proc WHERE proname = 'timestamp_id'
);
diff --git a/lib/tasks/tests.rake b/lib/tasks/tests.rake
index 35073b78bb..ceb421f4b2 100644
--- a/lib/tasks/tests.rake
+++ b/lib/tasks/tests.rake
@@ -113,7 +113,7 @@ namespace :tests do
desc 'Populate the database with test data for 2.4.0'
task populate_v2_4: :environment do # rubocop:disable Naming/VariableNumber
- ActiveRecord::Base.connection.execute(<<~SQL)
+ ActiveRecord::Base.connection.execute(<<~SQL.squish)
INSERT INTO "settings"
(id, thing_type, thing_id, var, value, created_at, updated_at)
VALUES
diff --git a/package.json b/package.json
index 9a5d41aa77..32c8a3f8d6 100644
--- a/package.json
+++ b/package.json
@@ -151,9 +151,9 @@
"@types/express": "^4.17.17",
"@types/http-link-header": "^1.0.3",
"@types/intl": "^1.2.0",
- "@types/jest": "^29.4.2",
+ "@types/jest": "^29.5.1",
"@types/js-yaml": "^4.0.5",
- "@types/lodash": "^4.14.191",
+ "@types/lodash": "^4.14.194",
"@types/npmlog": "^4.1.4",
"@types/object-assign": "^4.0.30",
"@types/pg": "^8.6.6",
@@ -179,13 +179,14 @@
"@types/requestidlecallback": "^0.3.5",
"@types/uuid": "^8.3.4",
"@types/webpack": "^4.41.33",
- "@types/yargs": "^17.0.22",
+ "@types/yargs": "^17.0.24",
"@typescript-eslint/eslint-plugin": "^5.59.1",
"@typescript-eslint/parser": "^5.59.1",
"babel-jest": "^29.5.0",
- "eslint": "^8.38.0",
+ "eslint": "^8.39.0",
"eslint-plugin-formatjs": "^4.9.0",
"eslint-plugin-import": "~2.27.5",
+ "eslint-plugin-jsdoc": "^43.1.1",
"eslint-plugin-jsx-a11y": "~6.7.1",
"eslint-plugin-promise": "~6.1.1",
"eslint-plugin-react": "~7.32.2",
@@ -198,8 +199,8 @@
"raf": "^3.4.1",
"react-intl-translations-manager": "^5.0.3",
"react-test-renderer": "^16.14.0",
- "stylelint": "^15.3.0",
- "stylelint-config-standard-scss": "^7.0.1",
+ "stylelint": "^15.6.0",
+ "stylelint-config-standard-scss": "^9.0.0",
"typescript": "^5.0.4",
"webpack-dev-server": "^3.11.3",
"yargs": "^17.7.1"
@@ -214,6 +215,7 @@
},
"lint-staged": {
"*": "prettier --ignore-unknown --write",
+ "Capfile|Gemfile|*.{rb,ruby,ru,rake}": "bundle exec rubocop -a",
"*.{js,jsx,ts,tsx}": "eslint --fix",
"*.{css,scss}": "stylelint --fix"
}
diff --git a/spec/config/initializers/rack_attack_spec.rb b/spec/config/initializers/rack_attack_spec.rb
index cc931b21b3..0411a48d2a 100644
--- a/spec/config/initializers/rack_attack_spec.rb
+++ b/spec/config/initializers/rack_attack_spec.rb
@@ -2,9 +2,7 @@
require 'rails_helper'
-describe Rack::Attack do
- include Rack::Test::Methods
-
+describe Rack::Attack, type: :request do
def app
Rails.application
end
@@ -25,7 +23,7 @@ describe Rack::Attack do
it 'does not change the request status' do
limit.times do
request.call
- expect(last_response.status).to_not eq(429)
+ expect(response).to_not have_http_status(429)
end
end
end
@@ -34,13 +32,13 @@ describe Rack::Attack do
it 'returns http too many requests after limit and returns to normal status after period' do
(limit * 2).times do |i|
request.call
- expect(last_response.status).to eq(429) if i > limit
+ expect(response).to have_http_status(429) if i > limit
end
travel period
request.call
- expect(last_response.status).to_not eq(429)
+ expect(response).to_not have_http_status(429)
end
end
end
@@ -51,7 +49,7 @@ describe Rack::Attack do
context 'through the website' do
let(:limit) { 25 }
let(:period) { 5.minutes }
- let(:request) { -> { post path, {}, 'REMOTE_ADDR' => remote_ip } }
+ let(:request) { -> { post path, headers: { 'REMOTE_ADDR' => remote_ip } } }
context 'for exact path' do
let(:path) { '/auth' }
@@ -69,7 +67,7 @@ describe Rack::Attack do
context 'through the API' do
let(:limit) { 5 }
let(:period) { 30.minutes }
- let(:request) { -> { post path, {}, 'REMOTE_ADDR' => remote_ip } }
+ let(:request) { -> { post path, headers: { 'REMOTE_ADDR' => remote_ip } } }
context 'for exact path' do
let(:path) { '/api/v1/accounts' }
@@ -82,7 +80,7 @@ describe Rack::Attack do
it 'returns http not found' do
request.call
- expect(last_response.status).to eq(404)
+ expect(response).to have_http_status(404)
end
end
end
@@ -91,7 +89,7 @@ describe Rack::Attack do
describe 'throttle excessive sign-in requests by IP address' do
let(:limit) { 25 }
let(:period) { 5.minutes }
- let(:request) { -> { post path, {}, 'REMOTE_ADDR' => remote_ip } }
+ let(:request) { -> { post path, headers: { 'REMOTE_ADDR' => remote_ip } } }
context 'for exact path' do
let(:path) { '/auth/sign_in' }
diff --git a/spec/controllers/auth/registrations_controller_spec.rb b/spec/controllers/auth/registrations_controller_spec.rb
index fffa7e06d7..5c422bdffc 100644
--- a/spec/controllers/auth/registrations_controller_spec.rb
+++ b/spec/controllers/auth/registrations_controller_spec.rb
@@ -104,9 +104,9 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
end
around do |example|
- current_locale = I18n.locale
- example.run
- I18n.locale = current_locale
+ I18n.with_locale(I18n.locale) do
+ example.run
+ end
end
before { request.env['devise.mapping'] = Devise.mappings[:user] }
diff --git a/spec/helpers/application_helper_spec.rb b/spec/helpers/application_helper_spec.rb
index 3c6a534a12..5e2c4f7422 100644
--- a/spec/helpers/application_helper_spec.rb
+++ b/spec/helpers/application_helper_spec.rb
@@ -45,30 +45,28 @@ describe ApplicationHelper do
end
describe 'locale_direction' do
- around do |example|
- current_locale = I18n.locale
- example.run
- I18n.locale = current_locale
- end
-
it 'adds rtl body class if locale is Arabic' do
- I18n.locale = :ar
- expect(helper.locale_direction).to eq 'rtl'
+ I18n.with_locale(:ar) do
+ expect(helper.locale_direction).to eq 'rtl'
+ end
end
it 'adds rtl body class if locale is Farsi' do
- I18n.locale = :fa
- expect(helper.locale_direction).to eq 'rtl'
+ I18n.with_locale(:fa) do
+ expect(helper.locale_direction).to eq 'rtl'
+ end
end
it 'adds rtl if locale is Hebrew' do
- I18n.locale = :he
- expect(helper.locale_direction).to eq 'rtl'
+ I18n.with_locale(:he) do
+ expect(helper.locale_direction).to eq 'rtl'
+ end
end
it 'does not add rtl if locale is Thai' do
- I18n.locale = :th
- expect(helper.locale_direction).to_not eq 'rtl'
+ I18n.with_locale(:th) do
+ expect(helper.locale_direction).to_not eq 'rtl'
+ end
end
end
diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb
index 341fe6f233..ab98bac388 100644
--- a/spec/mailers/notification_mailer_spec.rb
+++ b/spec/mailers/notification_mailer_spec.rb
@@ -61,12 +61,12 @@ RSpec.describe NotificationMailer, type: :mailer do
include_examples 'localized subject', 'notification_mailer.favourite.subject', name: 'bob'
it 'renders the headers' do
- expect(mail.subject).to eq('bob favourited your post')
+ expect(mail.subject).to eq('bob favorited your post')
expect(mail[:to].value).to eq("#{receiver.account.username} <#{receiver.email}>")
end
it 'renders the body' do
- expect(mail.body.encoded).to match('Your post was favourited by bob')
+ expect(mail.body.encoded).to match('Your post was favorited by bob')
expect(mail.body.encoded).to include 'The body of the own status'
end
end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index 2e2ca72748..458b2ce52a 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -951,10 +951,10 @@ RSpec.describe Account, type: :model do
end
context 'when is local' do
- # Test disabled because test environment omits autogenerating keys for performance
- xit 'generates keys' do
+ it 'generates keys' do
account = Account.create!(domain: nil, username: Faker::Internet.user_name(separators: ['_']))
- expect(account.keypair.private?).to be true
+ expect(account.keypair).to be_private
+ expect(account.keypair).to be_public
end
end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 2bb6a334b1..b7754e9265 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -527,6 +527,28 @@ RSpec.describe User, type: :model do
end
describe '.those_who_can' do
- pending
+ let!(:moderator_user) { Fabricate(:user, role: UserRole.find_by(name: 'Moderator')) }
+
+ context 'when there are not any user roles' do
+ before { UserRole.destroy_all }
+
+ it 'returns an empty list' do
+ expect(User.those_who_can(:manage_blocks)).to eq([])
+ end
+ end
+
+ context 'when there are not users with the needed role' do
+ it 'returns an empty list' do
+ expect(User.those_who_can(:manage_blocks)).to eq([])
+ end
+ end
+
+ context 'when there are users with roles' do
+ let!(:admin_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
+
+ it 'returns the users with the role' do
+ expect(User.those_who_can(:manage_blocks)).to eq([admin_user])
+ end
+ end
end
end
diff --git a/spec/requests/follower_accounts_spec.rb b/spec/requests/follower_accounts_spec.rb
new file mode 100644
index 0000000000..52e86e13fe
--- /dev/null
+++ b/spec/requests/follower_accounts_spec.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'FollowerAccountsController' do
+ describe 'The follower_accounts route' do
+ it "returns a http 'moved_permanently' code" do
+ get '/users/:username/followers'
+
+ expect(response).to have_http_status(301)
+ end
+ end
+end
diff --git a/spec/requests/following_accounts_spec.rb b/spec/requests/following_accounts_spec.rb
new file mode 100644
index 0000000000..f0955ceb36
--- /dev/null
+++ b/spec/requests/following_accounts_spec.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe 'FollowingAccountsController' do
+ describe 'The following_accounts route' do
+ it "returns a http 'moved_permanently' code" do
+ get '/users/:username/following'
+
+ expect(response).to have_http_status(301)
+ end
+ end
+end
diff --git a/spec/requests/localization_spec.rb b/spec/requests/localization_spec.rb
index 39eeee5f01..b7fb53ed8d 100644
--- a/spec/requests/localization_spec.rb
+++ b/spec/requests/localization_spec.rb
@@ -3,8 +3,10 @@
require 'rails_helper'
describe 'Localization' do
- after(:all) do
- I18n.locale = I18n.default_locale
+ around do |example|
+ I18n.with_locale(I18n.locale) do
+ example.run
+ end
end
it 'uses a specific region when provided' do
diff --git a/spec/views/statuses/show.html.haml_spec.rb b/spec/views/statuses/show.html.haml_spec.rb
index ca5bb2ae87..370743dfec 100644
--- a/spec/views/statuses/show.html.haml_spec.rb
+++ b/spec/views/statuses/show.html.haml_spec.rb
@@ -29,10 +29,10 @@ describe 'statuses/show.html.haml', without_verify_partial_doubles: true do
header_tags = view.content_for(:header_tags)
- expect(header_tags).to match(%r{})
- expect(header_tags).to match(%r{})
- expect(header_tags).to match(%r{})
- expect(header_tags).to match(%r{})
+ expect(header_tags).to match(//)
+ expect(header_tags).to match(//)
+ expect(header_tags).to match(//)
+ expect(header_tags).to match(%r{})
end
it 'has twitter player tag' do
@@ -48,7 +48,7 @@ describe 'statuses/show.html.haml', without_verify_partial_doubles: true do
header_tags = view.content_for(:header_tags)
- expect(header_tags).to match(%r{})
- expect(header_tags).to match(%r{})
+ expect(header_tags).to match(%r{})
+ expect(header_tags).to match(//)
end
end
diff --git a/streaming/index.js b/streaming/index.js
index a5b53ea497..48ad41f680 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -53,7 +53,7 @@ const redisUrlToClient = async (defaultConfig, redisUrl) => {
/**
* @param {string} json
* @param {any} req
- * @return {Object.|null}
+ * @returns {Object.|null}
*/
const parseJSON = (json, req) => {
try {
@@ -70,7 +70,7 @@ const parseJSON = (json, req) => {
/**
* @param {Object.} env the `process.env` value to read configuration from
- * @return {Object.} the configuration for the PostgreSQL connection
+ * @returns {Object.} the configuration for the PostgreSQL connection
*/
const pgConfigFromEnv = (env) => {
const pgConfigs = {
@@ -124,7 +124,7 @@ const pgConfigFromEnv = (env) => {
/**
* @param {Object.} env the `process.env` value to read configuration from
- * @return {Object.} configuration for the Redis connection
+ * @returns {Object.} configuration for the Redis connection
*/
const redisConfigFromEnv = (env) => {
const redisNamespace = env.REDIS_NAMESPACE || null;
@@ -171,7 +171,7 @@ const startServer = async () => {
/**
* @param {string[]} channels
- * @return {function(): void}
+ * @returns {function(): void}
*/
const subscriptionHeartbeat = channels => {
const interval = 6 * 60;
@@ -224,6 +224,7 @@ const startServer = async () => {
/**
* @param {string} channel
+ * @param {function(string): void} callback
*/
const unsubscribe = (channel, callback) => {
log.silly(`Removing listener for ${channel}`);
@@ -255,7 +256,7 @@ const startServer = async () => {
/**
* @param {any} value
- * @return {boolean}
+ * @returns {boolean}
*/
const isTruthy = value =>
value && !FALSE_VALUES.includes(value);
@@ -263,7 +264,7 @@ const startServer = async () => {
/**
* @param {any} req
* @param {any} res
- * @param {function(Error=): void}
+ * @param {function(Error=): void} next
*/
const allowCrossDomain = (req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
@@ -276,7 +277,7 @@ const startServer = async () => {
/**
* @param {any} req
* @param {any} res
- * @param {function(Error=): void}
+ * @param {function(Error=): void} next
*/
const setRequestId = (req, res, next) => {
req.requestId = uuid.v4();
@@ -288,7 +289,7 @@ const startServer = async () => {
/**
* @param {any} req
* @param {any} res
- * @param {function(Error=): void}
+ * @param {function(Error=): void} next
*/
const setRemoteAddress = (req, res, next) => {
req.remoteAddress = req.connection.remoteAddress;
@@ -299,7 +300,7 @@ const startServer = async () => {
/**
* @param {any} req
* @param {string[]} necessaryScopes
- * @return {boolean}
+ * @returns {boolean}
*/
const isInScope = (req, necessaryScopes) =>
req.scopes.some(scope => necessaryScopes.includes(scope));
@@ -307,7 +308,7 @@ const startServer = async () => {
/**
* @param {string} token
* @param {any} req
- * @return {Promise.}
+ * @returns {Promise.}
*/
const accountFromToken = (token, req) => new Promise((resolve, reject) => {
pgPool.connect((err, client, done) => {
@@ -345,8 +346,7 @@ const startServer = async () => {
/**
* @param {any} req
- * @param {boolean=} required
- * @return {Promise.}
+ * @returns {Promise.}
*/
const accountFromRequest = (req) => new Promise((resolve, reject) => {
const authorization = req.headers.authorization;
@@ -368,7 +368,7 @@ const startServer = async () => {
/**
* @param {any} req
- * @return {string}
+ * @returns {string}
*/
const channelNameFromPath = req => {
const { path, query } = req;
@@ -412,7 +412,7 @@ const startServer = async () => {
/**
* @param {any} req
* @param {string} channelName
- * @return {Promise.}
+ * @returns {Promise.}
*/
const checkScopes = (req, channelName) => new Promise((resolve, reject) => {
log.silly(req.requestId, `Checking OAuth scopes for ${channelName}`);
@@ -477,7 +477,7 @@ const startServer = async () => {
/**
* @param {any} req
* @param {SystemMessageHandlers} eventHandlers
- * @return {function(string): void}
+ * @returns {function(string): void}
*/
const createSystemMessageListener = (req, eventHandlers) => {
return message => {
@@ -565,14 +565,14 @@ const startServer = async () => {
/**
* @param {array} arr
* @param {number=} shift
- * @return {string}
+ * @returns {string}
*/
const placeholders = (arr, shift = 0) => arr.map((_, i) => `$${i + 1 + shift}`).join(', ');
/**
* @param {string} listId
* @param {any} req
- * @return {Promise.}
+ * @returns {Promise.}
*/
const authorizeListAccess = (listId, req) => new Promise((resolve, reject) => {
const { accountId } = req;
@@ -603,7 +603,7 @@ const startServer = async () => {
* @param {function(string[], function(string): void): void} attachCloseHandler
* @param {boolean=} needsFiltering
* @param {boolean=} allowLocalOnly
- * @return {function(string): void}
+ * @returns {function(string): void}
*/
const streamFrom = (ids, req, output, attachCloseHandler, needsFiltering = false, allowLocalOnly = false) => {
const accountId = req.accountId || req.remoteAddress;
@@ -772,7 +772,7 @@ const startServer = async () => {
/**
* @param {any} req
* @param {any} res
- * @return {function(string, string): void}
+ * @returns {function(string, string): void}
*/
const streamToHttp = (req, res) => {
const accountId = req.accountId || req.remoteAddress;
@@ -799,7 +799,7 @@ const startServer = async () => {
/**
* @param {any} req
* @param {function(): void} [closeHandler]
- * @return {function(string[]): void}
+ * @returns {function(string[]): void}
*/
const streamHttpEnd = (req, closeHandler = undefined) => (ids) => {
req.on('close', () => {
@@ -817,7 +817,7 @@ const startServer = async () => {
* @param {any} req
* @param {any} ws
* @param {string[]} streamName
- * @return {function(string, string): void}
+ * @returns {function(string, string): void}
*/
const streamToWs = (req, ws, streamName) => (event, payload) => {
if (ws.readyState !== ws.OPEN) {
@@ -892,7 +892,7 @@ const startServer = async () => {
/**
* @param {any} req
- * @return {string[]}
+ * @returns {string[]}
*/
const channelsForUserStream = req => {
const arr = [`timeline:${req.accountId}`];
@@ -917,7 +917,7 @@ const startServer = async () => {
/**
* @param {string} str
- * @return {string}
+ * @returns {string}
*/
const foldToASCII = str => {
const regex = new RegExp(NON_ASCII_CHARS.split('').join('|'), 'g');
@@ -930,7 +930,7 @@ const startServer = async () => {
/**
* @param {string} str
- * @return {string}
+ * @returns {string}
*/
const normalizeHashtag = str => {
return foldToASCII(str.normalize('NFKC').toLowerCase()).replace(/[^\p{L}\p{N}_\u00b7\u200c]/gu, '');
@@ -940,7 +940,7 @@ const startServer = async () => {
* @param {any} req
* @param {string} name
* @param {StreamParams} params
- * @return {Promise.<{ channelIds: string[], options: { needsFiltering: boolean } }>}
+ * @returns {Promise.<{ channelIds: string[], options: { needsFiltering: boolean } }>}
*/
const channelNameToIds = (req, name, params) => new Promise((resolve, reject) => {
switch (name) {
@@ -1062,7 +1062,7 @@ const startServer = async () => {
/**
* @param {string} channelName
* @param {StreamParams} params
- * @return {string[]}
+ * @returns {string[]}
*/
const streamNameFromChannelName = (channelName, params) => {
if (channelName === 'list') {
@@ -1170,7 +1170,7 @@ const startServer = async () => {
/**
* @param {string|string[]} arrayOrString
- * @return {string}
+ * @returns {string}
*/
const firstParam = arrayOrString => {
if (Array.isArray(arrayOrString)) {
diff --git a/yarn.lock b/yarn.lock
index 1f87e2c9ac..f12a891890 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1110,25 +1110,25 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
-"@csstools/css-parser-algorithms@^2.0.1":
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.0.1.tgz#ff02629c7c95d1f4f8ea84d5ef1173461610535e"
- integrity sha512-B9/8PmOtU6nBiibJg0glnNktQDZ3rZnGn/7UmDfrm2vMtrdlXO3p7ErE95N0up80IRk9YEtB5jyj/TmQ1WH3dw==
-
-"@csstools/css-tokenizer@^2.1.0":
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.1.0.tgz#fee4de3d444db3ce9007f3af6474af8ba3e4b930"
- integrity sha512-dtqFyoJBHUxGi9zPZdpCKP1xk8tq6KPHJ/NY4qWXiYo6IcSGwzk3L8x2XzZbbyOyBs9xQARoGveU2AsgLj6D2A==
-
-"@csstools/media-query-list-parser@^2.0.1":
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.1.tgz#d85a366811563a5d002755ed10e5212a1613c91d"
- integrity sha512-X2/OuzEbjaxhzm97UJ+95GrMeT29d1Ib+Pu+paGLuRWZnWRK9sI9r3ikmKXPWGA1C4y4JEdBEFpp9jEqCvLeRA==
-
-"@csstools/selector-specificity@^2.1.1":
+"@csstools/css-parser-algorithms@^2.1.1":
version "2.1.1"
- resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.1.1.tgz#c9c61d9fe5ca5ac664e1153bb0aa0eba1c6d6308"
- integrity sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==
+ resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.1.1.tgz#7b62e6412a468a2d1096ed267edd1e4a7fd4a119"
+ integrity sha512-viRnRh02AgO4mwIQb2xQNJju0i+Fh9roNgmbR5xEuG7J3TGgxjnE95HnBLgsFJOJOksvcfxOUCgODcft6Y07cA==
+
+"@csstools/css-tokenizer@^2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-2.1.1.tgz#07ae11a0a06365d7ec686549db7b729bc036528e"
+ integrity sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==
+
+"@csstools/media-query-list-parser@^2.0.4":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-2.0.4.tgz#466bd254041530dfd1e88bcb1921e8ca4af75b6a"
+ integrity sha512-GyYot6jHgcSDZZ+tLSnrzkR7aJhF2ZW6d+CXH66mjy5WpAQhZD4HDke2OQ36SivGRWlZJpAz7TzbW6OKlEpxAA==
+
+"@csstools/selector-specificity@^2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016"
+ integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==
"@discoveryjs/json-ext@0.5.7":
version "0.5.7"
@@ -1218,6 +1218,15 @@
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46"
integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==
+"@es-joy/jsdoccomment@~0.37.1":
+ version "0.37.1"
+ resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.37.1.tgz#fa32a41ba12097452693343e09ad4d26d157aedd"
+ integrity sha512-5vxWJ1gEkEF0yRd0O+uK6dHJf7adrxwQSX8PuRiPfFSAbNLnY0ZJfXaZucoz14Jj2N11xn2DnlEPwWRpYpvRjg==
+ dependencies:
+ comment-parser "1.3.1"
+ esquery "^1.5.0"
+ jsdoc-type-pratt-parser "~4.0.0"
+
"@eslint-community/eslint-utils@^4.2.0":
version "4.2.0"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz#a831e6e468b4b2b5ae42bf658bea015bf10bc518"
@@ -1245,10 +1254,10 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@eslint/js@8.38.0":
- version "8.38.0"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.38.0.tgz#73a8a0d8aa8a8e6fe270431c5e72ae91b5337892"
- integrity sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==
+"@eslint/js@8.39.0":
+ version "8.39.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.39.0.tgz#58b536bcc843f4cd1e02a7e6171da5c040f4d44b"
+ integrity sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==
"@floating-ui/core@^1.0.1":
version "1.0.1"
@@ -1544,16 +1553,6 @@
slash "^3.0.0"
write-file-atomic "^4.0.2"
-"@jest/types@^25.5.0":
- version "25.5.0"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d"
- integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==
- dependencies:
- "@types/istanbul-lib-coverage" "^2.0.0"
- "@types/istanbul-reports" "^1.1.1"
- "@types/yargs" "^15.0.0"
- chalk "^3.0.0"
-
"@jest/types@^27.0.2":
version "27.2.5"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.2.5.tgz#420765c052605e75686982d24b061b4cbba22132"
@@ -2019,14 +2018,6 @@
dependencies:
"@types/istanbul-lib-coverage" "*"
-"@types/istanbul-reports@^1.1.1":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2"
- integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==
- dependencies:
- "@types/istanbul-lib-coverage" "*"
- "@types/istanbul-lib-report" "*"
-
"@types/istanbul-reports@^3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821"
@@ -2034,18 +2025,10 @@
dependencies:
"@types/istanbul-lib-report" "*"
-"@types/jest@*":
- version "26.0.3"
- resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.3.tgz#79534e0e94857171c0edc596db0ebe7cb7863251"
- integrity sha512-v89ga1clpVL/Y1+YI0eIu1VMW+KU7Xl8PhylVtDKVWaSUHBHYPLXMQGBdrpHewaKoTvlXkksbYqPgz8b4cmRZg==
- dependencies:
- jest-diff "^25.2.1"
- pretty-format "^25.2.1"
-
-"@types/jest@^29.4.2":
- version "29.4.2"
- resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.4.2.tgz#13ca45d528a0f81a4792b7df199f58ad46c2a0e3"
- integrity sha512-bbne90W7is+m88ezmZrLiTpp41tIoTdvPC5t3gLoNgu/6qbGdWTC2JWqPWQRJn2Q7rVYTr8aTWqOjhGJDXyvAQ==
+"@types/jest@*", "@types/jest@^29.5.1":
+ version "29.5.1"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.1.tgz#83c818aa9a87da27d6da85d3378e5a34d2f31a47"
+ integrity sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==
dependencies:
expect "^29.0.0"
pretty-format "^29.0.0"
@@ -2084,10 +2067,10 @@
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
-"@types/lodash@^4.14.191":
- version "4.14.191"
- resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.191.tgz#09511e7f7cba275acd8b419ddac8da9a6a79e2fa"
- integrity sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==
+"@types/lodash@^4.14.194":
+ version "4.14.194"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76"
+ integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==
"@types/mime@*":
version "3.0.1"
@@ -2462,13 +2445,6 @@
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d"
integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==
-"@types/yargs@^15.0.0":
- version "15.0.5"
- resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79"
- integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==
- dependencies:
- "@types/yargs-parser" "*"
-
"@types/yargs@^16.0.0":
version "16.0.3"
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.3.tgz#4b6d35bb8e680510a7dc2308518a80ee1ef27e01"
@@ -2476,17 +2452,10 @@
dependencies:
"@types/yargs-parser" "*"
-"@types/yargs@^17.0.22":
- version "17.0.22"
- resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.22.tgz#7dd37697691b5f17d020f3c63e7a45971ff71e9a"
- integrity sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==
- dependencies:
- "@types/yargs-parser" "*"
-
-"@types/yargs@^17.0.8":
- version "17.0.10"
- resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a"
- integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==
+"@types/yargs@^17.0.24", "@types/yargs@^17.0.8":
+ version "17.0.24"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902"
+ integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==
dependencies:
"@types/yargs-parser" "*"
@@ -2958,6 +2927,11 @@ anymatch@^3.0.3, anymatch@~3.1.1:
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+are-docs-informative@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/are-docs-informative/-/are-docs-informative-0.0.2.tgz#387f0e93f5d45280373d387a59d34c96db321963"
+ integrity sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==
+
are-we-there-yet@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-4.0.0.tgz#3ff397dc14f08b52dd8b2a64d3cee154ab8760d2"
@@ -4018,6 +3992,11 @@ commander@^7.2.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+comment-parser@1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.3.1.tgz#3d7ea3adaf9345594aedee6563f422348f165c1b"
+ integrity sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==
+
common-tags@^1.8.0:
version "1.8.2"
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6"
@@ -4172,7 +4151,7 @@ cosmiconfig@^7.0.0:
path-type "^4.0.0"
yaml "^1.10.0"
-cosmiconfig@^8.1.0:
+cosmiconfig@^8.1.3:
version "8.1.3"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.1.3.tgz#0e614a118fcc2d9e5afc2f87d53cd09931015689"
integrity sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==
@@ -4660,11 +4639,6 @@ detect-passive-events@^2.0.3:
dependencies:
detect-it "^4.0.1"
-diff-sequences@^25.2.6:
- version "25.2.6"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd"
- integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==
-
diff-sequences@^29.4.3:
version "29.4.3"
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2"
@@ -5099,6 +5073,20 @@ eslint-plugin-import@~2.27.5:
semver "^6.3.0"
tsconfig-paths "^3.14.1"
+eslint-plugin-jsdoc@^43.1.1:
+ version "43.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-43.1.1.tgz#fc72ba21597cc99b1a0dc988aebb9bb57d0ec492"
+ integrity sha512-J2kjjsJ5vBXSyNzqJhceeSGTAgVgZHcPSJKo3vD4tNjUdfky98rR2VfZUDsS1GKL6isyVa8GWvr+Az7Vyg2HXA==
+ dependencies:
+ "@es-joy/jsdoccomment" "~0.37.1"
+ are-docs-informative "^0.0.2"
+ comment-parser "1.3.1"
+ debug "^4.3.4"
+ escape-string-regexp "^4.0.0"
+ esquery "^1.5.0"
+ semver "^7.5.0"
+ spdx-expression-parse "^3.0.1"
+
eslint-plugin-jsx-a11y@~6.7.1:
version "6.7.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976"
@@ -5163,10 +5151,10 @@ eslint-scope@^5.1.1:
esrecurse "^4.3.0"
estraverse "^4.1.1"
-eslint-scope@^7.1.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642"
- integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==
+eslint-scope@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b"
+ integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==
dependencies:
esrecurse "^4.3.0"
estraverse "^5.2.0"
@@ -5176,15 +5164,15 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc"
integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==
-eslint@^8.38.0:
- version "8.38.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.38.0.tgz#a62c6f36e548a5574dd35728ac3c6209bd1e2f1a"
- integrity sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==
+eslint@^8.39.0:
+ version "8.39.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.39.0.tgz#7fd20a295ef92d43809e914b70c39fd5a23cf3f1"
+ integrity sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.4.0"
"@eslint/eslintrc" "^2.0.2"
- "@eslint/js" "8.38.0"
+ "@eslint/js" "8.39.0"
"@humanwhocodes/config-array" "^0.11.8"
"@humanwhocodes/module-importer" "^1.0.1"
"@nodelib/fs.walk" "^1.2.8"
@@ -5194,7 +5182,7 @@ eslint@^8.38.0:
debug "^4.3.2"
doctrine "^3.0.0"
escape-string-regexp "^4.0.0"
- eslint-scope "^7.1.1"
+ eslint-scope "^7.2.0"
eslint-visitor-keys "^3.4.0"
espree "^9.5.1"
esquery "^1.4.2"
@@ -5236,7 +5224,7 @@ esprima@^4.0.0, esprima@^4.0.1:
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-esquery@^1.4.2:
+esquery@^1.4.2, esquery@^1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
@@ -6172,10 +6160,10 @@ html-escaper@^2.0.0:
resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
-html-tags@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.2.0.tgz#dbb3518d20b726524e4dd43de397eb0a95726961"
- integrity sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==
+html-tags@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce"
+ integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==
http-deceiver@^1.2.7:
version "1.2.7"
@@ -7039,16 +7027,6 @@ jest-config@^29.5.0:
slash "^3.0.0"
strip-json-comments "^3.1.1"
-jest-diff@^25.2.1:
- version "25.5.0"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9"
- integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==
- dependencies:
- chalk "^3.0.0"
- diff-sequences "^25.2.6"
- jest-get-type "^25.2.6"
- pretty-format "^25.5.0"
-
jest-diff@^29.5.0:
version "29.5.0"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63"
@@ -7103,11 +7081,6 @@ jest-environment-node@^29.5.0:
jest-mock "^29.5.0"
jest-util "^29.5.0"
-jest-get-type@^25.2.6:
- version "25.2.6"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877"
- integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==
-
jest-get-type@^29.4.3:
version "29.4.3"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5"
@@ -7399,6 +7372,11 @@ js-yaml@^4.1.0:
dependencies:
argparse "^2.0.1"
+jsdoc-type-pratt-parser@~4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz#136f0571a99c184d84ec84662c45c29ceff71114"
+ integrity sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==
+
jsdom@^20.0.0:
version "20.0.3"
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db"
@@ -9002,7 +8980,7 @@ postcss-loader@^4.3.0:
postcss-media-query-parser@^0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244"
- integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=
+ integrity sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==
postcss-merge-longhand@^6.0.0:
version "6.0.0"
@@ -9170,19 +9148,19 @@ postcss-reduce-transforms@^6.0.0:
postcss-resolve-nested-selector@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e"
- integrity sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=
+ integrity sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==
postcss-safe-parser@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1"
integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==
-postcss-scss@^4.0.2:
+postcss-scss@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-4.0.6.tgz#5d62a574b950a6ae12f2aa89b60d63d9e4432bfd"
integrity sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==
-postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.6, postcss-selector-parser@^6.0.9:
+postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9:
version "6.0.11"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc"
integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==
@@ -9210,7 +9188,7 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-postcss@^8.2.15, postcss@^8.4.21, postcss@^8.4.23:
+postcss@^8.2.15, postcss@^8.4.22, postcss@^8.4.23:
version "8.4.23"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab"
integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==
@@ -9261,16 +9239,6 @@ pretty-bytes@^5.3.0, pretty-bytes@^5.4.1:
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
-pretty-format@^25.2.1, pretty-format@^25.5.0:
- version "25.5.0"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a"
- integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==
- dependencies:
- "@jest/types" "^25.5.0"
- ansi-regex "^5.0.0"
- ansi-styles "^4.0.0"
- react-is "^16.12.0"
-
pretty-format@^27.0.2:
version "27.0.2"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.0.2.tgz#9283ff8c4f581b186b2d4da461617143dca478a4"
@@ -9541,7 +9509,7 @@ react-intl@^2.9.0:
intl-relativeformat "^2.1.0"
invariant "^2.1.1"
-react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.6:
+react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.6:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -10283,7 +10251,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7:
+semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.0:
version "7.5.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0"
integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==
@@ -10622,7 +10590,7 @@ spdx-exceptions@^2.1.0:
resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
-spdx-expression-parse@^3.0.0:
+spdx-expression-parse@^3.0.0, spdx-expression-parse@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
@@ -10942,58 +10910,57 @@ stylehacks@^6.0.0:
browserslist "^4.21.4"
postcss-selector-parser "^6.0.4"
-stylelint-config-recommended-scss@^9.0.0:
+stylelint-config-recommended-scss@^11.0.0:
+ version "11.0.0"
+ resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-11.0.0.tgz#7b933ecac99cd3b52d14d1746e3ecd36f421b4b6"
+ integrity sha512-EDghTDU7aOv2LTsRZvcT1w8mcjUaMhuy+t38iV5I/0Qiu6ixdkRwhLEMul3K/fnB2v9Nwqvb3xpvJfPH+HduDw==
+ dependencies:
+ postcss-scss "^4.0.6"
+ stylelint-config-recommended "^12.0.0"
+ stylelint-scss "^4.6.0"
+
+stylelint-config-recommended@^12.0.0:
+ version "12.0.0"
+ resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-12.0.0.tgz#d0993232fca017065fd5acfcb52dd8a188784ef4"
+ integrity sha512-x6x8QNARrGO2sG6iURkzqL+Dp+4bJorPMMRNPScdvaUK8PsynriOcMW7AFDKqkWAS5wbue/u8fUT/4ynzcmqdQ==
+
+stylelint-config-standard-scss@^9.0.0:
version "9.0.0"
- resolved "https://registry.yarnpkg.com/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-9.0.0.tgz#e755cf3654f3a3a6d7bdf84fe0a814595754a386"
- integrity sha512-5e9pn3Ztfncd8s9OqvvCW7tZpYe+vGmPi7VEXX7XEp+Kj38PnKCrvFCBL+hQ7rkD4d5QzjB3BxlFEyo/30UWUw==
+ resolved "https://registry.yarnpkg.com/stylelint-config-standard-scss/-/stylelint-config-standard-scss-9.0.0.tgz#70c66e1179612519fdf6ca1dbff23c804def1b6b"
+ integrity sha512-yPKpJsrZn4ybuQZx/DkEHuCjw7pJginErE/47dFhCnrvD48IJ4UYec8tSiCuJWMA3HRjbIa3nh5ZeSauDGuVAg==
dependencies:
- postcss-scss "^4.0.2"
- stylelint-config-recommended "^10.0.1"
- stylelint-scss "^4.4.0"
+ stylelint-config-recommended-scss "^11.0.0"
+ stylelint-config-standard "^33.0.0"
-stylelint-config-recommended@^10.0.1:
- version "10.0.1"
- resolved "https://registry.yarnpkg.com/stylelint-config-recommended/-/stylelint-config-recommended-10.0.1.tgz#25a8828acf6cde87dac6db2950c8c4ed82a69ae1"
- integrity sha512-TQ4xQ48tW4QSlODcti7pgSRqBZcUaBzuh0jPpfiMhwJKBPkqzTIAU+IrSWL/7BgXlOM90DjB7YaNgFpx8QWhuA==
-
-stylelint-config-standard-scss@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/stylelint-config-standard-scss/-/stylelint-config-standard-scss-7.0.1.tgz#4ba83fa19e1508937f7e02674e085cf94fc1a145"
- integrity sha512-m5sRdtsB1F5fnC1Ozla7ryftU47wVpO+HWd+JQTqeoG0g/oPh5EfbWfcVHbNCEtuoHfALIySiUWS20pz2hX6jA==
+stylelint-config-standard@^33.0.0:
+ version "33.0.0"
+ resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-33.0.0.tgz#1f7bb299153a53874073e93829e37a475842f0f9"
+ integrity sha512-eyxnLWoXImUn77+ODIuW9qXBDNM+ALN68L3wT1lN2oNspZ7D9NVGlNHb2QCUn4xDug6VZLsh0tF8NyoYzkgTzg==
dependencies:
- stylelint-config-recommended-scss "^9.0.0"
- stylelint-config-standard "^30.0.1"
+ stylelint-config-recommended "^12.0.0"
-stylelint-config-standard@^30.0.1:
- version "30.0.1"
- resolved "https://registry.yarnpkg.com/stylelint-config-standard/-/stylelint-config-standard-30.0.1.tgz#a84d57c240c37f7db47023ab9d2e64c49090e1eb"
- integrity sha512-NbeHOmpRQhjZh5XB1B/S4MLRWvz4xxAxeDBjzl0tY2xEcayNhLbaRGF0ZQzq+DQZLCcPpOHeS2Ru1ydbkhkmLg==
+stylelint-scss@^4.6.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-4.7.0.tgz#f986bf8c5a4b93eae2b67d3a3562eef822657908"
+ integrity sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg==
dependencies:
- stylelint-config-recommended "^10.0.1"
-
-stylelint-scss@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/stylelint-scss/-/stylelint-scss-4.4.0.tgz#87ce9d049eff1ce67cce788780fbfda63099017e"
- integrity sha512-Qy66a+/30aylFhPmUArHhVsHOun1qrO93LGT15uzLuLjWS7hKDfpFm34mYo1ndR4MCo8W4bEZM1+AlJRJORaaw==
- dependencies:
- lodash "^4.17.21"
postcss-media-query-parser "^0.2.3"
postcss-resolve-nested-selector "^0.1.1"
- postcss-selector-parser "^6.0.6"
- postcss-value-parser "^4.1.0"
+ postcss-selector-parser "^6.0.11"
+ postcss-value-parser "^4.2.0"
-stylelint@^15.3.0:
- version "15.3.0"
- resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-15.3.0.tgz#5f0f3264abeb29c54f571ea3f3934eba2c2be96d"
- integrity sha512-9UYBYk7K9rtlKcTUDZrtntE840sZM00qyYBQHHe7tjwMNUsPsGvR6Fd43IxHEAhRrDLzpy3TVaHb6CReBB3eFg==
+stylelint@^15.6.0:
+ version "15.6.0"
+ resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-15.6.0.tgz#1d76176dd8b6307bc4645e428ad18ddd15edbafc"
+ integrity sha512-Cqzpc8tvJm77KaM8qUbhpJ/UYK55Ia0whQXj4b9IId9dlPICO7J8Lyo15SZWiHxKjlvy3p5FQor/3n6i8ignXg==
dependencies:
- "@csstools/css-parser-algorithms" "^2.0.1"
- "@csstools/css-tokenizer" "^2.1.0"
- "@csstools/media-query-list-parser" "^2.0.1"
- "@csstools/selector-specificity" "^2.1.1"
+ "@csstools/css-parser-algorithms" "^2.1.1"
+ "@csstools/css-tokenizer" "^2.1.1"
+ "@csstools/media-query-list-parser" "^2.0.4"
+ "@csstools/selector-specificity" "^2.2.0"
balanced-match "^2.0.0"
colord "^2.9.3"
- cosmiconfig "^8.1.0"
+ cosmiconfig "^8.1.3"
css-functions-list "^3.1.0"
css-tree "^2.3.1"
debug "^4.3.4"
@@ -11003,7 +10970,7 @@ stylelint@^15.3.0:
global-modules "^2.0.0"
globby "^11.1.0"
globjoin "^0.1.4"
- html-tags "^3.2.0"
+ html-tags "^3.3.1"
ignore "^5.2.4"
import-lazy "^4.0.0"
imurmurhash "^0.1.4"
@@ -11014,7 +10981,7 @@ stylelint@^15.3.0:
micromatch "^4.0.5"
normalize-path "^3.0.0"
picocolors "^1.0.0"
- postcss "^8.4.21"
+ postcss "^8.4.22"
postcss-media-query-parser "^0.2.3"
postcss-resolve-nested-selector "^0.1.1"
postcss-safe-parser "^6.0.0"
@@ -11660,7 +11627,7 @@ utf-8-validate@^6.0.3:
util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+ integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
util@0.10.3:
version "0.10.3"