From df2611a10ff518e2ca8f12f2cf3e933d95cf5002 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 17 Apr 2025 09:45:23 +0200 Subject: [PATCH 001/349] Add initial support for ingesting and verifying remote quote posts (#34370) --- FEDERATION.md | 1 + app/lib/activitypub/activity/create.rb | 25 ++ app/lib/activitypub/activity/delete.rb | 43 +- app/lib/activitypub/parser/status_parser.rb | 10 + app/lib/status_cache_hydrator.rb | 17 + .../concerns/status/snapshot_concern.rb | 1 + app/models/quote.rb | 67 +++ app/models/status.rb | 5 +- app/models/status_edit.rb | 1 + .../status_relationships_presenter.rb | 8 +- app/serializers/rest/base_quote_serializer.rb | 25 ++ app/serializers/rest/quote_serializer.rb | 5 + .../rest/shallow_quote_serializer.rb | 9 + .../rest/shallow_status_serializer.rb | 9 + .../rest/status_edit_serializer.rb | 6 + app/serializers/rest/status_serializer.rb | 1 + .../process_status_update_service.rb | 43 +- .../activitypub/verify_quote_service.rb | 112 +++++ .../activitypub/quote_refresh_worker.rb | 15 + .../refetch_and_verify_quote_worker.rb | 19 + db/migrate/20250411094808_create_quotes.rb | 20 + ...50411095859_add_quote_id_to_status_edit.rb | 7 + db/schema.rb | 25 +- spec/fabricators/quote_fabricator.rb | 7 + spec/lib/activitypub/activity/create_spec.rb | 119 +++++- spec/lib/activitypub/activity/delete_spec.rb | 57 +++ spec/lib/status_cache_hydrator_spec.rb | 109 +++++ .../serializers/rest/quote_serializer_spec.rb | 87 ++++ .../rest/shallow_quote_serializer_spec.rb | 93 +++++ .../process_status_update_service_spec.rb | 394 +++++++++++++++++- .../activitypub/verify_quote_service_spec.rb | 246 +++++++++++ .../activitypub/quote_refresh_worker_spec.rb | 44 ++ .../refetch_and_verify_quote_worker_spec.rb | 35 ++ 33 files changed, 1643 insertions(+), 22 deletions(-) create mode 100644 app/models/quote.rb create mode 100644 app/serializers/rest/base_quote_serializer.rb create mode 100644 app/serializers/rest/quote_serializer.rb create mode 100644 app/serializers/rest/shallow_quote_serializer.rb create mode 100644 app/serializers/rest/shallow_status_serializer.rb create mode 100644 app/services/activitypub/verify_quote_service.rb create mode 100644 app/workers/activitypub/quote_refresh_worker.rb create mode 100644 app/workers/activitypub/refetch_and_verify_quote_worker.rb create mode 100644 db/migrate/20250411094808_create_quotes.rb create mode 100644 db/migrate/20250411095859_add_quote_id_to_status_edit.rb create mode 100644 spec/fabricators/quote_fabricator.rb create mode 100644 spec/serializers/rest/quote_serializer_spec.rb create mode 100644 spec/serializers/rest/shallow_quote_serializer_spec.rb create mode 100644 spec/services/activitypub/verify_quote_service_spec.rb create mode 100644 spec/workers/activitypub/quote_refresh_worker_spec.rb create mode 100644 spec/workers/activitypub/refetch_and_verify_quote_worker_spec.rb diff --git a/FEDERATION.md b/FEDERATION.md index 2819fa935a..03ea5449de 100644 --- a/FEDERATION.md +++ b/FEDERATION.md @@ -13,6 +13,7 @@ - [FEP-f1d5: NodeInfo in Fediverse Software](https://codeberg.org/fediverse/fep/src/branch/main/fep/f1d5/fep-f1d5.md) - [FEP-8fcf: Followers collection synchronization across servers](https://codeberg.org/fediverse/fep/src/branch/main/fep/8fcf/fep-8fcf.md) - [FEP-5feb: Search indexing consent for actors](https://codeberg.org/fediverse/fep/src/branch/main/fep/5feb/fep-5feb.md) +- [FEP-044f: Consent-respecting quote posts](https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md): partial support for incoming quote-posts ## ActivityPub in Mastodon diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 4b2549ba96..23afda32cd 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -45,9 +45,12 @@ class ActivityPub::Activity::Create < ActivityPub::Activity @unresolved_mentions = [] @silenced_account_ids = [] @params = {} + @quote = nil + @quote_uri = nil process_status_params process_tags + process_quote process_audience ApplicationRecord.transaction do @@ -55,6 +58,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity attach_tags(@status) attach_mentions(@status) attach_counts(@status) + attach_quote(@status) end resolve_thread(@status) @@ -189,6 +193,16 @@ class ActivityPub::Activity::Create < ActivityPub::Activity end end + def attach_quote(status) + return if @quote.nil? + + @quote.status = status + @quote.save + ActivityPub::VerifyQuoteService.new.call(@quote, fetchable_quoted_uri: @quote_uri, request_id: @options[:request_id]) + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS + ActivityPub::RefetchAndVerifyQuoteWorker.perform_in(rand(30..600).seconds, @quote.id, @quote_uri, { 'request_id' => @options[:request_id] }) + end + def process_tags return if @object['tag'].nil? @@ -203,6 +217,17 @@ class ActivityPub::Activity::Create < ActivityPub::Activity end end + def process_quote + return unless Mastodon::Feature.inbound_quotes_enabled? + + @quote_uri = @status_parser.quote_uri + return if @quote_uri.blank? + + approval_uri = @status_parser.quote_approval_uri + approval_uri = nil if unsupported_uri_scheme?(approval_uri) + @quote = Quote.new(account: @account, approval_uri: approval_uri) + end + def process_hashtag(tag) return if tag['name'].blank? diff --git a/app/lib/activitypub/activity/delete.rb b/app/lib/activitypub/activity/delete.rb index 61f6ca6997..69b7bd0354 100644 --- a/app/lib/activitypub/activity/delete.rb +++ b/app/lib/activitypub/activity/delete.rb @@ -5,7 +5,7 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity if @account.uri == object_uri delete_person else - delete_note + delete_object end end @@ -17,7 +17,7 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity end end - def delete_note + def delete_object return if object_uri.nil? with_redis_lock("delete_status_in_progress:#{object_uri}", raise_on_failure: false) do @@ -32,21 +32,38 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity Tombstone.find_or_create_by(uri: object_uri, account: @account) end - @status = Status.find_by(uri: object_uri, account: @account) - @status ||= Status.find_by(uri: @object['atomUri'], account: @account) if @object.is_a?(Hash) && @object['atomUri'].present? - - return if @status.nil? - - forwarder.forward! if forwarder.forwardable? - delete_now! + case @object['type'] + when 'QuoteAuthorization' + revoke_quote + when 'Note', 'Question' + delete_status + else + delete_status || revoke_quote + end end end + def delete_status + @status = Status.find_by(uri: object_uri, account: @account) + @status ||= Status.find_by(uri: @object['atomUri'], account: @account) if @object.is_a?(Hash) && @object['atomUri'].present? + + return if @status.nil? + + forwarder.forward! if forwarder.forwardable? + RemoveStatusService.new.call(@status, redraft: false) + + true + end + + def revoke_quote + @quote = Quote.find_by(approval_uri: object_uri, quoted_account: @account) + return if @quote.nil? + + ActivityPub::Forwarder.new(@account, @json, @quote.status).forward! + @quote.reject! + end + def forwarder @forwarder ||= ActivityPub::Forwarder.new(@account, @json, @status) end - - def delete_now! - RemoveStatusService.new.call(@status, redraft: false) - end end diff --git a/app/lib/activitypub/parser/status_parser.rb b/app/lib/activitypub/parser/status_parser.rb index 3d2be3c66c..c13ed49635 100644 --- a/app/lib/activitypub/parser/status_parser.rb +++ b/app/lib/activitypub/parser/status_parser.rb @@ -101,6 +101,16 @@ class ActivityPub::Parser::StatusParser @object.dig(:shares, :totalItems) end + def quote_uri + %w(quote _misskey_quote quoteUrl quoteUri).filter_map do |key| + value_or_id(as_array(@object[key]).first) + end.first + end + + def quote_approval_uri + as_array(@object['quoteAuthorization']).first + end + private def raw_language_code diff --git a/app/lib/status_cache_hydrator.rb b/app/lib/status_cache_hydrator.rb index 676e9e62a0..8821c23d13 100644 --- a/app/lib/status_cache_hydrator.rb +++ b/app/lib/status_cache_hydrator.rb @@ -71,6 +71,23 @@ class StatusCacheHydrator payload[:bookmarked] = Bookmark.exists?(account_id: account_id, status_id: status.id) payload[:pinned] = StatusPin.exists?(account_id: account_id, status_id: status.id) if status.account_id == account_id payload[:filtered] = mapped_applied_custom_filter(account_id, status) + payload[:quote] = hydrate_quote_payload(payload[:quote], status.quote, account_id) if payload[:quote] + end + + def hydrate_quote_payload(empty_payload, quote, account_id) + # TODO: properly handle quotes, including visibility and access control + + empty_payload.tap do |payload| + # Nothing to do if we're in the shallow (depth limit) case + next unless payload.key?(:quoted_status) + + # TODO: handle hiding a rendered status or showing a non-rendered status according to visibility + if quote&.quoted_status.nil? + payload[:quoted_status] = nil + elsif payload[:quoted_status].present? + payload[:quoted_status] = StatusCacheHydrator.new(quote.quoted_status).hydrate(account_id) + end + end end def mapped_applied_custom_filter(account_id, status) diff --git a/app/models/concerns/status/snapshot_concern.rb b/app/models/concerns/status/snapshot_concern.rb index 0289710904..269545ce8b 100644 --- a/app/models/concerns/status/snapshot_concern.rb +++ b/app/models/concerns/status/snapshot_concern.rb @@ -25,6 +25,7 @@ module Status::SnapshotConcern poll_options: preloadable_poll&.options&.dup, account_id: account_id || self.account_id, created_at: at_time || edited_at, + quote_id: quote&.id, rate_limit: rate_limit ) end diff --git a/app/models/quote.rb b/app/models/quote.rb new file mode 100644 index 0000000000..8e21d9b481 --- /dev/null +++ b/app/models/quote.rb @@ -0,0 +1,67 @@ +# frozen_string_literal: true + +# == Schema Information +# +# Table name: quotes +# +# id :bigint(8) not null, primary key +# activity_uri :string +# approval_uri :string +# state :integer default("pending"), not null +# created_at :datetime not null +# updated_at :datetime not null +# account_id :bigint(8) not null +# quoted_account_id :bigint(8) +# quoted_status_id :bigint(8) +# status_id :bigint(8) not null +# +class Quote < ApplicationRecord + BACKGROUND_REFRESH_INTERVAL = 1.week.freeze + REFRESH_DEADLINE = 6.hours + + enum :state, + { pending: 0, accepted: 1, rejected: 2, revoked: 3 }, + validate: true + + belongs_to :status + belongs_to :quoted_status, class_name: 'Status', optional: true + + belongs_to :account + belongs_to :quoted_account, class_name: 'Account', optional: true + + before_validation :set_accounts + + validates :activity_uri, presence: true, if: -> { account.local? && quoted_account&.remote? } + validate :validate_visibility + + def accept! + update!(state: :accepted) + end + + def reject! + if accepted? + update!(state: :revoked) + elsif !revoked? + update!(state: :rejected) + end + end + + def schedule_refresh_if_stale! + return unless quoted_status_id.present? && approval_uri.present? && updated_at <= BACKGROUND_REFRESH_INTERVAL.ago + + ActivityPub::QuoteRefreshWorker.perform_in(rand(REFRESH_DEADLINE), id) + end + + private + + def set_accounts + self.account = status.account + self.quoted_account = quoted_status&.account + end + + def validate_visibility + return if account_id == quoted_account_id || quoted_status.nil? || quoted_status.distributable? + + errors.add(:quoted_status_id, :visibility_mismatch) + end +end diff --git a/app/models/status.rb b/app/models/status.rb index cdff5a2ac3..f9afdcca8b 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -93,6 +93,7 @@ class Status < ApplicationRecord has_one :status_stat, inverse_of: :status, dependent: nil has_one :poll, inverse_of: :status, dependent: :destroy has_one :trend, class_name: 'StatusTrend', inverse_of: :status, dependent: nil + has_one :quote, inverse_of: :status, dependent: :destroy validates :uri, uniqueness: true, presence: true, unless: :local? validates :text, presence: true, unless: -> { with_media? || reblog? } @@ -154,16 +155,18 @@ class Status < ApplicationRecord :status_stat, :tags, :preloadable_poll, + quote: { status: { account: [:account_stat, user: :role] } }, preview_cards_status: { preview_card: { author_account: [:account_stat, user: :role] } }, account: [:account_stat, user: :role], active_mentions: :account, reblog: [ :application, - :tags, :media_attachments, :conversation, :status_stat, + :tags, :preloadable_poll, + quote: { status: { account: [:account_stat, user: :role] } }, preview_cards_status: { preview_card: { author_account: [:account_stat, user: :role] } }, account: [:account_stat, user: :role], active_mentions: :account, diff --git a/app/models/status_edit.rb b/app/models/status_edit.rb index 6e25a6f3bb..a64ef34905 100644 --- a/app/models/status_edit.rb +++ b/app/models/status_edit.rb @@ -15,6 +15,7 @@ # media_descriptions :text is an Array # poll_options :string is an Array # sensitive :boolean +# quote_id :bigint(8) # class StatusEdit < ApplicationRecord diff --git a/app/presenters/status_relationships_presenter.rb b/app/presenters/status_relationships_presenter.rb index 5d53040fb2..2d95db82da 100644 --- a/app/presenters/status_relationships_presenter.rb +++ b/app/presenters/status_relationships_presenter.rb @@ -16,11 +16,11 @@ class StatusRelationshipsPresenter @filters_map = {} else statuses = statuses.compact - status_ids = statuses.flat_map { |s| [s.id, s.reblog_of_id] }.uniq.compact - conversation_ids = statuses.filter_map(&:conversation_id).uniq - pinnable_status_ids = statuses.map(&:proper).filter_map { |s| s.id if s.account_id == current_account_id && PINNABLE_VISIBILITIES.include?(s.visibility) } + status_ids = statuses.flat_map { |s| [s.id, s.reblog_of_id, s.proper.quote&.quoted_status_id] }.uniq.compact + conversation_ids = statuses.flat_map { |s| [s.proper.conversation_id, s.proper.quote&.quoted_status&.conversation_id] }.uniq.compact + pinnable_status_ids = statuses.flat_map { |s| [s.proper, s.proper.quote&.quoted_status] }.compact.filter_map { |s| s.id if s.account_id == current_account_id && PINNABLE_VISIBILITIES.include?(s.visibility) } - @filters_map = build_filters_map(statuses, current_account_id).merge(options[:filters_map] || {}) + @filters_map = build_filters_map(statuses.flat_map { |s| [s, s.proper.quote&.quoted_status] }.compact.uniq, current_account_id).merge(options[:filters_map] || {}) @reblogs_map = Status.reblogs_map(status_ids, current_account_id).merge(options[:reblogs_map] || {}) @favourites_map = Status.favourites_map(status_ids, current_account_id).merge(options[:favourites_map] || {}) @bookmarks_map = Status.bookmarks_map(status_ids, current_account_id).merge(options[:bookmarks_map] || {}) diff --git a/app/serializers/rest/base_quote_serializer.rb b/app/serializers/rest/base_quote_serializer.rb new file mode 100644 index 0000000000..0434f342c9 --- /dev/null +++ b/app/serializers/rest/base_quote_serializer.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class REST::BaseQuoteSerializer < ActiveModel::Serializer + attributes :state + + def state + return object.state unless object.accepted? + + # Extra states when a status is unavailable + return 'deleted' if object.quoted_status.nil? + return 'unauthorized' if status_filter.filtered? + + object.state + end + + def quoted_status + object.quoted_status if object.accepted? && object.quoted_status.present? && !status_filter.filtered? + end + + private + + def status_filter + @status_filter ||= StatusFilter.new(object.quoted_status, current_user&.account, instance_options[:relationships] || {}) + end +end diff --git a/app/serializers/rest/quote_serializer.rb b/app/serializers/rest/quote_serializer.rb new file mode 100644 index 0000000000..6f2eede0ea --- /dev/null +++ b/app/serializers/rest/quote_serializer.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +class REST::QuoteSerializer < REST::BaseQuoteSerializer + has_one :quoted_status, serializer: REST::ShallowStatusSerializer +end diff --git a/app/serializers/rest/shallow_quote_serializer.rb b/app/serializers/rest/shallow_quote_serializer.rb new file mode 100644 index 0000000000..1f5f229d43 --- /dev/null +++ b/app/serializers/rest/shallow_quote_serializer.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class REST::ShallowQuoteSerializer < REST::BaseQuoteSerializer + attribute :quoted_status_id + + def quoted_status_id + quoted_status&.id&.to_s + end +end diff --git a/app/serializers/rest/shallow_status_serializer.rb b/app/serializers/rest/shallow_status_serializer.rb new file mode 100644 index 0000000000..ca0ac8f4f4 --- /dev/null +++ b/app/serializers/rest/shallow_status_serializer.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class REST::ShallowStatusSerializer < REST::StatusSerializer + has_one :quote, key: :quote, serializer: REST::ShallowQuoteSerializer + + # It looks like redefining one `has_one` requires redefining all inherited ones + has_one :preview_card, key: :card, serializer: REST::PreviewCardSerializer + has_one :preloadable_poll, key: :poll, serializer: REST::PollSerializer +end diff --git a/app/serializers/rest/status_edit_serializer.rb b/app/serializers/rest/status_edit_serializer.rb index f7a48797d1..30e318a6aa 100644 --- a/app/serializers/rest/status_edit_serializer.rb +++ b/app/serializers/rest/status_edit_serializer.rb @@ -10,6 +10,8 @@ class REST::StatusEditSerializer < ActiveModel::Serializer has_many :ordered_media_attachments, key: :media_attachments, serializer: REST::MediaAttachmentSerializer has_many :emojis, serializer: REST::CustomEmojiSerializer + has_one :quote, serializer: REST::QuoteSerializer, if: -> { object.quote_id.present? } + attribute :poll, if: -> { object.poll_options.present? } def content @@ -19,4 +21,8 @@ class REST::StatusEditSerializer < ActiveModel::Serializer def poll { options: object.poll_options.map { |title| { title: title } } } end + + def quote + object.quote_id == status.quote&.id ? status.quote : Quote.new(state: :pending) + end end diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb index e108c789c7..e0761af7f2 100644 --- a/app/serializers/rest/status_serializer.rb +++ b/app/serializers/rest/status_serializer.rb @@ -29,6 +29,7 @@ class REST::StatusSerializer < ActiveModel::Serializer has_many :tags has_many :emojis, serializer: REST::CustomEmojiSerializer + has_one :quote, key: :quote, serializer: REST::QuoteSerializer has_one :preview_card, key: :card, serializer: REST::PreviewCardSerializer has_one :preloadable_poll, key: :poll, serializer: REST::PollSerializer diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb index fd5a8c2d46..6a1066a05d 100644 --- a/app/services/activitypub/process_status_update_service.rb +++ b/app/services/activitypub/process_status_update_service.rb @@ -16,6 +16,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService @account = status.account @media_attachments_changed = false @poll_changed = false + @quote_changed = false @request_id = request_id # Only native types can be updated at the moment @@ -158,7 +159,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService @status.sensitive = @account.sensitized? || @status_parser.sensitive || false @status.language = @status_parser.language - @significant_changes = text_significantly_changed? || @status.spoiler_text_changed? || @media_attachments_changed || @poll_changed + @significant_changes = text_significantly_changed? || @status.spoiler_text_changed? || @media_attachments_changed || @poll_changed || @quote_changed @status.edited_at = @status_parser.edited_at if significant_changes? @@ -183,6 +184,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService update_tags! update_mentions! update_emojis! + update_quote! end def update_tags! @@ -262,6 +264,45 @@ class ActivityPub::ProcessStatusUpdateService < BaseService end end + def update_quote! + return unless Mastodon::Feature.inbound_quotes_enabled? + + quote = nil + quote_uri = @status_parser.quote_uri + + if quote_uri.present? + approval_uri = @status_parser.quote_approval_uri + approval_uri = nil if unsupported_uri_scheme?(approval_uri) + + if @status.quote.present? + # If the quoted post has changed, discard the old object and create a new one + if @status.quote.quoted_status.present? && ActivityPub::TagManager.instance.uri_for(@status.quote.quoted_status) != quote_uri + @status.quote.destroy + quote = Quote.create(status: @status, approval_uri: approval_uri) + @quote_changed = true + else + quote = @status.quote + quote.update(approval_uri: approval_uri, state: :pending) if quote.approval_uri != @status_parser.quote_approval_uri + end + else + quote = Quote.create(status: @status, approval_uri: approval_uri) + @quote_changed = true + end + end + + if quote.present? + begin + quote.save + ActivityPub::VerifyQuoteService.new.call(quote, fetchable_quoted_uri: quote_uri, request_id: @request_id) + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS + ActivityPub::RefetchAndVerifyQuoteWorker.perform_in(rand(30..600).seconds, quote.id, quote_uri, { 'request_id' => @request_id }) + end + elsif @status.quote.present? + @status.quote.destroy! + @quote_changed = true + end + end + def update_counts! likes = @status_parser.favourites_count shares = @status_parser.reblogs_count diff --git a/app/services/activitypub/verify_quote_service.rb b/app/services/activitypub/verify_quote_service.rb new file mode 100644 index 0000000000..0803d62d3a --- /dev/null +++ b/app/services/activitypub/verify_quote_service.rb @@ -0,0 +1,112 @@ +# frozen_string_literal: true + +class ActivityPub::VerifyQuoteService < BaseService + include JsonLdHelper + + # Optionally fetch quoted post, and verify the quote is authorized + def call(quote, fetchable_quoted_uri: nil, prefetched_body: nil, request_id: nil) + @request_id = request_id + @quote = quote + @fetching_error = nil + + fetch_quoted_post_if_needed!(fetchable_quoted_uri) + return if fast_track_approval! || quote.approval_uri.blank? + + @json = fetch_approval_object(quote.approval_uri, prefetched_body:) + return quote.reject! if @json.nil? + + return if non_matching_uri_hosts?(quote.approval_uri, value_or_id(@json['attributedTo'])) + return unless matching_type? && matching_quote_uri? + + # Opportunistically import embedded posts if needed + return if import_quoted_post_if_needed!(fetchable_quoted_uri) && fast_track_approval! + + # Raise an error if we failed to fetch the status + raise @fetching_error if @quote.status.nil? && @fetching_error + + return unless matching_quoted_post? && matching_quoted_author? + + quote.accept! + end + + private + + # FEP-044f defines rules that don't require the approval flow + def fast_track_approval! + return false if @quote.quoted_status_id.blank? + + # Always allow someone to quote themselves + if @quote.account_id == @quote.quoted_account_id + @quote.accept! + + true + end + + # Always allow someone to quote posts in which they are mentioned + if @quote.quoted_status.active_mentions.exists?(mentions: { account_id: @quote.account_id }) + @quote.accept! + + true + else + false + end + end + + def fetch_approval_object(uri, prefetched_body: nil) + if prefetched_body.nil? + fetch_resource(uri, true, @quote.account.followers.local.first, raise_on_error: :temporary) + else + body_to_json(prefetched_body, compare_id: uri) + end + end + + def matching_type? + supported_context?(@json) && equals_or_includes?(@json['type'], 'QuoteAuthorization') + end + + def matching_quote_uri? + ActivityPub::TagManager.instance.uri_for(@quote.status) == value_or_id(@json['interactingObject']) + end + + def fetch_quoted_post_if_needed!(uri) + return if uri.nil? || @quote.quoted_status.present? + + status = ActivityPub::TagManager.instance.uri_to_resource(uri, Status) + status ||= ActivityPub::FetchRemoteStatusService.new.call(uri, on_behalf_of: @quote.account.followers.local.first, request_id: @request_id) + + @quote.update(quoted_status: status) if status.present? + rescue Mastodon::UnexpectedResponseError, *Mastodon::HTTP_CONNECTION_ERRORS => e + @fetching_error = e + end + + def import_quoted_post_if_needed!(uri) + # No need to fetch if we already have a post + return if uri.nil? || @quote.quoted_status_id.present? || !@json['interactionTarget'].is_a?(Hash) + + # NOTE: Replacing the object's context by that of the parent activity is + # not sound, but it's consistent with the rest of the codebase + object = @json['interactionTarget'].merge({ '@context' => @json['@context'] }) + + # It's not safe to fetch if the inlined object is cross-origin or doesn't match expectations + return if object['id'] != uri || non_matching_uri_hosts?(@quote.approval_uri, object['id']) + + status = ActivityPub::FetchRemoteStatusService.new.call(object['id'], prefetched_body: object, on_behalf_of: @quote.account.followers.local.first, request_id: @request_id) + + if status.present? + @quote.update(quoted_status: status) + true + else + false + end + end + + def matching_quoted_post? + return false if @quote.quoted_status_id.blank? + + ActivityPub::TagManager.instance.uri_for(@quote.quoted_status) == value_or_id(@json['interactionTarget']) + end + + def matching_quoted_author? + ActivityPub::TagManager.instance.uri_for(@quote.quoted_account) == value_or_id(@json['attributedTo']) + end +end diff --git a/app/workers/activitypub/quote_refresh_worker.rb b/app/workers/activitypub/quote_refresh_worker.rb new file mode 100644 index 0000000000..7dabfddc80 --- /dev/null +++ b/app/workers/activitypub/quote_refresh_worker.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class ActivityPub::QuoteRefreshWorker + include Sidekiq::Worker + + sidekiq_options queue: 'pull', retry: 3, dead: false, lock: :until_executed, lock_ttl: 1.day.to_i + + def perform(quote_id) + quote = Quote.find_by(id: quote_id) + return if quote.nil? || quote.updated_at > Quote::BACKGROUND_REFRESH_INTERVAL.ago + + quote.touch + ActivityPub::VerifyQuoteService.new.call(quote) + end +end diff --git a/app/workers/activitypub/refetch_and_verify_quote_worker.rb b/app/workers/activitypub/refetch_and_verify_quote_worker.rb new file mode 100644 index 0000000000..0c7ecd9b2a --- /dev/null +++ b/app/workers/activitypub/refetch_and_verify_quote_worker.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class ActivityPub::RefetchAndVerifyQuoteWorker + include Sidekiq::Worker + include ExponentialBackoff + include JsonLdHelper + + sidekiq_options queue: 'pull', retry: 3 + + def perform(quote_id, quoted_uri, options = {}) + quote = Quote.find(quote_id) + ActivityPub::VerifyQuoteService.new.call(quote, fetchable_quoted_uri: quoted_uri, request_id: options[:request_id]) + rescue ActiveRecord::RecordNotFound + # Do nothing + true + rescue Mastodon::UnexpectedResponseError => e + raise e unless response_error_unsalvageable?(e.response) + end +end diff --git a/db/migrate/20250411094808_create_quotes.rb b/db/migrate/20250411094808_create_quotes.rb new file mode 100644 index 0000000000..8c830665ac --- /dev/null +++ b/db/migrate/20250411094808_create_quotes.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class CreateQuotes < ActiveRecord::Migration[8.0] + def change + create_table :quotes do |t| + t.belongs_to :account, foreign_key: { on_delete: :cascade }, index: false, null: false + t.belongs_to :status, foreign_key: { on_delete: :cascade }, index: { unique: true }, null: false + t.belongs_to :quoted_status, foreign_key: { to_table: :statuses, on_delete: :nullify }, null: true + t.belongs_to :quoted_account, foreign_key: { to_table: :accounts, on_delete: :nullify }, null: true + t.integer :state, null: false, default: 0 + t.string :approval_uri, index: { where: 'approval_uri IS NOT NULL' } + t.string :activity_uri, index: { unique: true, where: 'activity_uri IS NOT NULL' } + + t.timestamps + end + + # Can be used in the future to e.g. bulk-reject quotes from blocked accounts + add_index :quotes, [:account_id, :quoted_account_id] + end +end diff --git a/db/migrate/20250411095859_add_quote_id_to_status_edit.rb b/db/migrate/20250411095859_add_quote_id_to_status_edit.rb new file mode 100644 index 0000000000..f5bb2f812a --- /dev/null +++ b/db/migrate/20250411095859_add_quote_id_to_status_edit.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddQuoteIdToStatusEdit < ActiveRecord::Migration[8.0] + def change + add_column :status_edits, :quote_id, :bigint, null: true + end +end diff --git a/db/schema.rb b/db/schema.rb index b09360ff43..6b1aa81bd0 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.0].define(version: 2025_04_10_144908) do +ActiveRecord::Schema[8.0].define(version: 2025_04_11_095859) do # These are extensions that must be enabled in order to support this database enable_extension "pg_catalog.plpgsql" @@ -871,6 +871,24 @@ ActiveRecord::Schema[8.0].define(version: 2025_04_10_144908) do t.string "url" end + create_table "quotes", force: :cascade do |t| + t.bigint "account_id", null: false + t.bigint "status_id", null: false + t.bigint "quoted_status_id" + t.bigint "quoted_account_id" + t.integer "state", default: 0, null: false + t.string "approval_uri" + t.string "activity_uri" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["account_id", "quoted_account_id"], name: "index_quotes_on_account_id_and_quoted_account_id" + t.index ["activity_uri"], name: "index_quotes_on_activity_uri", unique: true, where: "(activity_uri IS NOT NULL)" + t.index ["approval_uri"], name: "index_quotes_on_approval_uri", where: "(approval_uri IS NOT NULL)" + t.index ["quoted_account_id"], name: "index_quotes_on_quoted_account_id" + t.index ["quoted_status_id"], name: "index_quotes_on_quoted_status_id" + t.index ["status_id"], name: "index_quotes_on_status_id", unique: true + end + create_table "relationship_severance_events", force: :cascade do |t| t.integer "type", null: false t.string "target_name", null: false @@ -1007,6 +1025,7 @@ ActiveRecord::Schema[8.0].define(version: 2025_04_10_144908) do t.text "media_descriptions", array: true t.string "poll_options", array: true t.boolean "sensitive" + t.bigint "quote_id" t.index ["account_id"], name: "index_status_edits_on_account_id" t.index ["status_id"], name: "index_status_edits_on_status_id" end @@ -1350,6 +1369,10 @@ ActiveRecord::Schema[8.0].define(version: 2025_04_10_144908) do add_foreign_key "polls", "statuses", on_delete: :cascade add_foreign_key "preview_card_trends", "preview_cards", on_delete: :cascade add_foreign_key "preview_cards", "accounts", column: "author_account_id", on_delete: :nullify + add_foreign_key "quotes", "accounts", column: "quoted_account_id", on_delete: :nullify + add_foreign_key "quotes", "accounts", on_delete: :cascade + add_foreign_key "quotes", "statuses", column: "quoted_status_id", on_delete: :nullify + add_foreign_key "quotes", "statuses", on_delete: :cascade add_foreign_key "report_notes", "accounts", on_delete: :cascade add_foreign_key "report_notes", "reports", on_delete: :cascade add_foreign_key "reports", "accounts", column: "action_taken_by_account_id", name: "fk_bca45b75fd", on_delete: :nullify diff --git a/spec/fabricators/quote_fabricator.rb b/spec/fabricators/quote_fabricator.rb new file mode 100644 index 0000000000..c420d2720c --- /dev/null +++ b/spec/fabricators/quote_fabricator.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +Fabricator(:quote) do + status { Fabricate.build(:status) } + quoted_status { Fabricate.build(:status) } + state :pending +end diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb index 623a21ab53..73a814b9f2 100644 --- a/spec/lib/activitypub/activity/create_spec.rb +++ b/spec/lib/activitypub/activity/create_spec.rb @@ -7,7 +7,15 @@ RSpec.describe ActivityPub::Activity::Create do let(:json) do { - '@context': 'https://www.w3.org/ns/activitystreams', + '@context': [ + 'https://www.w3.org/ns/activitystreams', + { + quote: { + '@id': 'https://w3id.org/fep/044f#quote', + '@type': '@id', + }, + }, + ], id: [ActivityPub::TagManager.instance.uri_for(sender), '#foo'].join, type: 'Create', actor: ActivityPub::TagManager.instance.uri_for(sender), @@ -879,6 +887,115 @@ RSpec.describe ActivityPub::Activity::Create do end end + context 'with an unverifiable quote of a known post', feature: :inbound_quotes do + let(:quoted_status) { Fabricate(:status) } + + let(:object_json) do + build_object( + type: 'Note', + content: 'woah what she said is amazing', + quote: ActivityPub::TagManager.instance.uri_for(quoted_status) + ) + end + + it 'creates a status with an unverified quote' do + expect { subject.perform }.to change(sender.statuses, :count).by(1) + + status = sender.statuses.first + expect(status).to_not be_nil + expect(status.quote).to_not be_nil + expect(status.quote).to have_attributes( + state: 'pending', + approval_uri: nil + ) + end + end + + context 'with an unverifiable unknown post', feature: :inbound_quotes do + let(:unknown_post_uri) { 'https://unavailable.example.com/unavailable-post' } + + let(:object_json) do + build_object( + type: 'Note', + content: 'woah what she said is amazing', + quote: unknown_post_uri + ) + end + + before do + stub_request(:get, unknown_post_uri).to_return(status: 404) + end + + it 'creates a status with an unverified quote' do + expect { subject.perform }.to change(sender.statuses, :count).by(1) + + status = sender.statuses.first + expect(status).to_not be_nil + expect(status.quote).to_not be_nil + expect(status.quote).to have_attributes( + state: 'pending', + approval_uri: nil + ) + end + end + + context 'with a verifiable quote of a known post', feature: :inbound_quotes do + let(:quoted_account) { Fabricate(:account, domain: 'quoted.example.com') } + let(:quoted_status) { Fabricate(:status, account: quoted_account) } + let(:approval_uri) { 'https://quoted.example.com/quote-approval' } + + let(:object_json) do + build_object( + type: 'Note', + content: 'woah what she said is amazing', + quote: ActivityPub::TagManager.instance.uri_for(quoted_status), + quoteAuthorization: approval_uri + ) + end + + before do + stub_request(:get, approval_uri).to_return(headers: { 'Content-Type': 'application/activity+json' }, body: Oj.dump({ + '@context': [ + 'https://www.w3.org/ns/activitystreams', + { + toot: 'http://joinmastodon.org/ns#', + QuoteAuthorization: 'toot:QuoteAuthorization', + gts: 'https://gotosocial.org/ns#', + interactionPolicy: { + '@id': 'gts:interactionPolicy', + '@type': '@id', + }, + interactingObject: { + '@id': 'gts:interactingObject', + '@type': '@id', + }, + interactionTarget: { + '@id': 'gts:interactionTarget', + '@type': '@id', + }, + }, + ], + type: 'QuoteAuthorization', + id: approval_uri, + attributedTo: ActivityPub::TagManager.instance.uri_for(quoted_status.account), + interactingObject: object_json[:id], + interactionTarget: ActivityPub::TagManager.instance.uri_for(quoted_status), + })) + end + + it 'creates a status with a verified quote' do + expect { subject.perform }.to change(sender.statuses, :count).by(1) + + status = sender.statuses.first + expect(status).to_not be_nil + expect(status.quote).to_not be_nil + expect(status.quote).to have_attributes( + state: 'accepted', + approval_uri: approval_uri + ) + end + end + context 'when a vote to a local poll' do let(:poll) { Fabricate(:poll, options: %w(Yellow Blue)) } let!(:local_status) { Fabricate(:status, poll: poll) } diff --git a/spec/lib/activitypub/activity/delete_spec.rb b/spec/lib/activitypub/activity/delete_spec.rb index 71977a96a2..849c7ada90 100644 --- a/spec/lib/activitypub/activity/delete_spec.rb +++ b/spec/lib/activitypub/activity/delete_spec.rb @@ -77,4 +77,61 @@ RSpec.describe ActivityPub::Activity::Delete do end end end + + context 'when the deleted object is an account' do + let(:json) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Delete', + actor: ActivityPub::TagManager.instance.uri_for(sender), + object: ActivityPub::TagManager.instance.uri_for(sender), + signature: 'foo', + }.with_indifferent_access + end + + describe '#perform' do + subject { described_class.new(json, sender) } + + let(:service) { instance_double(DeleteAccountService, call: true) } + + before do + allow(DeleteAccountService).to receive(:new).and_return(service) + end + + it 'calls the account deletion service' do + subject.perform + + expect(service) + .to have_received(:call).with(sender, { reserve_username: false, skip_activitypub: true }) + end + end + end + + context 'when the deleted object is a quote authorization' do + let(:quoter) { Fabricate(:account, domain: 'b.example.com') } + let(:status) { Fabricate(:status, account: quoter) } + let(:quoted_status) { Fabricate(:status, account: sender, uri: 'https://example.com/statuses/1234') } + let!(:quote) { Fabricate(:quote, approval_uri: 'https://example.com/approvals/1234', state: :accepted, status: status, quoted_status: quoted_status) } + + let(:json) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Delete', + actor: ActivityPub::TagManager.instance.uri_for(sender), + object: quote.approval_uri, + signature: 'foo', + }.with_indifferent_access + end + + describe '#perform' do + subject { described_class.new(json, sender) } + + it 'revokes the authorization' do + expect { subject.perform } + .to change { quote.reload.state }.to('revoked') + end + end + end end diff --git a/spec/lib/status_cache_hydrator_spec.rb b/spec/lib/status_cache_hydrator_spec.rb index 958e2f62d7..a0a82e3923 100644 --- a/spec/lib/status_cache_hydrator_spec.rb +++ b/spec/lib/status_cache_hydrator_spec.rb @@ -40,10 +40,119 @@ RSpec.describe StatusCacheHydrator do end end + context 'when handling an unapproved quote' do + let(:quoted_status) { Fabricate(:status) } + + before do + Fabricate(:quote, status: status, quoted_status: quoted_status, state: :pending) + end + + it 'renders the same attributes as full render' do + expect(subject).to eql(compare_to_hash) + expect(subject[:quote]).to_not be_nil + end + end + + context 'when handling an approved quote' do + let(:quoted_status) { Fabricate(:status) } + + before do + Fabricate(:quote, status: status, quoted_status: quoted_status, state: :accepted) + end + + it 'renders the same attributes as full render' do + expect(subject).to eql(compare_to_hash) + expect(subject[:quote]).to_not be_nil + end + + context 'when the quoted post has been favourited' do + before do + FavouriteService.new.call(account, quoted_status) + end + + it 'renders the same attributes as full render' do + expect(subject).to eql(compare_to_hash) + expect(subject[:quote]).to_not be_nil + end + end + + context 'when the quoted post has been reblogged' do + before do + ReblogService.new.call(account, quoted_status) + end + + it 'renders the same attributes as full render' do + expect(subject).to eql(compare_to_hash) + expect(subject[:quote]).to_not be_nil + end + end + + context 'when the quoted post matches account filters' do + let(:quoted_status) { Fabricate(:status, text: 'this toot is about that banned word') } + + before do + account.custom_filters.create!(phrase: 'filter1', context: %w(home), action: :hide, keywords_attributes: [{ keyword: 'banned' }, { keyword: 'irrelevant' }]) + end + + it 'renders the same attributes as a full render' do + expect(subject).to eql(compare_to_hash) + expect(subject[:quote]).to_not be_nil + end + end + end + context 'when handling a reblog' do let(:reblog) { Fabricate(:status) } let(:status) { Fabricate(:status, reblog: reblog) } + context 'when the reblog has an approved quote' do + let(:quoted_status) { Fabricate(:status) } + + before do + Fabricate(:quote, status: reblog, quoted_status: quoted_status, state: :accepted) + end + + it 'renders the same attributes as full render' do + expect(subject).to eql(compare_to_hash) + expect(subject[:reblog][:quote]).to_not be_nil + end + + context 'when the quoted post has been favourited' do + before do + FavouriteService.new.call(account, quoted_status) + end + + it 'renders the same attributes as full render' do + expect(subject).to eql(compare_to_hash) + expect(subject[:reblog][:quote]).to_not be_nil + end + end + + context 'when the quoted post has been reblogged' do + before do + ReblogService.new.call(account, quoted_status) + end + + it 'renders the same attributes as full render' do + expect(subject).to eql(compare_to_hash) + expect(subject[:reblog][:quote]).to_not be_nil + end + end + + context 'when the quoted post matches account filters' do + let(:quoted_status) { Fabricate(:status, text: 'this toot is about that banned word') } + + before do + account.custom_filters.create!(phrase: 'filter1', context: %w(home), action: :hide, keywords_attributes: [{ keyword: 'banned' }, { keyword: 'irrelevant' }]) + end + + it 'renders the same attributes as a full render' do + expect(subject).to eql(compare_to_hash) + expect(subject[:reblog][:quote]).to_not be_nil + end + end + end + context 'when it has been favourited' do before do FavouriteService.new.call(account, reblog) diff --git a/spec/serializers/rest/quote_serializer_spec.rb b/spec/serializers/rest/quote_serializer_spec.rb new file mode 100644 index 0000000000..999bd6d6b1 --- /dev/null +++ b/spec/serializers/rest/quote_serializer_spec.rb @@ -0,0 +1,87 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe REST::QuoteSerializer do + subject do + serialized_record_json( + quote, + described_class, + options: { + scope: current_user, + scope_name: :current_user, + } + ) + end + + let(:current_user) { Fabricate(:user) } + let(:quote) { Fabricate(:quote) } + + context 'with a pending quote' do + it 'returns expected values' do + expect(subject.deep_symbolize_keys) + .to include( + quoted_status: nil, + state: 'pending' + ) + end + end + + context 'with an accepted quote' do + let(:quote) { Fabricate(:quote, state: :accepted) } + + it 'returns expected values' do + expect(subject.deep_symbolize_keys) + .to include( + quoted_status: be_a(Hash), + state: 'accepted' + ) + end + end + + context 'with an accepted quote of a deleted post' do + let(:quote) { Fabricate(:quote, state: :accepted) } + + before do + quote.quoted_status.destroy! + quote.reload + end + + it 'returns expected values' do + expect(subject.deep_symbolize_keys) + .to include( + quoted_status: nil, + state: 'deleted' + ) + end + end + + context 'with an accepted quote of a blocked user' do + let(:quote) { Fabricate(:quote, state: :accepted) } + + before do + quote.quoted_account.block!(current_user.account) + end + + it 'returns expected values' do + expect(subject.deep_symbolize_keys) + .to include( + quoted_status: nil, + state: 'unauthorized' + ) + end + end + + context 'with a recursive accepted quote' do + let(:status) { Fabricate(:status) } + let(:quote) { Fabricate(:quote, status: status, quoted_status: status, state: :accepted) } + + it 'returns expected values' do + expect(subject.deep_symbolize_keys) + .to include( + quoted_status: be_a(Hash), + state: 'accepted' + ) + end + end +end diff --git a/spec/serializers/rest/shallow_quote_serializer_spec.rb b/spec/serializers/rest/shallow_quote_serializer_spec.rb new file mode 100644 index 0000000000..32acd5f5d1 --- /dev/null +++ b/spec/serializers/rest/shallow_quote_serializer_spec.rb @@ -0,0 +1,93 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe REST::ShallowQuoteSerializer do + subject do + serialized_record_json( + quote, + described_class, + options: { + scope: current_user, + scope_name: :current_user, + } + ) + end + + let(:current_user) { Fabricate(:user) } + let(:quote) { Fabricate(:quote) } + + context 'with a pending quote' do + it 'returns expected values' do + expect(subject.deep_symbolize_keys) + .to include( + quoted_status_id: nil, + state: 'pending' + ) + expect(subject.deep_symbolize_keys) + .to_not have_key(:quoted_status) + end + end + + context 'with an accepted quote' do + let(:quote) { Fabricate(:quote, state: :accepted) } + + it 'returns expected values' do + expect(subject.deep_symbolize_keys) + .to include( + quoted_status_id: be_a(String), + state: 'accepted' + ) + expect(subject.deep_symbolize_keys) + .to_not have_key(:quoted_status) + end + end + + context 'with an accepted quote of a deleted post' do + let(:quote) { Fabricate(:quote, state: :accepted) } + + before do + quote.quoted_status.destroy! + quote.reload + end + + it 'returns expected values' do + expect(subject.deep_symbolize_keys) + .to include( + quoted_status_id: nil, + state: 'deleted' + ) + end + end + + context 'with an accepted quote of a blocked user' do + let(:quote) { Fabricate(:quote, state: :accepted) } + + before do + quote.quoted_account.block!(current_user.account) + end + + it 'returns expected values' do + expect(subject.deep_symbolize_keys) + .to include( + quoted_status_id: nil, + state: 'unauthorized' + ) + end + end + + context 'with a recursive accepted quote' do + let(:status) { Fabricate(:status) } + let(:quote) { Fabricate(:quote, status: status, quoted_status: status, state: :accepted) } + + it 'returns expected values' do + expect(subject.deep_symbolize_keys) + .to include( + quoted_status_id: be_a(String), + state: 'accepted' + ) + expect(subject.deep_symbolize_keys) + .to_not have_key(:quoted_status) + end + end +end diff --git a/spec/services/activitypub/process_status_update_service_spec.rb b/spec/services/activitypub/process_status_update_service_spec.rb index 28b7653833..b88c084b35 100644 --- a/spec/services/activitypub/process_status_update_service_spec.rb +++ b/spec/services/activitypub/process_status_update_service_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' RSpec.describe ActivityPub::ProcessStatusUpdateService do subject { described_class.new } - let!(:status) { Fabricate(:status, text: 'Hello world', account: Fabricate(:account, domain: 'example.com')) } + let!(:status) { Fabricate(:status, text: 'Hello world', uri: 'https://example.com/statuses/1234', account: Fabricate(:account, domain: 'example.com')) } let(:bogus_mention) { 'https://example.com/users/erroringuser' } let(:payload) do { @@ -435,6 +435,398 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService do end end + context 'when the status has an existing unverified quote and adds an approval link', feature: :inbound_quotes do + let(:quoted_account) { Fabricate(:account, domain: 'quoted.example.com') } + let(:quoted_status) { Fabricate(:status, account: quoted_account) } + let!(:quote) { Fabricate(:quote, status: status, quoted_status: quoted_status, approval_uri: nil) } + let(:approval_uri) { 'https://quoted.example.com/approvals/1' } + + let(:payload) do + { + '@context': [ + 'https://www.w3.org/ns/activitystreams', + { + '@id': 'https://w3id.org/fep/044f#quote', + '@type': '@id', + }, + { + '@id': 'https://w3id.org/fep/044f#quoteAuthorization', + '@type': '@id', + }, + ], + id: 'foo', + type: 'Note', + summary: 'Show more', + content: 'Hello universe', + updated: '2021-09-08T22:39:25Z', + quote: ActivityPub::TagManager.instance.uri_for(quoted_status), + quoteAuthorization: approval_uri, + } + end + + before do + stub_request(:get, approval_uri).to_return(headers: { 'Content-Type': 'application/activity+json' }, body: Oj.dump({ + '@context': [ + 'https://www.w3.org/ns/activitystreams', + { + toot: 'http://joinmastodon.org/ns#', + QuoteAuthorization: 'toot:QuoteAuthorization', + gts: 'https://gotosocial.org/ns#', + interactionPolicy: { + '@id': 'gts:interactionPolicy', + '@type': '@id', + }, + interactingObject: { + '@id': 'gts:interactingObject', + '@type': '@id', + }, + interactionTarget: { + '@id': 'gts:interactionTarget', + '@type': '@id', + }, + }, + ], + type: 'QuoteAuthorization', + id: approval_uri, + attributedTo: ActivityPub::TagManager.instance.uri_for(quoted_status.account), + interactingObject: ActivityPub::TagManager.instance.uri_for(status), + interactionTarget: ActivityPub::TagManager.instance.uri_for(quoted_status), + })) + end + + it 'updates the approval URI and verifies the quote' do + expect { subject.call(status, json, json) } + .to change(quote, :approval_uri).to(approval_uri) + .and change(quote, :state).to('accepted') + end + end + + context 'when the status has an existing verified quote and removes an approval link', feature: :inbound_quotes do + let(:quoted_account) { Fabricate(:account, domain: 'quoted.example.com') } + let(:quoted_status) { Fabricate(:status, account: quoted_account) } + let!(:quote) { Fabricate(:quote, status: status, quoted_status: quoted_status, approval_uri: approval_uri, state: :accepted) } + let(:approval_uri) { 'https://quoted.example.com/approvals/1' } + + let(:payload) do + { + '@context': [ + 'https://www.w3.org/ns/activitystreams', + { + '@id': 'https://w3id.org/fep/044f#quote', + '@type': '@id', + }, + { + '@id': 'https://w3id.org/fep/044f#quoteAuthorization', + '@type': '@id', + }, + ], + id: 'foo', + type: 'Note', + summary: 'Show more', + content: 'Hello universe', + updated: '2021-09-08T22:39:25Z', + quote: ActivityPub::TagManager.instance.uri_for(quoted_status), + } + end + + it 'removes the approval URI and unverifies the quote' do + expect { subject.call(status, json, json) } + .to change(quote, :approval_uri).to(nil) + .and change(quote, :state).to('pending') + end + end + + context 'when the status adds a verifiable quote', feature: :inbound_quotes do + let(:quoted_account) { Fabricate(:account, domain: 'quoted.example.com') } + let(:quoted_status) { Fabricate(:status, account: quoted_account) } + let(:approval_uri) { 'https://quoted.example.com/approvals/1' } + + let(:payload) do + { + '@context': [ + 'https://www.w3.org/ns/activitystreams', + { + '@id': 'https://w3id.org/fep/044f#quote', + '@type': '@id', + }, + { + '@id': 'https://w3id.org/fep/044f#quoteAuthorization', + '@type': '@id', + }, + ], + id: 'foo', + type: 'Note', + summary: 'Show more', + content: 'Hello universe', + updated: '2021-09-08T22:39:25Z', + quote: ActivityPub::TagManager.instance.uri_for(quoted_status), + quoteAuthorization: approval_uri, + } + end + + before do + stub_request(:get, approval_uri).to_return(headers: { 'Content-Type': 'application/activity+json' }, body: Oj.dump({ + '@context': [ + 'https://www.w3.org/ns/activitystreams', + { + toot: 'http://joinmastodon.org/ns#', + QuoteAuthorization: 'toot:QuoteAuthorization', + gts: 'https://gotosocial.org/ns#', + interactionPolicy: { + '@id': 'gts:interactionPolicy', + '@type': '@id', + }, + interactingObject: { + '@id': 'gts:interactingObject', + '@type': '@id', + }, + interactionTarget: { + '@id': 'gts:interactionTarget', + '@type': '@id', + }, + }, + ], + type: 'QuoteAuthorization', + id: approval_uri, + attributedTo: ActivityPub::TagManager.instance.uri_for(quoted_status.account), + interactingObject: ActivityPub::TagManager.instance.uri_for(status), + interactionTarget: ActivityPub::TagManager.instance.uri_for(quoted_status), + })) + end + + it 'updates the approval URI and verifies the quote' do + expect { subject.call(status, json, json) } + .to change(status, :quote).from(nil) + expect(status.quote.approval_uri).to eq approval_uri + expect(status.quote.state).to eq 'accepted' + end + end + + context 'when the status adds a unverifiable quote', feature: :inbound_quotes do + let(:quoted_account) { Fabricate(:account, domain: 'quoted.example.com') } + let(:quoted_status) { Fabricate(:status, account: quoted_account) } + let(:approval_uri) { 'https://quoted.example.com/approvals/1' } + + let(:payload) do + { + '@context': [ + 'https://www.w3.org/ns/activitystreams', + { + '@id': 'https://w3id.org/fep/044f#quote', + '@type': '@id', + }, + { + '@id': 'https://w3id.org/fep/044f#quoteAuthorization', + '@type': '@id', + }, + ], + id: 'foo', + type: 'Note', + summary: 'Show more', + content: 'Hello universe', + updated: '2021-09-08T22:39:25Z', + quote: ActivityPub::TagManager.instance.uri_for(quoted_status), + } + end + + it 'updates the approval URI but does not verify the quote' do + expect { subject.call(status, json, json) } + .to change(status, :quote).from(nil) + expect(status.quote.approval_uri).to be_nil + expect(status.quote.state).to eq 'pending' + end + end + + context 'when the status removes a verified quote', feature: :inbound_quotes do + let(:quoted_account) { Fabricate(:account, domain: 'quoted.example.com') } + let(:quoted_status) { Fabricate(:status, account: quoted_account) } + let!(:quote) { Fabricate(:quote, status: status, quoted_status: quoted_status, approval_uri: approval_uri, state: :accepted) } + let(:approval_uri) { 'https://quoted.example.com/approvals/1' } + + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Note', + summary: 'Show more', + content: 'Hello universe', + updated: '2021-09-08T22:39:25Z', + } + end + + it 'removes the quote' do + expect { subject.call(status, json, json) } + .to change { status.reload.quote }.to(nil) + + expect { quote.reload }.to raise_error(ActiveRecord::RecordNotFound) + end + end + + context 'when the status removes an unverified quote', feature: :inbound_quotes do + let(:quoted_account) { Fabricate(:account, domain: 'quoted.example.com') } + let(:quoted_status) { Fabricate(:status, account: quoted_account) } + let!(:quote) { Fabricate(:quote, status: status, quoted_status: quoted_status, approval_uri: nil, state: :pending) } + + let(:payload) do + { + '@context': 'https://www.w3.org/ns/activitystreams', + id: 'foo', + type: 'Note', + summary: 'Show more', + content: 'Hello universe', + updated: '2021-09-08T22:39:25Z', + } + end + + it 'removes the quote' do + expect { subject.call(status, json, json) } + .to change { status.reload.quote }.to(nil) + + expect { quote.reload }.to raise_error(ActiveRecord::RecordNotFound) + end + end + + context 'when the status swaps a verified quote with an unverifiable quote', feature: :inbound_quotes do + let(:quoted_account) { Fabricate(:account, domain: 'quoted.example.com') } + let(:quoted_status) { Fabricate(:status, account: quoted_account) } + let(:second_quoted_status) { Fabricate(:status, account: quoted_account) } + let!(:quote) { Fabricate(:quote, status: status, quoted_status: quoted_status, approval_uri: approval_uri, state: :accepted) } + let(:approval_uri) { 'https://quoted.example.com/approvals/1' } + + let(:payload) do + { + '@context': [ + 'https://www.w3.org/ns/activitystreams', + { + '@id': 'https://w3id.org/fep/044f#quote', + '@type': '@id', + }, + { + '@id': 'https://w3id.org/fep/044f#quoteAuthorization', + '@type': '@id', + }, + ], + id: 'foo', + type: 'Note', + summary: 'Show more', + content: 'Hello universe', + updated: '2021-09-08T22:39:25Z', + quote: ActivityPub::TagManager.instance.uri_for(second_quoted_status), + quoteAuthorization: approval_uri, + } + end + + before do + stub_request(:get, approval_uri).to_return(headers: { 'Content-Type': 'application/activity+json' }, body: Oj.dump({ + '@context': [ + 'https://www.w3.org/ns/activitystreams', + { + toot: 'http://joinmastodon.org/ns#', + QuoteAuthorization: 'toot:QuoteAuthorization', + gts: 'https://gotosocial.org/ns#', + interactionPolicy: { + '@id': 'gts:interactionPolicy', + '@type': '@id', + }, + interactingObject: { + '@id': 'gts:interactingObject', + '@type': '@id', + }, + interactionTarget: { + '@id': 'gts:interactionTarget', + '@type': '@id', + }, + }, + ], + type: 'QuoteAuthorization', + id: approval_uri, + attributedTo: ActivityPub::TagManager.instance.uri_for(quoted_status.account), + interactingObject: ActivityPub::TagManager.instance.uri_for(status), + interactionTarget: ActivityPub::TagManager.instance.uri_for(quoted_status), + })) + end + + it 'updates the URI and unverifies the quote' do + expect { subject.call(status, json, json) } + .to change { status.quote.quoted_status }.from(quoted_status).to(second_quoted_status) + .and change { status.quote.state }.from('accepted') + + expect { quote.reload }.to raise_error(ActiveRecord::RecordNotFound) + end + end + + context 'when the status swaps a verified quote with another verifiable quote', feature: :inbound_quotes do + let(:quoted_account) { Fabricate(:account, domain: 'quoted.example.com') } + let(:second_quoted_account) { Fabricate(:account, domain: 'second-quoted.example.com') } + let(:quoted_status) { Fabricate(:status, account: quoted_account) } + let(:second_quoted_status) { Fabricate(:status, account: second_quoted_account) } + let!(:quote) { Fabricate(:quote, status: status, quoted_status: quoted_status, approval_uri: approval_uri, state: :accepted) } + let(:approval_uri) { 'https://quoted.example.com/approvals/1' } + let(:second_approval_uri) { 'https://second-quoted.example.com/approvals/2' } + + let(:payload) do + { + '@context': [ + 'https://www.w3.org/ns/activitystreams', + { + '@id': 'https://w3id.org/fep/044f#quote', + '@type': '@id', + }, + { + '@id': 'https://w3id.org/fep/044f#quoteAuthorization', + '@type': '@id', + }, + ], + id: 'foo', + type: 'Note', + summary: 'Show more', + content: 'Hello universe', + updated: '2021-09-08T22:39:25Z', + quote: ActivityPub::TagManager.instance.uri_for(second_quoted_status), + quoteAuthorization: second_approval_uri, + } + end + + before do + stub_request(:get, second_approval_uri).to_return(headers: { 'Content-Type': 'application/activity+json' }, body: Oj.dump({ + '@context': [ + 'https://www.w3.org/ns/activitystreams', + { + toot: 'http://joinmastodon.org/ns#', + QuoteAuthorization: 'toot:QuoteAuthorization', + gts: 'https://gotosocial.org/ns#', + interactionPolicy: { + '@id': 'gts:interactionPolicy', + '@type': '@id', + }, + interactingObject: { + '@id': 'gts:interactingObject', + '@type': '@id', + }, + interactionTarget: { + '@id': 'gts:interactionTarget', + '@type': '@id', + }, + }, + ], + type: 'QuoteAuthorization', + id: second_approval_uri, + attributedTo: ActivityPub::TagManager.instance.uri_for(second_quoted_status.account), + interactingObject: ActivityPub::TagManager.instance.uri_for(status), + interactionTarget: ActivityPub::TagManager.instance.uri_for(second_quoted_status), + })) + end + + it 'updates the URI and unverifies the quote' do + expect { subject.call(status, json, json) } + .to change { status.quote.quoted_status }.from(quoted_status).to(second_quoted_status) + .and change { status.quote.approval_uri }.from(approval_uri).to(second_approval_uri) + .and(not_change { status.quote.state }) + + expect { quote.reload }.to raise_error(ActiveRecord::RecordNotFound) + end + end + def poll_option_json(name, votes) { type: 'Note', name: name, replies: { type: 'Collection', totalItems: votes } } end diff --git a/spec/services/activitypub/verify_quote_service_spec.rb b/spec/services/activitypub/verify_quote_service_spec.rb new file mode 100644 index 0000000000..8fe114079b --- /dev/null +++ b/spec/services/activitypub/verify_quote_service_spec.rb @@ -0,0 +1,246 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe ActivityPub::VerifyQuoteService do + subject { described_class.new } + + let(:account) { Fabricate(:account, domain: 'a.example.com') } + let(:quoted_account) { Fabricate(:account, domain: 'b.example.com') } + let(:quoted_status) { Fabricate(:status, account: quoted_account) } + let(:status) { Fabricate(:status, account: account) } + let(:quote) { Fabricate(:quote, status: status, quoted_status: quoted_status, approval_uri: approval_uri) } + + context 'with an unfetchable approval URI' do + let(:approval_uri) { 'https://b.example.com/approvals/1234' } + + before do + stub_request(:get, approval_uri) + .to_return(status: 404) + end + + context 'with an already-fetched post' do + it 'does not update the status' do + expect { subject.call(quote) } + .to change(quote, :state).to('rejected') + end + end + + context 'with an already-verified quote' do + let(:quote) { Fabricate(:quote, status: status, quoted_status: quoted_status, approval_uri: approval_uri, state: :accepted) } + + it 'rejects the quote' do + expect { subject.call(quote) } + .to change(quote, :state).to('revoked') + end + end + end + + context 'with an approval URI' do + let(:approval_uri) { 'https://b.example.com/approvals/1234' } + + let(:approval_type) { 'QuoteAuthorization' } + let(:approval_id) { approval_uri } + let(:approval_attributed_to) { ActivityPub::TagManager.instance.uri_for(quoted_account) } + let(:approval_interacting_object) { ActivityPub::TagManager.instance.uri_for(status) } + let(:approval_interaction_target) { ActivityPub::TagManager.instance.uri_for(quoted_status) } + + let(:json) do + { + '@context': [ + 'https://www.w3.org/ns/activitystreams', + { + toot: 'http://joinmastodon.org/ns#', + QuoteAuthorization: 'toot:QuoteAuthorization', + gts: 'https://gotosocial.org/ns#', + interactionPolicy: { + '@id': 'gts:interactionPolicy', + '@type': '@id', + }, + interactingObject: { + '@id': 'gts:interactingObject', + '@type': '@id', + }, + interactionTarget: { + '@id': 'gts:interactionTarget', + '@type': '@id', + }, + }, + ], + type: approval_type, + id: approval_id, + attributedTo: approval_attributed_to, + interactingObject: approval_interacting_object, + interactionTarget: approval_interaction_target, + }.with_indifferent_access + end + + before do + stub_request(:get, approval_uri) + .to_return(status: 200, body: Oj.dump(json), headers: { 'Content-Type': 'application/activity+json' }) + end + + context 'with a valid activity for already-fetched posts' do + it 'updates the status' do + expect { subject.call(quote) } + .to change(quote, :state).to('accepted') + + expect(a_request(:get, approval_uri)) + .to have_been_made.once + end + end + + context 'with a valid activity for a post that cannot be fetched but is inlined' do + let(:quoted_status) { nil } + + let(:approval_interaction_target) do + { + type: 'Note', + id: 'https://b.example.com/unknown-quoted', + to: 'https://www.w3.org/ns/activitystreams#Public', + attributedTo: ActivityPub::TagManager.instance.uri_for(quoted_account), + content: 'previously unknown post', + } + end + + before do + stub_request(:get, 'https://b.example.com/unknown-quoted') + .to_return(status: 404) + end + + it 'updates the status' do + expect { subject.call(quote, fetchable_quoted_uri: 'https://b.example.com/unknown-quoted') } + .to change(quote, :state).to('accepted') + + expect(a_request(:get, approval_uri)) + .to have_been_made.once + + expect(quote.reload.quoted_status.content).to eq 'previously unknown post' + end + end + + context 'with a valid activity for a post that cannot be fetched and is inlined from an untrusted source' do + let(:quoted_status) { nil } + + let(:approval_interaction_target) do + { + type: 'Note', + id: 'https://example.com/unknown-quoted', + to: 'https://www.w3.org/ns/activitystreams#Public', + attributedTo: ActivityPub::TagManager.instance.uri_for(account), + content: 'previously unknown post', + } + end + + before do + stub_request(:get, 'https://example.com/unknown-quoted') + .to_return(status: 404) + end + + it 'does not update the status' do + expect { subject.call(quote, fetchable_quoted_uri: 'https://example.com/unknown-quoted') } + .to not_change(quote, :state) + .and not_change(quote, :quoted_status) + + expect(a_request(:get, approval_uri)) + .to have_been_made.once + end + end + + context 'with a valid activity for already-fetched posts, with a pre-fetched approval' do + it 'updates the status without fetching the activity' do + expect { subject.call(quote, prefetched_body: Oj.dump(json)) } + .to change(quote, :state).to('accepted') + + expect(a_request(:get, approval_uri)) + .to_not have_been_made + end + end + + context 'with an unverifiable approval' do + let(:approval_uri) { 'https://evil.com/approvals/1234' } + + it 'does not update the status' do + expect { subject.call(quote) } + .to_not change(quote, :state) + end + end + + context 'with an invalid approval document because of a mismatched ID' do + let(:approval_id) { 'https://evil.com/approvals/1234' } + + it 'does not accept the quote' do + # NOTE: maybe we want to skip that instead of rejecting it? + expect { subject.call(quote) } + .to change(quote, :state).to('rejected') + end + end + + context 'with an approval from the wrong account' do + let(:approval_attributed_to) { ActivityPub::TagManager.instance.uri_for(Fabricate(:account, domain: 'b.example.com')) } + + it 'does not update the status' do + expect { subject.call(quote) } + .to_not change(quote, :state) + end + end + + context 'with an approval for the wrong quoted post' do + let(:approval_interaction_target) { ActivityPub::TagManager.instance.uri_for(Fabricate(:status, account: quoted_account)) } + + it 'does not update the status' do + expect { subject.call(quote) } + .to_not change(quote, :state) + end + end + + context 'with an approval for the wrong quote post' do + let(:approval_interacting_object) { ActivityPub::TagManager.instance.uri_for(Fabricate(:status, account: account)) } + + it 'does not update the status' do + expect { subject.call(quote) } + .to_not change(quote, :state) + end + end + + context 'with an approval of the wrong type' do + let(:approval_type) { 'ReplyAuthorization' } + + it 'does not update the status' do + expect { subject.call(quote) } + .to_not change(quote, :state) + end + end + end + + context 'with fast-track authorizations' do + let(:approval_uri) { nil } + + context 'without any fast-track condition' do + it 'does not update the status' do + expect { subject.call(quote) } + .to_not change(quote, :state) + end + end + + context 'when the account and the quoted account are the same' do + let(:quoted_account) { account } + + it 'updates the status' do + expect { subject.call(quote) } + .to change(quote, :state).to('accepted') + end + end + + context 'when the account is mentioned by the quoted post' do + before do + quoted_status.mentions << Mention.new(account: account) + end + + it 'updates the status' do + expect { subject.call(quote) } + .to change(quote, :state).to('accepted') + end + end + end +end diff --git a/spec/workers/activitypub/quote_refresh_worker_spec.rb b/spec/workers/activitypub/quote_refresh_worker_spec.rb new file mode 100644 index 0000000000..bcdcc0b746 --- /dev/null +++ b/spec/workers/activitypub/quote_refresh_worker_spec.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe ActivityPub::QuoteRefreshWorker do + let(:worker) { described_class.new } + let(:service) { instance_double(ActivityPub::VerifyQuoteService, call: true) } + + describe '#perform' do + before { stub_service } + + let(:account) { Fabricate(:account, domain: 'example.com') } + let(:status) { Fabricate(:status, account: account) } + let(:quote) { Fabricate(:quote, status: status, quoted_status: nil, updated_at: updated_at) } + + context 'when dealing with an old quote' do + let(:updated_at) { (Quote::BACKGROUND_REFRESH_INTERVAL * 2).ago } + + it 'sends the status to the service and bumps the updated date' do + expect { worker.perform(quote.id) } + .to(change { quote.reload.updated_at }) + + expect(service).to have_received(:call).with(quote) + end + end + + context 'when dealing with a recent quote' do + let(:updated_at) { Time.now.utc } + + it 'does not call the service and does not touch the quote' do + expect { worker.perform(quote.id) } + .to_not(change { quote.reload.updated_at }) + + expect(service).to_not have_received(:call).with(quote) + end + end + end + + def stub_service + allow(ActivityPub::VerifyQuoteService) + .to receive(:new) + .and_return(service) + end +end diff --git a/spec/workers/activitypub/refetch_and_verify_quote_worker_spec.rb b/spec/workers/activitypub/refetch_and_verify_quote_worker_spec.rb new file mode 100644 index 0000000000..a925709885 --- /dev/null +++ b/spec/workers/activitypub/refetch_and_verify_quote_worker_spec.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe ActivityPub::RefetchAndVerifyQuoteWorker do + let(:worker) { described_class.new } + let(:service) { instance_double(ActivityPub::VerifyQuoteService, call: true) } + + describe '#perform' do + before { stub_service } + + let(:account) { Fabricate(:account, domain: 'example.com') } + let(:status) { Fabricate(:status, account: account) } + let(:quote) { Fabricate(:quote, status: status, quoted_status: nil) } + let(:url) { 'https://example.com/quoted-status' } + + it 'sends the status to the service' do + worker.perform(quote.id, url) + + expect(service).to have_received(:call).with(quote, fetchable_quoted_uri: url, request_id: anything) + end + + it 'returns nil for non-existent record' do + result = worker.perform(123_123_123, url) + + expect(result).to be(true) + end + end + + def stub_service + allow(ActivityPub::VerifyQuoteService) + .to receive(:new) + .and_return(service) + end +end From 5810bd331032a67538c8967707b19f9b0ae3bbdc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 17 Apr 2025 09:56:10 +0200 Subject: [PATCH 002/349] chore(deps): update docker.io/ruby docker tag to v3.4.3 (#34460) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 6620f4c096..7e9393efea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ ARG BASE_REGISTRY="docker.io" # Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.4.x"] # renovate: datasource=docker depName=docker.io/ruby -ARG RUBY_VERSION="3.4.2" +ARG RUBY_VERSION="3.4.3" # # Node.js version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="20"] # renovate: datasource=node-version depName=node ARG NODE_MAJOR_VERSION="22" From 3dc95902d76d0ba54353e9fc2014a73b36b35065 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 17 Apr 2025 10:07:02 +0200 Subject: [PATCH 003/349] chore(deps): update dependency opentelemetry-instrumentation-pg to v0.30.1 (#34472) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f13df0c43f..6206ef440f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -495,6 +495,8 @@ GEM opentelemetry-common (~> 0.20) opentelemetry-sdk (~> 1.2) opentelemetry-semantic_conventions + opentelemetry-helpers-sql (0.1.1) + opentelemetry-api (~> 1.0) opentelemetry-helpers-sql-obfuscation (0.3.0) opentelemetry-common (~> 0.21) opentelemetry-instrumentation-action_mailer (0.4.0) @@ -548,8 +550,9 @@ GEM opentelemetry-instrumentation-net_http (0.23.0) opentelemetry-api (~> 1.0) opentelemetry-instrumentation-base (~> 0.23.0) - opentelemetry-instrumentation-pg (0.30.0) + opentelemetry-instrumentation-pg (0.30.1) opentelemetry-api (~> 1.0) + opentelemetry-helpers-sql opentelemetry-helpers-sql-obfuscation opentelemetry-instrumentation-base (~> 0.23.0) opentelemetry-instrumentation-rack (0.26.0) From b64a5a7d84dcb634121dbda9dea1c78a0150b345 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 17 Apr 2025 10:07:19 +0200 Subject: [PATCH 004/349] chore(deps): update dependency connection_pool to v2.5.1 (#34475) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 6206ef440f..0b21e544e6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -160,7 +160,7 @@ GEM cocoon (1.2.15) color_diff (0.1) concurrent-ruby (1.3.5) - connection_pool (2.5.0) + connection_pool (2.5.1) cose (1.3.1) cbor (~> 0.5.9) openssl-signature_algorithm (~> 1.0) From b33f9ea60338a78dde2fb7fe3f083c2ffaafcf1f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 17 Apr 2025 10:10:03 +0200 Subject: [PATCH 005/349] New Crowdin Translations (automated) (#34464) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/cy.json | 3 ++ app/javascript/mastodon/locales/el.json | 18 +++++++- app/javascript/mastodon/locales/es-MX.json | 2 +- app/javascript/mastodon/locales/es.json | 2 +- app/javascript/mastodon/locales/it.json | 3 ++ app/javascript/mastodon/locales/lt.json | 4 +- app/javascript/mastodon/locales/nl.json | 2 +- app/javascript/mastodon/locales/nn.json | 28 ++++++++---- config/locales/activerecord.el.yml | 2 + config/locales/activerecord.nn.yml | 6 +++ config/locales/cy.yml | 1 + config/locales/el.yml | 10 +++++ config/locales/it.yml | 1 + config/locales/lv.yml | 3 ++ config/locales/nn.yml | 52 +++++++++++++++++++--- config/locales/simple_form.el.yml | 17 +++++++ config/locales/simple_form.nn.yml | 12 ++++- 17 files changed, 147 insertions(+), 19 deletions(-) diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 3bf10be7fb..23708ab912 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -381,6 +381,8 @@ "generic.saved": "Wedi'i Gadw", "getting_started.heading": "Dechrau", "hashtag.admin_moderation": "Agor rhyngwyneb cymedroli #{name}", + "hashtag.browse": "Pori postiadau yn #{hashtag}", + "hashtag.browse_from_account": "Pori postiadau gan @{name} yn #{hashtag}", "hashtag.column_header.tag_mode.all": "a {additional}", "hashtag.column_header.tag_mode.any": "neu {additional}", "hashtag.column_header.tag_mode.none": "heb {additional}", @@ -394,6 +396,7 @@ "hashtag.counter_by_uses": "{count, plural, one {postiad {counter}} other {postiad {counter}}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} postiad} other {{counter} postiad}} heddiw", "hashtag.follow": "Dilyn hashnod", + "hashtag.mute": "Tewi #{hashtag}", "hashtag.unfollow": "Dad-ddilyn hashnod", "hashtags.and_other": "…a {count, plural, other {# arall}}", "hints.profiles.followers_may_be_missing": "Mae'n bosibl bod dilynwyr y proffil hwn ar goll.", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 0b9e42cbe9..e9f8ead17f 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -27,6 +27,9 @@ "account.edit_profile": "Επεξεργασία προφίλ", "account.enable_notifications": "Ειδοποίησέ με όταν δημοσιεύει ο @{name}", "account.endorse": "Προβολή στο προφίλ", + "account.featured": "Προτεινόμενα", + "account.featured.hashtags": "Ετικέτες", + "account.featured.posts": "Αναρτήσεις", "account.featured_tags.last_status_at": "Τελευταία ανάρτηση στις {date}", "account.featured_tags.last_status_never": "Καμία ανάρτηση", "account.follow": "Ακολούθησε", @@ -64,6 +67,7 @@ "account.statuses_counter": "{count, plural, one {{counter} ανάρτηση} other {{counter} αναρτήσεις}}", "account.unblock": "Άρση αποκλεισμού @{name}", "account.unblock_domain": "Άρση αποκλεισμού του τομέα {domain}", + "account.unblock_domain_short": "Άρση αποκλ.", "account.unblock_short": "Άρση αποκλεισμού", "account.unendorse": "Να μην παρέχεται στο προφίλ", "account.unfollow": "Άρση ακολούθησης", @@ -292,6 +296,7 @@ "emoji_button.search_results": "Αποτελέσματα αναζήτησης", "emoji_button.symbols": "Σύμβολα", "emoji_button.travel": "Ταξίδια & Τοποθεσίες", + "empty_column.account_featured": "Αυτή η λίστα είναι κενή", "empty_column.account_hides_collections": "Αυτός ο χρήστης έχει επιλέξει να μην καταστήσει αυτές τις πληροφορίες διαθέσιμες", "empty_column.account_suspended": "Λογαριασμός σε αναστολή", "empty_column.account_timeline": "Δεν έχει αναρτήσεις εδώ!", @@ -376,6 +381,8 @@ "generic.saved": "Αποθηκεύτηκε", "getting_started.heading": "Ας ξεκινήσουμε", "hashtag.admin_moderation": "Άνοιγμα διεπαφής συντονισμού για το #{name}", + "hashtag.browse": "Περιήγηση αναρτήσεων με #{hashtag}", + "hashtag.browse_from_account": "Περιήγηση αναρτήσεων από @{name} σε #{hashtag}", "hashtag.column_header.tag_mode.all": "και {additional}", "hashtag.column_header.tag_mode.any": "ή {additional}", "hashtag.column_header.tag_mode.none": "χωρίς {additional}", @@ -389,6 +396,7 @@ "hashtag.counter_by_uses": "{count, plural, one {{counter} ανάρτηση} other {{counter} αναρτήσεις}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} ανάρτηση} other {{counter} αναρτήσεις}} σήμερα", "hashtag.follow": "Παρακολούθηση ετικέτας", + "hashtag.mute": "Σίγαση #{hashtag}", "hashtag.unfollow": "Διακοπή παρακολούθησης ετικέτας", "hashtags.and_other": "…και {count, plural, one {}other {# ακόμη}}", "hints.profiles.followers_may_be_missing": "Μπορεί να λείπουν ακόλουθοι για αυτό το προφίλ.", @@ -871,7 +879,9 @@ "subscribed_languages.target": "Αλλαγή εγγεγραμμένων γλωσσών για {target}", "tabs_bar.home": "Αρχική", "tabs_bar.notifications": "Ειδοποιήσεις", + "terms_of_service.effective_as_of": "Ενεργό από {date}", "terms_of_service.title": "Όροι Παροχής Υπηρεσιών", + "terms_of_service.upcoming_changes_on": "Επερχόμενες αλλαγές στις {date}", "time_remaining.days": "απομένουν {number, plural, one {# ημέρα} other {# ημέρες}}", "time_remaining.hours": "απομένουν {number, plural, one {# ώρα} other {# ώρες}}", "time_remaining.minutes": "απομένουν {number, plural, one {# λεπτό} other {# λεπτά}}", @@ -902,6 +912,12 @@ "video.expand": "Επέκταση βίντεο", "video.fullscreen": "Πλήρης οθόνη", "video.hide": "Απόκρυψη βίντεο", + "video.mute": "Σίγαση", "video.pause": "Παύση", - "video.play": "Αναπαραγωγή" + "video.play": "Αναπαραγωγή", + "video.skip_backward": "Παράλειψη πίσω", + "video.skip_forward": "Παράλειψη εμπρός", + "video.unmute": "Άρση σίγασης", + "video.volume_down": "Μείωση έντασης", + "video.volume_up": "Αύξηση έντασης" } diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 69e20fc016..f4d9266276 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -382,7 +382,7 @@ "getting_started.heading": "Primeros pasos", "hashtag.admin_moderation": "Abrir interfaz de moderación para #{name}", "hashtag.browse": "Explorar publicaciones en #{hashtag}", - "hashtag.browse_from_account": "Explorar publicaciones desde @{name} en #{hashtag}", + "hashtag.browse_from_account": "Explorar publicaciones de @{name} en #{hashtag}", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 4f9d91ce11..49e5631a81 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -382,7 +382,7 @@ "getting_started.heading": "Primeros pasos", "hashtag.admin_moderation": "Abrir interfaz de moderación para #{name}", "hashtag.browse": "Explorar publicaciones en #{hashtag}", - "hashtag.browse_from_account": "Explorar publicaciones desde @{name} en #{hashtag}", + "hashtag.browse_from_account": "Explorar publicaciones de @{name} en #{hashtag}", "hashtag.column_header.tag_mode.all": "y {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sin {additional}", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 36770c675f..55da1c8c11 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -381,6 +381,8 @@ "generic.saved": "Salvato", "getting_started.heading": "Per iniziare", "hashtag.admin_moderation": "Apri l'interfaccia di moderazione per #{name}", + "hashtag.browse": "Sfoglia i post con #{hashtag}", + "hashtag.browse_from_account": "Sfoglia i post da @{name} con #{hashtag}", "hashtag.column_header.tag_mode.all": "e {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "senza {additional}", @@ -394,6 +396,7 @@ "hashtag.counter_by_uses": "{count, plural, one {{counter} post} other {{counter} post}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} post} other {{counter} post}} oggi", "hashtag.follow": "Segui l'hashtag", + "hashtag.mute": "Silenzia #{hashtag}", "hashtag.unfollow": "Smetti di seguire l'hashtag", "hashtags.and_other": "…e {count, plural, other {# in più}}", "hints.profiles.followers_may_be_missing": "I seguaci per questo profilo potrebbero essere mancanti.", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 7110e809c1..774975122a 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -889,6 +889,8 @@ "video.expand": "Išplėsti vaizdo įrašą", "video.fullscreen": "Visas ekranas", "video.hide": "Slėpti vaizdo įrašą", + "video.mute": "Išjungti garsą", "video.pause": "Pristabdyti", - "video.play": "Leisti" + "video.play": "Leisti", + "video.skip_backward": "Praleisti atgal" } diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 30f4777f61..a2deb6fa75 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -58,7 +58,7 @@ "account.no_bio": "Geen beschrijving opgegeven.", "account.open_original_page": "Originele pagina openen", "account.posts": "Berichten", - "account.posts_with_replies": "Berichten en reacties", + "account.posts_with_replies": "Reacties", "account.report": "@{name} rapporteren", "account.requested": "Wachten op goedkeuring. Klik om het volgverzoek te annuleren", "account.requested_follow": "{name} wil je graag volgen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index ab867017a9..492ce929fc 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -36,9 +36,9 @@ "account.follow_back": "Fylg tilbake", "account.followers": "Fylgjarar", "account.followers.empty": "Ingen fylgjer denne brukaren enno.", - "account.followers_counter": "{count, plural, one {{counter} følgjar} other {{counter} følgjarar}}", + "account.followers_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjarar}}", "account.following": "Fylgjer", - "account.following_counter": "{count, plural, one {{counter} følgjer} other {{counter} følgjer}}", + "account.following_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjarar}}", "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.", "account.go_to_profile": "Gå til profil", "account.hide_reblogs": "Gøym framhevingar frå @{name}", @@ -67,6 +67,7 @@ "account.statuses_counter": "{count, plural, one {{counter} innlegg} other {{counter} innlegg}}", "account.unblock": "Stopp blokkering av @{name}", "account.unblock_domain": "Stopp blokkering av domenet {domain}", + "account.unblock_domain_short": "Fjern blokkering", "account.unblock_short": "Stopp blokkering", "account.unendorse": "Ikkje vis på profil", "account.unfollow": "Slutt å fylgja", @@ -117,7 +118,7 @@ "annual_report.summary.thanks": "Takk for at du er med i Mastodon!", "attachments_list.unprocessed": "(ubehandla)", "audio.hide": "Gøym lyd", - "block_modal.remote_users_caveat": "Me vil be tenaren {domain} om å respektere di avgjerd. Me kan ikkje garantera at det vert gjort, sidan nokre tenarar kan handtera blokkering ulikt. Offentlege innlegg kan framleis vera synlege for ikkje-innlogga brukarar.", + "block_modal.remote_users_caveat": "Me vil be tenaren {domain} om å respektera di avgjerd. Me kan ikkje garantera at det vert gjort, sidan nokre tenarar kan handtera blokkering ulikt. Offentlege innlegg kan framleis vera synlege for ikkje-innlogga brukarar.", "block_modal.show_less": "Vis mindre", "block_modal.show_more": "Vis meir", "block_modal.they_cant_mention": "Dei kan ikkje nemna eller fylgja deg.", @@ -276,7 +277,7 @@ "domain_pill.who_they_are": "Sidan handtak seier kven nokon er og kvar dei er, kan du interagere med folk på tvers av det sosiale nettverket av .", "domain_pill.who_you_are": "Sidan handtaket ditt seier kven du er og kvar du er, kan folk interagere med deg på tvers av det sosiale nettverket av .", "domain_pill.your_handle": "Handtaket ditt:", - "domain_pill.your_server": "Din digitale heim, der alle innlegga dine bur i. Liker du ikkje dette? Byt til ein ny tenar når som helst og ta med fylgjarane dine òg.", + "domain_pill.your_server": "Din digitale heim, der alle innlegga dine bur. Liker du ikkje dette? Byt til ein ny tenar når som helst og ta med fylgjarane dine òg.", "domain_pill.your_username": "Din unike identifikator på denne tenaren. Det er mogleg å finne brukarar med same brukarnamn på forskjellige tenarar.", "embed.instructions": "Bygg inn denne statusen på nettsida di ved å kopiera koden nedanfor.", "embed.preview": "Slik kjem det til å sjå ut:", @@ -380,6 +381,8 @@ "generic.saved": "Lagra", "getting_started.heading": "Kom i gang", "hashtag.admin_moderation": "Opne moderasjonsgrensesnitt for #{name}", + "hashtag.browse": "Bla gjennom innlegg i #{hashtag}", + "hashtag.browse_from_account": "Bla gjennom innlegg frå @{name} i #{hashtag}", "hashtag.column_header.tag_mode.all": "og {additional}", "hashtag.column_header.tag_mode.any": "eller {additional}", "hashtag.column_header.tag_mode.none": "utan {additional}", @@ -393,6 +396,7 @@ "hashtag.counter_by_uses": "{count, plural,one {{counter} innlegg} other {{counter} innlegg}}", "hashtag.counter_by_uses_today": "{count, plural,one {{counter} innlegg} other {{counter} innlegg}} i dag", "hashtag.follow": "Fylg emneknagg", + "hashtag.mute": "Demp @#{hashtag}", "hashtag.unfollow": "Slutt å fylgje emneknaggen", "hashtags.and_other": "…og {count, plural, one {}other {# fleire}}", "hints.profiles.followers_may_be_missing": "Kven som fylgjer denne profilen manglar kanskje.", @@ -805,11 +809,11 @@ "server_banner.about_active_users": "Personar som har brukt denne tenaren dei siste 30 dagane (Månadlege Aktive Brukarar)", "server_banner.active_users": "aktive brukarar", "server_banner.administered_by": "Administrert av:", - "server_banner.is_one_of_many": "{domain} er ein av dei mange uavhengige Mastodon-serverane du kan bruke til å delta i Fødiverset.", + "server_banner.is_one_of_many": "{domain} er ein av dei mange uavhengige Mastodon-tenarane du kan bruka til å delta i Allheimen.", "server_banner.server_stats": "Tenarstatistikk:", "sign_in_banner.create_account": "Opprett konto", - "sign_in_banner.follow_anyone": "Følg kven som helst på tvers av Fødiverset og sjå alt i kronologisk rekkjefølgje. Ingen algoritmar, reklamar eller clickbait i sikte.", - "sign_in_banner.mastodon_is": "Mastodon er den beste måten å følgje med på det som skjer.", + "sign_in_banner.follow_anyone": "Fylg kven som helst på tvers av Allheimen og sjå alt i kronologisk rekkjefylgje. Ingen algoritmar, reklame eller klikkfeller.", + "sign_in_banner.mastodon_is": "Mastodon er den beste måten å fylgja med på det som skjer.", "sign_in_banner.sign_in": "Logg inn", "sign_in_banner.sso_redirect": "Logg inn eller registrer deg", "status.admin_account": "Opne moderasjonsgrensesnitt for @{name}", @@ -875,7 +879,9 @@ "subscribed_languages.target": "Endre abonnerte språk for {target}", "tabs_bar.home": "Heim", "tabs_bar.notifications": "Varsel", + "terms_of_service.effective_as_of": "I kraft frå {date}", "terms_of_service.title": "Bruksvilkår", + "terms_of_service.upcoming_changes_on": "Komande endringar {date}", "time_remaining.days": "{number, plural, one {# dag} other {# dagar}} igjen", "time_remaining.hours": "{number, plural, one {# time} other {# timar}} igjen", "time_remaining.minutes": "{number, plural, one {# minutt} other {# minutt}} igjen", @@ -906,6 +912,12 @@ "video.expand": "Utvid video", "video.fullscreen": "Fullskjerm", "video.hide": "Gøym video", + "video.mute": "Demp", "video.pause": "Pause", - "video.play": "Spel av" + "video.play": "Spel av", + "video.skip_backward": "Hopp bakover", + "video.skip_forward": "Hopp framover", + "video.unmute": "Opphev demping", + "video.volume_down": "Volum ned", + "video.volume_up": "Volum opp" } diff --git a/config/locales/activerecord.el.yml b/config/locales/activerecord.el.yml index 58e7a7df3f..4bb344bc6d 100644 --- a/config/locales/activerecord.el.yml +++ b/config/locales/activerecord.el.yml @@ -55,6 +55,8 @@ el: too_soon: είναι πολύ σύντομα, πρέπει να είναι μετά από %{date} user: attributes: + date_of_birth: + below_limit: είναι κάτω από το όριο ηλικίας email: blocked: χρησιμοποιεί μη επιτρεπόμενο πάροχο e-mail unreachable: δεν φαίνεται να υπάρχει diff --git a/config/locales/activerecord.nn.yml b/config/locales/activerecord.nn.yml index f47bafe0b7..ae73057dcc 100644 --- a/config/locales/activerecord.nn.yml +++ b/config/locales/activerecord.nn.yml @@ -49,8 +49,14 @@ nn: attributes: reblog: taken: av innlegg eksisterer allereie + terms_of_service: + attributes: + effective_date: + too_soon: er for snart, må vera seinare enn %{date} user: attributes: + date_of_birth: + below_limit: er under aldersgrensa email: blocked: bruker ein forboden epostleverandør unreachable: ser ikkje ut til å eksistere diff --git a/config/locales/cy.yml b/config/locales/cy.yml index edd89fedc6..2679c00524 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -331,6 +331,7 @@ cy: create: Creu cyhoeddiad title: Cyhoeddiad newydd preview: + disclaimer: Gan nad oes modd i ddefnyddwyr eu hosgoi, dylai hysbysiadau e-bost gael eu cyfyngu i gyhoeddiadau pwysig fel tor-data personol neu hysbysiadau cau gweinydd. explanation_html: 'Bydd yr e-bost yn cael ei anfon at %{display_count} defnyddiwr . Bydd y testun canlynol yn cael ei gynnwys yn yr e-bost:' title: Hysbysiad rhagolwg cyhoeddiad publish: Cyhoeddi diff --git a/config/locales/el.yml b/config/locales/el.yml index d2f4fbba01..9e82063f98 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -319,6 +319,7 @@ el: create: Δημιουργία ανακοίνωσης title: Νέα ανακοίνωση preview: + disclaimer: Δεδομένου ότι οι χρήστες δεν μπορούν να εξαιρεθούν από αυτά, οι ειδοποιήσεις μέσω ηλεκτρονικού ταχυδρομείου θα πρέπει να περιορίζονται σε σημαντικές ανακοινώσεις, όπως η παραβίαση προσωπικών δεδομένων ή οι ειδοποιήσεις κλεισίματος διακομιστή. explanation_html: 'Το email θα αποσταλεί σε %{display_count} χρήστες. Το ακόλουθο κείμενο θα συμπεριληφθεί στο e-mail:' title: Προεπισκόπηση ειδοποίησης ανακοίνωσης publish: Δημοσίευση @@ -507,6 +508,8 @@ el: select_capabilities: Επέλεξε Δυνατότητες sign_in: Σύνδεση status: Κατάσταση + title: Πάροχοι Δευτερεύουσας Υπηρεσίας Fediverse + title: FASP follow_recommendations: description_html: "Ακολουθώντας συστάσεις βοηθάει τους νέους χρήστες να βρουν γρήγορα ενδιαφέρον περιεχόμενο. Όταν ένας χρήστης δεν έχει αλληλεπιδράσει με άλλους αρκετά για να διαμορφώσει εξατομικευμένες συστάσεις, συνιστώνται αυτοί οι λογαριασμοί. Υπολογίζονται εκ νέου σε καθημερινή βάση από ένα σύνολο λογαριασμών με τις υψηλότερες πρόσφατες αλληλεπιδράσεις και μεγαλύτερο αριθμό τοπικών ακόλουθων για μια δεδομένη γλώσσα." language: Για τη γλώσσα @@ -971,6 +974,7 @@ el: chance_to_review_html: "Οι παραγόμενοι όροι υπηρεσίας δε θα δημοσιεύονται αυτόματα. Θα έχεις την ευκαιρία να εξετάσεις το αποτέλεσμα. Παρακαλούμε συμπλήρωσε τις απαιτούμενες πληροφορίες για να συνεχίσεις." explanation_html: Το πρότυπο όρων υπηρεσίας που παρέχονται είναι μόνο για ενημερωτικούς σκοπούς και δε θα πρέπει να ερμηνεύονται ως νομικές συμβουλές για οποιοδήποτε θέμα. Παρακαλούμε συμβουλέψου τον νομικό σου σύμβουλο σχετικά με την περίπτωσή σου και τις συγκεκριμένες νομικές ερωτήσεις που έχεις. title: Ρύθμιση Όρων Παροχής Υπηρεσιών + going_live_on_html: Ενεργό, σε ισχύ από %{date} history: Ιστορικό live: Ενεργό no_history: Δεν υπάρχουν ακόμα καταγεγραμμένες αλλαγές στους όρους παροχής υπηρεσιών. @@ -1936,6 +1940,10 @@ el: recovery_instructions_html: Αν ποτέ δεν έχεις πρόσβαση στο κινητό σου, μπορείς να χρησιμοποιήσεις έναν από τους παρακάτω κωδικούς ανάκτησης για να αποκτήσεις πρόσβαση στο λογαριασμό σου. Διαφύλαξε τους κωδικούς ανάκτησης. Για παράδειγμα, μπορείς να τους εκτυπώσεις και να τους φυλάξεις μαζί με άλλα σημαντικά σου έγγραφα. webauthn: Κλειδιά ασφαλείας user_mailer: + announcement_published: + description: 'Οι διαχειριστές του %{domain} κάνουν μια ανακοίνωση:' + subject: Ανακοίνωση διακομιστή + title: Ανακοίνωση διακομιστή %{domain} appeal_approved: action: Ρυθμίσεις Λογαριασμού explanation: Η έφεση του παραπτώματος εναντίον του λογαριασμού σου στις %{strike_date}, που υπέβαλες στις %{appeal_date} έχει εγκριθεί. Ο λογαριασμός σου είναι και πάλι σε καλή κατάσταση. @@ -1968,6 +1976,8 @@ el: terms_of_service_changed: agreement: Συνεχίζοντας να χρησιμοποιείς το %{domain}, συμφωνείς με αυτούς τους όρους. Αν διαφωνείς με τους ενημερωμένους όρους, μπορείς να τερματίσεις τη συμφωνία σου με το %{domain} ανά πάσα στιγμή διαγράφοντας τον λογαριασμό σου. changelog: 'Με μια ματιά, αυτό σημαίνει αυτή η ενημέρωση για σένα:' + description: 'Λαμβάνεις αυτό το email επειδή κάνουμε κάποιες αλλαγές στους όρους παροχής υπηρεσιών μας στο %{domain}. Αυτές οι ενημερώσεις θα τεθούν σε ισχύ στις %{date}. Σε ενθαρρύνουμε να εξετάσεις πλήρως τους ενημερωμένους όρους εδώ:' + description_html: Λαμβάνεις αυτό το email επειδή κάνουμε κάποιες αλλαγές στους όρους παροχής υπηρεσιών μας στο %{domain}. Αυτές οι ενημερώσεις θα τεθούν σε ισχύ στις %{date}. Σε ενθαρρύνουμε να εξετάσεις πλήρως τους ενημερωμένους όρους εδώ. sign_off: Η ομάδα του %{domain} subject: Ενημερώσεις στους όρους παροχής υπηρεσιών μας subtitle: Οι όροι παροχής υπηρεσιών του %{domain} αλλάζουν diff --git a/config/locales/it.yml b/config/locales/it.yml index 95096b07c8..5c0a45f39a 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -319,6 +319,7 @@ it: create: Crea annuncio title: Nuovo annuncio preview: + disclaimer: Poiché gli utenti non possono disattivarle, le notifiche e-mail dovrebbero essere limitate ad annunci importanti, come notifiche di violazione dei dati personali o di chiusura del server. explanation_html: 'L''e-mail verrà inviata a %{display_count} utenti. Il seguente testo sarà incluso nell''e-mail:' title: Anteprima della notifica dell'annuncio publish: Pubblica diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 2bb5abf2de..6c81fe6e25 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -2056,7 +2056,10 @@ lv: edit_profile_title: Pielāgo savu profilu explanation: Šeit ir daži padomi, kā sākt darbu feature_action: Uzzināt vairāk + feature_audience_title: Veido savu sekotāju pulku ar pārliecību + feature_control_title: Turi savu laika joslu savā pārvaldībā feature_creativity: Mastodon nodrošina skaņas, video un attēlu ierakstus, pieejamības aprakstus, aptaujas, satura brīdinājumus, animētus profila attēlus, pielāgotas emocijzīmes, sīktēlu apgriešanas vadīklas un vēl, lai palīdzētu Tev sevi izpaust tiešsaistē. Vai Tu izplati savu mākslu, mūziku vai aplādes, Mastodon ir šeit ar Tevi. + feature_creativity_title: Nepārspējams radošums feature_moderation: Mastodon nodod lēmumu pieņemšanu atpakaļ Tavās rokās. Katrs serveris izveido savus noteikumus un nosacījumus, kas tiek nodrošināti vietēji, ne kā lieliem uzņēmumiem piederošos sabiedriskajos medijiem, padarot katru serveri par vispielāgojamāko un visatsaucīgāko dažādu cilvēku kopu vajadzībām. Pievienojies serverim, kura noteikumiem Tu piekrīti, vai izvieto savu! feature_moderation_title: Satura pārraudzība, kādai tai būtu jābūt follow_action: Sekot diff --git a/config/locales/nn.yml b/config/locales/nn.yml index bcdcf01d9a..30ddcaeb6a 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -21,7 +21,7 @@ nn: one: Tut other: Tut posts_tab_heading: Tut - self_follow_error: Det er ikkje tillate å følgje din eigen konto + self_follow_error: Du kan ikkje fylgja deg sjølv admin: account_actions: action: Utfør @@ -309,6 +309,7 @@ nn: title: Revisionslogg unavailable_instance: "(domenenamn er utilgjengeleg)" announcements: + back: Tilbake til kunngjeringane destroyed_msg: Kunngjøringen er slettet! edit: title: Rediger kunngjøring @@ -317,6 +318,10 @@ nn: new: create: Lag kunngjøring title: Ny kunngjøring + preview: + disclaimer: Av di folk ikkje kan velja bort epostvarsel, bør du avgrensa dei til viktige kunngjeringar som datainnbrot eller varsel om at tenaren skal stengja. + explanation_html: 'Denne eposten blir send til %{display_count} folk. Denne teksten vil stå i eposten:' + title: Førehandsvis kunngjeringa publish: Publiser published_msg: Kunngjøring publisert! scheduled_for: Planlagt for %{time} @@ -475,11 +480,41 @@ nn: new: title: Importer domeneblokkeringar no_file: Inga fil vald + fasp: + debug: + callbacks: + created_at: Oppretta + delete: Slett + ip: IP-adresse + request_body: Meldingskropp i førespurnaden + title: Avlusingstilbakekall + providers: + active: Aktiv + base_url: Basisadresse + callback: Tilbakekall + delete: Slett + edit: Rediger leverandør + finish_registration: Fullfør registrering + name: Namn + providers: Leverandørar + public_key_fingerprint: Offentleg nøkkelavtrykk + registration_requested: Nokon vil registrera seg + registrations: + confirm: Stadfest + description: Du har fått ei registrering frå ein tenesteleverandør. Avslå registreringa viss du ikkje sette i gang dette. Viss du sette i gang registreringa, må du samanlikna namnet og nøkkelavtrykket nøye før du stadfestar registreringa. + reject: Avslå + title: Stadfest registrering via tenestetilbydar + save: Lagre + select_capabilities: Vel eigenskapar + sign_in: Logg inn + status: Status + title: Tilleggstenesteleverandørar for allheimen + title: Tenestleverandør follow_recommendations: description_html: "Fylgjeforslag hjelper nye brukarar å finna interessant innhald raskt. Om ein brukar ikkje har samhandla nok med andre til å få tilpassa fylgjeforslag, blir desse kontoane føreslått i staden. Dei blir rekna ut på nytt kvar dag ut frå ei blanding av kva kontoar som har mykje nyleg aktivitet og høgast tal på fylgjarar på eit bestemt språk." language: For språk status: Status - suppress: Demp følgjeforslag + suppress: Demp fylgjeforslag suppressed: Dempa title: Fylgjeforslag unsuppress: Nullstill fylgjeforslag @@ -939,6 +974,7 @@ nn: chance_to_review_html: "Dei genererte bruksvilkåra blir ikkje lagde ut automatisk Du får høve til å sjå gjennom resultatet og fylla inn dei detaljane som trengst." explanation_html: Malen for bruksvilkår er berre til informasjon, og du bør ikkje gå ut frå han som juridiske råd. Viss du har spørsmål om lovverk, bør du spørja ein advokat. title: Oppsett for bruksvilkår + going_live_on_html: I bruk frå %{date} history: Historikk live: Direkte no_history: Det er ikkje registrert nokon endringar i bruksvilkåra enno. @@ -1681,9 +1717,9 @@ nn: confirm_remove_selected_follows: Er du sikker på at du ikkje vil fylgja desse? dormant: I dvale follow_failure: Greidde ikkje fylgja alle kontoane du valde. - follow_selected_followers: Følg valgte tilhengere + follow_selected_followers: Fylg desse som fylgjer deg followers: Fylgjarar - following: Følginger + following: Folk du fylgjer invited: Innboden last_active: Sist aktiv most_recent: Sist @@ -1904,6 +1940,10 @@ nn: recovery_instructions_html: Hvis du skulle miste tilgang til telefonen din, kan du bruke en av gjenopprettingskodene nedenfor til å gjenopprette tilgang til din konto. Oppbevar gjenopprettingskodene sikkert, for eksempel ved å skrive dem ut og gjemme dem på et lurt sted bare du vet om. webauthn: Sikkerhetsnøkler user_mailer: + announcement_published: + description: 'Styrarane på %{domain} har ei kunngjering:' + subject: Kunngjering om tenesta + title: Kunngjering frå %{domain} appeal_approved: action: Kontoinnstillingar explanation: Apellen på prikken mot din kontor på %{strike_date} som du la inn på %{appeal_date} har blitt godkjend. Din konto er nok ein gong i god stand. @@ -1936,6 +1976,8 @@ nn: terms_of_service_changed: agreement: Viss du held fram å bruka %{domain}, seier du deg einig i vilkåra. Viss du er usamd i dei oppdaterte vilkåra, kan du slutta å bruka %{domain} når du vil ved å sletta brukarkontoen din. changelog: 'Denne oppdateringa, kort fortalt:' + description: 'Du får denne eposten fordi me har endra tenestvilkåra på %{domain}. Desse endringane kjem i kraft %{date}. Me oppmodar deg til å sjå på dei oppdaterte vilkåra her:' + description_html: Du får denne eposten fordi me har endra tenestvilkåra på %{domain}. Desse endringane kjem i kraft %{date}. Me oppmodar deg til å sjå på dei oppdaterte vilkåra her. sign_off: Folka på %{domain} subject: Endra bruksvilkår subtitle: Bruksvilkåra på %{domain} er endra @@ -1945,7 +1987,7 @@ nn: appeal_description: Om du meiner dette er ein feil, kan du sende inn ei klage til gjengen i %{instance}. categories: spam: Søppelpost - violation: Innhald bryter følgjande retningslinjer + violation: Innhaldet bryt med desse retningslinene explanation: delete_statuses: Nokre av innlegga dine er bryt éin eller fleire retningslinjer, og har så blitt fjerna av moderatorene på %{instance}. disable: Du kan ikkje lenger bruke kontoen, men profilen din og andre data er intakt. Du kan be om ein sikkerhetskopi av dine data, endre kontoinnstillingar eller slette din konto. diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 62de683213..3b82cd3c75 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -75,6 +75,7 @@ el: filters: action: Επιλέξτε ποια ενέργεια θα εκτελεστεί όταν μια δημοσίευση ταιριάζει με το φίλτρο actions: + blur: Απόκρυψη πολυμέσων πίσω από μια προειδοποίηση, χωρίς να κρύβεται το ίδιο το κείμενο hide: Πλήρης αποκρυψη του φιλτραρισμένου περιεχομένου, συμπεριφέρεται σαν να μην υπήρχε warn: Απόκρυψη φιλτραρισμένου περιεχομένου πίσω από μια προειδοποίηση που αναφέρει τον τίτλο του φίλτρου form_admin_settings: @@ -88,6 +89,7 @@ el: favicon: WEBP, PNG, GIF ή JPG. Παρακάμπτει το προεπιλεγμένο favicon του Mastodon με ένα προσαρμοσμένο εικονίδιο. mascot: Παρακάμπτει την εικονογραφία στην προηγμένη διεπαφή ιστού. media_cache_retention_period: Τα αρχεία πολυμέσων από αναρτήσεις που γίνονται από απομακρυσμένους χρήστες αποθηκεύονται προσωρινά στο διακομιστή σου. Όταν οριστεί μια θετική τιμή, τα μέσα θα διαγραφούν μετά τον καθορισμένο αριθμό ημερών. Αν τα δεδομένα πολυμέσων ζητηθούν μετά τη διαγραφή τους, θα γίνει ε, αν το πηγαίο περιεχόμενο είναι ακόμα διαθέσιμο. Λόγω περιορισμών σχετικά με το πόσο συχνά οι κάρτες προεπισκόπησης συνδέσμων συνδέονται σε ιστοσελίδες τρίτων, συνιστάται να ορίσεις αυτή την τιμή σε τουλάχιστον 14 ημέρες ή οι κάρτες προεπισκόπησης συνδέσμων δεν θα ενημερώνονται κατ' απάιτηση πριν από εκείνη την ώρα. + min_age: Οι χρήστες θα κληθούν να επιβεβαιώσουν την ημερομηνία γέννησής τους κατά την εγγραφή peers_api_enabled: Μια λίστα με ονόματα τομέα που συνάντησε αυτός ο διακομιστής στο fediverse. Δεν περιλαμβάνονται δεδομένα εδώ για το αν συναλλάσσετε με ένα συγκεκριμένο διακομιστή, μόνο ότι ο διακομιστής σας το ξέρει. Χρησιμοποιείται από υπηρεσίες που συλλέγουν στατιστικά στοιχεία για την συναλλαγή με γενική έννοια. profile_directory: Ο κατάλογος προφίλ παραθέτει όλους τους χρήστες που έχουν επιλέξει να είναι ανακαλύψιμοι. require_invite_text: 'Όταν η εγγραφή απαιτεί χειροκίνητη έγκριση, κάνε το πεδίο κειμένου: «Γιατί θέλετε να συμμετάσχετε;» υποχρεωτικό αντί για προαιρετικό' @@ -132,14 +134,21 @@ el: name: Μπορείς να αλλάξεις μόνο το πλαίσιο των χαρακτήρων, για παράδειγμα για να γίνει περισσότερο ευανάγνωστο terms_of_service: changelog: Μπορεί να δομηθεί με σύνταξη Markdown. + effective_date: Ένα λογικό χρονικό πλαίσιο μπορεί να κυμαίνεται οποτεδήποτε από 10 έως 30 ημέρες από την ημερομηνία που ενημερώνετε τους χρήστες σας. text: Μπορεί να δομηθεί με σύνταξη Markdown. terms_of_service_generator: admin_email: Οι νομικές ανακοινώσεις περιλαμβάνουν αντικρούσεις, δικαστικές αποφάσεις, αιτήματα που έχουν ληφθεί και αιτήματα επιβολής του νόμου. + arbitration_address: Μπορεί να είναι το ίδιο με τη φυσική διεύθυνση παραπάνω, ή “Μ/Δ” εάν χρησιμοποιείται email. + arbitration_website: Μπορεί να είναι μια φόρμα ιστού ή “Μ/Δ” εάν χρησιμοποιείται email. + choice_of_law: Η πόλη, η περιοχή, το έδαφος ή οι εσωτερικοί ουσιαστικοί νόμοι των οποίων διέπουν όλες τις αξιώσεις. dmca_address: Για τους φορείς των ΗΠΑ, χρησιμοποιήστε τη διεύθυνση που έχει καταχωρηθεί στο DMCA Designated Agent Directory. A P.O. Η λίστα είναι διαθέσιμη κατόπιν απευθείας αιτήματος, Χρησιμοποιήστε το αίτημα απαλλαγής από την άδεια χρήσης του καθορισμένου από το DMCA Agent Post Office Box για να στείλετε email στο Γραφείο Πνευματικών Δικαιωμάτων και περιγράψτε ότι είστε συντονιστής περιεχομένου με βάση το σπίτι, ο οποίος φοβάται την εκδίκηση ή την απόδοση για τις ενέργειές σας και πρέπει να χρησιμοποιήσετε ένα P.. Box για να αφαιρέσετε τη διεύθυνση οικίας σας από τη δημόσια προβολή. + dmca_email: Μπορεί να είναι το ίδιο email που χρησιμοποιείται για “Διεύθυνση email για νομικές ανακοινώσεις” παραπάνω. domain: Μοναδικό αναγνωριστικό της διαδικτυακής υπηρεσίας που παρέχεις. jurisdiction: Ανέφερε τη χώρα όπου ζει αυτός που πληρώνει τους λογαριασμούς. Εάν πρόκειται για εταιρεία ή άλλη οντότητα, ανέφερε τη χώρα όπου υφίσταται, και την πόλη, περιοχή, έδαφος ή πολιτεία ανάλογα με την περίπτωση. + min_age: Δεν πρέπει να είναι κάτω από την ελάχιστη ηλικία που απαιτείται από τους νόμους της δικαιοδοσίας σας. user: chosen_languages: Όταν ενεργοποιηθεί, στη δημόσια ροή θα εμφανίζονται τουτ μόνο από τις επιλεγμένες γλώσσες + date_of_birth: Πρέπει να βεβαιωθείς ότι είσαι τουλάχιστον %{age} για να χρησιμοποιήσεις το Mastodon. Δεν θα το αποθηκεύσουμε. role: Ο ρόλος ελέγχει ποια δικαιώματα έχει ο χρήστης. user_role: color: Το χρώμα που θα χρησιμοποιηθεί για το ρόλο σε ολόκληρη τη διεπαφή, ως RGB σε δεκαεξαδική μορφή @@ -252,6 +261,7 @@ el: name: Ετικέτα filters: actions: + blur: Απόκρυψη πολυμέσων με προειδοποίηση hide: Πλήρης απόκρυψη warn: Απόκρυψη με προειδοποίηση form_admin_settings: @@ -265,6 +275,7 @@ el: favicon: Favicon mascot: Προσαρμοσμένη μασκότ (απαρχαιωμένο) media_cache_retention_period: Περίοδος διατήρησης προσωρινής μνήμης πολυμέσων + min_age: Ελάχιστη απαιτούμενη ηλικία peers_api_enabled: Δημοσίευση λίστας των εντοπισμένων διακομιστών στο API profile_directory: Ενεργοποίηση καταλόγου προφίλ registrations_mode: Ποιος μπορεί να εγγραφεί @@ -330,16 +341,22 @@ el: usable: Να επιτρέπεται η τοπική χρήση αυτής της ετικέτας από αναρτήσεις terms_of_service: changelog: Τι άλλαξε; + effective_date: Ημερομηνία έναρξης ισχύος text: Όροι Παροχής Υπηρεσιών terms_of_service_generator: admin_email: Διεύθυνση email για τις νομικές ανακοινώσεις arbitration_address: Φυσική διεύθυνση για τις ανακοινώσεις διαιτησίας arbitration_website: Ιστοσελίδα για την υποβολή ειδοποιήσεων διαιτησίας + choice_of_law: Επιλογή νόμου dmca_address: Φυσική διεύθυνση για ειδοποιήσεις DMCA/πνευματικών δικαιωμάτων dmca_email: Διεύθυνση email για ειδοποιήσεις DMCA/πνευματικών δικαιωμάτων domain: Τομέας jurisdiction: Νομική δικαιοδοσία + min_age: Ελάχιστη ηλικία user: + date_of_birth_1i: Ημέρα + date_of_birth_2i: Μήνας + date_of_birth_3i: Έτος role: Ρόλος time_zone: Ζώνη ώρας user_role: diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 1a33a4b91d..b742375f12 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -89,6 +89,7 @@ nn: favicon: WEBP, PNG, GIF eller JPG. Overstyrer det standarde Mastodon-favikonet med eit eigendefinert ikon. mascot: Overstyrer illustrasjonen i det avanserte webgrensesnittet. media_cache_retention_period: Mediafiler frå innlegg laga av eksterne brukarar blir bufra på serveren din. Når sett til ein positiv verdi, slettast media etter eit gitt antal dagar. Viss mediedata blir førespurt etter det er sletta, vil dei bli lasta ned på nytt viss kjelda sitt innhald framleis er tilgjengeleg. På grunn av restriksjonar på kor ofte lenkeførehandsvisningskort lastar tredjepart-nettstadar, rådast det til å setje denne verdien til minst 14 dagar, eller at førehandsvisningskort ikkje blir oppdatert på førespurnad før det tidspunktet. + min_age: Brukarane vil bli bedne om å stadfesta fødselsdatoen sin når dei registrerer seg peers_api_enabled: Ei liste over domenenamn denne tenaren har møtt på i allheimen. Det står ingenting om tenaren din samhandlar med ein annan tenar, berre om tenaren din veit om den andre. Dette blir brukt av tenester som samlar statistikk om føderering i det heile. profile_directory: Profilkatalogen viser alle brukarar som har valt å kunne bli oppdaga. require_invite_text: Når registrering krev manuell godkjenning, lyt du gjera tekstfeltet "Kvifor vil du bli med?" obligatorisk i staden for valfritt @@ -133,11 +134,13 @@ nn: name: Du kan berre endra bruken av store/små bokstavar, t. d. for å gjera det meir leseleg terms_of_service: changelog: Du kan bruka Markdown-syntaks for struktur. + effective_date: Ei rimeleg ventetid kan variera frå 10 til 30 dagar frå den dagen du varsla folka som bruker denne tenaren. text: Du kan bruka Markdown-syntaks for struktur. terms_of_service_generator: admin_email: Juridiske merknader kan vera motsegner, rettsavgjerder, orskurdar eller førespurnader om sletting. arbitration_address: Kan vere lik den fysiske adressa over, eller "N/A" viss du bruker epost. arbitration_website: Kan vere eit nettskjema eller "N/A" viss du bruker e-post. + choice_of_law: Jurisdiksjon dmca_address: For US operators, use the address registered in the DMCA Designated Agent Directory. A P.O. Box listing is available upon direct request, use the DMCA Designated Agent Post Office Box Waiver Request to email the Copyright Office and describe that you are a home-based content moderator who fears revenge or retribution for your actions and need to use a P.O. Box to remove your home address from public view. dmca_email: Kan vere same e-post som brukast i "E-postadresse for juridiske meldingar" ovanfor. domain: Noko som identifiserer den nettenesta du tilbyr. @@ -145,6 +148,7 @@ nn: min_age: Skal ikkje vere under minstealder som krevst av lover i jurisdiksjonen din. user: chosen_languages: Når merka vil berre tuta på dei valde språka synast på offentlege tidsliner + date_of_birth: Me må syta for at du er minst %{age} for å bruka Masodon. Me lagrar ikkje dette. role: Rolla kontrollerer kva løyve brukaren har. user_role: color: Fargen som skal nyttast for denne rolla i heile brukargrensesnittet, som RGB i hex-format @@ -165,7 +169,7 @@ nn: value: Innhald indexable: Ta med offentlege innlegg i søkjeresultat show_collections: Vis dei du fylgjer og dei som fylgjer deg på profilen din - unlocked: Godta nye følgjare automatisk + unlocked: Godta nye fylgjarar automatisk account_alias: acct: Brukarnamnet på den gamle kontoen account_migration: @@ -271,6 +275,7 @@ nn: favicon: Favorittikon mascot: Eigendefinert maskot (eldre funksjon) media_cache_retention_period: Oppbevaringsperiode for mediebuffer + min_age: Minste aldersgrense peers_api_enabled: Legg ut ei liste over oppdaga tenarar i APIet profile_directory: Aktiver profilkatalog registrations_mode: Kven kan registrera seg @@ -336,17 +341,22 @@ nn: usable: Godta at innlegga kan bruka denne emneknaggen lokalt terms_of_service: changelog: Kva er endra? + effective_date: I kraft frå text: Bruksvilkår terms_of_service_generator: admin_email: Epostadresse for juridiske merknader arbitration_address: Fysisk adresse for skilsdomsvarsel arbitration_website: Nettstad for å senda inn skilsdomsvarsel + choice_of_law: Jurisdiksjon dmca_address: Fysisk adresse for opphavsrettsvarsel dmca_email: Epostadresse for opphavsrettsvarsel domain: Domene jurisdiction: Rettskrins min_age: Minstealder user: + date_of_birth_1i: Dag + date_of_birth_2i: Månad + date_of_birth_3i: År role: Rolle time_zone: Tidssone user_role: From ee62ac53e1695ad133efa2a1a67466d701199b30 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 17 Apr 2025 10:10:11 +0200 Subject: [PATCH 006/349] Add "Mutual" relationship tag to profiles in web UI (#34467) --- .../components/account_header.tsx | 92 ++++++++++++------- app/javascript/mastodon/locales/en.json | 8 +- .../styles/mastodon/components.scss | 28 +++--- 3 files changed, 76 insertions(+), 52 deletions(-) diff --git a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx index 457cbcdcc4..7f5f9d964f 100644 --- a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx +++ b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx @@ -62,18 +62,6 @@ import { MemorialNote } from './memorial_note'; import { MovedNote } from './moved_note'; const messages = defineMessages({ - unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' }, - follow: { id: 'account.follow', defaultMessage: 'Follow' }, - followBack: { id: 'account.follow_back', defaultMessage: 'Follow back' }, - mutual: { id: 'account.mutual', defaultMessage: 'Mutual' }, - cancel_follow_request: { - id: 'account.cancel_follow_request', - defaultMessage: 'Withdraw follow request', - }, - requested: { - id: 'account.requested', - defaultMessage: 'Awaiting approval. Click to cancel follow request', - }, unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' }, edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' }, linkVerifiedOn: { @@ -635,29 +623,65 @@ export const AccountHeader: React.FC<{ const info: React.ReactNode[] = []; - if (me !== account.id && relationship?.blocking) { - info.push( - - - , - ); - } + if (me !== account.id && relationship) { + if ( + relationship.followed_by && + (relationship.following || relationship.requested) + ) { + info.push( + + + , + ); + } else if (relationship.followed_by) { + info.push( + + + , + ); + } else if (relationship.requested_by) { + info.push( + + + , + ); + } - if (me !== account.id && relationship?.muting) { - info.push( - - - , - ); - } else if (me !== account.id && relationship?.domain_blocking) { - info.push( - - - , - ); + if (relationship.blocking) { + info.push( + + + , + ); + } + + if (relationship.muting) { + info.push( + + + , + ); + } + + if (relationship.domain_blocking) { + info.push( + + + , + ); + } } if (relationship?.requested || relationship?.following) { diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 65a82feac6..e362c6268a 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -19,11 +19,12 @@ "account.block_domain": "Block domain {domain}", "account.block_short": "Block", "account.blocked": "Blocked", + "account.blocking": "Blocking", "account.cancel_follow_request": "Cancel follow", "account.copy": "Copy link to profile", "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", - "account.domain_blocked": "Domain blocked", + "account.domain_blocking": "Blocking domain", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", @@ -40,6 +41,7 @@ "account.following": "Following", "account.following_counter": "{count, plural, one {{counter} following} other {{counter} following}}", "account.follows.empty": "This user doesn't follow anyone yet.", + "account.follows_you": "Follows you", "account.go_to_profile": "Go to profile", "account.hide_reblogs": "Hide boosts from @{name}", "account.in_memoriam": "In Memoriam.", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "Mute notifications", "account.mute_short": "Mute", "account.muted": "Muted", - "account.mutual": "Mutual", + "account.muting": "Muting", + "account.mutual": "You follow each other", "account.no_bio": "No description provided.", "account.open_original_page": "Open original page", "account.posts": "Posts", @@ -62,6 +65,7 @@ "account.report": "Report @{name}", "account.requested": "Awaiting approval. Click to cancel follow request", "account.requested_follow": "{name} has requested to follow you", + "account.requests_to_follow_you": "Requests to follow you", "account.share": "Share @{name}'s profile", "account.show_reblogs": "Show boosts from @{name}", "account.statuses_counter": "{count, plural, one {{counter} post} other {{counter} posts}}", diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 5d011d8f32..279636c446 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -4781,19 +4781,6 @@ a.status-card { } } -.relationship-tag { - color: $white; - margin-bottom: 4px; - display: block; - background-color: rgba($black, 0.45); - backdrop-filter: blur(10px) saturate(180%) contrast(75%) brightness(70%); - font-size: 11px; - text-transform: uppercase; - font-weight: 700; - padding: 2px 6px; - border-radius: 4px; -} - .setting-toggle { display: flex; align-items: center; @@ -6679,7 +6666,8 @@ a.status-card { pointer-events: none; } -.media-gallery__alt__label { +.media-gallery__alt__label, +.relationship-tag { display: block; text-align: center; color: $white; @@ -6700,6 +6688,11 @@ a.status-card { } } +.relationship-tag { + text-transform: uppercase; + cursor: default; +} + .media-gallery__alt__popover { background: rgba($black, 0.65); backdrop-filter: blur(10px) saturate(180%) contrast(75%) brightness(70%); @@ -7774,8 +7767,11 @@ noscript { &__info { position: absolute; - top: 10px; - inset-inline-start: 10px; + top: 20px; + inset-inline-end: 20px; + display: flex; + flex-wrap: wrap; + gap: 2px; } &__image { From c01d219c1259a07d191373980ec3719aa8f42952 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 17 Apr 2025 11:09:03 +0200 Subject: [PATCH 007/349] Add `--only-mapping` option to `tootctl search deploy` (#34466) --- lib/mastodon/cli/search.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/mastodon/cli/search.rb b/lib/mastodon/cli/search.rb index 3a73c9c047..e291801f1b 100644 --- a/lib/mastodon/cli/search.rb +++ b/lib/mastodon/cli/search.rb @@ -20,6 +20,7 @@ module Mastodon::CLI option :import, type: :boolean, default: true, desc: 'Import data from the database to the index' option :clean, type: :boolean, default: true, desc: 'Remove outdated documents from the index' option :reset_chewy, type: :boolean, default: false, desc: "Reset Chewy's internal index" + option :only_mapping, type: :boolean, default: false, desc: 'Update the index specification without re-index' desc 'deploy', 'Create or upgrade Elasticsearch indices and populate them' long_desc <<~LONG_DESC If Elasticsearch is empty, this command will create the necessary indices @@ -52,6 +53,20 @@ module Mastodon::CLI Chewy::Stash::Specification.reset! if options[:reset_chewy] + if options[:only_mapping] + indices.select { |index| index.specification.changed? }.each do |index| + progress.title = "Updating mapping for #{index} " + index.update_mapping + index.specification.lock! + end + + progress.title = 'Done! ' + progress.finish + + say('Updated index mappings', :green, true) + return + end + # First, ensure all indices are created and have the correct # structure, so that live data can already be written indices.select { |index| index.specification.changed? }.each do |index| From 8489f6c8fc54ad1179759b7e1a9c668fc7cf2736 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 17 Apr 2025 11:19:23 +0200 Subject: [PATCH 008/349] Fix namespace of `QuoteAuthorization` type in specs (#34481) --- spec/lib/activitypub/activity/create_spec.rb | 3 +-- .../process_status_update_service_spec.rb | 12 ++++-------- .../activitypub/verify_quote_service_spec.rb | 3 +-- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb index 73a814b9f2..43cbc8a93b 100644 --- a/spec/lib/activitypub/activity/create_spec.rb +++ b/spec/lib/activitypub/activity/create_spec.rb @@ -958,8 +958,7 @@ RSpec.describe ActivityPub::Activity::Create do '@context': [ 'https://www.w3.org/ns/activitystreams', { - toot: 'http://joinmastodon.org/ns#', - QuoteAuthorization: 'toot:QuoteAuthorization', + QuoteAuthorization: 'https://w3id.org/fep/044f#QuoteAuthorization', gts: 'https://gotosocial.org/ns#', interactionPolicy: { '@id': 'gts:interactionPolicy', diff --git a/spec/services/activitypub/process_status_update_service_spec.rb b/spec/services/activitypub/process_status_update_service_spec.rb index b88c084b35..ed04a19fb3 100644 --- a/spec/services/activitypub/process_status_update_service_spec.rb +++ b/spec/services/activitypub/process_status_update_service_spec.rb @@ -469,8 +469,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService do '@context': [ 'https://www.w3.org/ns/activitystreams', { - toot: 'http://joinmastodon.org/ns#', - QuoteAuthorization: 'toot:QuoteAuthorization', + QuoteAuthorization: 'https://w3id.org/fep/044f#QuoteAuthorization', gts: 'https://gotosocial.org/ns#', interactionPolicy: { '@id': 'gts:interactionPolicy', @@ -569,8 +568,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService do '@context': [ 'https://www.w3.org/ns/activitystreams', { - toot: 'http://joinmastodon.org/ns#', - QuoteAuthorization: 'toot:QuoteAuthorization', + QuoteAuthorization: 'https://w3id.org/fep/044f#QuoteAuthorization', gts: 'https://gotosocial.org/ns#', interactionPolicy: { '@id': 'gts:interactionPolicy', @@ -721,8 +719,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService do '@context': [ 'https://www.w3.org/ns/activitystreams', { - toot: 'http://joinmastodon.org/ns#', - QuoteAuthorization: 'toot:QuoteAuthorization', + QuoteAuthorization: 'https://w3id.org/fep/044f#QuoteAuthorization', gts: 'https://gotosocial.org/ns#', interactionPolicy: { '@id': 'gts:interactionPolicy', @@ -792,8 +789,7 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService do '@context': [ 'https://www.w3.org/ns/activitystreams', { - toot: 'http://joinmastodon.org/ns#', - QuoteAuthorization: 'toot:QuoteAuthorization', + QuoteAuthorization: 'https://w3id.org/fep/044f#QuoteAuthorization', gts: 'https://gotosocial.org/ns#', interactionPolicy: { '@id': 'gts:interactionPolicy', diff --git a/spec/services/activitypub/verify_quote_service_spec.rb b/spec/services/activitypub/verify_quote_service_spec.rb index 8fe114079b..0e5069a46b 100644 --- a/spec/services/activitypub/verify_quote_service_spec.rb +++ b/spec/services/activitypub/verify_quote_service_spec.rb @@ -50,8 +50,7 @@ RSpec.describe ActivityPub::VerifyQuoteService do '@context': [ 'https://www.w3.org/ns/activitystreams', { - toot: 'http://joinmastodon.org/ns#', - QuoteAuthorization: 'toot:QuoteAuthorization', + QuoteAuthorization: 'https://w3id.org/fep/044f#QuoteAuthorization', gts: 'https://gotosocial.org/ns#', interactionPolicy: { '@id': 'gts:interactionPolicy', From 64d94f9e57e58f244e6f662e90ff143c9ba73dff Mon Sep 17 00:00:00 2001 From: Echo Date: Thu, 17 Apr 2025 12:27:44 +0200 Subject: [PATCH 009/349] Update copy for empty featured tabs (#34483) --- .../components/empty_message.tsx | 25 ++++++++++++++++--- app/javascript/mastodon/locales/en.json | 4 ++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/features/account_featured/components/empty_message.tsx b/app/javascript/mastodon/features/account_featured/components/empty_message.tsx index 9dd8ffdfe0..8767cb476e 100644 --- a/app/javascript/mastodon/features/account_featured/components/empty_message.tsx +++ b/app/javascript/mastodon/features/account_featured/components/empty_message.tsx @@ -1,6 +1,9 @@ import { FormattedMessage } from 'react-intl'; +import { useParams } from 'react-router'; + import { LimitedAccountHint } from 'mastodon/features/account_timeline/components/limited_account_hint'; +import { me } from 'mastodon/initial_state'; interface EmptyMessageProps { suspended: boolean; @@ -15,13 +18,21 @@ export const EmptyMessage: React.FC = ({ hidden, blockedBy, }) => { + const { acct } = useParams<{ acct?: string }>(); if (!accountId) { return null; } let message: React.ReactNode = null; - if (suspended) { + if (me === accountId) { + message = ( + + ); + } else if (suspended) { message = ( = ({ defaultMessage='Profile unavailable' /> ); + } else if (acct) { + message = ( + + ); } else { message = ( ); } diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index e362c6268a..9df0c8422b 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -300,7 +300,9 @@ "emoji_button.search_results": "Search results", "emoji_button.symbols": "Symbols", "emoji_button.travel": "Travel & Places", - "empty_column.account_featured": "This list is empty", + "empty_column.account_featured.me": "You have not featured anything yet. Did you know that you can feature your posts, hashtags you use the most, and even your friend’s accounts on your profile?", + "empty_column.account_featured.other": "{acct} has not featured anything yet. Did you know that you can feature your posts, hashtags you use the most, and even your friend’s accounts on your profile?", + "empty_column.account_featured_other.unknown": "This account has not featured anything yet.", "empty_column.account_hides_collections": "This user has chosen to not make this information available", "empty_column.account_suspended": "Account suspended", "empty_column.account_timeline": "No posts here!", From bed614d44e54de6a05fff3464dddfcf8649072ee Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 18 Apr 2025 09:23:34 +0200 Subject: [PATCH 010/349] Add option to remove account from followers in web UI (#34488) --- .../mastodon/actions/accounts_typed.ts | 9 ++++ app/javascript/mastodon/api/accounts.ts | 5 ++ .../components/account_header.tsx | 53 +++++++++++++++++++ app/javascript/mastodon/locales/en.json | 4 ++ .../mastodon/reducers/relationships.ts | 4 +- 5 files changed, 74 insertions(+), 1 deletion(-) diff --git a/app/javascript/mastodon/actions/accounts_typed.ts b/app/javascript/mastodon/actions/accounts_typed.ts index 058a68a099..fcdec97e08 100644 --- a/app/javascript/mastodon/actions/accounts_typed.ts +++ b/app/javascript/mastodon/actions/accounts_typed.ts @@ -1,7 +1,9 @@ import { createAction } from '@reduxjs/toolkit'; +import { apiRemoveAccountFromFollowers } from 'mastodon/api/accounts'; import type { ApiAccountJSON } from 'mastodon/api_types/accounts'; import type { ApiRelationshipJSON } from 'mastodon/api_types/relationships'; +import { createDataLoadingThunk } from 'mastodon/store/typed_functions'; export const revealAccount = createAction<{ id: string; @@ -95,3 +97,10 @@ export const fetchRelationshipsSuccess = createAction( 'relationships/fetch/SUCCESS', actionWithSkipLoadingTrue<{ relationships: ApiRelationshipJSON[] }>, ); + +export const removeAccountFromFollowers = createDataLoadingThunk( + 'accounts/remove_from_followers', + ({ accountId }: { accountId: string }) => + apiRemoveAccountFromFollowers(accountId), + (relationship) => ({ relationship }), +); diff --git a/app/javascript/mastodon/api/accounts.ts b/app/javascript/mastodon/api/accounts.ts index 717010ba74..c574a47459 100644 --- a/app/javascript/mastodon/api/accounts.ts +++ b/app/javascript/mastodon/api/accounts.ts @@ -18,3 +18,8 @@ export const apiFollowAccount = ( export const apiUnfollowAccount = (id: string) => apiRequestPost(`v1/accounts/${id}/unfollow`); + +export const apiRemoveAccountFromFollowers = (id: string) => + apiRequestPost( + `v1/accounts/${id}/remove_from_followers`, + ); diff --git a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx index 7f5f9d964f..9d4825d302 100644 --- a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx +++ b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx @@ -18,6 +18,7 @@ import { unmuteAccount, pinAccount, unpinAccount, + removeAccountFromFollowers, } from 'mastodon/actions/accounts'; import { initBlockModal } from 'mastodon/actions/blocks'; import { mentionCompose, directCompose } from 'mastodon/actions/compose'; @@ -152,6 +153,23 @@ const messages = defineMessages({ id: 'account.open_original_page', defaultMessage: 'Open original page', }, + removeFromFollowers: { + id: 'account.remove_from_followers', + defaultMessage: 'Remove {name} from followers', + }, + confirmRemoveFromFollowersTitle: { + id: 'confirmations.remove_from_followers.title', + defaultMessage: 'Remove follower?', + }, + confirmRemoveFromFollowersMessage: { + id: 'confirmations.remove_from_followers.message', + defaultMessage: + '{name} will stop following you. Are you sure you want to proceed?', + }, + confirmRemoveFromFollowersButton: { + id: 'confirmations.remove_from_followers.confirm', + defaultMessage: 'Remove follower', + }, }); const titleFromAccount = (account: Account) => { @@ -494,6 +512,39 @@ export const AccountHeader: React.FC<{ arr.push(null); } + if (relationship?.followed_by) { + const handleRemoveFromFollowers = () => { + dispatch( + openModal({ + modalType: 'CONFIRM', + modalProps: { + title: intl.formatMessage( + messages.confirmRemoveFromFollowersTitle, + ), + message: intl.formatMessage( + messages.confirmRemoveFromFollowersMessage, + { name: {account.acct} }, + ), + confirm: intl.formatMessage( + messages.confirmRemoveFromFollowersButton, + ), + onConfirm: () => { + void dispatch(removeAccountFromFollowers({ accountId })); + }, + }, + }), + ); + }; + + arr.push({ + text: intl.formatMessage(messages.removeFromFollowers, { + name: account.username, + }), + action: handleRemoveFromFollowers, + dangerous: true, + }); + } + if (relationship?.muting) { arr.push({ text: intl.formatMessage(messages.unmute, { @@ -592,6 +643,8 @@ export const AccountHeader: React.FC<{ return arr; }, [ + dispatch, + accountId, account, relationship, permissions, diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 9df0c8422b..d9a0c8eb03 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -62,6 +62,7 @@ "account.open_original_page": "Open original page", "account.posts": "Posts", "account.posts_with_replies": "Posts and replies", + "account.remove_from_followers": "Remove {name} from followers", "account.report": "Report @{name}", "account.requested": "Awaiting approval. Click to cancel follow request", "account.requested_follow": "{name} has requested to follow you", @@ -233,6 +234,9 @@ "confirmations.redraft.confirm": "Delete & redraft", "confirmations.redraft.message": "Are you sure you want to delete this post and re-draft it? Favorites and boosts will be lost, and replies to the original post will be orphaned.", "confirmations.redraft.title": "Delete & redraft post?", + "confirmations.remove_from_followers.confirm": "Remove follower", + "confirmations.remove_from_followers.message": "{name} will stop following you. Are you sure you want to proceed?", + "confirmations.remove_from_followers.title": "Remove follower?", "confirmations.reply.confirm": "Reply", "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?", "confirmations.reply.title": "Overwrite post?", diff --git a/app/javascript/mastodon/reducers/relationships.ts b/app/javascript/mastodon/reducers/relationships.ts index dcca11b203..9df81c75ea 100644 --- a/app/javascript/mastodon/reducers/relationships.ts +++ b/app/javascript/mastodon/reducers/relationships.ts @@ -24,6 +24,7 @@ import { pinAccountSuccess, unpinAccountSuccess, fetchRelationshipsSuccess, + removeAccountFromFollowers, } from '../actions/accounts_typed'; import { blockDomainSuccess, @@ -109,7 +110,8 @@ export const relationshipsReducer: Reducer = ( unmuteAccountSuccess.match(action) || pinAccountSuccess.match(action) || unpinAccountSuccess.match(action) || - isFulfilled(submitAccountNote)(action) + isFulfilled(submitAccountNote)(action) || + isFulfilled(removeAccountFromFollowers)(action) ) return normalizeRelationship(state, action.payload.relationship); else if (fetchRelationshipsSuccess.match(action)) From 361f528c89a9739812eab0b22850673328ccee41 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 18 Apr 2025 10:51:50 +0200 Subject: [PATCH 011/349] New Crowdin Translations (automated) (#34487) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/af.json | 1 - app/javascript/mastodon/locales/an.json | 1 - app/javascript/mastodon/locales/ar.json | 2 - app/javascript/mastodon/locales/ast.json | 1 - app/javascript/mastodon/locales/az.json | 2 - app/javascript/mastodon/locales/be.json | 2 - app/javascript/mastodon/locales/bg.json | 3 -- app/javascript/mastodon/locales/bn.json | 1 - app/javascript/mastodon/locales/br.json | 1 - app/javascript/mastodon/locales/ca.json | 3 -- app/javascript/mastodon/locales/ckb.json | 2 - app/javascript/mastodon/locales/co.json | 1 - app/javascript/mastodon/locales/cs.json | 3 -- app/javascript/mastodon/locales/cy.json | 23 ++++----- app/javascript/mastodon/locales/da.json | 12 +++-- app/javascript/mastodon/locales/de.json | 14 +++-- app/javascript/mastodon/locales/el.json | 3 -- app/javascript/mastodon/locales/en-GB.json | 2 - app/javascript/mastodon/locales/eo.json | 3 -- app/javascript/mastodon/locales/es-AR.json | 12 +++-- app/javascript/mastodon/locales/es-MX.json | 12 +++-- app/javascript/mastodon/locales/es.json | 12 +++-- app/javascript/mastodon/locales/et.json | 2 - app/javascript/mastodon/locales/eu.json | 2 - app/javascript/mastodon/locales/fa.json | 2 - app/javascript/mastodon/locales/fi.json | 7 ++- app/javascript/mastodon/locales/fil.json | 2 - app/javascript/mastodon/locales/fo.json | 12 +++-- app/javascript/mastodon/locales/fr-CA.json | 3 -- app/javascript/mastodon/locales/fr.json | 3 -- app/javascript/mastodon/locales/fy.json | 2 - app/javascript/mastodon/locales/ga.json | 2 - app/javascript/mastodon/locales/gd.json | 2 - app/javascript/mastodon/locales/gl.json | 3 -- app/javascript/mastodon/locales/he.json | 12 +++-- app/javascript/mastodon/locales/hi.json | 2 - app/javascript/mastodon/locales/hr.json | 2 - app/javascript/mastodon/locales/hu.json | 12 +++-- app/javascript/mastodon/locales/hy.json | 1 - app/javascript/mastodon/locales/ia.json | 2 - app/javascript/mastodon/locales/id.json | 2 - app/javascript/mastodon/locales/ie.json | 2 - app/javascript/mastodon/locales/io.json | 2 - app/javascript/mastodon/locales/is.json | 9 ++-- app/javascript/mastodon/locales/it.json | 3 -- app/javascript/mastodon/locales/ja.json | 2 - app/javascript/mastodon/locales/ka.json | 1 - app/javascript/mastodon/locales/kab.json | 5 +- app/javascript/mastodon/locales/kk.json | 1 - app/javascript/mastodon/locales/kn.json | 1 - app/javascript/mastodon/locales/ko.json | 3 -- app/javascript/mastodon/locales/ku.json | 2 - app/javascript/mastodon/locales/kw.json | 1 - app/javascript/mastodon/locales/la.json | 1 - app/javascript/mastodon/locales/lad.json | 2 - app/javascript/mastodon/locales/lt.json | 2 - app/javascript/mastodon/locales/lv.json | 2 - app/javascript/mastodon/locales/mk.json | 1 - app/javascript/mastodon/locales/ml.json | 1 - app/javascript/mastodon/locales/mr.json | 1 - app/javascript/mastodon/locales/ms.json | 3 -- app/javascript/mastodon/locales/my.json | 1 - app/javascript/mastodon/locales/nan.json | 3 -- app/javascript/mastodon/locales/ne.json | 2 - app/javascript/mastodon/locales/nl.json | 12 +++-- app/javascript/mastodon/locales/nn.json | 3 -- app/javascript/mastodon/locales/no.json | 2 - app/javascript/mastodon/locales/oc.json | 2 - app/javascript/mastodon/locales/pa.json | 2 - app/javascript/mastodon/locales/pl.json | 2 - app/javascript/mastodon/locales/pt-BR.json | 2 - app/javascript/mastodon/locales/pt-PT.json | 2 - app/javascript/mastodon/locales/ro.json | 2 - app/javascript/mastodon/locales/ru.json | 6 ++- app/javascript/mastodon/locales/ry.json | 2 - app/javascript/mastodon/locales/sa.json | 1 - app/javascript/mastodon/locales/sc.json | 2 - app/javascript/mastodon/locales/sco.json | 1 - app/javascript/mastodon/locales/si.json | 1 - app/javascript/mastodon/locales/sk.json | 3 -- app/javascript/mastodon/locales/sl.json | 2 - app/javascript/mastodon/locales/sq.json | 12 +++-- app/javascript/mastodon/locales/sr-Latn.json | 2 - app/javascript/mastodon/locales/sr.json | 2 - app/javascript/mastodon/locales/sv.json | 2 - app/javascript/mastodon/locales/szl.json | 1 - app/javascript/mastodon/locales/ta.json | 1 - app/javascript/mastodon/locales/te.json | 1 - app/javascript/mastodon/locales/th.json | 2 - app/javascript/mastodon/locales/tok.json | 2 - app/javascript/mastodon/locales/tr.json | 12 +++-- app/javascript/mastodon/locales/tt.json | 1 - app/javascript/mastodon/locales/uk.json | 4 +- app/javascript/mastodon/locales/ur.json | 2 - app/javascript/mastodon/locales/uz.json | 1 - app/javascript/mastodon/locales/vi.json | 14 +++-- app/javascript/mastodon/locales/zgh.json | 1 - app/javascript/mastodon/locales/zh-CN.json | 9 ++-- app/javascript/mastodon/locales/zh-HK.json | 2 - app/javascript/mastodon/locales/zh-TW.json | 12 +++-- config/locales/cy.yml | 8 +-- config/locales/lv.yml | 54 ++++++++++---------- config/locales/ru.yml | 10 ++++ config/locales/simple_form.zh-CN.yml | 1 + config/locales/zh-CN.yml | 3 ++ 105 files changed, 199 insertions(+), 249 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index d930785658..3c79106108 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -18,7 +18,6 @@ "account.blocked": "Geblokkeer", "account.cancel_follow_request": "Herroep volgversoek", "account.disable_notifications": "Hou op om my van @{name} se plasings te laat weet", - "account.domain_blocked": "Domein geblokkeer", "account.edit_profile": "Redigeer profiel", "account.enable_notifications": "Laat weet my wanneer @{name} iets plaas", "account.endorse": "Toon op profiel", diff --git a/app/javascript/mastodon/locales/an.json b/app/javascript/mastodon/locales/an.json index 49b6f41eac..c56de3f04b 100644 --- a/app/javascript/mastodon/locales/an.json +++ b/app/javascript/mastodon/locales/an.json @@ -19,7 +19,6 @@ "account.blocked": "Blocau", "account.cancel_follow_request": "Retirar solicitut de seguimiento", "account.disable_notifications": "Deixar de notificar-me quan @{name} publique bella cosa", - "account.domain_blocked": "Dominio blocau", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificar-me quan @{name} publique bella cosa", "account.endorse": "Amostrar en perfil", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 326dd8fbc5..209c3b492f 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -23,7 +23,6 @@ "account.copy": "نسخ الرابط إلى الملف الشخصي", "account.direct": "إشارة خاصة لـ @{name}", "account.disable_notifications": "توقف عن إشعاري عندما ينشر @{name}", - "account.domain_blocked": "اسم النِّطاق محظور", "account.edit_profile": "تعديل الملف الشخصي", "account.enable_notifications": "أشعرني عندما ينشر @{name}", "account.endorse": "أوصِ به على صفحتك الشخصية", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "كتم الإشعارات", "account.mute_short": "اكتم", "account.muted": "مَكتوم", - "account.mutual": "متبادلة", "account.no_bio": "لم يتم تقديم وصف.", "account.open_original_page": "افتح الصفحة الأصلية", "account.posts": "منشورات", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 5edce9a4d8..674e93d108 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -22,7 +22,6 @@ "account.copy": "Copiar l'enlllaz al perfil", "account.direct": "Mentar a @{name} per privao", "account.disable_notifications": "Dexar d'avisame cuando @{name} espublice artículos", - "account.domain_blocked": "Dominiu bloquiáu", "account.edit_profile": "Editar el perfil", "account.enable_notifications": "Avisame cuando @{name} espublice artículos", "account.endorse": "Destacar nel perfil", diff --git a/app/javascript/mastodon/locales/az.json b/app/javascript/mastodon/locales/az.json index 550312f31d..1847fdf85b 100644 --- a/app/javascript/mastodon/locales/az.json +++ b/app/javascript/mastodon/locales/az.json @@ -23,7 +23,6 @@ "account.copy": "Profil linkini kopyala", "account.direct": "@{name} istifadəçisini fərdi olaraq etiketlə", "account.disable_notifications": "@{name} paylaşım edəndə mənə bildiriş göndərməyi dayandır", - "account.domain_blocked": "Domen bloklanıb", "account.edit_profile": "Profili redaktə et", "account.enable_notifications": "@{name} paylaşım edəndə mənə bildiriş göndər", "account.endorse": "Profildə seçilmişlərə əlavə et", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Bildirişləri səssizləşdir", "account.mute_short": "Səssizləşdir", "account.muted": "Səssizləşdirilib", - "account.mutual": "Ortaq", "account.no_bio": "Təsvir göstərilməyib.", "account.open_original_page": "Orijinal səhifəni aç", "account.posts": "Paylaşım", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 9011fdfd63..96e8540456 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -23,7 +23,6 @@ "account.copy": "Скапіраваць спасылку на профіль", "account.direct": "Згадаць асабіста @{name}", "account.disable_notifications": "Не паведамляць мне пра публікацыі @{name}", - "account.domain_blocked": "Дамен заблакаваны", "account.edit_profile": "Рэдагаваць профіль", "account.enable_notifications": "Апавяшчаць мяне пра допісы @{name}", "account.endorse": "Паказваць у профілі", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Не апавяшчаць", "account.mute_short": "Ігнараваць", "account.muted": "Ігнаруецца", - "account.mutual": "Узаемныя", "account.no_bio": "Апісанне адсутнічае.", "account.open_original_page": "Адкрыць арыгінальную старонку", "account.posts": "Допісы", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 2e4c8593d4..4ac8a8e2eb 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -23,7 +23,6 @@ "account.copy": "Копиране на връзка към профила", "account.direct": "Частно споменаване на @{name}", "account.disable_notifications": "Спиране на известяване при публикуване от @{name}", - "account.domain_blocked": "Блокиран домейн", "account.edit_profile": "Редактиране на профила", "account.enable_notifications": "Известяване при публикуване от @{name}", "account.endorse": "Представи в профила", @@ -54,7 +53,6 @@ "account.mute_notifications_short": "Заглушаване на известията", "account.mute_short": "Заглушаване", "account.muted": "Заглушено", - "account.mutual": "Взаимни", "account.no_bio": "Няма представен опис.", "account.open_original_page": "Отваряне на първообразната страница", "account.posts": "Публикации", @@ -296,7 +294,6 @@ "emoji_button.search_results": "Резултати от търсене", "emoji_button.symbols": "Символи", "emoji_button.travel": "Пътуване и места", - "empty_column.account_featured": "Списъкът е празен", "empty_column.account_hides_collections": "Този потребител е избрал да не дава тази информация", "empty_column.account_suspended": "Спрян акаунт", "empty_column.account_timeline": "Тук няма публикации!", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index ec0f4eb447..bef579b95e 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -23,7 +23,6 @@ "account.copy": "অবতারের সংযোগ অনুলিপি করো", "account.direct": "গোপনে মেনশন করুন @{name}", "account.disable_notifications": "আমাকে জানানো বন্ধ করো যখন @{name} পোস্ট করবে", - "account.domain_blocked": "ডোমেইন ব্লক করা", "account.edit_profile": "প্রোফাইল সম্পাদনা করুন", "account.enable_notifications": "আমাকে জানাবে যখন @{name} পোস্ট করবে", "account.endorse": "প্রোফাইলে ফিচার করুন", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 51e3723d19..4c37c80fb9 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -22,7 +22,6 @@ "account.copy": "Eilañ al liamm war-zu ho profil", "account.direct": "Menegiñ @{name} ent-prevez", "account.disable_notifications": "Paouez d'am c'hemenn pa vez embannet traoù gant @{name}", - "account.domain_blocked": "Domani stanket", "account.edit_profile": "Kemmañ ar profil", "account.enable_notifications": "Ma c'hemenn pa vez embannet traoù gant @{name}", "account.endorse": "Lakaat war-wel war ar profil", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 60e3066d0e..41bdd18cc1 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -23,7 +23,6 @@ "account.copy": "Copia l'enllaç al perfil", "account.direct": "Menciona privadament @{name}", "account.disable_notifications": "Deixa de notificar-me els tuts de @{name}", - "account.domain_blocked": "Domini blocat", "account.edit_profile": "Edita el perfil", "account.enable_notifications": "Notifica'm els tuts de @{name}", "account.endorse": "Recomana en el perfil", @@ -54,7 +53,6 @@ "account.mute_notifications_short": "Silencia les notificacions", "account.mute_short": "Silencia", "account.muted": "Silenciat", - "account.mutual": "Mutu", "account.no_bio": "No s'ha proporcionat cap descripció.", "account.open_original_page": "Obre la pàgina original", "account.posts": "Tuts", @@ -296,7 +294,6 @@ "emoji_button.search_results": "Resultats de la cerca", "emoji_button.symbols": "Símbols", "emoji_button.travel": "Viatges i llocs", - "empty_column.account_featured": "Aquesta llista està buida", "empty_column.account_hides_collections": "Aquest usuari ha decidit no mostrar aquesta informació", "empty_column.account_suspended": "Compte suspès", "empty_column.account_timeline": "No hi ha tuts aquí!", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 31f2dbbc11..5cca00ca96 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -22,7 +22,6 @@ "account.copy": "ڕوونووسی بەستەر بۆ توت", "account.direct": "بە شێوەیەکی تایبەت باسی @{name} بکە", "account.disable_notifications": "ئاگانامە مەنێرە بۆم کاتێک @{name} پۆست دەکرێت", - "account.domain_blocked": "دۆمەین قەپاتکرا", "account.edit_profile": "دەستکاری پرۆفایل", "account.enable_notifications": "ئاگادارم بکەوە کاتێک @{name} بابەتەکان", "account.endorse": "ناساندن لە پرۆفایل", @@ -48,7 +47,6 @@ "account.mute_notifications_short": "پاڵ بە ئاگادارکردنەوەکانەوە بنێ", "account.mute_short": "بێدەنگ", "account.muted": "بێ دەنگ", - "account.mutual": "دوولایەنە", "account.no_bio": "هیچ وەسفێک نەخراوەتەڕوو.", "account.open_original_page": "لاپەڕەی ئەسڵی بکەرەوە", "account.posts": "نووسراوەکان", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index c61b8484b4..69137a3fd7 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -7,7 +7,6 @@ "account.blocked": "Bluccatu", "account.cancel_follow_request": "Withdraw follow request", "account.disable_notifications": "Ùn mi nutificate più quandu @{name} pubblica qualcosa", - "account.domain_blocked": "Duminiu piattatu", "account.edit_profile": "Mudificà u prufile", "account.enable_notifications": "Nutificate mi quandu @{name} pubblica qualcosa", "account.endorse": "Fà figurà nant'à u prufilu", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 0d8653d412..c6a8e13fbd 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -23,7 +23,6 @@ "account.copy": "Kopírovat odkaz na profil", "account.direct": "Soukromě zmínit @{name}", "account.disable_notifications": "Přestat mě upozorňovat, když @{name} zveřejní příspěvek", - "account.domain_blocked": "Doména blokována", "account.edit_profile": "Upravit profil", "account.enable_notifications": "Oznamovat mi příspěvky @{name}", "account.endorse": "Zvýraznit na profilu", @@ -54,7 +53,6 @@ "account.mute_notifications_short": "Ztlumit upozornění", "account.mute_short": "Ztlumit", "account.muted": "Skrytý", - "account.mutual": "Vzájemné", "account.no_bio": "Nebyl poskytnut žádný popis.", "account.open_original_page": "Otevřít původní stránku", "account.posts": "Příspěvky", @@ -296,7 +294,6 @@ "emoji_button.search_results": "Výsledky hledání", "emoji_button.symbols": "Symboly", "emoji_button.travel": "Cestování a místa", - "empty_column.account_featured": "Tento seznam je prázdný", "empty_column.account_hides_collections": "Tento uživatel se rozhodl tuto informaci nezveřejňovat", "empty_column.account_suspended": "Účet je pozastaven", "empty_column.account_timeline": "Nejsou tu žádné příspěvky!", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 23708ab912..8c6cc92080 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -1,5 +1,5 @@ { - "about.blocks": "Gweinyddion wedi'u cymedroli", + "about.blocks": "Gweinyddion a gyfyngir", "about.contact": "Cysylltwch â:", "about.disclaimer": "Mae Mastodon yn feddalwedd cod agored rhydd ac o dan hawlfraint Mastodon gGmbH.", "about.domain_blocks.no_reason_available": "Nid yw'r rheswm ar gael", @@ -23,8 +23,7 @@ "account.copy": "Copïo dolen i'r proffil", "account.direct": "Crybwyll yn breifat @{name}", "account.disable_notifications": "Stopiwch fy hysbysu pan fydd @{name} yn postio", - "account.domain_blocked": "Parth wedi'i rwystro", - "account.edit_profile": "Golygu proffil", + "account.edit_profile": "Golygu'r proffil", "account.enable_notifications": "Rhowch wybod i fi pan fydd @{name} yn postio", "account.endorse": "Dangos ar fy mhroffil", "account.featured": "Dethol", @@ -54,7 +53,6 @@ "account.mute_notifications_short": "Diffodd hysbysiadau", "account.mute_short": "Anwybyddu", "account.muted": "Wedi anwybyddu", - "account.mutual": "Cydgydnabod", "account.no_bio": "Dim disgrifiad wedi'i gynnig.", "account.open_original_page": "Agor y dudalen wreiddiol", "account.posts": "Postiadau", @@ -107,7 +105,7 @@ "annual_report.summary.here_it_is": "Dyma eich {year} yn gryno:", "annual_report.summary.highlighted_post.by_favourites": "postiad wedi'i ffefrynu fwyaf", "annual_report.summary.highlighted_post.by_reblogs": "postiad wedi'i hybu fwyaf", - "annual_report.summary.highlighted_post.by_replies": "postiad gyda'r nifer fwyaf o atebion", + "annual_report.summary.highlighted_post.by_replies": "postiad gyda'r nifer fwyaf o ymatebion", "annual_report.summary.highlighted_post.possessive": "{name}", "annual_report.summary.most_used_app.most_used_app": "ap a ddefnyddiwyd fwyaf", "annual_report.summary.most_used_hashtag.most_used_hashtag": "hashnod a ddefnyddiwyd fwyaf", @@ -228,7 +226,7 @@ "confirmations.mute.confirm": "Tewi", "confirmations.redraft.confirm": "Dileu ac ailddrafftio", "confirmations.redraft.message": "Ydych chi wir eisiau'r dileu'r postiad hwn a'i ailddrafftio? Bydd ffefrynnau a hybiau'n cael eu colli, a bydd atebion i'r post gwreiddiol yn mynd yn amddifad.", - "confirmations.redraft.title": "Dileu & ailddraftio postiad?", + "confirmations.redraft.title": "Dileu ac ailddraftio'r postiad?", "confirmations.reply.confirm": "Ymateb", "confirmations.reply.message": "Bydd ateb nawr yn cymryd lle y neges yr ydych yn cyfansoddi ar hyn o bryd. Ydych chi'n siŵr eich bod am barhau?", "confirmations.reply.title": "Trosysgrifo'r postiad?", @@ -258,7 +256,7 @@ "dismissable_banner.explore_tags": "Mae'r hashnodau hyn ar gynnydd y ffedysawd heddiw. Mae hashnodau sy'n cael eu defnyddio gan fwy o bobl amrywiol yn cael eu graddio'n uwch.", "dismissable_banner.public_timeline": "Dyma'r postiadau cyhoeddus diweddaraf gan bobl ar y ffedysawd y mae pobl ar {domain} yn eu dilyn.", "domain_block_modal.block": "Blocio gweinydd", - "domain_block_modal.block_account_instead": "Blocio @{name} yn ei le", + "domain_block_modal.block_account_instead": "Rhwystro @{name} yn lle hynny", "domain_block_modal.they_can_interact_with_old_posts": "Gall pobl o'r gweinydd hwn ryngweithio â'ch hen bostiadau.", "domain_block_modal.they_cant_follow": "All neb o'r gweinydd hwn eich dilyn.", "domain_block_modal.they_wont_know": "Fyddan nhw ddim yn gwybod eu bod wedi cael eu blocio.", @@ -296,7 +294,6 @@ "emoji_button.search_results": "Canlyniadau chwilio", "emoji_button.symbols": "Symbolau", "emoji_button.travel": "Teithio a Llefydd", - "empty_column.account_featured": "Mae'r rhestr hon yn wag", "empty_column.account_hides_collections": "Mae'r defnyddiwr wedi dewis i beidio rhannu'r wybodaeth yma", "empty_column.account_suspended": "Cyfrif wedi'i atal", "empty_column.account_timeline": "Dim postiadau yma!", @@ -532,7 +529,7 @@ "navigation_bar.about": "Ynghylch", "navigation_bar.administration": "Gweinyddiaeth", "navigation_bar.advanced_interface": "Agor mewn rhyngwyneb gwe uwch", - "navigation_bar.blocks": "Defnyddwyr wedi eu blocio", + "navigation_bar.blocks": "Defnyddwyr wedi'u rhwystro", "navigation_bar.bookmarks": "Nodau Tudalen", "navigation_bar.community_timeline": "Ffrwd leol", "navigation_bar.compose": "Cyfansoddi post newydd", @@ -543,7 +540,7 @@ "navigation_bar.favourites": "Ffefrynnau", "navigation_bar.filters": "Geiriau wedi'u tewi", "navigation_bar.follow_requests": "Ceisiadau dilyn", - "navigation_bar.followed_tags": "Hashnodau'n cael eu dilyn", + "navigation_bar.followed_tags": "Hashnodau a ddilynir", "navigation_bar.follows_and_followers": "Yn dilyn a dilynwyr", "navigation_bar.lists": "Rhestrau", "navigation_bar.logout": "Allgofnodi", @@ -588,7 +585,7 @@ "notification.moderation_warning.action_none": "Mae eich cyfrif wedi derbyn rhybudd cymedroli.", "notification.moderation_warning.action_sensitive": "Bydd eich postiadau'n cael eu marcio'n sensitif o hyn ymlaen.", "notification.moderation_warning.action_silence": "Mae eich cyfrif wedi'i gyfyngu.", - "notification.moderation_warning.action_suspend": "Mae eich cyfrif wedi'i hatal.", + "notification.moderation_warning.action_suspend": "Mae eich cyfrif wedi'i atal.", "notification.own_poll": "Mae eich pleidlais wedi dod i ben", "notification.poll": "Mae arolwg y gwnaethoch bleidleisio ynddo wedi dod i ben", "notification.reblog": "Hybodd {name} eich post", @@ -859,9 +856,9 @@ "status.remove_bookmark": "Tynnu nod tudalen", "status.remove_favourite": "Tynnu o'r ffefrynnau", "status.replied_in_thread": "Atebodd mewn edefyn", - "status.replied_to": "Wedi ateb {name}", + "status.replied_to": "Wedi ymateb i {name}", "status.reply": "Ymateb", - "status.replyAll": "Ateb i edefyn", + "status.replyAll": "Ymateb i edefyn", "status.report": "Adrodd ar @{name}", "status.sensitive_warning": "Cynnwys sensitif", "status.share": "Rhannu", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index e1d8e7aec2..4a90fddda2 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -19,11 +19,12 @@ "account.block_domain": "Blokér domænet {domain}", "account.block_short": "Bloker", "account.blocked": "Blokeret", + "account.blocking": "Blokering", "account.cancel_follow_request": "Annullér anmodning om at følge", "account.copy": "Kopiér link til profil", "account.direct": "Privat omtale @{name}", "account.disable_notifications": "Advisér mig ikke længere, når @{name} poster", - "account.domain_blocked": "Domæne blokeret", + "account.domain_blocking": "Blokerer domæne", "account.edit_profile": "Redigér profil", "account.enable_notifications": "Advisér mig, når @{name} poster", "account.endorse": "Fremhæv på profil", @@ -40,6 +41,7 @@ "account.following": "Følger", "account.following_counter": "{count, plural, one {{counter} følger} other {{counter} følger}}", "account.follows.empty": "Denne bruger følger ikke nogen endnu.", + "account.follows_you": "Følger dig", "account.go_to_profile": "Gå til profil", "account.hide_reblogs": "Skjul fremhævelser fra @{name}", "account.in_memoriam": "Til minde om.", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "Sluk for notifikationer", "account.mute_short": "Skjul", "account.muted": "Skjult", - "account.mutual": "Fælles", + "account.muting": "Tavsgørelse", + "account.mutual": "I følger hinanden", "account.no_bio": "Ingen beskrivelse til rådighed.", "account.open_original_page": "Åbn oprindelig side", "account.posts": "Indlæg", @@ -62,6 +65,7 @@ "account.report": "Anmeld @{name}", "account.requested": "Afventer godkendelse. Tryk for at annullere følgeanmodning", "account.requested_follow": "{name} har anmodet om at følge dig", + "account.requests_to_follow_you": "Anmodninger om at følge dig", "account.share": "Del @{name}s profil", "account.show_reblogs": "Vis fremhævelser fra @{name}", "account.statuses_counter": "{count, plural, one {{counter} indlæg} other {{counter} indlæg}}", @@ -296,7 +300,9 @@ "emoji_button.search_results": "Søgeresultater", "emoji_button.symbols": "Symboler", "emoji_button.travel": "Rejser og steder", - "empty_column.account_featured": "Denne liste er tom", + "empty_column.account_featured.me": "Du har ikke vist noget endnu. Vidste du, at man kan fremhæve sine indlæg, mest brugte hashtags og endda en vens konti på sin profil?", + "empty_column.account_featured.other": "{acct} har ikke vist noget endnu. Vidste du, at man kan fremhæve sine indlæg, mest brugte hashtags og endda en vens konti på sin profil?", + "empty_column.account_featured_other.unknown": "Denne konto har ikke fremhævet noget endnu.", "empty_column.account_hides_collections": "Brugeren har valgt ikke at gøre denne information tilgængelig", "empty_column.account_suspended": "Konto suspenderet", "empty_column.account_timeline": "Ingen indlæg her!", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 0d5f2f2104..8fa53cfa4a 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -19,15 +19,16 @@ "account.block_domain": "{domain} sperren", "account.block_short": "Blockieren", "account.blocked": "Blockiert", + "account.blocking": "Gesperrt", "account.cancel_follow_request": "Follower-Anfrage zurückziehen", "account.copy": "Link zum Profil kopieren", "account.direct": "@{name} privat erwähnen", "account.disable_notifications": "Höre auf mich zu benachrichtigen wenn @{name} etwas postet", - "account.domain_blocked": "Domain versteckt", + "account.domain_blocking": "Domain gesperrt", "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", "account.endorse": "Im Profil empfehlen", - "account.featured": "Empfohlen", + "account.featured": "Vorgestellt", "account.featured.hashtags": "Hashtags", "account.featured.posts": "Beiträge", "account.featured_tags.last_status_at": "Letzter Beitrag am {date}", @@ -40,6 +41,7 @@ "account.following": "Folge ich", "account.following_counter": "{count, plural, one {{counter} Folge ich} other {{counter} Folge ich}}", "account.follows.empty": "Dieses Profil folgt noch niemandem.", + "account.follows_you": "Folgt dir", "account.go_to_profile": "Profil aufrufen", "account.hide_reblogs": "Geteilte Beiträge von @{name} ausblenden", "account.in_memoriam": "Zum Andenken.", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "Benachrichtigungen stummschalten", "account.mute_short": "Stummschalten", "account.muted": "Stummgeschaltet", - "account.mutual": "Gegenseitig", + "account.muting": "Wird stummgeschaltet", + "account.mutual": "Ihr folgt euch", "account.no_bio": "Keine Beschreibung verfügbar.", "account.open_original_page": "Ursprüngliche Seite öffnen", "account.posts": "Beiträge", @@ -62,6 +65,7 @@ "account.report": "@{name} melden", "account.requested": "Die Genehmigung steht noch aus. Klicke hier, um die Follower-Anfrage zurückzuziehen", "account.requested_follow": "{name} möchte dir folgen", + "account.requests_to_follow_you": "Möchte dir folgen", "account.share": "Profil von @{name} teilen", "account.show_reblogs": "Geteilte Beiträge von @{name} anzeigen", "account.statuses_counter": "{count, plural, one {{counter} Beitrag} other {{counter} Beiträge}}", @@ -296,7 +300,9 @@ "emoji_button.search_results": "Suchergebnisse", "emoji_button.symbols": "Symbole", "emoji_button.travel": "Reisen & Orte", - "empty_column.account_featured": "Diese Liste ist leer", + "empty_column.account_featured.me": "Du hast bisher noch nichts vorgestellt. Wusstest du, dass du deine Beiträge, häufig verwendete Hashtags und sogar andere Profile vorstellen kannst?", + "empty_column.account_featured.other": "{acct} hat bisher noch nichts vorgestellt. Wusstest du, dass du deine Beiträge, häufig verwendete Hashtags und sogar andere Profile vorstellen kannst?", + "empty_column.account_featured_other.unknown": "Dieses Profil hat bisher noch nichts vorgestellt.", "empty_column.account_hides_collections": "Das Konto hat sich dazu entschieden, diese Information nicht zu veröffentlichen", "empty_column.account_suspended": "Konto gesperrt", "empty_column.account_timeline": "Keine Beiträge vorhanden!", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index e9f8ead17f..a319e378b2 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -23,7 +23,6 @@ "account.copy": "Αντιγραφή συνδέσμου προφίλ", "account.direct": "Ιδιωτική αναφορά @{name}", "account.disable_notifications": "Σταμάτα να με ειδοποιείς όταν δημοσιεύει ο @{name}", - "account.domain_blocked": "Ο τομέας αποκλείστηκε", "account.edit_profile": "Επεξεργασία προφίλ", "account.enable_notifications": "Ειδοποίησέ με όταν δημοσιεύει ο @{name}", "account.endorse": "Προβολή στο προφίλ", @@ -54,7 +53,6 @@ "account.mute_notifications_short": "Σίγαση ειδοποιήσεων", "account.mute_short": "Σίγαση", "account.muted": "Αποσιωπημένος/η", - "account.mutual": "Αμοιβαίοι", "account.no_bio": "Δεν υπάρχει περιγραφή.", "account.open_original_page": "Ανοικτό", "account.posts": "Τουτ", @@ -296,7 +294,6 @@ "emoji_button.search_results": "Αποτελέσματα αναζήτησης", "emoji_button.symbols": "Σύμβολα", "emoji_button.travel": "Ταξίδια & Τοποθεσίες", - "empty_column.account_featured": "Αυτή η λίστα είναι κενή", "empty_column.account_hides_collections": "Αυτός ο χρήστης έχει επιλέξει να μην καταστήσει αυτές τις πληροφορίες διαθέσιμες", "empty_column.account_suspended": "Λογαριασμός σε αναστολή", "empty_column.account_timeline": "Δεν έχει αναρτήσεις εδώ!", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index b46d02baa9..e127b7b67f 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -23,7 +23,6 @@ "account.copy": "Copy link to profile", "account.direct": "Privately mention @{name}", "account.disable_notifications": "Stop notifying me when @{name} posts", - "account.domain_blocked": "Domain blocked", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Mute notifications", "account.mute_short": "Mute", "account.muted": "Muted", - "account.mutual": "Mutual", "account.no_bio": "No description provided.", "account.open_original_page": "Open original page", "account.posts": "Posts", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 1d360e59d7..c63b6e6dab 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -23,7 +23,6 @@ "account.copy": "Kopii ligilon al profilo", "account.direct": "Private mencii @{name}", "account.disable_notifications": "Ĉesu sciigi min kiam @{name} afiŝas", - "account.domain_blocked": "Domajno blokita", "account.edit_profile": "Redakti la profilon", "account.enable_notifications": "Sciigu min kiam @{name} afiŝos", "account.endorse": "Prezenti ĉe via profilo", @@ -53,7 +52,6 @@ "account.mute_notifications_short": "Silentigu sciigojn", "account.mute_short": "Silentigu", "account.muted": "Silentigita", - "account.mutual": "Reciproka", "account.no_bio": "Neniu priskribo estas provizita.", "account.open_original_page": "Malfermi la originalan paĝon", "account.posts": "Afiŝoj", @@ -295,7 +293,6 @@ "emoji_button.search_results": "Serĉaj rezultoj", "emoji_button.symbols": "Simboloj", "emoji_button.travel": "Vojaĝoj kaj lokoj", - "empty_column.account_featured": "Ĉi tiu listo estas malplena", "empty_column.account_hides_collections": "Ĉi tiu uzanto elektis ne disponebligi ĉi tiu informon", "empty_column.account_suspended": "Konto suspendita", "empty_column.account_timeline": "Neniuj afiŝoj ĉi tie!", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index bf6d620474..9e160a6532 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -19,11 +19,12 @@ "account.block_domain": "Bloquear dominio {domain}", "account.block_short": "Bloquear", "account.blocked": "Bloqueado", + "account.blocking": "Bloqueo", "account.cancel_follow_request": "Dejar de seguir", "account.copy": "Copiar enlace al perfil", "account.direct": "Mención privada a @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} envíe mensajes", - "account.domain_blocked": "Dominio bloqueado", + "account.domain_blocking": "Bloqueando dominio", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} envíe mensajes", "account.endorse": "Destacar en el perfil", @@ -40,6 +41,7 @@ "account.following": "Siguiendo", "account.following_counter": "{count, plural, one {siguiendo a {counter}} other {siguiendo a {counter}}}", "account.follows.empty": "Todavía este usuario no sigue a nadie.", + "account.follows_you": "Te sigue", "account.go_to_profile": "Ir al perfil", "account.hide_reblogs": "Ocultar adhesiones de @{name}", "account.in_memoriam": "Cuenta conmemorativa.", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "Silenciar notificaciones", "account.mute_short": "Silenciar", "account.muted": "Silenciado", - "account.mutual": "Seguimiento mutuo", + "account.muting": "Silenciada", + "account.mutual": "Se siguen mutuamente", "account.no_bio": "Sin descripción provista.", "account.open_original_page": "Abrir página original", "account.posts": "Mensajes", @@ -62,6 +65,7 @@ "account.report": "Denunciar a @{name}", "account.requested": "Esperando aprobación. Hacé clic para cancelar la solicitud de seguimiento", "account.requested_follow": "{name} solicitó seguirte", + "account.requests_to_follow_you": "Solicita seguirte", "account.share": "Compartir el perfil de @{name}", "account.show_reblogs": "Mostrar adhesiones de @{name}", "account.statuses_counter": "{count, plural, one {{counter} mensaje} other {{counter} mensajes}}", @@ -296,7 +300,9 @@ "emoji_button.search_results": "Resultados de búsqueda", "emoji_button.symbols": "Símbolos", "emoji_button.travel": "Viajes y lugares", - "empty_column.account_featured": "Esta lista está vacía", + "empty_column.account_featured.me": "Todavía no destacaste nada. ¿Sabías que en tu perfil podés destacar tus publicaciones, las etiquetas que más usás e incluso las cuentas de tus contactos?", + "empty_column.account_featured.other": "{acct} todavía no destacó nada. ¿Sabías que en tu perfil podés destacar tus publicaciones, las etiquetas que más usás e incluso las cuentas de tus contactos?", + "empty_column.account_featured_other.unknown": "Esta cuenta todavía no destacó nada.", "empty_column.account_hides_collections": "Este usuario eligió no publicar esta información", "empty_column.account_suspended": "Cuenta suspendida", "empty_column.account_timeline": "¡No hay mensajes acá!", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index f4d9266276..ec9a38b4eb 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -19,11 +19,12 @@ "account.block_domain": "Bloquear dominio {domain}", "account.block_short": "Bloquear", "account.blocked": "Bloqueado", + "account.blocking": "Bloqueando", "account.cancel_follow_request": "Cancelar seguimiento", "account.copy": "Copiar enlace al perfil", "account.direct": "Mención privada @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} publique algo", - "account.domain_blocked": "Dominio oculto", + "account.domain_blocking": "Bloqueando dominio", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} publique algo", "account.endorse": "Destacar en mi perfil", @@ -40,6 +41,7 @@ "account.following": "Siguiendo", "account.following_counter": "{count, plural, one {{counter} siguiendo} other {{counter} siguiendo}}", "account.follows.empty": "Este usuario no sigue a nadie todavía.", + "account.follows_you": "Te sigue", "account.go_to_profile": "Ir al perfil", "account.hide_reblogs": "Ocultar impulsos de @{name}", "account.in_memoriam": "En memoria.", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "Silenciar notificaciones", "account.mute_short": "Silenciar", "account.muted": "Silenciado", - "account.mutual": "Mutuo", + "account.muting": "Silenciando", + "account.mutual": "Se siguen el uno al otro", "account.no_bio": "Sin biografía.", "account.open_original_page": "Abrir página original", "account.posts": "Publicaciones", @@ -62,6 +65,7 @@ "account.report": "Denunciar a @{name}", "account.requested": "Esperando aprobación. Haz clic para cancelar la solicitud de seguimiento", "account.requested_follow": "{name} ha solicitado seguirte", + "account.requests_to_follow_you": "Solicita seguirte", "account.share": "Compartir el perfil de @{name}", "account.show_reblogs": "Mostrar impulsos de @{name}", "account.statuses_counter": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}}", @@ -296,7 +300,9 @@ "emoji_button.search_results": "Resultados de búsqueda", "emoji_button.symbols": "Símbolos", "emoji_button.travel": "Viajes y lugares", - "empty_column.account_featured": "Esta lista está vacía", + "empty_column.account_featured.me": "No has destacado nada todavía. ¿Sabías que puedes destacar tus publicaciones, las etiquetas que más usas e incluso las cuentas de tus amigos en tu perfil?", + "empty_column.account_featured.other": "{acct} no ha destacado nada todavía. ¿Sabías que puedes destacar tus publicaciones, las etiquetas que más usas e incluso las cuentas de tus amigos en tu perfil?", + "empty_column.account_featured_other.unknown": "Esta cuenta no ha destacado nada todavía.", "empty_column.account_hides_collections": "Este usuario ha elegido no hacer disponible esta información", "empty_column.account_suspended": "Cuenta suspendida", "empty_column.account_timeline": "¡No hay publicaciones aquí!", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 49e5631a81..38efac42f2 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -19,11 +19,12 @@ "account.block_domain": "Bloquear dominio {domain}", "account.block_short": "Bloquear", "account.blocked": "Bloqueado", + "account.blocking": "Bloqueando", "account.cancel_follow_request": "Retirar solicitud de seguimiento", "account.copy": "Copiar enlace al perfil", "account.direct": "Mención privada a @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} publique algo", - "account.domain_blocked": "Dominio bloqueado", + "account.domain_blocking": "Bloqueando dominio", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} publique algo", "account.endorse": "Destacar en el perfil", @@ -40,6 +41,7 @@ "account.following": "Siguiendo", "account.following_counter": "{count, plural, one {{counter} siguiendo} other {{counter} siguiendo}}", "account.follows.empty": "Este usuario todavía no sigue a nadie.", + "account.follows_you": "Te sigue", "account.go_to_profile": "Ir al perfil", "account.hide_reblogs": "Ocultar impulsos de @{name}", "account.in_memoriam": "Cuenta conmemorativa.", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "Silenciar notificaciones", "account.mute_short": "Silenciar", "account.muted": "Silenciado", - "account.mutual": "Mutuo", + "account.muting": "Silenciando", + "account.mutual": "Os seguís mutuamente", "account.no_bio": "Sin biografía.", "account.open_original_page": "Abrir página original", "account.posts": "Publicaciones", @@ -62,6 +65,7 @@ "account.report": "Reportar a @{name}", "account.requested": "Esperando aprobación. Haz clic para cancelar la solicitud de seguimiento", "account.requested_follow": "{name} ha solicitado seguirte", + "account.requests_to_follow_you": "Solicita seguirte", "account.share": "Compartir el perfil de @{name}", "account.show_reblogs": "Mostrar impulsos de @{name}", "account.statuses_counter": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}}", @@ -296,7 +300,9 @@ "emoji_button.search_results": "Resultados de búsqueda", "emoji_button.symbols": "Símbolos", "emoji_button.travel": "Viajes y lugares", - "empty_column.account_featured": "Esta lista está vacía", + "empty_column.account_featured.me": "Aún no has destacado nada. ¿Sabías que puedes destacar tus publicaciones, las etiquetas que más utilizas e incluso las cuentas de tus amigos en tu perfil?", + "empty_column.account_featured.other": "{acct} no ha destacado nada aún. ¿Sabías que puedes destacar tus publicaciones, las etiquetas que más utilizas e incluso las cuentas de tus amigos en tu perfil?", + "empty_column.account_featured_other.unknown": "Esta cuenta aún no ha destacado nada.", "empty_column.account_hides_collections": "Este usuario ha decidido no mostrar esta información", "empty_column.account_suspended": "Cuenta suspendida", "empty_column.account_timeline": "¡No hay publicaciones aquí!", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index 3e0610126e..bb38b1330c 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -23,7 +23,6 @@ "account.copy": "Kopeeri profiili link", "account.direct": "Maini privaatselt @{name}", "account.disable_notifications": "Peata teavitused @{name} postitustest", - "account.domain_blocked": "Domeen peidetud", "account.edit_profile": "Muuda profiili", "account.enable_notifications": "Teavita mind @{name} postitustest", "account.endorse": "Too profiilil esile", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Vaigista teavitused", "account.mute_short": "Vaigista", "account.muted": "Vaigistatud", - "account.mutual": "Jälgite", "account.no_bio": "Kirjeldust pole lisatud.", "account.open_original_page": "Ava algne leht", "account.posts": "Postitused", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 0c73c9f540..736c19d51d 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -23,7 +23,6 @@ "account.copy": "Kopiatu profilerako esteka", "account.direct": "Aipatu pribatuki @{name}", "account.disable_notifications": "Utzi jakinarazteari @{name} erabiltzaileak argitaratzean", - "account.domain_blocked": "Ezkutatutako domeinua", "account.edit_profile": "Editatu profila", "account.enable_notifications": "Jakinarazi @{name} erabiltzaileak argitaratzean", "account.endorse": "Nabarmendu profilean", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Mututu jakinarazpenak", "account.mute_short": "Mututu", "account.muted": "Mutututa", - "account.mutual": "Elkarrekikoa", "account.no_bio": "Ez da deskribapenik eman.", "account.open_original_page": "Ireki jatorrizko orria", "account.posts": "Bidalketa", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 3e31eb8a15..7c89bcde5f 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -23,7 +23,6 @@ "account.copy": "رونوشت از پیوند به نمایه", "account.direct": "اشارهٔ خصوصی به ‪@{name}‬", "account.disable_notifications": "آگاه کردن من هنگام فرسته‌های ‎@{name} را متوقّف کن", - "account.domain_blocked": "دامنه مسدود شد", "account.edit_profile": "ویرایش نمایه", "account.enable_notifications": "هنگام فرسته‌های ‎@{name} مرا آگاه کن", "account.endorse": "معرّفی در نمایه", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "خموشی آگاهی‌ها", "account.mute_short": "خموشی", "account.muted": "خموش", - "account.mutual": "دوطرفه", "account.no_bio": "شرحی فراهم نشده.", "account.open_original_page": "گشودن صفحهٔ اصلی", "account.posts": "فرسته", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index cc42780f94..58a35b2779 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -19,11 +19,12 @@ "account.block_domain": "Estä verkkotunnus {domain}", "account.block_short": "Estä", "account.blocked": "Estetty", + "account.blocking": "Estetty", "account.cancel_follow_request": "Peruuta seurantapyyntö", "account.copy": "Kopioi linkki profiiliin", "account.direct": "Mainitse @{name} yksityisesti", "account.disable_notifications": "Lopeta ilmoittamasta minulle, kun @{name} julkaisee", - "account.domain_blocked": "Verkkotunnus estetty", + "account.domain_blocking": "Estetty verkkotunnus", "account.edit_profile": "Muokkaa profiilia", "account.enable_notifications": "Ilmoita minulle, kun @{name} julkaisee", "account.endorse": "Suosittele profiilissasi", @@ -39,6 +40,7 @@ "account.following": "Seurattavat", "account.following_counter": "{count, plural, one {{counter} seurattava} other {{counter} seurattavaa}}", "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.", + "account.follows_you": "Seuraa sinua", "account.go_to_profile": "Siirry profiiliin", "account.hide_reblogs": "Piilota käyttäjän @{name} tehostukset", "account.in_memoriam": "Muistoissamme.", @@ -53,6 +55,7 @@ "account.mute_notifications_short": "Mykistä ilmoitukset", "account.mute_short": "Mykistä", "account.muted": "Mykistetty", + "account.muting": "Hiljennetty", "account.mutual": "Seuraatte toisianne", "account.no_bio": "Kuvausta ei ole annettu.", "account.open_original_page": "Avaa alkuperäinen sivu", @@ -61,6 +64,7 @@ "account.report": "Raportoi @{name}", "account.requested": "Odottaa hyväksyntää. Peruuta seurantapyyntö napsauttamalla", "account.requested_follow": "{name} on pyytänyt lupaa seurata sinua", + "account.requests_to_follow_you": "Pyynnöt seurata sinua", "account.share": "Jaa käyttäjän @{name} profiili", "account.show_reblogs": "Näytä käyttäjän @{name} tehostukset", "account.statuses_counter": "{count, plural, one {{counter} julkaisu} other {{counter} julkaisua}}", @@ -295,7 +299,6 @@ "emoji_button.search_results": "Hakutulokset", "emoji_button.symbols": "Symbolit", "emoji_button.travel": "Matkailu ja paikat", - "empty_column.account_featured": "Tämä lista on tyhjä", "empty_column.account_hides_collections": "Käyttäjä on päättänyt pitää nämä tiedot yksityisinä", "empty_column.account_suspended": "Tili jäädytetty", "empty_column.account_timeline": "Ei viestejä täällä.", diff --git a/app/javascript/mastodon/locales/fil.json b/app/javascript/mastodon/locales/fil.json index c13d0a8afe..2752b6f539 100644 --- a/app/javascript/mastodon/locales/fil.json +++ b/app/javascript/mastodon/locales/fil.json @@ -23,7 +23,6 @@ "account.copy": "I-sipi ang kawing sa profile", "account.direct": "Palihim banggitin si @{name}", "account.disable_notifications": "I-tigil ang pagpapaalam sa akin tuwing nagpopost si @{name}", - "account.domain_blocked": "Hinadlangan ang domain", "account.edit_profile": "Baguhin ang profile", "account.enable_notifications": "Ipaalam sa akin kapag nag-post si @{name}", "account.endorse": "I-tampok sa profile", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "I-mute ang mga abiso", "account.mute_short": "I-mute", "account.muted": "Naka-mute", - "account.mutual": "Ka-mutual", "account.no_bio": "Walang nakalaan na paglalarawan.", "account.open_original_page": "Buksan ang pinagmulang pahina", "account.posts": "Mga post", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index b472fd8bd2..6bed01d408 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -19,11 +19,12 @@ "account.block_domain": "Banna økisnavnið {domain}", "account.block_short": "Blokera", "account.blocked": "Bannað/ur", + "account.blocking": "Banni", "account.cancel_follow_request": "Strika fylgjaraumbøn", "account.copy": "Avrita leinki til vangan", "account.direct": "Umrøð @{name} privat", "account.disable_notifications": "Ikki boða mær frá, tá @{name} skrivar", - "account.domain_blocked": "Økisnavn bannað", + "account.domain_blocking": "Banni økisnavn", "account.edit_profile": "Broyt vanga", "account.enable_notifications": "Boða mær frá, tá @{name} skrivar", "account.endorse": "Víst á vangamyndini", @@ -40,6 +41,7 @@ "account.following": "Fylgir", "account.following_counter": "{count, plural, one {{counter} fylgir} other {{counter} fylgja}}", "account.follows.empty": "Hesin brúkari fylgir ongum enn.", + "account.follows_you": "Fylgir tær", "account.go_to_profile": "Far til vanga", "account.hide_reblogs": "Fjal lyft frá @{name}", "account.in_memoriam": "In memoriam.", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "Sløkk fráboðanir", "account.mute_short": "Doyv", "account.muted": "Sløkt/ur", - "account.mutual": "Sínamillum", + "account.muting": "Doyvir", + "account.mutual": "Tit fylgja hvønn annan", "account.no_bio": "Lýsing vantar.", "account.open_original_page": "Opna upprunasíðuna", "account.posts": "Uppsløg", @@ -62,6 +65,7 @@ "account.report": "Melda @{name}", "account.requested": "Bíðar eftir góðkenning. Trýst fyri at angra umbønina", "account.requested_follow": "{name} hevur biðið um at fylgja tær", + "account.requests_to_follow_you": "Umbønir um at fylgja tær", "account.share": "Deil vanga @{name}'s", "account.show_reblogs": "Vís lyft frá @{name}", "account.statuses_counter": "{count, plural, one {{counter} postur} other {{counter} postar}}", @@ -296,7 +300,9 @@ "emoji_button.search_results": "Leitiúrslit", "emoji_button.symbols": "Ímyndir", "emoji_button.travel": "Ferðing og støð", - "empty_column.account_featured": "Hesin listin er tómur", + "empty_column.account_featured.me": "Tú hevur ikki tikið nakað fram enn. Visti tú, at tú kanst taka fram egnar postar, frámerki, tú brúkar mest, og sjálvt kontur hjá vinum tínum á vangan hjá tær?", + "empty_column.account_featured.other": "{acct} hevur ikki tikið nakað fram enn. Visti tú, at tú kanst taka fram tínar postar, frámerki, tú brúkar mest, og sjálvt kontur hjá vinum tínum á vangan hjá tær?", + "empty_column.account_featured_other.unknown": "Hendan kontan hevur ikki tikið nakað fram enn.", "empty_column.account_hides_collections": "Hesin brúkarin hevur valt, at hesar upplýsingarnar ikki skulu vera tøkar", "empty_column.account_suspended": "Kontan gjørd óvirkin", "empty_column.account_timeline": "Einki uppslag her!", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index f63a1d2cba..94c96a1b03 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -23,7 +23,6 @@ "account.copy": "Copier le lien vers le profil", "account.direct": "Mention privée @{name}", "account.disable_notifications": "Ne plus me notifier quand @{name} publie", - "account.domain_blocked": "Domaine bloqué", "account.edit_profile": "Modifier le profil", "account.enable_notifications": "Me notifier quand @{name} publie", "account.endorse": "Inclure sur profil", @@ -54,7 +53,6 @@ "account.mute_notifications_short": "Rendre les notifications muettes", "account.mute_short": "Rendre muet", "account.muted": "Masqué·e", - "account.mutual": "Mutuel", "account.no_bio": "Description manquante.", "account.open_original_page": "Ouvrir la page d'origine", "account.posts": "Publications", @@ -296,7 +294,6 @@ "emoji_button.search_results": "Résultats", "emoji_button.symbols": "Symboles", "emoji_button.travel": "Voyage et lieux", - "empty_column.account_featured": "Cette liste est vide", "empty_column.account_hides_collections": "Cet utilisateur·ice préfère ne pas rendre publiques ces informations", "empty_column.account_suspended": "Compte suspendu", "empty_column.account_timeline": "Aucune publication ici!", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index f9c616627f..4e1f987292 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -23,7 +23,6 @@ "account.copy": "Copier le lien vers le profil", "account.direct": "Mention privée @{name}", "account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose", - "account.domain_blocked": "Domaine bloqué", "account.edit_profile": "Modifier le profil", "account.enable_notifications": "Me notifier quand @{name} publie quelque chose", "account.endorse": "Recommander sur votre profil", @@ -54,7 +53,6 @@ "account.mute_notifications_short": "Désactiver les notifications", "account.mute_short": "Mettre en sourdine", "account.muted": "Masqué·e", - "account.mutual": "Mutuel", "account.no_bio": "Aucune description fournie.", "account.open_original_page": "Ouvrir la page d'origine", "account.posts": "Messages", @@ -296,7 +294,6 @@ "emoji_button.search_results": "Résultats de la recherche", "emoji_button.symbols": "Symboles", "emoji_button.travel": "Voyage et lieux", - "empty_column.account_featured": "Cette liste est vide", "empty_column.account_hides_collections": "Cet utilisateur·ice préfère ne pas rendre publiques ces informations", "empty_column.account_suspended": "Compte suspendu", "empty_column.account_timeline": "Aucun message ici !", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index e3c3222868..a678d1ebe4 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -23,7 +23,6 @@ "account.copy": "Keppeling nei profyl kopiearje", "account.direct": "Privee fermelde @{name}", "account.disable_notifications": "Jou gjin melding mear wannear @{name} in berjocht pleatst", - "account.domain_blocked": "Domein blokkearre", "account.edit_profile": "Profyl bewurkje", "account.enable_notifications": "Jou in melding mear wannear @{name} in berjocht pleatst", "account.endorse": "Op profyl werjaan", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Meldingen negearje", "account.mute_short": "Negearje", "account.muted": "Negearre", - "account.mutual": "Jimme folgje inoar", "account.no_bio": "Gjin omskriuwing opjûn.", "account.open_original_page": "Orizjinele side iepenje", "account.posts": "Berjochten", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index 5935b39e2d..da6412a4fd 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -23,7 +23,6 @@ "account.copy": "Cóipeáil nasc chuig an bpróifíl", "account.direct": "Luaigh @{name} go príobháideach", "account.disable_notifications": "Éirigh as ag cuir mé in eol nuair bpostálann @{name}", - "account.domain_blocked": "Ainm fearainn bactha", "account.edit_profile": "Cuir an phróifíl in eagar", "account.enable_notifications": "Cuir mé in eol nuair bpostálann @{name}", "account.endorse": "Cuir ar an phróifíl mar ghné", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Balbhaigh fógraí", "account.mute_short": "Balbhaigh", "account.muted": "Balbhaithe", - "account.mutual": "Frithpháirteach", "account.no_bio": "Níor tugadh tuairisc.", "account.open_original_page": "Oscail an leathanach bunaidh", "account.posts": "Postálacha", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index f295db0b43..4949e179ab 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -23,7 +23,6 @@ "account.copy": "Dèan lethbhreac dhen cheangal dhan phròifil", "account.direct": "Thoir iomradh air @{name} gu prìobhaideach", "account.disable_notifications": "Na cuir brath thugam tuilleadh nuair a chuireas @{name} post ris", - "account.domain_blocked": "Chaidh an àrainn a bhacadh", "account.edit_profile": "Deasaich a’ phròifil", "account.enable_notifications": "Cuir brath thugam nuair a chuireas @{name} post ris", "account.endorse": "Brosnaich air a’ phròifil", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Mùch na brathan", "account.mute_short": "Mùch", "account.muted": "’Ga mhùchadh", - "account.mutual": "Co-dhàimh", "account.no_bio": "Cha deach tuairisgeul a sholar.", "account.open_original_page": "Fosgail an duilleag thùsail", "account.posts": "Postaichean", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 50dc2437c6..0cb1905dc5 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -23,7 +23,6 @@ "account.copy": "Copiar ligazón ao perfil", "account.direct": "Mencionar de xeito privado a @{name}", "account.disable_notifications": "Deixar de notificarme cando @{name} publica", - "account.domain_blocked": "Dominio agochado", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Noficarme cando @{name} publique", "account.endorse": "Amosar no perfil", @@ -54,7 +53,6 @@ "account.mute_notifications_short": "Silenciar notificacións", "account.mute_short": "Acalar", "account.muted": "Acalada", - "account.mutual": "Mutuo", "account.no_bio": "Sen descrición.", "account.open_original_page": "Abrir páxina orixinal", "account.posts": "Publicacións", @@ -296,7 +294,6 @@ "emoji_button.search_results": "Resultados da procura", "emoji_button.symbols": "Símbolos", "emoji_button.travel": "Viaxes e Lugares", - "empty_column.account_featured": "A lista está baleira", "empty_column.account_hides_collections": "A usuaria decideu non facer pública esta información", "empty_column.account_suspended": "Conta suspendida", "empty_column.account_timeline": "Non hai publicacións aquí!", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index d1a2c014a5..e2ecf6cbaa 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -19,11 +19,12 @@ "account.block_domain": "חסמו את קהילת {domain}", "account.block_short": "לחסום", "account.blocked": "לחסום", + "account.blocking": "רשימת החשבונות החסומים", "account.cancel_follow_request": "משיכת בקשת מעקב", "account.copy": "להעתיק קישור לפרופיל", "account.direct": "הודעה פרטית אל @{name}", "account.disable_notifications": "הפסק לשלוח לי התראות כש@{name} מפרסמים", - "account.domain_blocked": "הדומיין חסום", + "account.domain_blocking": "רשימת השרתים החסומים", "account.edit_profile": "עריכת פרופיל", "account.enable_notifications": "שלח לי התראות כש@{name} מפרסם", "account.endorse": "קדם את החשבון בפרופיל", @@ -40,6 +41,7 @@ "account.following": "נעקבים", "account.following_counter": "{count, plural,one {עוקב אחרי {count}}other {עוקב אחרי {counter}}}", "account.follows.empty": "משתמש זה עדיין לא עוקב אחרי אף אחד.", + "account.follows_you": "במעקב אחריך", "account.go_to_profile": "מעבר לפרופיל", "account.hide_reblogs": "להסתיר הידהודים מאת @{name}", "account.in_memoriam": "פרופיל זכרון.", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "השתקת התראות", "account.mute_short": "השתקה", "account.muted": "מושתק", - "account.mutual": "הדדיים", + "account.muting": "רשימת החשבונות המושתקים", + "account.mutual": "אתם עוקביםות הדדית", "account.no_bio": "לא סופק תיאור.", "account.open_original_page": "לפתיחת העמוד המקורי", "account.posts": "פוסטים", @@ -62,6 +65,7 @@ "account.report": "דווח על @{name}", "account.requested": "בהמתנה לאישור. לחצי כדי לבטל בקשת מעקב", "account.requested_follow": "{name} ביקשו לעקוב אחריך", + "account.requests_to_follow_you": "ביקשו לעקוב אחריך", "account.share": "שתף את הפרופיל של @{name}", "account.show_reblogs": "הצג הדהודים מאת @{name}", "account.statuses_counter": "{count, plural, one {הודעה אחת} two {הודעותיים} many {{counter} הודעות} other {{counter} הודעות}}", @@ -296,7 +300,9 @@ "emoji_button.search_results": "תוצאות חיפוש", "emoji_button.symbols": "סמלים", "emoji_button.travel": "טיולים ואתרים", - "empty_column.account_featured": "הרשימה ריקה", + "empty_column.account_featured.me": "עוד לא קידמת תכנים. הידעת שניתן לקדם תכני הודעות, תגיות שבשימושך התדיר או אפילו את החשבונות של חבריםות בפרופיל שלך?", + "empty_column.account_featured.other": "{acct} עוד לא קידם תכנים. הידעת שניתן לקדם תכני הודעות, תגיות שבשימושך התדיר או אפילו את החשבונות של חבריםות בפרופיל שלך?", + "empty_column.account_featured_other.unknown": "חשבון זה עוד לא קידם תכנים.", "empty_column.account_hides_collections": "המשתמש.ת בחר.ה להסתיר מידע זה", "empty_column.account_suspended": "חשבון מושעה", "empty_column.account_timeline": "אין עדיין אף הודעה!", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index a3eec9544c..17bb3205a2 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -22,7 +22,6 @@ "account.copy": "प्रोफाइल पर लिंक कॉपी करें", "account.direct": "निजि तरीके से उल्लेख करे @{name}", "account.disable_notifications": "@{name} पोस्ट के लिए मुझे सूचित मत करो", - "account.domain_blocked": "छिपा हुआ डोमेन", "account.edit_profile": "प्रोफ़ाइल संपादित करें", "account.enable_notifications": "जब @{name} पोस्ट मौजूद हो सूचित करें", "account.endorse": "प्रोफ़ाइल पर दिखाए", @@ -48,7 +47,6 @@ "account.mute_notifications_short": "सूचनाओ को शांत करे", "account.mute_short": "शांत करे", "account.muted": "म्यूट है", - "account.mutual": "आपसी", "account.no_bio": "कोई विवरण नहि दिया गया हे", "account.open_original_page": "ओरिजिनल पोस्ट खोलें", "account.posts": "टूट्स", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 38807b28b2..392731d381 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -22,7 +22,6 @@ "account.copy": "Kopiraj vezu u profil", "account.direct": "Privatno spomeni @{name}", "account.disable_notifications": "Nemoj me obavjestiti kada @{name} napravi objavu", - "account.domain_blocked": "Domena je blokirana", "account.edit_profile": "Uredi profil", "account.enable_notifications": "Obavjesti me kada @{name} napravi objavu", "account.endorse": "Istakni na profilu", @@ -47,7 +46,6 @@ "account.mute_notifications_short": "Utišaj obavijesti", "account.mute_short": "Utišaj", "account.muted": "Utišano", - "account.mutual": "Uzajamno", "account.no_bio": "Nije dan opis.", "account.open_original_page": "Otvori originalnu stranicu", "account.posts": "Objave", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index b311dffa72..e8d94d274e 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -19,11 +19,12 @@ "account.block_domain": "Domain letiltása: {domain}", "account.block_short": "Letiltás", "account.blocked": "Letiltva", + "account.blocking": "Tiltás", "account.cancel_follow_request": "Követési kérés visszavonása", "account.copy": "Hivatkozás másolása a profilba", "account.direct": "@{name} személyes említése", "account.disable_notifications": "Ne figyelmeztessen, ha @{name} bejegyzést tesz közzé", - "account.domain_blocked": "Letiltott domain", + "account.domain_blocking": "Domain tiltás", "account.edit_profile": "Profil szerkesztése", "account.enable_notifications": "Figyelmeztessen, ha @{name} bejegyzést tesz közzé", "account.endorse": "Kiemelés a profilodon", @@ -40,6 +41,7 @@ "account.following": "Követve", "account.following_counter": "{count, plural, one {{counter} követett} other {{counter} követett}}", "account.follows.empty": "Ez a felhasználó még senkit sem követ.", + "account.follows_you": "Követ téged", "account.go_to_profile": "Ugrás a profilhoz", "account.hide_reblogs": "@{name} megtolásainak elrejtése", "account.in_memoriam": "Emlékünkben.", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "Értesítések némítása", "account.mute_short": "Némítás", "account.muted": "Némítva", - "account.mutual": "Kölcsönös", + "account.muting": "Némítás", + "account.mutual": "Követitek egymást", "account.no_bio": "Leírás nincs megadva.", "account.open_original_page": "Eredeti oldal megnyitása", "account.posts": "Bejegyzések", @@ -62,6 +65,7 @@ "account.report": "@{name} jelentése", "account.requested": "Jóváhagyásra vár. Kattints a követési kérés visszavonásához", "account.requested_follow": "{name} kérte, hogy követhessen", + "account.requests_to_follow_you": "Kéri, hogy követhessen", "account.share": "@{name} profiljának megosztása", "account.show_reblogs": "@{name} megtolásainak mutatása", "account.statuses_counter": "{count, plural, one {{counter} bejegyzés} other {{counter} bejegyzés}}", @@ -296,7 +300,9 @@ "emoji_button.search_results": "Keresési találatok", "emoji_button.symbols": "Szimbólumok", "emoji_button.travel": "Utazás és helyek", - "empty_column.account_featured": "Ez a lista üres", + "empty_column.account_featured.me": "Még semmit sem emeltél ki. Tudtad, hogy kiemelheted a profilodon a bejegyzéseidet, a legtöbbet használt hashtageidet, és még a barátaid fiókját is?", + "empty_column.account_featured.other": "{acct} még semmit sem emelt ki. Tudtad, hogy kiemelheted a profilodon a bejegyzéseidet, a legtöbbet használt hashtageidet, és még a barátaid fiókját is?", + "empty_column.account_featured_other.unknown": "Ez a fiók még semmit sem emelt ki.", "empty_column.account_hides_collections": "Ez a felhasználó úgy döntött, hogy nem teszi elérhetővé ezt az információt.", "empty_column.account_suspended": "Fiók felfüggesztve", "empty_column.account_timeline": "Itt nincs bejegyzés!", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 9882d575b2..2b159899fe 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -17,7 +17,6 @@ "account.cancel_follow_request": "Withdraw follow request", "account.direct": "Մասնաւոր յիշատակում @{name}", "account.disable_notifications": "Ծանուցումները անջատել @{name} գրառումների համար", - "account.domain_blocked": "Տիրոյթը արգելափակուած է", "account.edit_profile": "Խմբագրել հաշիւը", "account.enable_notifications": "Ծանուցել ինձ @{name} գրառումների մասին", "account.endorse": "Ցուցադրել անձնական էջում", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index 7f4f66796e..f8bdcf033b 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -23,7 +23,6 @@ "account.copy": "Copiar ligamine a profilo", "account.direct": "Mentionar privatemente @{name}", "account.disable_notifications": "Non plus notificar me quando @{name} publica", - "account.domain_blocked": "Dominio blocate", "account.edit_profile": "Modificar profilo", "account.enable_notifications": "Notificar me quando @{name} publica", "account.endorse": "Evidentiar sur le profilo", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Silentiar le notificationes", "account.mute_short": "Silentiar", "account.muted": "Silentiate", - "account.mutual": "Mutue", "account.no_bio": "Nulle description fornite.", "account.open_original_page": "Aperir le pagina original", "account.posts": "Messages", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 102e547d40..7e207d917e 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -23,7 +23,6 @@ "account.copy": "Salin tautan ke profil", "account.direct": "Sebut secara pribadi @{name}", "account.disable_notifications": "Berhenti memberitahu saya ketika @{name} memposting", - "account.domain_blocked": "Domain diblokir", "account.edit_profile": "Ubah profil", "account.enable_notifications": "Beritahu saya saat @{name} memposting", "account.endorse": "Tampilkan di profil", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Senyapkan Notifikasi", "account.mute_short": "Senyapkan", "account.muted": "Dibisukan", - "account.mutual": "Saling ikuti", "account.no_bio": "Tidak ada deskripsi yang diberikan.", "account.open_original_page": "Buka halaman asli", "account.posts": "Kiriman", diff --git a/app/javascript/mastodon/locales/ie.json b/app/javascript/mastodon/locales/ie.json index 7cd463727f..fee3eb681b 100644 --- a/app/javascript/mastodon/locales/ie.json +++ b/app/javascript/mastodon/locales/ie.json @@ -22,7 +22,6 @@ "account.copy": "Copiar ligament al profil", "account.direct": "Privatmen mentionar @{name}", "account.disable_notifications": "Cessa notificar me quande @{name} posta", - "account.domain_blocked": "Dominia bloccat", "account.edit_profile": "Redacter profil", "account.enable_notifications": "Notificar me quande @{name} posta", "account.endorse": "Recomandar sur profil", @@ -48,7 +47,6 @@ "account.mute_notifications_short": "Silentiar notificationes", "account.mute_short": "Silentiar", "account.muted": "Silentiat", - "account.mutual": "Reciproc", "account.no_bio": "Null descrition providet.", "account.open_original_page": "Aperter li págine original", "account.posts": "Postas", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 596ca4c3fe..22b9614569 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -23,7 +23,6 @@ "account.copy": "Kopiez ligilo al profilo", "account.direct": "Private mencionez @{name}", "account.disable_notifications": "Cesez avizar me kande @{name} postas", - "account.domain_blocked": "Domain hidden", "account.edit_profile": "Redaktar profilo", "account.enable_notifications": "Avizez me kande @{name} postas", "account.endorse": "Traito di profilo", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Silencigez avizi", "account.mute_short": "Silencigez", "account.muted": "Silencigata", - "account.mutual": "Mutuala", "account.no_bio": "Deskriptajo ne provizesis.", "account.open_original_page": "Apertez originala pagino", "account.posts": "Mesaji", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 50f31dd623..abe7f34428 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -19,11 +19,12 @@ "account.block_domain": "Útiloka lénið {domain}", "account.block_short": "Útiloka", "account.blocked": "Útilokaður", + "account.blocking": "Útilokun", "account.cancel_follow_request": "Taka fylgjendabeiðni til baka", "account.copy": "Afrita tengil í notandasnið", "account.direct": "Einkaspjall við @{name}", "account.disable_notifications": "Hætta að láta mig vita þegar @{name} sendir inn", - "account.domain_blocked": "Lén útilokað", + "account.domain_blocking": "Útiloka lén", "account.edit_profile": "Breyta notandasniði", "account.enable_notifications": "Láta mig vita þegar @{name} sendir inn", "account.endorse": "Birta á notandasniði", @@ -40,6 +41,7 @@ "account.following": "Fylgist með", "account.following_counter": "{count, plural, one {Fylgist með: {counter}} other {Fylgist með: {counter}}}", "account.follows.empty": "Þessi notandi fylgist ennþá ekki með neinum.", + "account.follows_you": "Fylgir þér", "account.go_to_profile": "Fara í notandasnið", "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}", "account.in_memoriam": "Minning.", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "Þagga í tilkynningum", "account.mute_short": "Þagga niður", "account.muted": "Þaggaður", - "account.mutual": "Sameiginlegir", + "account.muting": "Þöggun", + "account.mutual": "Þið fylgist með hvor öðrum", "account.no_bio": "Engri lýsingu útvegað.", "account.open_original_page": "Opna upprunalega síðu", "account.posts": "Færslur", @@ -62,6 +65,7 @@ "account.report": "Kæra @{name}", "account.requested": "Bíður eftir samþykki. Smelltu til að hætta við beiðni um að fylgjast með", "account.requested_follow": "{name} hefur beðið um að fylgjast með þér", + "account.requests_to_follow_you": "Bað um að fylgjast með þér", "account.share": "Deila notandasniði fyrir @{name}", "account.show_reblogs": "Sýna endurbirtingar frá @{name}", "account.statuses_counter": "{count, plural, one {{counter} færsla} other {{counter} færslur}}", @@ -296,7 +300,6 @@ "emoji_button.search_results": "Leitarniðurstöður", "emoji_button.symbols": "Tákn", "emoji_button.travel": "Ferðalög og staðir", - "empty_column.account_featured": "Þessi listi er tómur", "empty_column.account_hides_collections": "Notandinn hefur valið að gera ekki tiltækar þessar upplýsingar", "empty_column.account_suspended": "Notandaaðgangur í frysti", "empty_column.account_timeline": "Engar færslur hér!", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 55da1c8c11..bf54408327 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -23,7 +23,6 @@ "account.copy": "Copia link del profilo", "account.direct": "Menziona privatamente @{name}", "account.disable_notifications": "Smetti di avvisarmi quando @{name} pubblica un post", - "account.domain_blocked": "Dominio bloccato", "account.edit_profile": "Modifica profilo", "account.enable_notifications": "Avvisami quando @{name} pubblica un post", "account.endorse": "In evidenza sul profilo", @@ -54,7 +53,6 @@ "account.mute_notifications_short": "Silenzia notifiche", "account.mute_short": "Silenzia", "account.muted": "Mutato", - "account.mutual": "Reciproco", "account.no_bio": "Nessuna descrizione fornita.", "account.open_original_page": "Apri la pagina originale", "account.posts": "Post", @@ -296,7 +294,6 @@ "emoji_button.search_results": "Risultati della ricerca", "emoji_button.symbols": "Simboli", "emoji_button.travel": "Viaggi & Luoghi", - "empty_column.account_featured": "Questa lista è vuota", "empty_column.account_hides_collections": "Questo utente ha scelto di non rendere disponibili queste informazioni", "empty_column.account_suspended": "Profilo sospeso", "empty_column.account_timeline": "Nessun post qui!", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 847c479b23..179e922b98 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -23,7 +23,6 @@ "account.copy": "プロフィールへのリンクをコピー", "account.direct": "@{name}さんに非公開でメンション", "account.disable_notifications": "@{name}さんの投稿時の通知を停止", - "account.domain_blocked": "ドメインブロック中", "account.edit_profile": "プロフィール編集", "account.enable_notifications": "@{name}さんの投稿時に通知", "account.endorse": "プロフィールで紹介する", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "通知をオフにする", "account.mute_short": "ミュート", "account.muted": "ミュート済み", - "account.mutual": "相互フォロー中", "account.no_bio": "説明が提供されていません。", "account.open_original_page": "元のページを開く", "account.posts": "投稿", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index d078ef5cab..6957f82be7 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -8,7 +8,6 @@ "account.block_domain": "დაიმალოს ყველაფერი დომენიდან {domain}", "account.blocked": "დაბლოკილია", "account.cancel_follow_request": "Withdraw follow request", - "account.domain_blocked": "დომენი დამალულია", "account.edit_profile": "პროფილის ცვლილება", "account.endorse": "გამორჩევა პროფილზე", "account.featured_tags.last_status_never": "პოსტების გარეშე", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index bb97a18bd2..9b8eabe64e 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -21,10 +21,11 @@ "account.copy": "Nɣel assaɣ ɣer umaɣnu", "account.direct": "Bder-d @{name} weḥd-s", "account.disable_notifications": "Ḥbes ur iyi-d-ttazen ara ilɣa mi ara d-isuffeɣ @{name}", - "account.domain_blocked": "Taɣult yeffren", "account.edit_profile": "Ẓreg amaɣnu", "account.enable_notifications": "Azen-iyi-d ilɣa mi ara d-isuffeɣ @{name}", "account.endorse": "Welleh fell-as deg umaɣnu-inek", + "account.featured.hashtags": "Ihacṭagen", + "account.featured.posts": "Tisuffaɣ", "account.featured_tags.last_status_at": "Tasuffeɣt taneggarut ass n {date}", "account.featured_tags.last_status_never": "Ulac tisuffaɣ", "account.follow": "Ḍfer", @@ -48,7 +49,6 @@ "account.mute_notifications_short": "Susem ilɣa", "account.mute_short": "Sgugem", "account.muted": "Yettwasgugem", - "account.mutual": "Temṭafarem", "account.no_bio": "Ulac aglam i d-yettunefken.", "account.open_original_page": "Ldi asebter anasli", "account.posts": "Tisuffaɣ", @@ -639,6 +639,7 @@ "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "status.translate": "Suqel", "status.translated_from_with": "Yettwasuqel seg {lang} s {provider}", + "status.uncached_media_warning": "Ulac taskant", "status.unmute_conversation": "Kkes asgugem n udiwenni", "status.unpin": "Kkes asenteḍ seg umaɣnu", "subscribed_languages.save": "Sekles ibeddilen", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index adc3cdc230..db996eac66 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -20,7 +20,6 @@ "account.blocked": "Бұғатталған", "account.cancel_follow_request": "Withdraw follow request", "account.disable_notifications": "@{name} постары туралы ескертпеу", - "account.domain_blocked": "Домен бұғатталған", "account.edit_profile": "Профильді өңдеу", "account.enable_notifications": "@{name} постары туралы ескерту", "account.endorse": "Профильде ұсыну", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index c7ba9e3916..5ab8c374f8 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -9,7 +9,6 @@ "account.badges.group": "ಗುಂಪು", "account.block_domain": "Hide everything from {domain}", "account.cancel_follow_request": "Withdraw follow request", - "account.domain_blocked": "Domain hidden", "account.follow": "ಹಿಂಬಾಲಿಸಿ", "account.followers": "ಹಿಂಬಾಲಕರು", "account.posts": "ಟೂಟ್‌ಗಳು", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 544278e519..111c78db0f 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -23,7 +23,6 @@ "account.copy": "프로필 링크 복사", "account.direct": "@{name} 님에게 개인적으로 멘션", "account.disable_notifications": "@{name} 의 게시물 알림 끄기", - "account.domain_blocked": "도메인 차단함", "account.edit_profile": "프로필 편집", "account.enable_notifications": "@{name} 의 게시물 알림 켜기", "account.endorse": "프로필에 추천하기", @@ -54,7 +53,6 @@ "account.mute_notifications_short": "알림 뮤트", "account.mute_short": "뮤트", "account.muted": "뮤트됨", - "account.mutual": "맞팔로우 중", "account.no_bio": "제공된 설명이 없습니다.", "account.open_original_page": "원본 페이지 열기", "account.posts": "게시물", @@ -296,7 +294,6 @@ "emoji_button.search_results": "검색 결과", "emoji_button.symbols": "기호", "emoji_button.travel": "여행과 장소", - "empty_column.account_featured": "목록이 비어있습니다", "empty_column.account_hides_collections": "이 사용자는 이 정보를 사용할 수 없도록 설정했습니다", "empty_column.account_suspended": "계정 정지됨", "empty_column.account_timeline": "이곳에는 게시물이 없습니다!", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 23ee9fc932..99474a1330 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -23,7 +23,6 @@ "account.copy": "Girêdanê bo profîlê jê bigire", "account.direct": "Bi taybetî qale @{name} bike", "account.disable_notifications": "Êdî min agahdar neke gava @{name} diweşîne", - "account.domain_blocked": "Navper hate astengkirin", "account.edit_profile": "Profîlê serrast bike", "account.enable_notifications": "Min agahdar bike gava @{name} diweşîne", "account.endorse": "Taybetiyên li ser profîl", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Agahdariyan bêdeng bike", "account.mute_short": "Bêdeng bike", "account.muted": "Bêdengkirî", - "account.mutual": "Hevpar", "account.no_bio": "Ti danasîn nehatiye tevlîkirin.", "account.open_original_page": "Rûpela resen veke", "account.posts": "Şandî", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 2cd7a3eb0e..6c3556af45 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -8,7 +8,6 @@ "account.blocked": "Lettys", "account.cancel_follow_request": "Withdraw follow request", "account.disable_notifications": "Hedhi ow gwarnya pan wra @{name} postya", - "account.domain_blocked": "Gorfarth lettys", "account.edit_profile": "Golegi profil", "account.enable_notifications": "Gwra ow gwarnya pan wra @{name} postya", "account.endorse": "Diskwedhes yn profil", diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json index c6e5d85c07..a13e1d1961 100644 --- a/app/javascript/mastodon/locales/la.json +++ b/app/javascript/mastodon/locales/la.json @@ -20,7 +20,6 @@ "account.block_short": "Imperire", "account.blocked": "Impeditum est", "account.cancel_follow_request": "Petitio sequī retrāhere", - "account.domain_blocked": "Dominium impeditum", "account.edit_profile": "Recolere notionem", "account.featured_tags.last_status_never": "Nulla contributa", "account.followers_counter": "{count, plural, one {{counter} sectator} other {{counter} sectatores}}", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index f67ef676ad..7846a05b41 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -23,7 +23,6 @@ "account.copy": "Kopia atadijo de profil", "account.direct": "Enmenta a @{name} en privado", "account.disable_notifications": "Desha de avizarme sovre publikasyones de @{name}", - "account.domain_blocked": "Domeno blokado", "account.edit_profile": "Edita profil", "account.enable_notifications": "Avizame kuando @{name} publike", "account.endorse": "Avalia en profil", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Silensia avizos", "account.mute_short": "Silensia", "account.muted": "Silensiado", - "account.mutual": "Mutual", "account.no_bio": "No ay deskripsion.", "account.open_original_page": "Avre pajina orijnala", "account.posts": "Publikasyones", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 774975122a..74ad1eb020 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -23,7 +23,6 @@ "account.copy": "Kopijuoti nuorodą į profilį", "account.direct": "Privačiai paminėti @{name}", "account.disable_notifications": "Nustoti man pranešti, kai @{name} paskelbia", - "account.domain_blocked": "Užblokuotas serveris", "account.edit_profile": "Redaguoti profilį", "account.enable_notifications": "Pranešti man, kai @{name} paskelbia", "account.endorse": "Rodyti profilyje", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Nutildyti pranešimus", "account.mute_short": "Nutildyti", "account.muted": "Nutildytas", - "account.mutual": "Bendri", "account.no_bio": "Nėra pateikto aprašymo.", "account.open_original_page": "Atidaryti originalų puslapį", "account.posts": "Įrašai", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 27760c59ff..57886f649b 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -23,7 +23,6 @@ "account.copy": "Ievietot saiti uz profilu starpliktuvē", "account.direct": "Pieminēt @{name} privāti", "account.disable_notifications": "Pārtraukt man paziņot, kad @{name} publicē ierakstu", - "account.domain_blocked": "Domēns ir bloķēts", "account.edit_profile": "Labot profilu", "account.enable_notifications": "Paziņot man, kad @{name} publicē ierakstu", "account.endorse": "Izcelts profilā", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Izslēgt paziņojumu skaņu", "account.mute_short": "Apklusināt", "account.muted": "Apklusināts", - "account.mutual": "Abpusēji", "account.no_bio": "Apraksts nav sniegts.", "account.open_original_page": "Atvērt pirmavota lapu", "account.posts": "Ieraksti", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 63851de700..0c55e39cfc 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -17,7 +17,6 @@ "account.block_domain": "Сокријај се од {domain}", "account.blocked": "Блокиран", "account.cancel_follow_request": "Withdraw follow request", - "account.domain_blocked": "Скриен домен", "account.edit_profile": "Измени профил", "account.endorse": "Карактеристики на профилот", "account.follow": "Следи", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index b865f1aa6e..db857850b5 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -17,7 +17,6 @@ "account.copy": "രൂപരേഖയിന്റെ വിലാസം പകർത്തുക", "account.direct": "സ്വകാരൃമായിട്ടു് @{name}-ന് സൂചനപിക്കുക", "account.disable_notifications": "@{name} പോസ്റ്റുചെയ്യുന്നത് എന്നെ അറിയിക്കുന്നത് നിർത്തുക", - "account.domain_blocked": "മേഖല തടഞ്ഞു", "account.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക", "account.enable_notifications": "@{name} പോസ്റ്റ് ചെയ്യുമ്പോൾ എന്നെ അറിയിക്കുക", "account.endorse": "പ്രൊഫൈലിൽ പ്രകടമാക്കുക", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 919a34532f..7d98142887 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -22,7 +22,6 @@ "account.copy": "दुवा कॉपी करा", "account.direct": "खाजगीरित्या उल्लेखीत @{name}", "account.disable_notifications": "जेव्हा @{name} पोस्ट करतात तेव्हा मला सूचित करणे थांबवा", - "account.domain_blocked": "Domain hidden", "account.edit_profile": "प्रोफाइल एडिट करा", "account.enable_notifications": "जेव्हा @{name} पोस्ट करते तेव्हा मला सूचित करा", "account.endorse": "प्रोफाइलवरील वैशिष्ट्य", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 483261da6b..825c9590e9 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -23,7 +23,6 @@ "account.copy": "Salin pautan ke profil", "account.direct": "Sebut secara persendirian @{name}", "account.disable_notifications": "Berhenti maklumkan saya apabila @{name} mengirim hantaran", - "account.domain_blocked": "Domain disekat", "account.edit_profile": "Sunting profil", "account.enable_notifications": "Maklumi saya apabila @{name} mengirim hantaran", "account.endorse": "Tampilkan di profil", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Redamkan pemberitahuan", "account.mute_short": "Redam", "account.muted": "Diredamkan", - "account.mutual": "Rakan kongsi", "account.no_bio": "Tiada penerangan diberikan.", "account.open_original_page": "Buka halaman asal", "account.posts": "Hantaran", @@ -284,7 +282,6 @@ "emoji_button.search_results": "Hasil carian", "emoji_button.symbols": "Simbol", "emoji_button.travel": "Kembara & Tempat", - "empty_column.account_featured": "Senarai ini kosong", "empty_column.account_hides_collections": "Pengguna ini telah memilih untuk tidak menyediakan informasi tersebut", "empty_column.account_suspended": "Akaun digantung", "empty_column.account_timeline": "Tiada hantaran di sini!", diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json index 362537edeb..fa488abdd7 100644 --- a/app/javascript/mastodon/locales/my.json +++ b/app/javascript/mastodon/locales/my.json @@ -22,7 +22,6 @@ "account.copy": "လင့်ခ်ကို ပရိုဖိုင်သို့ ကူးယူပါ", "account.direct": "@{name} သီးသန့် သိရှိနိုင်အောင် မန်းရှင်းခေါ်မည်", "account.disable_notifications": "@{name} ပို့စ်တင်သည့်အခါ ကျွန်ုပ်ထံ အသိပေးခြင်း မပြုလုပ်ရန်။", - "account.domain_blocked": "ဒိုမိန်း ပိတ်ပင်ထားခဲ့သည်", "account.edit_profile": "ကိုယ်ရေးမှတ်တမ်းပြင်ဆင်မည်", "account.enable_notifications": "@{name} ပို့စ်တင်သည့်အခါ ကျွန်ုပ်ကို အကြောင်းကြားပါ။", "account.endorse": "အကောင့်ပရိုဖိုင်တွင်ဖော်ပြပါ", diff --git a/app/javascript/mastodon/locales/nan.json b/app/javascript/mastodon/locales/nan.json index 2c5af1d406..867b371bd8 100644 --- a/app/javascript/mastodon/locales/nan.json +++ b/app/javascript/mastodon/locales/nan.json @@ -23,7 +23,6 @@ "account.copy": "Khóo-pih kàu個人資料ê連結", "account.direct": "私人提起 @{name}", "account.disable_notifications": "停止佇 {name} PO文ê時通知我", - "account.domain_blocked": "封鎖ê網域", "account.edit_profile": "編輯個人資料", "account.enable_notifications": "佇 {name} PO文ê時通知我", "account.endorse": "用個人資料推薦對方", @@ -54,7 +53,6 @@ "account.mute_notifications_short": "Kā通知消音", "account.mute_short": "消音", "account.muted": "消音ah", - "account.mutual": "相跟tuè", "account.no_bio": "Bô提供敘述。", "account.open_original_page": "開原來ê頁", "account.posts": "PO文", @@ -296,7 +294,6 @@ "emoji_button.search_results": "Tshiau-tshuē ê結果", "emoji_button.symbols": "符號", "emoji_button.travel": "旅行kap地點", - "empty_column.account_featured": "Tsit ê列單是空ê", "empty_column.account_hides_collections": "Tsit位用者選擇無愛公開tsit ê資訊", "empty_column.account_suspended": "口座已經受停止", "empty_column.account_timeline": "Tsia無PO文!", diff --git a/app/javascript/mastodon/locales/ne.json b/app/javascript/mastodon/locales/ne.json index af2c922cbd..3cc33e95ca 100644 --- a/app/javascript/mastodon/locales/ne.json +++ b/app/javascript/mastodon/locales/ne.json @@ -20,7 +20,6 @@ "account.copy": "प्रोफाइलको लिङ्क प्रतिलिपि गर्नुहोस्", "account.direct": "@{name} लाई निजी रूपमा उल्लेख गर्नुहोस्", "account.disable_notifications": "@{name} ले पोस्ट गर्दा मलाई सूचित नगर्नुहोस्", - "account.domain_blocked": "डोमेन ब्लक गरिएको छ", "account.edit_profile": "प्रोफाइल सम्पादन गर्नुहोस्", "account.enable_notifications": "@{name} ले पोस्ट गर्दा मलाई सूचित गर्नुहोस्", "account.endorse": "प्रोफाइलमा फिचर गर्नुहोस्", @@ -43,7 +42,6 @@ "account.mute_notifications_short": "सूचनाहरू म्यूट गर्नुहोस्", "account.mute_short": "म्युट", "account.muted": "म्युट गरिएको", - "account.mutual": "आपसी", "account.no_bio": "कुनै विवरण प्रदान गरिएको छैन।", "account.posts": "पोस्टहरू", "account.posts_with_replies": "पोस्ट र जवाफहरू", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index a2deb6fa75..0e10eb93b9 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -19,11 +19,12 @@ "account.block_domain": "Alles van {domain} blokkeren", "account.block_short": "Blokkeren", "account.blocked": "Geblokkeerd", + "account.blocking": "Blokkeren", "account.cancel_follow_request": "Ontvolgen", "account.copy": "Link naar profiel kopiëren", "account.direct": "@{name} een privébericht sturen", "account.disable_notifications": "Geen melding meer geven wanneer @{name} een bericht plaatst", - "account.domain_blocked": "Domein geblokkeerd", + "account.domain_blocking": "Domein blokkeren", "account.edit_profile": "Profiel bewerken", "account.enable_notifications": "Geef een melding wanneer @{name} een bericht plaatst", "account.endorse": "Op profiel weergeven", @@ -40,6 +41,7 @@ "account.following": "Volgend", "account.following_counter": "{count, plural, one {{counter} volgend} other {{counter} volgend}}", "account.follows.empty": "Deze gebruiker volgt nog niemand of heeft deze verborgen.", + "account.follows_you": "Volgt jou", "account.go_to_profile": "Ga naar profiel", "account.hide_reblogs": "Boosts van @{name} verbergen", "account.in_memoriam": "In memoriam.", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "Meldingen negeren", "account.mute_short": "Negeren", "account.muted": "Genegeerd", - "account.mutual": "Jullie volgen elkaar", + "account.muting": "Dempen", + "account.mutual": "Je volgt elkaar", "account.no_bio": "Geen beschrijving opgegeven.", "account.open_original_page": "Originele pagina openen", "account.posts": "Berichten", @@ -62,6 +65,7 @@ "account.report": "@{name} rapporteren", "account.requested": "Wachten op goedkeuring. Klik om het volgverzoek te annuleren", "account.requested_follow": "{name} wil je graag volgen", + "account.requests_to_follow_you": "Verzoeken om je te volgen", "account.share": "Account van @{name} delen", "account.show_reblogs": "Boosts van @{name} tonen", "account.statuses_counter": "{count, plural, one {{counter} bericht} other {{counter} berichten}}", @@ -296,7 +300,9 @@ "emoji_button.search_results": "Zoekresultaten", "emoji_button.symbols": "Symbolen", "emoji_button.travel": "Reizen en locaties", - "empty_column.account_featured": "Deze lijst is leeg", + "empty_column.account_featured.me": "Je hebt nog niets uitgelicht. Wist je dat je je berichten, hashtags die je het meest gebruikt en zelfs de accounts van je vrienden kunt vermelden op je profiel?", + "empty_column.account_featured.other": "{acct} heeft nog niets uitgelicht. Wist je dat je je berichten, hashtags die je het meest gebruikt en zelfs de accounts van je vrienden kunt vermelden op je profiel?", + "empty_column.account_featured_other.unknown": "Dit account heeft nog niets uitgelicht.", "empty_column.account_hides_collections": "Deze gebruiker heeft ervoor gekozen deze informatie niet beschikbaar te maken", "empty_column.account_suspended": "Account opgeschort", "empty_column.account_timeline": "Hier zijn geen berichten!", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 492ce929fc..c982075d2b 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -23,7 +23,6 @@ "account.copy": "Kopier lenka til profilen", "account.direct": "Nevn @{name} privat", "account.disable_notifications": "Slutt å varsle meg når @{name} skriv innlegg", - "account.domain_blocked": "Domenet er sperra", "account.edit_profile": "Rediger profil", "account.enable_notifications": "Varsle meg når @{name} skriv innlegg", "account.endorse": "Vis på profilen", @@ -54,7 +53,6 @@ "account.mute_notifications_short": "Demp varslingar", "account.mute_short": "Demp", "account.muted": "Målbunden", - "account.mutual": "Felles", "account.no_bio": "Inga skildring er gjeven.", "account.open_original_page": "Opne originalsida", "account.posts": "Tut", @@ -296,7 +294,6 @@ "emoji_button.search_results": "Søkeresultat", "emoji_button.symbols": "Symbol", "emoji_button.travel": "Reise & stader", - "empty_column.account_featured": "Denne lista er tom", "empty_column.account_hides_collections": "Denne brukaren har valt å ikkje gjere denne informasjonen tilgjengeleg", "empty_column.account_suspended": "Kontoen er utestengd", "empty_column.account_timeline": "Ingen tut her!", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index a18ccdc0dc..2df9216b1a 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -23,7 +23,6 @@ "account.copy": "Kopier lenke til profil", "account.direct": "Nevn @{name} privat", "account.disable_notifications": "Slutt å varsle meg når @{name} legger ut innlegg", - "account.domain_blocked": "Domene blokkert", "account.edit_profile": "Rediger profil", "account.enable_notifications": "Varsle meg når @{name} legger ut innlegg", "account.endorse": "Vis frem på profilen", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Demp varsler", "account.mute_short": "Demp", "account.muted": "Dempet", - "account.mutual": "Gjensidig", "account.no_bio": "Ingen beskrivelse oppgitt.", "account.open_original_page": "Gå til originalsiden", "account.posts": "Innlegg", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 74ae8fad4d..01c7f4838b 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -20,7 +20,6 @@ "account.copy": "Copiar lo ligam del perfil", "account.direct": "Mencionar @{name} en privat", "account.disable_notifications": "Quitar de m’avisar quand @{name} publica quicòm", - "account.domain_blocked": "Domeni amagat", "account.edit_profile": "Modificar lo perfil", "account.enable_notifications": "M’avisar quand @{name} publica quicòm", "account.endorse": "Mostrar pel perfil", @@ -46,7 +45,6 @@ "account.mute_notifications_short": "Amudir las notificacions", "account.mute_short": "Amudir", "account.muted": "Mes en silenci", - "account.mutual": "Mutual", "account.no_bio": "Cap de descripcion pas fornida.", "account.open_original_page": "Dobrir la pagina d’origina", "account.posts": "Tuts", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index c294bcbddb..9d8b2c46ba 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -15,7 +15,6 @@ "account.cancel_follow_request": "ਫ਼ਾਲੋ ਕਰਨ ਨੂੰ ਰੱਦ ਕਰੋ", "account.copy": "ਪਰੋਫਾਇਲ ਲਈ ਲਿੰਕ ਕਾਪੀ ਕਰੋ", "account.direct": "ਨਿੱਜੀ ਜ਼ਿਕਰ @{name}", - "account.domain_blocked": "ਡੋਮੇਨ ਉੱਤੇ ਪਾਬੰਦੀ", "account.edit_profile": "ਪਰੋਫਾਈਲ ਨੂੰ ਸੋਧੋ", "account.enable_notifications": "ਜਦੋਂ {name} ਪੋਸਟ ਕਰੇ ਤਾਂ ਮੈਨੂੰ ਸੂਚਨਾ ਦਿਓ", "account.endorse": "ਪਰੋਫਾਇਲ ਉੱਤੇ ਫ਼ੀਚਰ", @@ -35,7 +34,6 @@ "account.mute_notifications_short": "ਨੋਟਫਿਕੇਸ਼ਨਾਂ ਨੂੰ ਮੌਨ ਕਰੋ", "account.mute_short": "ਮੌਨ ਕਰੋ", "account.muted": "ਮੌਨ ਕੀਤੀਆਂ", - "account.mutual": "ਸਾਂਝੇ", "account.no_bio": "ਕੋਈ ਵਰਣਨ ਨਹੀਂ ਦਿੱਤਾ।", "account.open_original_page": "ਅਸਲ ਸਫ਼ੇ ਨੂੰ ਖੋਲ੍ਹੋ", "account.posts": "ਪੋਸਟਾਂ", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index ed827bcf29..828879d048 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -23,7 +23,6 @@ "account.copy": "Skopiuj link do profilu", "account.direct": "Napisz bezpośrednio do @{name}", "account.disable_notifications": "Przestań powiadamiać mnie o wpisach @{name}", - "account.domain_blocked": "Ukryto domenę", "account.edit_profile": "Edytuj profil", "account.enable_notifications": "Powiadamiaj mnie o wpisach @{name}", "account.endorse": "Wyróżnij na profilu", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Wycisz powiadomienia", "account.mute_short": "Wycisz", "account.muted": "Wyciszony", - "account.mutual": "Znajomi", "account.no_bio": "Brak opisu.", "account.open_original_page": "Otwórz stronę oryginalną", "account.posts": "Wpisy", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 55cfeea582..2010e3e74d 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -23,7 +23,6 @@ "account.copy": "Copiar link do perfil", "account.direct": "Mencione em privado @{name}", "account.disable_notifications": "Cancelar notificações de @{name}", - "account.domain_blocked": "Domínio bloqueado", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificar novos toots de @{name}", "account.endorse": "Recomendar", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Silenciar notificações", "account.mute_short": "Silenciar", "account.muted": "Silenciado", - "account.mutual": "Mútuo", "account.no_bio": "Nenhuma descrição fornecida.", "account.open_original_page": "Abrir a página original", "account.posts": "Toots", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 87c9e5846a..55ac026cd4 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -23,7 +23,6 @@ "account.copy": "Copiar hiperligação do perfil", "account.direct": "Mencionar @{name} em privado", "account.disable_notifications": "Parar de me notificar das publicações de @{name}", - "account.domain_blocked": "Domínio bloqueado", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificar-me das publicações de @{name}", "account.endorse": "Destacar no perfil", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Ocultar notificações", "account.mute_short": "Ocultar", "account.muted": "Ocultada", - "account.mutual": "Mútuo", "account.no_bio": "Nenhuma descrição fornecida.", "account.open_original_page": "Abrir a página original", "account.posts": "Publicações", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 8fec42bbd0..ca18af81fa 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -23,7 +23,6 @@ "account.copy": "Copiază link-ul profilului", "account.direct": "Menționează pe @{name} în privat", "account.disable_notifications": "Nu îmi mai trimite notificări când postează @{name}", - "account.domain_blocked": "Domeniu blocat", "account.edit_profile": "Modifică profilul", "account.enable_notifications": "Trimite-mi o notificare când postează @{name}", "account.endorse": "Promovează pe profil", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Amuțește notificările", "account.mute_short": "Ignoră", "account.muted": "Pus pe silențios", - "account.mutual": "Mutual", "account.no_bio": "Nicio descriere furnizată.", "account.open_original_page": "Deschide pagina originală", "account.posts": "Postări", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index aaa73f51be..e9831e07be 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -23,7 +23,6 @@ "account.copy": "Копировать ссылку на профиль", "account.direct": "Упомянуть @{name} лично", "account.disable_notifications": "Не уведомлять о постах от @{name}", - "account.domain_blocked": "Домен заблокирован", "account.edit_profile": "Редактировать", "account.enable_notifications": "Уведомлять о постах от @{name}", "account.endorse": "Рекомендовать в профиле", @@ -40,6 +39,7 @@ "account.following": "Подписки", "account.following_counter": "{count, plural, one {# подписка} many {# подписок} other {# подписки}}", "account.follows.empty": "Этот пользователь пока ни на кого не подписался.", + "account.follows_you": "Подписан(а) на вас", "account.go_to_profile": "Перейти к профилю", "account.hide_reblogs": "Скрыть продвижения от @{name}", "account.in_memoriam": "In Memoriam.", @@ -54,7 +54,7 @@ "account.mute_notifications_short": "Отключить уведомления", "account.mute_short": "Игнорировать", "account.muted": "Игнорируется", - "account.mutual": "Взаимные подписки", + "account.mutual": "Вы подписаны друг на друга", "account.no_bio": "Описание профиля отсутствует.", "account.open_original_page": "Открыть исходную страницу", "account.posts": "Посты", @@ -380,6 +380,7 @@ "generic.saved": "Сохранено", "getting_started.heading": "Добро пожаловать", "hashtag.admin_moderation": "Открыть интерфейс модератора для #{name}", + "hashtag.browse": "Посмотреть посты в #{hashtag}", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -770,6 +771,7 @@ "report.unfollow_explanation": "Вы подписаны на этого пользователя. Чтобы не видеть его/её посты в своей домашней ленте, отпишитесь от него/неё.", "report_notification.attached_statuses": "{count, plural, one {{count} сообщение} few {{count} сообщения} many {{count} сообщений} other {{count} сообщений}} вложено", "report_notification.categories.legal": "Нарушение закона", + "report_notification.categories.legal_sentence": "запрещённый контент", "report_notification.categories.other": "Другое", "report_notification.categories.other_sentence": "другое", "report_notification.categories.spam": "Спам", diff --git a/app/javascript/mastodon/locales/ry.json b/app/javascript/mastodon/locales/ry.json index ed9751634e..79f6093e53 100644 --- a/app/javascript/mastodon/locales/ry.json +++ b/app/javascript/mastodon/locales/ry.json @@ -22,7 +22,6 @@ "account.copy": "Зкопіровати удкликованя на профіл", "account.direct": "Пошептати @{name}", "account.disable_notifications": "Бульше не сповіщати ми коли {name} пише", - "account.domain_blocked": "Домен заблокованый", "account.edit_profile": "Управити профіл", "account.enable_notifications": "Уповістити ня, кой {name} пише", "account.endorse": "Указовати на профілови", @@ -47,7 +46,6 @@ "account.mute_notifications_short": "Стишити голошіня", "account.mute_short": "Стишити", "account.muted": "Стишено", - "account.mutual": "Взайомно", "account.no_bio": "Описа ниє.", "account.open_original_page": "Удоперти ориґіналну сторунку", "account.posts": "Публикації", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index ce88bda740..c32a0d57cf 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -20,7 +20,6 @@ "account.cancel_follow_request": "अनुसरणयाचनामपनय", "account.direct": "गोपनीयरूपेण उल्लेखित-@{name}", "account.disable_notifications": "यदा @{name} स्थापयति तदा माम्मा ज्ञापय", - "account.domain_blocked": "प्रदेशो निषिद्धः", "account.edit_profile": "सम्पाद्यताम्", "account.enable_notifications": "यदा @{name} स्थापयति तदा मां ज्ञापय", "account.endorse": "व्यक्तिगतविवरणे वैशिष्ट्यम्", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 79ef6f6ef5..c28c7f4f8d 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -23,7 +23,6 @@ "account.copy": "Còpia su ligòngiu a su profilu", "account.direct": "Mèntova a @{name} in privadu", "account.disable_notifications": "Non mi notìfiches prus cando @{name} pùblichet messàgios", - "account.domain_blocked": "Domìniu blocadu", "account.edit_profile": "Modìfica profilu", "account.enable_notifications": "Notìfica·mi cando @{name} pùblicat messàgios", "account.endorse": "Cussìgia in su profilu tuo", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Pone is notìficas a sa muda", "account.mute_short": "A sa muda", "account.muted": "A sa muda", - "account.mutual": "Pari-pari", "account.no_bio": "Peruna descritzione frunida.", "account.open_original_page": "Aberi sa pàgina originale", "account.posts": "Publicatziones", diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json index 872a61a8a2..ac037c1464 100644 --- a/app/javascript/mastodon/locales/sco.json +++ b/app/javascript/mastodon/locales/sco.json @@ -19,7 +19,6 @@ "account.blocked": "Dingied", "account.cancel_follow_request": "Resile follae requeest", "account.disable_notifications": "Stap notifyin me whan @{name} posts", - "account.domain_blocked": "Domain dingied", "account.edit_profile": "Edit profile", "account.enable_notifications": "Notify me whan @{name} posts", "account.endorse": "Shaw oan profile", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 7d909dbe1a..ef41d3c7dc 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -12,7 +12,6 @@ "account.block_short": "අවහිර", "account.blocked": "අවහිර කර ඇත", "account.disable_notifications": "@{name} පළ කරන විට මට දැනුම් නොදෙන්න", - "account.domain_blocked": "වසම අවහිර කර ඇත", "account.edit_profile": "පැතිකඩ සංස්කරණය", "account.enable_notifications": "@{name} පළ කරන විට මට දැනුම් දෙන්න", "account.endorse": "පැතිකඩෙහි විශේෂාංගය", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 6cbf799328..0a61462efb 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -23,7 +23,6 @@ "account.copy": "Skopírovať odkaz na profil", "account.direct": "Súkromne označiť @{name}", "account.disable_notifications": "Zrušiť upozornenia na príspevky od @{name}", - "account.domain_blocked": "Doména blokovaná", "account.edit_profile": "Upraviť profil", "account.enable_notifications": "Zapnúť upozornenia na príspevky od @{name}", "account.endorse": "Zobraziť na vlastnom profile", @@ -52,7 +51,6 @@ "account.mute_notifications_short": "Stíšiť upozornenia", "account.mute_short": "Stíšiť", "account.muted": "Účet stíšený", - "account.mutual": "Spoločné", "account.no_bio": "Nie je uvedený žiadny popis.", "account.open_original_page": "Otvoriť pôvodnú stránku", "account.posts": "Príspevky", @@ -264,7 +262,6 @@ "emoji_button.search_results": "Výsledky hľadania", "emoji_button.symbols": "Symboly", "emoji_button.travel": "Cestovanie a miesta", - "empty_column.account_featured": "Tento zoznam je prázdny", "empty_column.account_hides_collections": "Tento účet sa rozhodol túto informáciu nesprístupniť", "empty_column.account_suspended": "Účet bol pozastavený", "empty_column.account_timeline": "Nie sú tu žiadne príspevky.", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index eef20456de..547a910cf3 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -23,7 +23,6 @@ "account.copy": "Kopiraj povezavo do profila", "account.direct": "Zasebno omeni @{name}", "account.disable_notifications": "Ne obveščaj me več, ko ima @{name} novo objavo", - "account.domain_blocked": "Blokirana domena", "account.edit_profile": "Uredi profil", "account.enable_notifications": "Obvesti me, ko ima @{name} novo objavo", "account.endorse": "Izpostavi v profilu", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Utišaj obvestila", "account.mute_short": "Utišaj", "account.muted": "Utišan", - "account.mutual": "Vzajemno", "account.no_bio": "Ni opisa.", "account.open_original_page": "Odpri izvirno stran", "account.posts": "Objave", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index a42a25b374..5586edf450 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -19,11 +19,12 @@ "account.block_domain": "Blloko përkatësinë {domain}", "account.block_short": "Bllokoje", "account.blocked": "E bllokuar", + "account.blocking": "Bllokim", "account.cancel_follow_request": "Tërhiq mbrapsht kërkesë për ndjekje", "account.copy": "Kopjoje lidhjen te profili", "account.direct": "Përmendje private për @{name}", "account.disable_notifications": "Resht së njoftuari mua, kur poston @{name}", - "account.domain_blocked": "Përkatësia u bllokua", + "account.domain_blocking": "Bllokim përkatësie", "account.edit_profile": "Përpunoni profilin", "account.enable_notifications": "Njoftomë, kur poston @{name}", "account.endorse": "Pasqyrojeni në profil", @@ -40,6 +41,7 @@ "account.following": "Ndjekje", "account.following_counter": "{count, plural, one {{counter} i ndjekur} other {{counter} të ndjekur}}", "account.follows.empty": "Ky përdorues ende s’ndjek kënd.", + "account.follows_you": "Ju ndjek", "account.go_to_profile": "Kalo te profili", "account.hide_reblogs": "Fshih përforcime nga @{name}", "account.in_memoriam": "In Memoriam.", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "Mos shfaq njoftime", "account.mute_short": "Mos i shfaq", "account.muted": "Heshtuar", - "account.mutual": "Reciproke", + "account.muting": "Heshtim", + "account.mutual": "Ndiqni njëri-tjetrin", "account.no_bio": "S’u dha përshkrim.", "account.open_original_page": "Hap faqen origjinale", "account.posts": "Mesazhe", @@ -62,6 +65,7 @@ "account.report": "Raportojeni @{name}", "account.requested": "Në pritje të miratimit. Që të anuloni kërkesën për ndjekje, klikojeni", "account.requested_follow": "{name} ka kërkuar t’ju ndjekë", + "account.requests_to_follow_you": "Kërkesa për t’ju ndjekur", "account.share": "Ndajeni profilin e @{name} me të tjerët", "account.show_reblogs": "Shfaq përforcime nga @{name}", "account.statuses_counter": "{count, plural, one {{counter} postim} other {{counter} postime}}", @@ -291,7 +295,9 @@ "emoji_button.search_results": "Përfundime kërkimi", "emoji_button.symbols": "Simbole", "emoji_button.travel": "Udhëtime & Vende", - "empty_column.account_featured": "Kjo listë është e zbrazët", + "empty_column.account_featured.me": "Ende s’keni paraqitur gjë si të zgjedhur. E dinit se mund të përdorni si të tilla në profilin tuaj postime, hashtag-ë që përdorni më shpesh dhe madje llogaritë e shokëve tuaj?", + "empty_column.account_featured.other": "{acct} s’ka gjë si të zgjedhur. E dinit se mund të përdorni si të tilla në profilin tuaj postime, hashtag-ë që përdorni më shpesh dhe madje llogaritë e shokëve tuaj?", + "empty_column.account_featured_other.unknown": "Kjo llogari s’ka ende gjë të zgjedhur.", "empty_column.account_hides_collections": "Ky përdorues ka zgjedhur të mos e japë këtë informacion", "empty_column.account_suspended": "Llogaria u pezullua", "empty_column.account_timeline": "S’ka mesazhe këtu!", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 2d00533e0e..06aac93189 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -22,7 +22,6 @@ "account.copy": "Kopiraj vezu u profil", "account.direct": "Privatno pomeni @{name}", "account.disable_notifications": "Zaustavi obaveštavanje za objave korisnika @{name}", - "account.domain_blocked": "Domen je blokiran", "account.edit_profile": "Uredi profil", "account.enable_notifications": "Obavesti me kada @{name} objavi", "account.endorse": "Istakni na profilu", @@ -50,7 +49,6 @@ "account.mute_notifications_short": "Isključi obaveštenja", "account.mute_short": "Isključi", "account.muted": "Ignorisan", - "account.mutual": "Zajednički", "account.no_bio": "Nema opisa.", "account.open_original_page": "Otvori originalnu stranicu", "account.posts": "Objave", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index af323bed27..ba972db844 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -22,7 +22,6 @@ "account.copy": "Копирај везу у профил", "account.direct": "Приватно помени @{name}", "account.disable_notifications": "Заустави обавештавање за објаве корисника @{name}", - "account.domain_blocked": "Домен је блокиран", "account.edit_profile": "Уреди профил", "account.enable_notifications": "Обавести ме када @{name} објави", "account.endorse": "Истакни на профилу", @@ -50,7 +49,6 @@ "account.mute_notifications_short": "Искључи обавештења", "account.mute_short": "Искључи", "account.muted": "Игнорисан", - "account.mutual": "Заједнички", "account.no_bio": "Нема описа.", "account.open_original_page": "Отвори оригиналну страницу", "account.posts": "Објаве", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index c23a645135..6af287e6cc 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -23,7 +23,6 @@ "account.copy": "Kopiera länk till profil", "account.direct": "Nämn @{name} privat", "account.disable_notifications": "Sluta meddela mig när @{name} skriver ett inlägg", - "account.domain_blocked": "Domän blockerad", "account.edit_profile": "Redigera profil", "account.enable_notifications": "Notifiera mig när @{name} gör inlägg", "account.endorse": "Visa på profil", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "Stäng av aviseringsljud", "account.mute_short": "Tysta", "account.muted": "Tystad", - "account.mutual": "Ömsesidig", "account.no_bio": "Ingen beskrivning angiven.", "account.open_original_page": "Öppna den ursprungliga sidan", "account.posts": "Inlägg", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index b7b930422c..5250e12a8b 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -15,7 +15,6 @@ "account.block": "Zablokuj @{name}", "account.block_domain": "Zablokuj domena {domain}", "account.cancel_follow_request": "Withdraw follow request", - "account.domain_blocked": "Domena zablokowanŏ", "account.media": "Mydia", "account.mute": "Wycisz @{name}", "account.posts": "Toots", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 69c0029b7f..29446835f6 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -13,7 +13,6 @@ "account.blocked": "முடக்கப்பட்டது", "account.cancel_follow_request": "Withdraw follow request", "account.disable_notifications": "@{name} பதிவிட்டல் எனக்கு தெரியபடுத்த வேண்டாம்", - "account.domain_blocked": "மறைக்கப்பட்டத் தளங்கள்", "account.edit_profile": "சுயவிவரத்தை மாற்று", "account.enable_notifications": "@{name} பதிவிட்டல் எனக்குத் தெரியப்படுத்தவும்", "account.endorse": "சுயவிவரத்தில் வெளிப்படுத்து", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 959c380787..4d50b6cb14 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -5,7 +5,6 @@ "account.block_domain": "{domain} నుంచి అన్నీ దాచిపెట్టు", "account.blocked": "బ్లాక్ అయినవి", "account.cancel_follow_request": "Withdraw follow request", - "account.domain_blocked": "డొమైన్ దాచిపెట్టబడినది", "account.edit_profile": "ప్రొఫైల్ని సవరించండి", "account.endorse": "ప్రొఫైల్లో చూపించు", "account.follow": "అనుసరించు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 429d0db428..a3143c26f0 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -23,7 +23,6 @@ "account.copy": "คัดลอกลิงก์ไปยังโปรไฟล์", "account.direct": "กล่าวถึง @{name} แบบส่วนตัว", "account.disable_notifications": "หยุดแจ้งเตือนฉันเมื่อ @{name} โพสต์", - "account.domain_blocked": "ปิดกั้นโดเมนอยู่", "account.edit_profile": "แก้ไขโปรไฟล์", "account.enable_notifications": "แจ้งเตือนฉันเมื่อ @{name} โพสต์", "account.endorse": "แสดงในโปรไฟล์", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "ซ่อนการแจ้งเตือน", "account.mute_short": "ซ่อน", "account.muted": "ซ่อนอยู่", - "account.mutual": "คนที่มีร่วมกัน", "account.no_bio": "ไม่ได้ให้คำอธิบาย", "account.open_original_page": "เปิดหน้าดั้งเดิม", "account.posts": "โพสต์", diff --git a/app/javascript/mastodon/locales/tok.json b/app/javascript/mastodon/locales/tok.json index 08ce6fd324..81a2c9bbbc 100644 --- a/app/javascript/mastodon/locales/tok.json +++ b/app/javascript/mastodon/locales/tok.json @@ -23,7 +23,6 @@ "account.copy": "o pali same e linja pi lipu jan", "account.direct": "len la o mu e @{name}", "account.disable_notifications": "@{name} li toki la o mu ala e mi", - "account.domain_blocked": "sina wile ala lukin e ma ni", "account.edit_profile": "o ante e lipu mi", "account.enable_notifications": "@{name} li toki la o toki e toki ona tawa mi", "account.endorse": "lipu jan la o suli e ni", @@ -51,7 +50,6 @@ "account.mute_notifications_short": "o kute ala e mu tan jan ni", "account.mute_short": "o kute ala", "account.muted": "sina kute ala e jan ni", - "account.mutual": "jan pona sona", "account.no_bio": "lipu li weka.", "account.open_original_page": "o open e lipu open", "account.posts": "toki suli", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index 1f703e0748..edc7b3db72 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -19,11 +19,12 @@ "account.block_domain": "{domain} alan adını engelle", "account.block_short": "Engelle", "account.blocked": "Engellendi", + "account.blocking": "Engelleme", "account.cancel_follow_request": "Takip isteğini geri çek", "account.copy": "Gönderi bağlantısını kopyala", "account.direct": "@{name} kullanıcısına özel olarak değin", "account.disable_notifications": "@{name} kişisinin gönderi bildirimlerini kapat", - "account.domain_blocked": "Alan adı engellendi", + "account.domain_blocking": "Alan adını engelleme", "account.edit_profile": "Profili düzenle", "account.enable_notifications": "@{name} kişisinin gönderi bildirimlerini aç", "account.endorse": "Profilimde öne çıkar", @@ -40,6 +41,7 @@ "account.following": "Takip Ediliyor", "account.following_counter": "{count, plural, one {{counter} takip edilen} other {{counter} takip edilen}}", "account.follows.empty": "Bu kullanıcı henüz kimseyi takip etmiyor.", + "account.follows_you": "Seni takip ediyor", "account.go_to_profile": "Profile git", "account.hide_reblogs": "@{name} kişisinin boostlarını gizle", "account.in_memoriam": "Hatırasına.", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "Bildirimleri sessize al", "account.mute_short": "Sessize al", "account.muted": "Susturuldu", - "account.mutual": "Karşılıklı", + "account.muting": "Sessize alınıyor", + "account.mutual": "Birbirinizi takip ediyorsunuz", "account.no_bio": "Herhangi bir açıklama belirtilmedi.", "account.open_original_page": "Asıl sayfayı aç", "account.posts": "Gönderiler", @@ -62,6 +65,7 @@ "account.report": "@{name} adlı kişiyi bildir", "account.requested": "Onay bekleniyor. Takip isteğini iptal etmek için tıklayın", "account.requested_follow": "{name} size takip isteği gönderdi", + "account.requests_to_follow_you": "Size takip isteği gönderdi", "account.share": "@{name} adlı kişinin profilini paylaş", "account.show_reblogs": "@{name} kişisinin yeniden paylaşımlarını göster", "account.statuses_counter": "{count, plural, one {{counter} gönderi} other {{counter} gönderi}}", @@ -296,7 +300,9 @@ "emoji_button.search_results": "Arama sonuçları", "emoji_button.symbols": "Semboller", "emoji_button.travel": "Seyahat ve Yerler", - "empty_column.account_featured": "Bu liste boş", + "empty_column.account_featured.me": "Henüz hiçbir şeyi öne çıkarmadınız. Gönderilerinizi, en çok kullandığınız etiketleri ve hatta arkadaşlarınızın hesaplarını profilinizde öne çıkarabileceğinizi biliyor muydunuz?", + "empty_column.account_featured.other": "{acct} henüz hiçbir şeyi öne çıkarmadı. Gönderilerinizi, en çok kullandığınız etiketleri ve hatta arkadaşlarınızın hesaplarını profilinizde öne çıkarabileceğinizi biliyor muydunuz?", + "empty_column.account_featured_other.unknown": "Bu hesap henüz hiçbir şeyi öne çıkarmadı.", "empty_column.account_hides_collections": "Bu kullanıcı bu bilgiyi sağlamayı tercih etmemiştir", "empty_column.account_suspended": "Hesap askıya alındı", "empty_column.account_timeline": "Burada hiç gönderi yok!", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index ee50180ced..39abff4503 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -21,7 +21,6 @@ "account.cancel_follow_request": "Киләсе сорау", "account.copy": "Профиль сылтамасын күчереп ал", "account.disable_notifications": "@{name} язулары өчен белдерүләр сүндерү", - "account.domain_blocked": "Домен блокланган", "account.edit_profile": "Профильне үзгәртү", "account.enable_notifications": "@{name} язулары өчен белдерүләр яндыру", "account.endorse": "Профильдә тәкъдим итү", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 6d37e0e1db..ffb96b816c 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -23,7 +23,6 @@ "account.copy": "Копіювати посилання на профіль", "account.direct": "Особиста згадка @{name}", "account.disable_notifications": "Не повідомляти мене про дописи @{name}", - "account.domain_blocked": "Домен заблоковано", "account.edit_profile": "Редагувати профіль", "account.enable_notifications": "Повідомляти мене про дописи @{name}", "account.endorse": "Рекомендувати у моєму профілі", @@ -40,6 +39,7 @@ "account.following": "Ви стежите", "account.following_counter": "{count, plural, one {{counter} підписка} few {{counter} підписки} many {{counter} підписок} other {{counter} підписка}}", "account.follows.empty": "Цей користувач ще ні на кого не підписався.", + "account.follows_you": "Підписаний(-а) на вас", "account.go_to_profile": "Перейти до профілю", "account.hide_reblogs": "Сховати поширення від @{name}", "account.in_memoriam": "Пам'ятник.", @@ -54,7 +54,6 @@ "account.mute_notifications_short": "Не сповіщати", "account.mute_short": "Ігнорувати", "account.muted": "Приховується", - "account.mutual": "Взаємно", "account.no_bio": "Немає опису.", "account.open_original_page": "Відкрити оригінальну сторінку", "account.posts": "Дописи", @@ -296,7 +295,6 @@ "emoji_button.search_results": "Результати пошуку", "emoji_button.symbols": "Символи", "emoji_button.travel": "Подорожі та місця", - "empty_column.account_featured": "Список порожній", "empty_column.account_hides_collections": "Цей користувач вирішив не робити цю інформацію доступною", "empty_column.account_suspended": "Обліковий запис заблоковано", "empty_column.account_timeline": "Тут немає дописів!", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index e28ad93828..706541ffb9 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -16,7 +16,6 @@ "account.cancel_follow_request": "Withdraw follow request", "account.direct": "نجی طور پر @{name} کا ذکر کریں", "account.disable_notifications": "جب @{name} پوسٹ کرے تو مجھ مطلع نہ کریں", - "account.domain_blocked": "پوشیدہ ڈومین", "account.edit_profile": "مشخص ترمیم کریں", "account.enable_notifications": "جب @{name} پوسٹ کرے تو مجھ مطلع کریں", "account.endorse": "مشکص پر نمایاں کریں", @@ -42,7 +41,6 @@ "account.mute_notifications_short": "نوٹیفیکیشنز کو خاموش کریں", "account.mute_short": "خاموش", "account.muted": "خاموش کردہ", - "account.mutual": "میوچول اکاؤنٹ", "account.no_bio": "کوئی تفصیل نہیں دی گئی۔", "account.open_original_page": "اصل صفحہ کھولیں", "account.posts": "ٹوٹ", diff --git a/app/javascript/mastodon/locales/uz.json b/app/javascript/mastodon/locales/uz.json index 6dd350651d..92673f9044 100644 --- a/app/javascript/mastodon/locales/uz.json +++ b/app/javascript/mastodon/locales/uz.json @@ -19,7 +19,6 @@ "account.blocked": "Bloklangan", "account.cancel_follow_request": "Kuzatuv so‘rovini bekor qilish", "account.disable_notifications": "@{name} post qo‘yganida menga xabar berishni to‘xtating", - "account.domain_blocked": "Domen bloklangan", "account.edit_profile": "Profilni tahrirlash", "account.enable_notifications": "@{name} post qo‘yganida menga xabar olish", "account.endorse": "Profildagi xususiyat", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index cabf3a5a82..1e435af2a3 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -19,15 +19,16 @@ "account.block_domain": "Chặn mọi thứ từ {domain}", "account.block_short": "Chặn", "account.blocked": "Đã chặn", + "account.blocking": "Đang chặn", "account.cancel_follow_request": "Thu hồi yêu cầu theo dõi", "account.copy": "Sao chép địa chỉ", "account.direct": "Nhắn riêng @{name}", "account.disable_notifications": "Tắt thông báo khi @{name} đăng tút", - "account.domain_blocked": "Tên miền đã chặn", + "account.domain_blocking": "Máy chủ đang chủ", "account.edit_profile": "Sửa hồ sơ", "account.enable_notifications": "Nhận thông báo khi @{name} đăng tút", "account.endorse": "Tôn vinh người này", - "account.featured": "Nổi bật", + "account.featured": "Nêu bật", "account.featured.hashtags": "Hashtag", "account.featured.posts": "Tút", "account.featured_tags.last_status_at": "Tút gần nhất {date}", @@ -40,6 +41,7 @@ "account.following": "Đang theo dõi", "account.following_counter": "{count, plural, other {{counter} Đang theo dõi}}", "account.follows.empty": "Người này chưa theo dõi ai.", + "account.follows_you": "Đang theo dõi bạn", "account.go_to_profile": "Xem hồ sơ", "account.hide_reblogs": "Ẩn tút @{name} đăng lại", "account.in_memoriam": "Tưởng Niệm.", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "Ẩn thông báo", "account.mute_short": "Ẩn", "account.muted": "Đã ẩn", - "account.mutual": "Đang theo dõi nhau", + "account.muting": "Đang ẩn", + "account.mutual": "Theo dõi nhau", "account.no_bio": "Chưa có miêu tả.", "account.open_original_page": "Mở trang gốc", "account.posts": "Tút", @@ -62,6 +65,7 @@ "account.report": "Báo cáo @{name}", "account.requested": "Đang chờ chấp thuận. Nhấp vào đây để hủy yêu cầu theo dõi", "account.requested_follow": "{name} yêu cầu theo dõi bạn", + "account.requests_to_follow_you": "Yêu cầu theo dõi bạn", "account.share": "Chia sẻ @{name}", "account.show_reblogs": "Hiện tút do @{name} đăng lại", "account.statuses_counter": "{count, plural, other {{counter} Tút}}", @@ -296,7 +300,9 @@ "emoji_button.search_results": "Kết quả tìm kiếm", "emoji_button.symbols": "Biểu tượng", "emoji_button.travel": "Du lịch", - "empty_column.account_featured": "Danh sách trống", + "empty_column.account_featured.me": "Bạn chưa có nội dung nêu bật. Bạn có biết rằng bạn có thể giới thiệu tút, hashtag mà bạn sử dụng nhiều nhất và thậm chí cả tài khoản của bạn bè trên trang cá nhân của mình không?", + "empty_column.account_featured.other": "{acct} chưa nêu bật gì. Bạn có biết rằng bạn có thể giới thiệu tút, hashtag mà bạn sử dụng nhiều nhất và thậm chí cả tài khoản của bạn bè trên trang cá nhân của mình không?", + "empty_column.account_featured_other.unknown": "Người này chưa nêu bật nội dung gì.", "empty_column.account_hides_collections": "Người này đã chọn ẩn thông tin", "empty_column.account_suspended": "Tài khoản vô hiệu hóa", "empty_column.account_timeline": "Chưa có tút nào!", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 334365acbe..48f5f51626 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -6,7 +6,6 @@ "account.block_domain": "ⴳⴷⵍ ⵉⴳⵔ {domain}", "account.blocked": "ⵉⵜⵜⵓⴳⴷⵍ", "account.cancel_follow_request": "Withdraw follow request", - "account.domain_blocked": "ⵉⵜⵜⵓⴳⴷⵍ ⵉⴳⵔ", "account.edit_profile": "ⵙⵏⴼⵍ ⵉⴼⵔⵙ", "account.follow": "ⴹⴼⵕ", "account.followers": "ⵉⵎⴹⴼⴰⵕⵏ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index fc3f914e6a..90c689289e 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -19,11 +19,12 @@ "account.block_domain": "屏蔽 {domain} 实例", "account.block_short": "屏蔽", "account.blocked": "已屏蔽", + "account.blocking": "屏蔽中", "account.cancel_follow_request": "撤回关注请求", "account.copy": "复制个人资料链接", "account.direct": "私下提及 @{name}", "account.disable_notifications": "当 @{name} 发布嘟文时不要通知我", - "account.domain_blocked": "域名已屏蔽", + "account.domain_blocking": "正在屏蔽中的域名", "account.edit_profile": "修改个人资料", "account.enable_notifications": "当 @{name} 发布嘟文时通知我", "account.endorse": "在个人资料中推荐此用户", @@ -40,6 +41,7 @@ "account.following": "正在关注", "account.following_counter": "{count, plural, other {{counter} 正在关注}}", "account.follows.empty": "此用户目前未关注任何人。", + "account.follows_you": "关注了你", "account.go_to_profile": "前往个人资料页", "account.hide_reblogs": "隐藏来自 @{name} 的转嘟", "account.in_memoriam": "谨此悼念。", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "关闭通知", "account.mute_short": "隐藏", "account.muted": "已隐藏", - "account.mutual": "互相关注", + "account.muting": "正在静音", + "account.mutual": "你们互相关注", "account.no_bio": "未提供描述。", "account.open_original_page": "打开原始页面", "account.posts": "嘟文", @@ -62,6 +65,7 @@ "account.report": "举报 @{name}", "account.requested": "正在等待对方同意。点击取消发送关注请求", "account.requested_follow": "{name} 向你发送了关注请求", + "account.requests_to_follow_you": "请求关注您", "account.share": "分享 @{name} 的个人资料", "account.show_reblogs": "显示来自 @{name} 的转嘟", "account.statuses_counter": "{count, plural, other {{counter} 条嘟文}}", @@ -296,7 +300,6 @@ "emoji_button.search_results": "搜索结果", "emoji_button.symbols": "符号", "emoji_button.travel": "旅行与地点", - "empty_column.account_featured": "这个列表为空", "empty_column.account_hides_collections": "该用户选择不公开此信息", "empty_column.account_suspended": "账号已被停用", "empty_column.account_timeline": "这里没有嘟文!", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 493d06b672..745f7a4689 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -23,7 +23,6 @@ "account.copy": "複製個人檔案連結", "account.direct": "私下提及 @{name}", "account.disable_notifications": "當 @{name} 發文時不要再通知我", - "account.domain_blocked": "網域被封鎖", "account.edit_profile": "修改個人檔案", "account.enable_notifications": "當 @{name} 發文時通知我", "account.endorse": "在個人檔案中推薦對方", @@ -50,7 +49,6 @@ "account.mute_notifications_short": "靜音通知", "account.mute_short": "靜音", "account.muted": "靜音", - "account.mutual": "互相追蹤", "account.no_bio": "未提供描述。", "account.open_original_page": "打開原始頁面", "account.posts": "帖文", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 0d37e7f6c5..e3d2170d4f 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -19,11 +19,12 @@ "account.block_domain": "封鎖來自 {domain} 網域的所有內容", "account.block_short": "封鎖", "account.blocked": "已封鎖", + "account.blocking": "封鎖中", "account.cancel_follow_request": "收回跟隨請求", "account.copy": "複製個人檔案連結", "account.direct": " @{name}", "account.disable_notifications": "取消來自 @{name} 嘟文的通知", - "account.domain_blocked": "已封鎖網域", + "account.domain_blocking": "封鎖中網域", "account.edit_profile": "編輯個人檔案", "account.enable_notifications": "當 @{name} 嘟文時通知我", "account.endorse": "於個人檔案推薦對方", @@ -40,6 +41,7 @@ "account.following": "跟隨中", "account.following_counter": "正在跟隨 {count,plural,other {{count} 人}}", "account.follows.empty": "這位使用者尚未跟隨任何人。", + "account.follows_you": "已跟隨您", "account.go_to_profile": "前往個人檔案", "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟", "account.in_memoriam": "謹此悼念。", @@ -54,7 +56,8 @@ "account.mute_notifications_short": "靜音推播通知", "account.mute_short": "靜音", "account.muted": "已靜音", - "account.mutual": "互相跟隨", + "account.muting": "靜音", + "account.mutual": "跟隨彼此", "account.no_bio": "無個人檔案描述。", "account.open_original_page": "檢視原始頁面", "account.posts": "嘟文", @@ -62,6 +65,7 @@ "account.report": "檢舉 @{name}", "account.requested": "正在等候審核。按一下以取消跟隨請求", "account.requested_follow": "{name} 要求跟隨您", + "account.requests_to_follow_you": "要求跟隨您", "account.share": "分享 @{name} 的個人檔案", "account.show_reblogs": "顯示來自 @{name} 的轉嘟", "account.statuses_counter": "{count, plural, other {{count} 則嘟文}}", @@ -296,7 +300,9 @@ "emoji_button.search_results": "搜尋結果", "emoji_button.symbols": "符號", "emoji_button.travel": "旅遊與地點", - "empty_column.account_featured": "此列表為空", + "empty_column.account_featured.me": "您尚未有任何精選內容。您知道您可以將您的嘟文、常用主題標籤、甚至您朋友們的帳號作為您個人檔案上之精選內容嗎?", + "empty_column.account_featured.other": "{acct} 尚未有任何精選內容。您知道您可以將您的嘟文、常用主題標籤、甚至您朋友們的帳號作為您個人檔案上之精選內容嗎?", + "empty_column.account_featured_other.unknown": "此帳號尚未有任何精選內容。", "empty_column.account_hides_collections": "這位使用者選擇不提供此資訊", "empty_column.account_suspended": "帳號已被停權", "empty_column.account_timeline": "這裡還沒有嘟文!", diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 2679c00524..7251167bae 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -518,7 +518,7 @@ cy: created_at: Crëwyd am delete: Dileu ip: Cyfeiriad IP - request_body: Gofyn am y corff + request_body: Corff y cais title: Adalwasau Dadfygio providers: active: Gweithredol @@ -926,7 +926,7 @@ cy: deleted: Dilëwyd favourites: Ffefrynnau history: Hanes fersiynau - in_reply_to: Ymateb i + in_reply_to: Mewn ymateb i language: Iaith media: title: Cyfryngau @@ -1790,7 +1790,7 @@ cy: subject: 'Dilynwr yn aros: %{name}' title: Cais dilynwr newydd mention: - action: Ateb + action: Ymateb body: 'Caswoch eich crybwyll gan %{name} yn:' subject: Cawsoch eich crybwyll gan %{name} title: Crywbylliad newydd @@ -1959,7 +1959,7 @@ cy: back: Nôl i Mastodon delete: Dileu cyfrif development: Datblygu - edit_profile: Golygu proffil + edit_profile: Golygu'r proffil export: Allforio featured_tags: Prif hashnodau import: Mewnforio diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 6c81fe6e25..345b11116f 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -2,7 +2,7 @@ lv: about: about_mastodon_html: 'Nākotnes sabiedriskais tīkls: bez reklāmām, bez korporatīvās novērošanas, ētiska projektēšana un decentralizēšana. Pārvaldi savus datus ar Mastodon!' - contact_missing: Nav uzstādīts + contact_missing: Nav iestatīts contact_unavailable: N/A hosted_on: Mastodon mitināts %{domain} title: Par @@ -368,9 +368,9 @@ lv: new_users: jauni lietotāji opened_reports: atvērtie ziņojumi pending_appeals_html: - one: "%{count} izskatāmā apelācija" - other: "%{count} izskatāmās apelācijas" - zero: "%{count} izskatāmo apelāciju" + one: "%{count} izskatāma pārsūdzība" + other: "%{count} izskatāmas pārsūdzības" + zero: "%{count} izskatāmu pārsūdzību" pending_reports_html: one: "%{count}ziņojums gaida" other: "%{count}ziņojumi gaida" @@ -393,8 +393,8 @@ lv: website: Tīmekļa vietne disputes: appeals: - empty: Apelācijas netika atrastas. - title: Apelācijas + empty: Netika atrasta neviena pārsūdzība. + title: Pārsūdzības domain_allows: add_new: Atļaut federāciju ar domēnu created_msg: Domēns tika sekmīgi atļauts federācijai @@ -757,8 +757,8 @@ lv: invite_users_description: Ļauj lietotājiem uzaicināt jaunus cilvēkus uz šo serveri manage_announcements: Pārvaldīt Paziņojumus manage_announcements_description: Ļauj lietotājiem pārvaldīt paziņojumus serverī - manage_appeals: Pārvaldīt Pārsūdzības - manage_appeals_description: Ļauj lietotājiem pārskatīt iebildumus pret satura pārraudzības darbībām + manage_appeals: Pārvaldīt pārsūdzības + manage_appeals_description: Ļauj lietotājiem pārskatīt pārsūdzības pret satura pārraudzības darbībām manage_blocks: Pārvaldīt Bloķus manage_blocks_description: Ļauj lietotājiem liegt e-pasta pakalpojumu sniedzējus un IP adreses manage_custom_emojis: Pārvaldīt Pielāgotās Emocijzīmes @@ -904,8 +904,8 @@ lv: silence: "%{name} ierobežoja %{target} kontu" suspend: "%{name} apturēja %{target} kontu" appeal_approved: Pārsūdzēts - appeal_pending: Apelācija tiek izskatīta - appeal_rejected: Apelācija noraidīta + appeal_pending: Pārsūdzība gaida izskatīšanu + appeal_rejected: Pārsūdzība noraidīta system_checks: database_schema_check: message_html: Ir nepabeigtas datubāzes migrācijas. Lūgums palaist tās, lai nodrošinātu, ka lietotne darbojas, kā paredzēts @@ -1117,9 +1117,9 @@ lv: sensitive: lai atzīmētu viņu kontu kā jūtīgu silence: lai ierobežotu viņu kontu suspend: lai apturētu viņu kontu - body: "%{target} iebilst %{action_taken_by} satura pārraudzības lēmumam no %{date}, kas bija %{type}. Viņi rakstīja:" - next_steps: Vari apstiprināt iebildumu, lai atsauktu satura pārraudzības lēmumu, vai neņemt to vērā. - subject: "%{username} iebilst satura pārraudzības lēmumam par %{instance}" + body: "%{target} iebilst %{action_taken_by} satura pārraudzības lēmumam no %{date}, kas bija, %{type}. Viņi rakstīja:" + next_steps: Vari apstiprināt pārsūdzību, lai atsauktu satura pārraudzības lēmumu, vai neņemt to vērā. + subject: "%{username} pārsūdz satura pārraudzības lēmumam par %{instance}" new_critical_software_updates: body: Ir izlaistas jaunas Mastodon svarīgās versijas, iespējams, vēlēsies to atjaunināt pēc iespējas ātrāk! subject: "%{instance} ir pieejami svarīgi Mastodon atjauninājumi!" @@ -1183,7 +1183,7 @@ lv: hint_html: Vēl tikai viena lieta! Mums ir jāapstiprina, ka tu esi cilvēks (tas ir tāpēc, lai mēs varētu nepieļaut surogātpasta izsūtīšanu!). Atrisini tālāk norādīto CAPTCHA un noklikšķini uz "Turpināt". title: Drošības pārbaude confirmations: - awaiting_review: E-pasta adrese ir apstiprināta. %{domain} darbinieki tagad pārskata reģistrāciju. Tiks saņemts e-pasta ziņojums, ja viņi apstiprinās kontu. + awaiting_review: E-pasta adrese ir apstiprināta. %{domain} personāls tagad pārskata reģistrāciju. Tiks saņemts e-pasta ziņojums, ja viņi apstiprinās kontu. awaiting_review_title: Tava reģistrācija tiek izskatīta clicking_this_link: klikšķinot šo saiti login_link: pieteikties @@ -1311,19 +1311,19 @@ lv: disputes: strikes: action_taken: Veiktā darbība - appeal: Apelācija + appeal: Pārsūdzēt appeal_approved: Šis brīdinājums tika sekmīgi pārsūdzēts un vairs nav spēkā - appeal_rejected: Apelācija ir noraidīta - appeal_submitted_at: Apelācija iesniegta + appeal_rejected: Pārsūdzība ir noraidīta + appeal_submitted_at: Pārsūdzība iesniegta appealed_msg: Tava pārsūdzība ir iesniegta. Ja tā tiks apstiprināta, Tev tiks paziņots. appeals: - submit: Iesniegt apelāciju - approve_appeal: Apstiprināt apelāciju + submit: Iesniegt pārsūdzību + approve_appeal: Apstiprināt pārsūdzību associated_report: Saistītais ziņojums created_at: Datēts - description_html: Šīs ir darbības, kas veiktas pret Tavu kontu, un brīdinājumi, kurus Tev ir nosūtījuši %{instance} darbinieki. + description_html: Šīs ir darbības, kas veiktas pret Tavu kontu, un brīdinājumi, kurus Tev ir nosūtījuši %{instance} personāls. recipient: Adresēts - reject_appeal: Noraidīt apelāciju + reject_appeal: Noraidīt pārsūdzību status: 'Publikācija #%{id}' status_removed: Publikācija jau ir noņemta no sistēmas title: "%{action} kopš %{date}" @@ -1336,7 +1336,7 @@ lv: silence: Konta ierobežošana suspend: Konta apturēšana your_appeal_approved: Tava pārsūdzība tika apstiprināta - your_appeal_pending: Jūs esat iesniedzis apelāciju + your_appeal_pending: Tu iesniedzi pārsūdzību your_appeal_rejected: Tava pārsūdzība tika noraidīta edit_profile: basic_information: Pamata informācija @@ -1939,7 +1939,7 @@ lv: sensitive_content: Jūtīgs saturs strikes: errors: - too_late: Brīdinājuma apstrīdēšanas laiks ir nokavēts + too_late: Par vēlu pārsūdzēt šo brīdinājumu tags: does_not_match_previous_name: nesakrīt ar iepriekšējo nosaukumu terms_of_service: @@ -1984,12 +1984,12 @@ lv: explanation: Pārsūdzība par brīdinājumu Tavam kontam %{strike_date}, ko iesniedzi %{appeal_date}, ir apstiprināta. Tavs konts atkal ir labā stāvoklī. subject: Tava %{date} iesniegtā pārsūdzība tika apstiprināta subtitle: Tavs konts atkal ir labā stāvoklī. - title: Apelācija apstiprināta + title: Pārsūdzība apstiprināta appeal_rejected: explanation: Pārsūdzība par brīdinājumu Tavam kontam %{strike_date}, ko iesniedzi %{appeal_date}, tika noraidīta. subject: Tava %{date} iesniegta pārsūdzība tika noraidīta subtitle: Tava pārsūdzība tika noraidīta. - title: Apelācija noraidīta + title: Pārsūdzība noraidīta backup_ready: explanation: Tu pieprasīji pilnu sava Mastodon konta rezerves kopiju. extra: Tā tagad ir gatava lejupielādei. @@ -2017,8 +2017,8 @@ lv: subtitle: Mainās %{domain} pakalpojuma izmantošanas noteikumi title: Svarīgs atjauninājums warning: - appeal: Iesniegt apelāciju - appeal_description: Ja uzskatāt, ka tā ir kļūda, varat iesniegt apelāciju %{instance} darbiniekiem. + appeal: Iesniegt pārsūdzību + appeal_description: Ja uzskati, ka tā ir kļūda, vari iesniegt pārsūdzību %{instance} personālam. categories: spam: Spams violation: Saturs pārkāpj šādas kopienas pamatnostādnes diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 1f01f622f5..dca4fff60c 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -496,7 +496,17 @@ ru: title: Импорт доменных блокировок no_file: Файл не выбран fasp: + debug: + callbacks: + delete: Удалить + ip: IP-адрес providers: + base_url: Основной URL + delete: Удалить + registrations: + confirm: Подтвердить + reject: Отклонить + save: Сохранить sign_in: status: Пост follow_recommendations: diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 5fd28497af..5b18be5376 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -75,6 +75,7 @@ zh-CN: filters: action: 选择在嘟文命中过滤规则时要执行的操作 actions: + blur: 将媒体隐藏在警告之后,且不隐藏文字 hide: 选择在嘟文命中过滤规则时要执行的操作 warn: 显示带有过滤规则标题的警告,并隐藏过滤内容 form_admin_settings: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 3b87654041..ec02a126a9 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -496,6 +496,7 @@ zh-CN: save: 保存 sign_in: 登录 status: 状态 + title: FASP follow_recommendations: description_html: "“关注推荐”可帮助新用户快速找到有趣的内容。 当用户与他人的互动不足以形成个性化的建议时,就会推荐关注这些账号。推荐会每日更新,基于选定语言的近期最高互动数和最多本站关注者数综合评估得出。" language: 选择语言 @@ -954,6 +955,7 @@ zh-CN: chance_to_review_html: "服务条款生成后不会自动发布。你可以审核生成的草稿,填写必要的信息后继续操作。" explanation_html: 此服务条款模板仅供参考,不构成法律意见。如有任何法律问题,请咨询法律顾问。 title: 设置服务条款 + going_live_on_html: 目前条款,自 %{date} 生效 history: 历史记录 live: 生效中 no_history: 尚无服务条款变更记录。 @@ -1926,6 +1928,7 @@ zh-CN: terms_of_service_changed: agreement: 继续使用你在 %{domain} 的账号即表示您同意这些条款。如果你不同意更新后的条款,你可以随时删除账号以终止与 %{domain} 的协议。 changelog: 本次更新的要点如下: + description: 你收到此邮件是因为我们更新了 %{domain} 的服务条款。这些更新将于 %{date} 生效。我们建议你在此查看变更后的服务条款: sign_off: "%{domain} 运营团队" subject: 服务条款变更 subtitle: "%{domain} 更新了服务条款" From 3159f3b2f6ed444d4f247c5e7864e4c41ca285df Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 18 Apr 2025 15:54:13 +0200 Subject: [PATCH 012/349] Fix featured hashtags not showing year for date in web UI (#34491) --- .../features/account_featured/components/featured_tag.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/app/javascript/mastodon/features/account_featured/components/featured_tag.tsx b/app/javascript/mastodon/features/account_featured/components/featured_tag.tsx index 7b476ba01d..b9a79ce25e 100644 --- a/app/javascript/mastodon/features/account_featured/components/featured_tag.tsx +++ b/app/javascript/mastodon/features/account_featured/components/featured_tag.tsx @@ -42,6 +42,7 @@ export const FeaturedTag: React.FC = ({ tag, account }) => { date: intl.formatDate(tag.get('last_status_at') ?? '', { month: 'short', day: '2-digit', + year: 'numeric', }), }) : intl.formatMessage(messages.empty) From 20162a821c43293880e2dfda556d185cf3755695 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 10:22:05 +0200 Subject: [PATCH 013/349] chore(deps): update dependency nokogiri to v1.18.8 (#34508) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 0b21e544e6..1c1f752ec3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -446,7 +446,7 @@ GEM net-smtp (0.5.1) net-protocol nio4r (2.7.4) - nokogiri (1.18.7) + nokogiri (1.18.8) mini_portile2 (~> 2.8.2) racc (~> 1.4) oj (3.16.10) From bc32ff9b5784677147e4c8abbfe85bbba5249ab8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 10:22:25 +0200 Subject: [PATCH 014/349] fix(deps): update dependency postcss-preset-env to v10.1.6 (#34505) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 314 +++++++++++++++++++++++++++--------------------------- 1 file changed, 157 insertions(+), 157 deletions(-) diff --git a/yarn.lock b/yarn.lock index 79ffcc5b9e..b70e3fe33c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1471,26 +1471,26 @@ __metadata: languageName: node linkType: hard -"@csstools/css-calc@npm:^2.1.1, @csstools/css-calc@npm:^2.1.2": - version: 2.1.2 - resolution: "@csstools/css-calc@npm:2.1.2" +"@csstools/css-calc@npm:^2.1.1, @csstools/css-calc@npm:^2.1.3": + version: 2.1.3 + resolution: "@csstools/css-calc@npm:2.1.3" peerDependencies: "@csstools/css-parser-algorithms": ^3.0.4 "@csstools/css-tokenizer": ^3.0.3 - checksum: 10c0/34ced30553968ef5d5f9e00e3b90b48c47480cf130e282e99d57ec9b09f803aab8bc06325683e72a1518b5e7180a3da8b533f1b462062757c21989a53b482e1a + checksum: 10c0/85f5b4f96d60f395d5f0108056b0ddee037b22d6deba448d74324b50f1c554de284f84715ebfac7b2888b78e09d20d02a7cd213ee7bdaa71011ea9b4eee3a251 languageName: node linkType: hard -"@csstools/css-color-parser@npm:^3.0.7, @csstools/css-color-parser@npm:^3.0.8": - version: 3.0.8 - resolution: "@csstools/css-color-parser@npm:3.0.8" +"@csstools/css-color-parser@npm:^3.0.7, @csstools/css-color-parser@npm:^3.0.9": + version: 3.0.9 + resolution: "@csstools/css-color-parser@npm:3.0.9" dependencies: "@csstools/color-helpers": "npm:^5.0.2" - "@csstools/css-calc": "npm:^2.1.2" + "@csstools/css-calc": "npm:^2.1.3" peerDependencies: "@csstools/css-parser-algorithms": ^3.0.4 "@csstools/css-tokenizer": ^3.0.3 - checksum: 10c0/90722c5a62ca94e9d578ddf59be604a76400b932bd3d4bd23cb1ae9b7ace8fcf83c06995d2b31f96f4afef24a7cefba79beb11ed7ee4999d7ecfec3869368359 + checksum: 10c0/acc026a6bd6d8c4c641fa5f9b4d77cd5dfa54c57c3278ae52329d96b5837723428dcb93c34db4062bbea2f45a98451119df06eaf39fd196aaf6368c59d799f20 languageName: node linkType: hard @@ -1532,60 +1532,60 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-color-function@npm:^4.0.8": - version: 4.0.8 - resolution: "@csstools/postcss-color-function@npm:4.0.8" +"@csstools/postcss-color-function@npm:^4.0.9": + version: 4.0.9 + resolution: "@csstools/postcss-color-function@npm:4.0.9" dependencies: - "@csstools/css-color-parser": "npm:^3.0.8" + "@csstools/css-color-parser": "npm:^3.0.9" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/d52c65bb4ed28f62b3fc9c0b2ce068e58395345dcead797ed8f7e4f5f469a9311607d39dd409c571ccc94d6c5c84171aff62d51d4f53fdcf6e1cca23fc31d4f1 + checksum: 10c0/11f7e8a1a4d6ff113706928eb4702454d18ee8d6b07166b98d33b499ba1933cdf034876101a9c3d22fcc009d054ca6fe2df1455daf391d5eb4af86fa6b530e75 languageName: node linkType: hard -"@csstools/postcss-color-mix-function@npm:^3.0.8": - version: 3.0.8 - resolution: "@csstools/postcss-color-mix-function@npm:3.0.8" +"@csstools/postcss-color-mix-function@npm:^3.0.9": + version: 3.0.9 + resolution: "@csstools/postcss-color-mix-function@npm:3.0.9" dependencies: - "@csstools/css-color-parser": "npm:^3.0.8" + "@csstools/css-color-parser": "npm:^3.0.9" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/3fe7093b38f2b469462fa942af5a54a1ad68b07cd33267288e5c9e865d3a871c04774463136e4af24955316f40560dda1371d02cfd5595475a742afae13a37ba + checksum: 10c0/e26ecec62ac6085e8c46225e444bfb6082fffad1559005c0746226b22f995727c2e4ede0fb347e37c81e8f4f2ac9cf4de88800184a650638351f4cbfb8baf1d3 languageName: node linkType: hard -"@csstools/postcss-content-alt-text@npm:^2.0.4": - version: 2.0.4 - resolution: "@csstools/postcss-content-alt-text@npm:2.0.4" +"@csstools/postcss-content-alt-text@npm:^2.0.5": + version: 2.0.5 + resolution: "@csstools/postcss-content-alt-text@npm:2.0.5" dependencies: "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/84caccedd8a519df434babd58b14104c5a92cd326057ce509bdbaa2a4bb3130afb1c1456caf30235ba14da52d1628a5411ea4f5d2fb558d603d234f795538017 + checksum: 10c0/fd0543e8195b1a1228fa41995d48bafafb635d32b0b80bdae8edfc3af7fcccb75aa472a072e552420ed0bd2f62d38e764483e3b9cca25a41dc2b450098b2436d languageName: node linkType: hard -"@csstools/postcss-exponential-functions@npm:^2.0.7": - version: 2.0.7 - resolution: "@csstools/postcss-exponential-functions@npm:2.0.7" +"@csstools/postcss-exponential-functions@npm:^2.0.8": + version: 2.0.8 + resolution: "@csstools/postcss-exponential-functions@npm:2.0.8" dependencies: - "@csstools/css-calc": "npm:^2.1.2" + "@csstools/css-calc": "npm:^2.1.3" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/9d02076135ee9bf82bf911f577c9fda42bf00347f3c519fa83e32e83f5b8a98649b97e13ba3a42ed906467729d7b69574595556dfb9e865c86d3bbae5ffbc918 + checksum: 10c0/8ed7cea3ab7b3fce351dc678c97aad0c12d9e9eae43c9793081fc09e2b3281a89a9d67e57df02d87b6af40839d582b5d08523a9f9bfabbd4e05e319995ae7789 languageName: node linkType: hard @@ -1601,59 +1601,59 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-gamut-mapping@npm:^2.0.8": - version: 2.0.8 - resolution: "@csstools/postcss-gamut-mapping@npm:2.0.8" +"@csstools/postcss-gamut-mapping@npm:^2.0.9": + version: 2.0.9 + resolution: "@csstools/postcss-gamut-mapping@npm:2.0.9" dependencies: - "@csstools/css-color-parser": "npm:^3.0.8" + "@csstools/css-color-parser": "npm:^3.0.9" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/81daaba0e774ed3ab97e2c7c93dcae16d1e8447a27f0e82ddf8a176e8f1e93b444f463284105fd312c6234d4210372d6d69d96efcfb05bc5b6adfba6fcfd6f44 + checksum: 10c0/a5985c74bfa8c0fc4406cec807818e35949c73d62b6acd2901dbdd54a30afa7d2094f839ba550812bca76f0df95205492f271df4bab03f4b15115cf10b06b1b5 languageName: node linkType: hard -"@csstools/postcss-gradients-interpolation-method@npm:^5.0.8": - version: 5.0.8 - resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.8" +"@csstools/postcss-gradients-interpolation-method@npm:^5.0.9": + version: 5.0.9 + resolution: "@csstools/postcss-gradients-interpolation-method@npm:5.0.9" dependencies: - "@csstools/css-color-parser": "npm:^3.0.8" + "@csstools/css-color-parser": "npm:^3.0.9" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/832bfb663b334be9783f49c354cbeec3cede1830a576b91a101456db33207e9651f97624f0df92e5d01a39b68a215ad4b20621ee229b92b51607e889093bc590 + checksum: 10c0/b284558e38c096e1abfb04306717e23eec841ab23979479adbe165332db84503493b74e6d23d7752abec9327b9bfc343857e9a2393957d5bb9fd2e249570467e languageName: node linkType: hard -"@csstools/postcss-hwb-function@npm:^4.0.8": - version: 4.0.8 - resolution: "@csstools/postcss-hwb-function@npm:4.0.8" +"@csstools/postcss-hwb-function@npm:^4.0.9": + version: 4.0.9 + resolution: "@csstools/postcss-hwb-function@npm:4.0.9" dependencies: - "@csstools/css-color-parser": "npm:^3.0.8" + "@csstools/css-color-parser": "npm:^3.0.9" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/d6196e2acfc0a6fd61fe254385049fb784abb862c724543940dbba8ffe29bbdbedd83985a517132a21073435445486f918da170fb0f710dbe40a798b9abc41e7 + checksum: 10c0/31f9b3540e8af221e1716944ed8719f97ae335e5f866dfc96a3d81f042ef8975ce0d6163925cb32514f4903cb35177bf8d814a571da3f44b63244f88b6b395ad languageName: node linkType: hard -"@csstools/postcss-ic-unit@npm:^4.0.0": - version: 4.0.0 - resolution: "@csstools/postcss-ic-unit@npm:4.0.0" +"@csstools/postcss-ic-unit@npm:^4.0.1": + version: 4.0.1 + resolution: "@csstools/postcss-ic-unit@npm:4.0.1" dependencies: - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/6f94ec31002a245768a30d240c432b8712af4d9ea76a62403e16d4e0afb5be7636348a2d4619046ed29aa7726f88a0c191ca41c96d7ab0f3da940025c91b056e + checksum: 10c0/1097cbdc385bcf32e15df1ed2946477c5927e34ebaf273297f1ae46aeaf2084c7a63858ba1a7a5e1f241be441968a2e1c6deb43ddb101708110c7f608b6fc525 languageName: node linkType: hard @@ -1678,17 +1678,17 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-light-dark-function@npm:^2.0.7": - version: 2.0.7 - resolution: "@csstools/postcss-light-dark-function@npm:2.0.7" +"@csstools/postcss-light-dark-function@npm:^2.0.8": + version: 2.0.8 + resolution: "@csstools/postcss-light-dark-function@npm:2.0.8" dependencies: "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/c116bfd2d3f4d0caabdedf8954c2a25908ffb29f9bbe2c57d44a2974277c7e46ee79862eea848385dc040275d343f2330350394a2095ec30f0aa17f72e2f4e39 + checksum: 10c0/5494516f52d467dcace80495a4fb0fbd24207ae13634bb82b5c24e5d52e84665aebc28cd31fed8d96a41e91bf822185aba5a3d01680a140278c484741516c383 languageName: node linkType: hard @@ -1742,17 +1742,17 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-media-minmax@npm:^2.0.7": - version: 2.0.7 - resolution: "@csstools/postcss-media-minmax@npm:2.0.7" +"@csstools/postcss-media-minmax@npm:^2.0.8": + version: 2.0.8 + resolution: "@csstools/postcss-media-minmax@npm:2.0.8" dependencies: - "@csstools/css-calc": "npm:^2.1.2" + "@csstools/css-calc": "npm:^2.1.3" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" "@csstools/media-query-list-parser": "npm:^4.0.2" peerDependencies: postcss: ^8.4 - checksum: 10c0/03b7a5603437d5be17e9c0d951ca0b7b3b6f437fd4e24e3ac3f70ed9d573ef67641821fe209b5764c54aa36e841c830a5d8cf3a3dd97fd2fa774b7ceba7ba038 + checksum: 10c0/aff72b83b888d3d0dc6441f219f7c2833a4aa0f59493da22db1087fce32763bb765f068c6ddedc0ddc6fe79f1843e6b1375af07fa572494ecac91e59b1dc324f languageName: node linkType: hard @@ -1792,57 +1792,57 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-oklab-function@npm:^4.0.8": - version: 4.0.8 - resolution: "@csstools/postcss-oklab-function@npm:4.0.8" +"@csstools/postcss-oklab-function@npm:^4.0.9": + version: 4.0.9 + resolution: "@csstools/postcss-oklab-function@npm:4.0.9" dependencies: - "@csstools/css-color-parser": "npm:^3.0.8" + "@csstools/css-color-parser": "npm:^3.0.9" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/8a62f3875bb9026c95758a0b834e876a8f07dd1a5ba36c3967e230565fbd9afd21ec714c8590cb4ea594fd214e68f2ccf58456ed6e919a47d2ed17d5b63a925a + checksum: 10c0/9955aafc1dfc0bb5c886b2af3a82abed2d0a707c7654b2b49886db4c7153e1a016f327f4cc0d94b5b28f3b6227d9b3422c63555f78412433655beec90f37b388 languageName: node linkType: hard -"@csstools/postcss-progressive-custom-properties@npm:^4.0.0": - version: 4.0.0 - resolution: "@csstools/postcss-progressive-custom-properties@npm:4.0.0" +"@csstools/postcss-progressive-custom-properties@npm:^4.0.1": + version: 4.0.1 + resolution: "@csstools/postcss-progressive-custom-properties@npm:4.0.1" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/517e5e0b1525667ea1c4469bb2af52995934b9ab3165bba33e3bfdfac63b20bb51c878da582d805957dc0291e396e5a540cac18d1220a08190d98d5463d26ce2 + checksum: 10c0/a33e2a67ac29e731b112df9718596f703990492900bb118c513fcee7c0dc0a03f58248b2c5467b14de3e757f0ef2c6d97882254af784d8df390c633780bdf1f9 languageName: node linkType: hard -"@csstools/postcss-random-function@npm:^1.0.3": - version: 1.0.3 - resolution: "@csstools/postcss-random-function@npm:1.0.3" +"@csstools/postcss-random-function@npm:^2.0.0": + version: 2.0.0 + resolution: "@csstools/postcss-random-function@npm:2.0.0" dependencies: - "@csstools/css-calc": "npm:^2.1.2" + "@csstools/css-calc": "npm:^2.1.3" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/c3bf319a6f79c0e372e4754e7888a4cd3a97b81e480662b1d1cb193949670bbcd5995c42483390a996e66d6dd81c9ad753836cc617aac2e3acbd542faa56f907 + checksum: 10c0/e0744b1472c4037b6491aac232d005659c0c65bc08af785cbdc50b722efaf71330e38607f4c88b54322338294f92ec68817ec1cd6e688953aa127f27cd2a5b00 languageName: node linkType: hard -"@csstools/postcss-relative-color-syntax@npm:^3.0.8": - version: 3.0.8 - resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.8" +"@csstools/postcss-relative-color-syntax@npm:^3.0.9": + version: 3.0.9 + resolution: "@csstools/postcss-relative-color-syntax@npm:3.0.9" dependencies: - "@csstools/css-color-parser": "npm:^3.0.8" + "@csstools/css-color-parser": "npm:^3.0.9" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/fcd14fb1c3f103dbaaf88afa2540f9946313d48515fa24fffcde4200e7dc4aa767d186ecf2e12bb0501dd946a824f118cd4ad5d44899c8d6d9d8d9d9b99a123e + checksum: 10c0/486e6c91b1042ca96e6e5c3d94d95e343101c7862e772aee16cd48607633f7c93c42dd23b5adc44cfa8dc8cb32ef3ba0f1f86e3f9a23be5c8744533d23128624 languageName: node linkType: hard @@ -1857,29 +1857,29 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-sign-functions@npm:^1.1.2": - version: 1.1.2 - resolution: "@csstools/postcss-sign-functions@npm:1.1.2" +"@csstools/postcss-sign-functions@npm:^1.1.3": + version: 1.1.3 + resolution: "@csstools/postcss-sign-functions@npm:1.1.3" dependencies: - "@csstools/css-calc": "npm:^2.1.2" + "@csstools/css-calc": "npm:^2.1.3" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/15a1c434c3059ab884634d32374d53265c0ea5b5d1f6cb979dcfef18903edbafbf334fcbabd5b24869356db93792adfe95d88efef998b7d6b4c6f4b8393faca1 + checksum: 10c0/97998443191ab0ef370bdc413b4952fd86d9274700fade2a83cdf5d59f449a4a7001ceda35dd6cb45fefebafb0959be35c3fcfa0e3333c55b1658f514eb64e96 languageName: node linkType: hard -"@csstools/postcss-stepped-value-functions@npm:^4.0.7": - version: 4.0.7 - resolution: "@csstools/postcss-stepped-value-functions@npm:4.0.7" +"@csstools/postcss-stepped-value-functions@npm:^4.0.8": + version: 4.0.8 + resolution: "@csstools/postcss-stepped-value-functions@npm:4.0.8" dependencies: - "@csstools/css-calc": "npm:^2.1.2" + "@csstools/css-calc": "npm:^2.1.3" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/1e664f0b169abe0e8ad832844ff06b219702ba7e6af795801109bd2e90403295d5cdb2e27c17f92e60d9704b30726b4564da79e0bf66dec852d50704a8813053 + checksum: 10c0/515630c3d25029a5e3789d665ae7f4a394245e5442c79d99f0fff018c698e356680aea0f937819a00cb78563ce2285a43ede50e32992cee4e062e413d22df44f languageName: node linkType: hard @@ -1895,16 +1895,16 @@ __metadata: languageName: node linkType: hard -"@csstools/postcss-trigonometric-functions@npm:^4.0.7": - version: 4.0.7 - resolution: "@csstools/postcss-trigonometric-functions@npm:4.0.7" +"@csstools/postcss-trigonometric-functions@npm:^4.0.8": + version: 4.0.8 + resolution: "@csstools/postcss-trigonometric-functions@npm:4.0.8" dependencies: - "@csstools/css-calc": "npm:^2.1.2" + "@csstools/css-calc": "npm:^2.1.3" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" peerDependencies: postcss: ^8.4 - checksum: 10c0/2b01608a9f7dba6f73febfdd75269f6f88eb2a653de38a0adc6e81de57de4248bedd39b3e8b219cc49ce73b99118e285a870711953a553ddddb0bd5b2f9a5852 + checksum: 10c0/609d03b752aae1c57d671eaefe4cdbde0a1d62c4b4d3ffb8bb39a41ebb61fdade7c7892a2c7c365d2997d9f93f4f3bb4034801a5baf1988b274120b3ec0ba6ad languageName: node linkType: hard @@ -5413,21 +5413,21 @@ __metadata: languageName: node linkType: hard -"autoprefixer@npm:^10.4.19": - version: 10.4.19 - resolution: "autoprefixer@npm:10.4.19" +"autoprefixer@npm:^10.4.21": + version: 10.4.21 + resolution: "autoprefixer@npm:10.4.21" dependencies: - browserslist: "npm:^4.23.0" - caniuse-lite: "npm:^1.0.30001599" + browserslist: "npm:^4.24.4" + caniuse-lite: "npm:^1.0.30001702" fraction.js: "npm:^4.3.7" normalize-range: "npm:^0.1.2" - picocolors: "npm:^1.0.0" + picocolors: "npm:^1.1.1" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.1.0 bin: autoprefixer: bin/autoprefixer - checksum: 10c0/fe0178eb8b1da4f15c6535cd329926609b22d1811e047371dccce50563623f8075dd06fb167daff059e4228da651b0bdff6d9b44281541eaf0ce0b79125bfd19 + checksum: 10c0/de5b71d26d0baff4bbfb3d59f7cf7114a6030c9eeb66167acf49a32c5b61c68e308f1e0f869d92334436a221035d08b51cd1b2f2c4689b8d955149423c16d4d4 languageName: node linkType: hard @@ -5942,7 +5942,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.23.0, browserslist@npm:^4.23.3, browserslist@npm:^4.24.0, browserslist@npm:^4.24.3, browserslist@npm:^4.24.4": +"browserslist@npm:^4.0.0, browserslist@npm:^4.23.3, browserslist@npm:^4.24.0, browserslist@npm:^4.24.3, browserslist@npm:^4.24.4": version: 4.24.4 resolution: "browserslist@npm:4.24.4" dependencies: @@ -6163,10 +6163,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001599, caniuse-lite@npm:^1.0.30001688": - version: 1.0.30001699 - resolution: "caniuse-lite@npm:1.0.30001699" - checksum: 10c0/e87b3a0602c3124131f6a21f1eb262378e17a2ee3089e3c472ac8b9caa85cf7d6a219655379302c29c6f10a74051f2a712639d7f98ee0444c73fefcbaf25d519 +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001688, caniuse-lite@npm:^1.0.30001702": + version: 1.0.30001715 + resolution: "caniuse-lite@npm:1.0.30001715" + checksum: 10c0/0109a7da797ffbe1aa197baa5242b205011098eecec1087ef3d0c58ceea19be325ab6679b2751a78660adc3051a9f77e99d5789938fd1eb1235e6fdf6a1dbf8e languageName: node linkType: hard @@ -7027,10 +7027,10 @@ __metadata: languageName: node linkType: hard -"cssdb@npm:^8.2.3": - version: 8.2.3 - resolution: "cssdb@npm:8.2.3" - checksum: 10c0/17c3ca6432ed02431db6b44bed74649ccef7d7b7b900ccbc7297525f030722c441dd67c71f28aef3cfa0814ba7b254a24adfb0dcd5728937da179ff437cdcd0c +"cssdb@npm:^8.2.5": + version: 8.2.5 + resolution: "cssdb@npm:8.2.5" + checksum: 10c0/3f6f2941c958ea0bdbcc1f807ee728d851ef60c370fbcd54360840e3192f082e0a0b2fa4ea600ca74fa771936c9130883727d7845132cc8bf135a4e0a1e55746 languageName: node linkType: hard @@ -13598,18 +13598,18 @@ __metadata: languageName: node linkType: hard -"postcss-color-functional-notation@npm:^7.0.8": - version: 7.0.8 - resolution: "postcss-color-functional-notation@npm:7.0.8" +"postcss-color-functional-notation@npm:^7.0.9": + version: 7.0.9 + resolution: "postcss-color-functional-notation@npm:7.0.9" dependencies: - "@csstools/css-color-parser": "npm:^3.0.8" + "@csstools/css-color-parser": "npm:^3.0.9" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/4180e2f6ee9c925d6c47e727cfc50de2186d4a5cfda6e1ccf28f60e5536b418ddd90f9cc5f9cbcd1900f74098101bca8f844867e16b591e66760300e34257e47 + checksum: 10c0/62ffe51ec200df8e01daca3f45b2e05e7e509b57bfe50c880490878aff9bc63ed36cc92db42f0274a21f21330acd8fb1dff6529f7e3a202d100ea74914cf4cfd languageName: node linkType: hard @@ -13755,16 +13755,16 @@ __metadata: languageName: node linkType: hard -"postcss-double-position-gradients@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-double-position-gradients@npm:6.0.0" +"postcss-double-position-gradients@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-double-position-gradients@npm:6.0.1" dependencies: - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" "@csstools/utilities": "npm:^2.0.0" postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/7a0e119df1b4af59d169b1a9dfc563275ce29b4ae5e6a6c90be29a7a59272ebc55bf3b2ed05a962f73b03194f7a88f6fe738e65c1659d43351fbdc705cc951ad + checksum: 10c0/4c6cf3f54b2154cd622cdcaea58a7634c2e19bc0c366c73c46a27a3e31aa280c8721ee2b21cdd5cdca3166052cf5881c16bab2836b8896e71578213957021d52 languageName: node linkType: hard @@ -13820,18 +13820,18 @@ __metadata: languageName: node linkType: hard -"postcss-lab-function@npm:^7.0.8": - version: 7.0.8 - resolution: "postcss-lab-function@npm:7.0.8" +"postcss-lab-function@npm:^7.0.9": + version: 7.0.9 + resolution: "postcss-lab-function@npm:7.0.9" dependencies: - "@csstools/css-color-parser": "npm:^3.0.8" + "@csstools/css-color-parser": "npm:^3.0.9" "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" "@csstools/utilities": "npm:^2.0.0" peerDependencies: postcss: ^8.4 - checksum: 10c0/5f7b6f95cb3d1aa099c16dcdd89c575f112387600f30949f74c205e0846c9303ca851be794fad9fd56825859d38ac811f972cc34bbc2dfcf71371c640165ddfb + checksum: 10c0/4180669e7555d474b660d106de5fa1d4a705d693451254123bf56ab6dc1a82e4e175c387868703c14e4637d795d461b5e7f10e74d7b42df55a31f6b52bfa048e languageName: node linkType: hard @@ -14152,63 +14152,63 @@ __metadata: linkType: hard "postcss-preset-env@npm:^10.0.0": - version: 10.1.5 - resolution: "postcss-preset-env@npm:10.1.5" + version: 10.1.6 + resolution: "postcss-preset-env@npm:10.1.6" dependencies: "@csstools/postcss-cascade-layers": "npm:^5.0.1" - "@csstools/postcss-color-function": "npm:^4.0.8" - "@csstools/postcss-color-mix-function": "npm:^3.0.8" - "@csstools/postcss-content-alt-text": "npm:^2.0.4" - "@csstools/postcss-exponential-functions": "npm:^2.0.7" + "@csstools/postcss-color-function": "npm:^4.0.9" + "@csstools/postcss-color-mix-function": "npm:^3.0.9" + "@csstools/postcss-content-alt-text": "npm:^2.0.5" + "@csstools/postcss-exponential-functions": "npm:^2.0.8" "@csstools/postcss-font-format-keywords": "npm:^4.0.0" - "@csstools/postcss-gamut-mapping": "npm:^2.0.8" - "@csstools/postcss-gradients-interpolation-method": "npm:^5.0.8" - "@csstools/postcss-hwb-function": "npm:^4.0.8" - "@csstools/postcss-ic-unit": "npm:^4.0.0" + "@csstools/postcss-gamut-mapping": "npm:^2.0.9" + "@csstools/postcss-gradients-interpolation-method": "npm:^5.0.9" + "@csstools/postcss-hwb-function": "npm:^4.0.9" + "@csstools/postcss-ic-unit": "npm:^4.0.1" "@csstools/postcss-initial": "npm:^2.0.1" "@csstools/postcss-is-pseudo-class": "npm:^5.0.1" - "@csstools/postcss-light-dark-function": "npm:^2.0.7" + "@csstools/postcss-light-dark-function": "npm:^2.0.8" "@csstools/postcss-logical-float-and-clear": "npm:^3.0.0" "@csstools/postcss-logical-overflow": "npm:^2.0.0" "@csstools/postcss-logical-overscroll-behavior": "npm:^2.0.0" "@csstools/postcss-logical-resize": "npm:^3.0.0" "@csstools/postcss-logical-viewport-units": "npm:^3.0.3" - "@csstools/postcss-media-minmax": "npm:^2.0.7" + "@csstools/postcss-media-minmax": "npm:^2.0.8" "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^3.0.4" "@csstools/postcss-nested-calc": "npm:^4.0.0" "@csstools/postcss-normalize-display-values": "npm:^4.0.0" - "@csstools/postcss-oklab-function": "npm:^4.0.8" - "@csstools/postcss-progressive-custom-properties": "npm:^4.0.0" - "@csstools/postcss-random-function": "npm:^1.0.3" - "@csstools/postcss-relative-color-syntax": "npm:^3.0.8" + "@csstools/postcss-oklab-function": "npm:^4.0.9" + "@csstools/postcss-progressive-custom-properties": "npm:^4.0.1" + "@csstools/postcss-random-function": "npm:^2.0.0" + "@csstools/postcss-relative-color-syntax": "npm:^3.0.9" "@csstools/postcss-scope-pseudo-class": "npm:^4.0.1" - "@csstools/postcss-sign-functions": "npm:^1.1.2" - "@csstools/postcss-stepped-value-functions": "npm:^4.0.7" + "@csstools/postcss-sign-functions": "npm:^1.1.3" + "@csstools/postcss-stepped-value-functions": "npm:^4.0.8" "@csstools/postcss-text-decoration-shorthand": "npm:^4.0.2" - "@csstools/postcss-trigonometric-functions": "npm:^4.0.7" + "@csstools/postcss-trigonometric-functions": "npm:^4.0.8" "@csstools/postcss-unset-value": "npm:^4.0.0" - autoprefixer: "npm:^10.4.19" + autoprefixer: "npm:^10.4.21" browserslist: "npm:^4.24.4" css-blank-pseudo: "npm:^7.0.1" css-has-pseudo: "npm:^7.0.2" css-prefers-color-scheme: "npm:^10.0.0" - cssdb: "npm:^8.2.3" + cssdb: "npm:^8.2.5" postcss-attribute-case-insensitive: "npm:^7.0.1" postcss-clamp: "npm:^4.1.0" - postcss-color-functional-notation: "npm:^7.0.8" + postcss-color-functional-notation: "npm:^7.0.9" postcss-color-hex-alpha: "npm:^10.0.0" postcss-color-rebeccapurple: "npm:^10.0.0" postcss-custom-media: "npm:^11.0.5" postcss-custom-properties: "npm:^14.0.4" postcss-custom-selectors: "npm:^8.0.4" postcss-dir-pseudo-class: "npm:^9.0.1" - postcss-double-position-gradients: "npm:^6.0.0" + postcss-double-position-gradients: "npm:^6.0.1" postcss-focus-visible: "npm:^10.0.1" postcss-focus-within: "npm:^9.0.1" postcss-font-variant: "npm:^5.0.0" postcss-gap-properties: "npm:^6.0.0" postcss-image-set-function: "npm:^7.0.0" - postcss-lab-function: "npm:^7.0.8" + postcss-lab-function: "npm:^7.0.9" postcss-logical: "npm:^8.1.0" postcss-nesting: "npm:^13.0.1" postcss-opacity-percentage: "npm:^3.0.0" @@ -14220,7 +14220,7 @@ __metadata: postcss-selector-not: "npm:^8.0.1" peerDependencies: postcss: ^8.4 - checksum: 10c0/5ed5aeb7c9718230742a56d9b49e05a90135bc4bb77f97d9978bdb0b999d36a2d6175d99360c966cb7a307c9efe4b8792f4c0b79ec99a233f9e1c1ebae4244f0 + checksum: 10c0/89af9060f3528e254005e6b81e88c57589e6e7f74125b10d50ca8a05f830c9ac206f8197af1b3c4b7ba82d97993118dd121f1a11cfc9fd026e18d01ca6f7ad2d languageName: node linkType: hard From 8dea1c422af5c497b6c8fbdb5743fe91862261cf Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Tue, 22 Apr 2025 04:23:41 -0400 Subject: [PATCH 015/349] Combine examples to reduce factories in `BulkImportWorker` spec (#34499) --- spec/workers/bulk_import_worker_spec.rb | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/spec/workers/bulk_import_worker_spec.rb b/spec/workers/bulk_import_worker_spec.rb index 2d429c880b..13d67a5970 100644 --- a/spec/workers/bulk_import_worker_spec.rb +++ b/spec/workers/bulk_import_worker_spec.rb @@ -14,13 +14,11 @@ RSpec.describe BulkImportWorker do allow(BulkImportService).to receive(:new).and_return(service_double) end - it 'changes the import\'s state as appropriate' do - expect { subject.perform(import.id) }.to change { import.reload.state.to_sym }.from(:scheduled).to(:in_progress) - end - - it 'calls BulkImportService' do - subject.perform(import.id) - expect(service_double).to have_received(:call).with(import) + it 'calls the service and changes the import state' do + expect { subject.perform(import.id) } + .to change { import.reload.state.to_sym }.from(:scheduled).to(:in_progress) + expect(service_double) + .to have_received(:call).with(import) end end end From b92f42a6bd9ec7a7b13b913cae1647a5913cac98 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 08:33:42 +0000 Subject: [PATCH 016/349] New Crowdin Translations (automated) (#34502) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/bg.json | 1 + app/javascript/mastodon/locales/ca.json | 15 +++++++ app/javascript/mastodon/locales/cs.json | 15 ++++++- app/javascript/mastodon/locales/cy.json | 17 +++++++- app/javascript/mastodon/locales/da.json | 4 ++ app/javascript/mastodon/locales/de.json | 8 +++- app/javascript/mastodon/locales/eo.json | 2 + app/javascript/mastodon/locales/es-AR.json | 4 ++ app/javascript/mastodon/locales/es-MX.json | 4 ++ app/javascript/mastodon/locales/es.json | 4 ++ app/javascript/mastodon/locales/fa.json | 29 +++++++++++++- app/javascript/mastodon/locales/fi.json | 8 +++- app/javascript/mastodon/locales/fo.json | 4 ++ app/javascript/mastodon/locales/fy.json | 46 +++++++++++++++++++++- app/javascript/mastodon/locales/gl.json | 13 ++++++ app/javascript/mastodon/locales/he.json | 4 ++ app/javascript/mastodon/locales/hu.json | 4 ++ app/javascript/mastodon/locales/is.json | 7 ++++ app/javascript/mastodon/locales/it.json | 13 ++++++ app/javascript/mastodon/locales/ja.json | 26 +++++++++++- app/javascript/mastodon/locales/kab.json | 7 +++- app/javascript/mastodon/locales/ku.json | 43 +++++++++++++++----- app/javascript/mastodon/locales/lad.json | 7 ++++ app/javascript/mastodon/locales/lv.json | 4 ++ app/javascript/mastodon/locales/nan.json | 28 +++++++++++++ app/javascript/mastodon/locales/nl.json | 20 ++++++---- app/javascript/mastodon/locales/nn.json | 13 ++++++ app/javascript/mastodon/locales/ru.json | 25 +++++++++--- app/javascript/mastodon/locales/sq.json | 4 ++ app/javascript/mastodon/locales/tr.json | 4 ++ app/javascript/mastodon/locales/uk.json | 3 ++ app/javascript/mastodon/locales/vi.json | 4 ++ app/javascript/mastodon/locales/zh-CN.json | 2 + app/javascript/mastodon/locales/zh-TW.json | 4 ++ config/locales/activerecord.fy.yml | 6 +++ config/locales/activerecord.ja.yml | 6 +++ config/locales/ca.yml | 11 ++++++ config/locales/de.yml | 2 +- config/locales/fa.yml | 4 ++ config/locales/fi.yml | 3 ++ config/locales/fr-CA.yml | 4 ++ config/locales/fr.yml | 4 ++ config/locales/ja.yml | 31 +++++++++++++++ config/locales/kab.yml | 2 +- config/locales/nan.yml | 23 +++++++++++ config/locales/simple_form.eo.yml | 1 + config/locales/simple_form.fy.yml | 8 ++++ config/locales/simple_form.ja.yml | 17 ++++++++ 48 files changed, 479 insertions(+), 39 deletions(-) diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 4ac8a8e2eb..07c32d1b3a 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -19,6 +19,7 @@ "account.block_domain": "Блокиране на домейн {domain}", "account.block_short": "Блокиране", "account.blocked": "Блокирани", + "account.blocking": "Блокиране", "account.cancel_follow_request": "Оттегляне на заявката за последване", "account.copy": "Копиране на връзка към профила", "account.direct": "Частно споменаване на @{name}", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 41bdd18cc1..b923cbad29 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -19,10 +19,12 @@ "account.block_domain": "Bloca el domini {domain}", "account.block_short": "Bloca", "account.blocked": "Blocat", + "account.blocking": "Blocat", "account.cancel_follow_request": "Cancel·la el seguiment", "account.copy": "Copia l'enllaç al perfil", "account.direct": "Menciona privadament @{name}", "account.disable_notifications": "Deixa de notificar-me els tuts de @{name}", + "account.domain_blocking": "Bloquem el domini", "account.edit_profile": "Edita el perfil", "account.enable_notifications": "Notifica'm els tuts de @{name}", "account.endorse": "Recomana en el perfil", @@ -39,6 +41,7 @@ "account.following": "Seguint", "account.following_counter": "{count, plural, other {Seguint-ne {counter}}}", "account.follows.empty": "Aquest usuari encara no segueix ningú.", + "account.follows_you": "Us segueix", "account.go_to_profile": "Vés al perfil", "account.hide_reblogs": "Amaga els impulsos de @{name}", "account.in_memoriam": "En Memòria.", @@ -53,13 +56,17 @@ "account.mute_notifications_short": "Silencia les notificacions", "account.mute_short": "Silencia", "account.muted": "Silenciat", + "account.muting": "Silenciem", + "account.mutual": "Us seguiu l'un a l'altre", "account.no_bio": "No s'ha proporcionat cap descripció.", "account.open_original_page": "Obre la pàgina original", "account.posts": "Tuts", "account.posts_with_replies": "Tuts i respostes", + "account.remove_from_followers": "Elimina {name} dels seguidors", "account.report": "Informa sobre @{name}", "account.requested": "S'espera l'aprovació. Clica per a cancel·lar la petició de seguiment", "account.requested_follow": "{name} ha demanat de seguir-te", + "account.requests_to_follow_you": "Peticions de seguir-vos", "account.share": "Comparteix el perfil de @{name}", "account.show_reblogs": "Mostra els impulsos de @{name}", "account.statuses_counter": "{count, plural, one {{counter} publicació} other {{counter} publicacions}}", @@ -227,6 +234,9 @@ "confirmations.redraft.confirm": "Esborra i reescriu", "confirmations.redraft.message": "Segur que vols eliminar aquest tut i tornar a escriure'l? Es perdran tots els impulsos i els favorits, i les respostes al tut original quedaran aïllades.", "confirmations.redraft.title": "Esborrar i reescriure la publicació?", + "confirmations.remove_from_followers.confirm": "Elimina el seguidor", + "confirmations.remove_from_followers.message": "{name} deixarà de seguir-vos. Tirem endavant?", + "confirmations.remove_from_followers.title": "Eliminem el seguidor?", "confirmations.reply.confirm": "Respon", "confirmations.reply.message": "Si respons ara, sobreescriuràs el missatge que estàs editant. Segur que vols continuar?", "confirmations.reply.title": "Sobreescriure la publicació?", @@ -294,6 +304,9 @@ "emoji_button.search_results": "Resultats de la cerca", "emoji_button.symbols": "Símbols", "emoji_button.travel": "Viatges i llocs", + "empty_column.account_featured.me": "No heu destacat encara res. Sabeu que podeu destacar al vostre perfil publicacions, les etiquetes que més feu servir i fins i tot els comptes dels vostres amics?", + "empty_column.account_featured.other": "{acct} no ha destacat encara res. Sabeu que podeu destacar al vostre perfil publicacions, les etiquetes que més feu servir i fins i tot els comptes dels vostres amics?", + "empty_column.account_featured_other.unknown": "Aquest compte no ha destacat encara res.", "empty_column.account_hides_collections": "Aquest usuari ha decidit no mostrar aquesta informació", "empty_column.account_suspended": "Compte suspès", "empty_column.account_timeline": "No hi ha tuts aquí!", @@ -378,6 +391,8 @@ "generic.saved": "Desat", "getting_started.heading": "Primeres passes", "hashtag.admin_moderation": "Obre la interfície de moderació per a #{name}", + "hashtag.browse": "Fulleja publicacions a #{hashtag}", + "hashtag.browse_from_account": "Fulleja publicacions de {name} a #{hashtag}", "hashtag.column_header.tag_mode.all": "i {additional}", "hashtag.column_header.tag_mode.any": "o {additional}", "hashtag.column_header.tag_mode.none": "sense {additional}", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index c6a8e13fbd..f5530acc64 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -19,14 +19,16 @@ "account.block_domain": "Blokovat doménu {domain}", "account.block_short": "Zablokovat", "account.blocked": "Blokovaný", + "account.blocking": "Blokovaní", "account.cancel_follow_request": "Zrušit sledování", "account.copy": "Kopírovat odkaz na profil", "account.direct": "Soukromě zmínit @{name}", "account.disable_notifications": "Přestat mě upozorňovat, když @{name} zveřejní příspěvek", + "account.domain_blocking": "Blokované domény", "account.edit_profile": "Upravit profil", "account.enable_notifications": "Oznamovat mi příspěvky @{name}", "account.endorse": "Zvýraznit na profilu", - "account.featured": "Doporučené", + "account.featured": "Zvýrazněné", "account.featured.hashtags": "Hashtagy", "account.featured.posts": "Příspěvky", "account.featured_tags.last_status_at": "Poslední příspěvek {date}", @@ -39,6 +41,7 @@ "account.following": "Sledujete", "account.following_counter": "{count, plural, one {{counter} sledovaný} few {{counter} sledovaní} many {{counter} sledovaných} other {{counter} sledovaných}}", "account.follows.empty": "Tento uživatel zatím nikoho nesleduje.", + "account.follows_you": "Sleduje vás", "account.go_to_profile": "Přejít na profil", "account.hide_reblogs": "Skrýt boosty od @{name}", "account.in_memoriam": "In Memoriam.", @@ -53,13 +56,17 @@ "account.mute_notifications_short": "Ztlumit upozornění", "account.mute_short": "Ztlumit", "account.muted": "Skrytý", + "account.muting": "Ztlumení", + "account.mutual": "Sledujete se navzájem", "account.no_bio": "Nebyl poskytnut žádný popis.", "account.open_original_page": "Otevřít původní stránku", "account.posts": "Příspěvky", "account.posts_with_replies": "Příspěvky a odpovědi", + "account.remove_from_followers": "Odebrat {name} ze sledujících", "account.report": "Nahlásit @{name}", "account.requested": "Čeká na schválení. Kliknutím žádost o sledování zrušíte", "account.requested_follow": "{name} tě požádal o sledování", + "account.requests_to_follow_you": "Žádosti o sledování", "account.share": "Sdílet profil @{name}", "account.show_reblogs": "Zobrazit boosty od @{name}", "account.statuses_counter": "{count, plural, one {{counter} příspěvek} few {{counter} příspěvky} many {{counter} příspěvků} other {{counter} příspěvků}}", @@ -227,6 +234,9 @@ "confirmations.redraft.confirm": "Smazat a přepsat", "confirmations.redraft.message": "Jste si jistí, že chcete odstranit tento příspěvek a vytvořit z něj koncept? Oblíbené a boosty budou ztraceny a odpovědi na původní příspěvek ztratí kontext.", "confirmations.redraft.title": "Smazat a přepracovat příspěvek na koncept?", + "confirmations.remove_from_followers.confirm": "Odstranit sledujícího", + "confirmations.remove_from_followers.message": "{name} vás přestane sledovat. Jste si jisti, že chcete pokračovat?", + "confirmations.remove_from_followers.title": "Odstranit sledujícího?", "confirmations.reply.confirm": "Odpovědět", "confirmations.reply.message": "Odpověď přepíše vaši rozepsanou zprávu. Opravdu chcete pokračovat?", "confirmations.reply.title": "Přepsat příspěvek?", @@ -294,6 +304,9 @@ "emoji_button.search_results": "Výsledky hledání", "emoji_button.symbols": "Symboly", "emoji_button.travel": "Cestování a místa", + "empty_column.account_featured.me": "Zatím jste nic nezvýraznili. Věděli jste, že na svém profilu můžete zvýraznit své příspěvky, hashtagy, které používáte nejvíce, a dokonce účty vašich přátel?", + "empty_column.account_featured.other": "{acct} zatím nic nezvýraznili. Věděli jste, že na svém profilu můžete zvýraznit své příspěvky, hashtagy, které používáte nejvíce, a dokonce účty vašich přátel?", + "empty_column.account_featured_other.unknown": "Tento účet zatím nemá nic zvýrazněného.", "empty_column.account_hides_collections": "Tento uživatel se rozhodl tuto informaci nezveřejňovat", "empty_column.account_suspended": "Účet je pozastaven", "empty_column.account_timeline": "Nejsou tu žádné příspěvky!", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 8c6cc92080..207303b665 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -2,12 +2,12 @@ "about.blocks": "Gweinyddion a gyfyngir", "about.contact": "Cysylltwch â:", "about.disclaimer": "Mae Mastodon yn feddalwedd cod agored rhydd ac o dan hawlfraint Mastodon gGmbH.", - "about.domain_blocks.no_reason_available": "Nid yw'r rheswm ar gael", + "about.domain_blocks.no_reason_available": "Dyw'r rheswm ddim ar gael", "about.domain_blocks.preamble": "Fel rheol, mae Mastodon yn caniatáu i chi weld cynnwys gan unrhyw weinyddwr arall yn y ffedysawd a rhyngweithio â hi. Dyma'r eithriadau a wnaed ar y gweinydd penodol hwn.", "about.domain_blocks.silenced.explanation": "Fel rheol, fyddwch chi ddim yn gweld proffiliau a chynnwys o'r gweinydd hwn, oni bai eich bod yn chwilio'n benodol amdano neu yn ymuno drwy ei ddilyn.", "about.domain_blocks.silenced.title": "Cyfyngedig", "about.domain_blocks.suspended.explanation": "Ni fydd data o'r gweinydd hwn yn cael ei brosesu, ei gadw na'i gyfnewid, gan wneud unrhyw ryngweithio neu gyfathrebu gyda defnyddwyr o'r gweinydd hwn yn amhosibl.", - "about.domain_blocks.suspended.title": "Ataliwyd", + "about.domain_blocks.suspended.title": "Wedi'i atal", "about.not_available": "Nid yw'r wybodaeth hon ar gael ar y gweinydd hwn.", "about.powered_by": "Cyfrwng cymdeithasol datganoledig wedi ei yrru gan {mastodon}", "about.rules": "Rheolau'r gweinydd", @@ -19,10 +19,12 @@ "account.block_domain": "Blocio'r parth {domain}", "account.block_short": "Blocio", "account.blocked": "Blociwyd", + "account.blocking": "Yn Rhwystro", "account.cancel_follow_request": "Tynnu cais i ddilyn", "account.copy": "Copïo dolen i'r proffil", "account.direct": "Crybwyll yn breifat @{name}", "account.disable_notifications": "Stopiwch fy hysbysu pan fydd @{name} yn postio", + "account.domain_blocking": "Parthau'n cael eu rhwystro", "account.edit_profile": "Golygu'r proffil", "account.enable_notifications": "Rhowch wybod i fi pan fydd @{name} yn postio", "account.endorse": "Dangos ar fy mhroffil", @@ -39,6 +41,7 @@ "account.following": "Yn dilyn", "account.following_counter": "{count, plural, one {Yn dilyn {counter}} other {Yn dilyn {counter} arall}}", "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.", + "account.follows_you": "Yn eich dilyn chi", "account.go_to_profile": "Mynd i'r proffil", "account.hide_reblogs": "Cuddio hybiau gan @{name}", "account.in_memoriam": "Er Cof.", @@ -53,13 +56,17 @@ "account.mute_notifications_short": "Diffodd hysbysiadau", "account.mute_short": "Anwybyddu", "account.muted": "Wedi anwybyddu", + "account.muting": "Tewi", + "account.mutual": "Rydych chi'n dilyn eich gilydd", "account.no_bio": "Dim disgrifiad wedi'i gynnig.", "account.open_original_page": "Agor y dudalen wreiddiol", "account.posts": "Postiadau", "account.posts_with_replies": "Postiadau ac ymatebion", + "account.remove_from_followers": "Tynnu {name} o'ch dilynwyr", "account.report": "Adrodd @{name}", "account.requested": "Aros am gymeradwyaeth. Cliciwch er mwyn canslo cais dilyn", "account.requested_follow": "Mae {name} wedi gwneud cais i'ch dilyn", + "account.requests_to_follow_you": "Ceisiadau i'ch dilyn", "account.share": "Rhannu proffil @{name}", "account.show_reblogs": "Dangos hybiau gan @{name}", "account.statuses_counter": "{count, plural, one {{counter} postiad} two {{counter} bostiad} few {{counter} phostiad} many {{counter} postiad} other {{counter} postiad}}", @@ -227,6 +234,9 @@ "confirmations.redraft.confirm": "Dileu ac ailddrafftio", "confirmations.redraft.message": "Ydych chi wir eisiau'r dileu'r postiad hwn a'i ailddrafftio? Bydd ffefrynnau a hybiau'n cael eu colli, a bydd atebion i'r post gwreiddiol yn mynd yn amddifad.", "confirmations.redraft.title": "Dileu ac ailddraftio'r postiad?", + "confirmations.remove_from_followers.confirm": "Dileu dilynwr", + "confirmations.remove_from_followers.message": "Bydd {name} yn rhoi'r gorau i'ch dilyn. A ydych yn siŵr eich bod am fwrw ymlaen?", + "confirmations.remove_from_followers.title": "Tynnu dilynwr?", "confirmations.reply.confirm": "Ymateb", "confirmations.reply.message": "Bydd ateb nawr yn cymryd lle y neges yr ydych yn cyfansoddi ar hyn o bryd. Ydych chi'n siŵr eich bod am barhau?", "confirmations.reply.title": "Trosysgrifo'r postiad?", @@ -294,6 +304,9 @@ "emoji_button.search_results": "Canlyniadau chwilio", "emoji_button.symbols": "Symbolau", "emoji_button.travel": "Teithio a Llefydd", + "empty_column.account_featured.me": "Dydych chi heb gynnwys dim eto. Oeddech chi'n gwybod y gallwch chi gynnwys eich postiadau a'r hashnodau rydych chi'n eu defnyddio fwyaf, a hyd yn oed cyfrifon eich ffrind ar eich proffil?", + "empty_column.account_featured.other": "Dyw {acct} heb gynnwys dim eto. Oeddech chi'n gwybod y gallwch chi gynnwys eich postiadau a hashnodau rydych chi'n eu defnyddio fwyaf, a hyd yn oed cyfrifon eich ffrind ar eich proffil?", + "empty_column.account_featured_other.unknown": "Dyw'r cyfrif hwn heb gynnwys dim eto.", "empty_column.account_hides_collections": "Mae'r defnyddiwr wedi dewis i beidio rhannu'r wybodaeth yma", "empty_column.account_suspended": "Cyfrif wedi'i atal", "empty_column.account_timeline": "Dim postiadau yma!", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 4a90fddda2..1306e3c27b 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -62,6 +62,7 @@ "account.open_original_page": "Åbn oprindelig side", "account.posts": "Indlæg", "account.posts_with_replies": "Indlæg og svar", + "account.remove_from_followers": "Fjern {name} fra følgere", "account.report": "Anmeld @{name}", "account.requested": "Afventer godkendelse. Tryk for at annullere følgeanmodning", "account.requested_follow": "{name} har anmodet om at følge dig", @@ -233,6 +234,9 @@ "confirmations.redraft.confirm": "Slet og omformulér", "confirmations.redraft.message": "Sikker på, at dette indlæg skal slettes og omskrives? Favoritter og fremhævelser går tabt, og svar til det oprindelige indlæg mister tilknytningen.", "confirmations.redraft.title": "Slet og omformulér indlæg?", + "confirmations.remove_from_followers.confirm": "Fjern følger", + "confirmations.remove_from_followers.message": "{name} vil ophøre med at være en følger. Sikker på, at man vil fortsætte?", + "confirmations.remove_from_followers.title": "Fjern følger?", "confirmations.reply.confirm": "Svar", "confirmations.reply.message": "Hvis du svarer nu, vil det overskrive den besked, du er ved at skrive. Fortsæt alligevel?", "confirmations.reply.title": "Overskriv indlæg?", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 8fa53cfa4a..4a86c46f28 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -19,12 +19,12 @@ "account.block_domain": "{domain} sperren", "account.block_short": "Blockieren", "account.blocked": "Blockiert", - "account.blocking": "Gesperrt", + "account.blocking": "Blockiert", "account.cancel_follow_request": "Follower-Anfrage zurückziehen", "account.copy": "Link zum Profil kopieren", "account.direct": "@{name} privat erwähnen", "account.disable_notifications": "Höre auf mich zu benachrichtigen wenn @{name} etwas postet", - "account.domain_blocking": "Domain gesperrt", + "account.domain_blocking": "Domain blockiert", "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", "account.endorse": "Im Profil empfehlen", @@ -62,6 +62,7 @@ "account.open_original_page": "Ursprüngliche Seite öffnen", "account.posts": "Beiträge", "account.posts_with_replies": "Beiträge und Antworten", + "account.remove_from_followers": "{name} als Follower entfernen", "account.report": "@{name} melden", "account.requested": "Die Genehmigung steht noch aus. Klicke hier, um die Follower-Anfrage zurückzuziehen", "account.requested_follow": "{name} möchte dir folgen", @@ -233,6 +234,9 @@ "confirmations.redraft.confirm": "Löschen und neu erstellen", "confirmations.redraft.message": "Möchtest du diesen Beitrag wirklich löschen und neu verfassen? Alle Favoriten sowie die bisher geteilten Beiträge werden verloren gehen und Antworten auf den ursprünglichen Beitrag verlieren den Zusammenhang.", "confirmations.redraft.title": "Beitrag löschen und neu erstellen?", + "confirmations.remove_from_followers.confirm": "Follower entfernen", + "confirmations.remove_from_followers.message": "{name} wird dir nicht länger folgen. Bist du dir sicher?", + "confirmations.remove_from_followers.title": "Follower entfernen?", "confirmations.reply.confirm": "Antworten", "confirmations.reply.message": "Wenn du jetzt darauf antwortest, wird der andere Beitrag, an dem du gerade geschrieben hast, verworfen. Möchtest du wirklich fortfahren?", "confirmations.reply.title": "Beitrag überschreiben?", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index c63b6e6dab..5cb1118e10 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -19,6 +19,7 @@ "account.block_domain": "Bloki la domajnon {domain}", "account.block_short": "Bloko", "account.blocked": "Blokita", + "account.blocking": "Bloko", "account.cancel_follow_request": "Nuligi peton por sekvado", "account.copy": "Kopii ligilon al profilo", "account.direct": "Private mencii @{name}", @@ -52,6 +53,7 @@ "account.mute_notifications_short": "Silentigu sciigojn", "account.mute_short": "Silentigu", "account.muted": "Silentigita", + "account.mutual": "Vi sekvas unu la alian", "account.no_bio": "Neniu priskribo estas provizita.", "account.open_original_page": "Malfermi la originalan paĝon", "account.posts": "Afiŝoj", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 9e160a6532..17960e5dc0 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -62,6 +62,7 @@ "account.open_original_page": "Abrir página original", "account.posts": "Mensajes", "account.posts_with_replies": "Mnsjs y resp. públicas", + "account.remove_from_followers": "Quitar a {name} de tus seguidores", "account.report": "Denunciar a @{name}", "account.requested": "Esperando aprobación. Hacé clic para cancelar la solicitud de seguimiento", "account.requested_follow": "{name} solicitó seguirte", @@ -233,6 +234,9 @@ "confirmations.redraft.confirm": "Eliminar mensaje original y editarlo", "confirmations.redraft.message": "¿Estás seguro que querés eliminar este mensaje y volver a editarlo? Se perderán las veces marcadas como favorito y sus adhesiones, y las respuestas al mensaje original quedarán huérfanas.", "confirmations.redraft.title": "¿Eliminar y volver a redactar mensaje?", + "confirmations.remove_from_followers.confirm": "Quitar seguidor", + "confirmations.remove_from_followers.message": "{name} dejará de seguirte. ¿Estás seguro de que querés continuar?", + "confirmations.remove_from_followers.title": "¿Quitar seguidor?", "confirmations.reply.confirm": "Responder", "confirmations.reply.message": "Responder ahora sobreescribirá el mensaje que estás redactando actualmente. ¿Estás seguro que querés seguir?", "confirmations.reply.title": "¿Sobrescribir mensaje?", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index ec9a38b4eb..c25e948df8 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -62,6 +62,7 @@ "account.open_original_page": "Abrir página original", "account.posts": "Publicaciones", "account.posts_with_replies": "Publicaciones y respuestas", + "account.remove_from_followers": "Eliminar {name} de tus seguidores", "account.report": "Denunciar a @{name}", "account.requested": "Esperando aprobación. Haz clic para cancelar la solicitud de seguimiento", "account.requested_follow": "{name} ha solicitado seguirte", @@ -233,6 +234,9 @@ "confirmations.redraft.confirm": "Borrar y volver a borrador", "confirmations.redraft.message": "¿Estás seguro que quieres borrar esta publicación y editarla? Los favoritos e impulsos se perderán, y las respuestas a la publicación original quedarán separadas.", "confirmations.redraft.title": "¿Borrar y volver a redactar la publicación?", + "confirmations.remove_from_followers.confirm": "Eliminar seguidor", + "confirmations.remove_from_followers.message": "{name} dejará de seguirte. ¿Estás seguro de que quieres continuar?", + "confirmations.remove_from_followers.title": "¿Eliminar seguidor?", "confirmations.reply.confirm": "Responder", "confirmations.reply.message": "Responder sobrescribirá el mensaje que estás escribiendo. ¿Estás seguro de que deseas continuar?", "confirmations.reply.title": "¿Deseas sobreescribir la publicación?", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 38efac42f2..66145380c8 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -62,6 +62,7 @@ "account.open_original_page": "Abrir página original", "account.posts": "Publicaciones", "account.posts_with_replies": "Publicaciones y respuestas", + "account.remove_from_followers": "Eliminar {name} de tus seguidores", "account.report": "Reportar a @{name}", "account.requested": "Esperando aprobación. Haz clic para cancelar la solicitud de seguimiento", "account.requested_follow": "{name} ha solicitado seguirte", @@ -233,6 +234,9 @@ "confirmations.redraft.confirm": "Borrar y volver a borrador", "confirmations.redraft.message": "¿Estás seguro de querer borrar esta publicación y reescribirla? Los favoritos e impulsos se perderán, y las respuestas a la publicación original quedarán sin contexto.", "confirmations.redraft.title": "¿Borrar y volver a redactar la publicación?", + "confirmations.remove_from_followers.confirm": "Eliminar seguidor", + "confirmations.remove_from_followers.message": "{name} dejará de seguirte. ¿Estás seguro de que quieres continuar?", + "confirmations.remove_from_followers.title": "¿Eliminar seguidor?", "confirmations.reply.confirm": "Responder", "confirmations.reply.message": "Responder sobrescribirá el mensaje que estás escribiendo. ¿Seguro que deseas continuar?", "confirmations.reply.title": "¿Sobrescribir publicación?", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 7c89bcde5f..498c0a1694 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -19,13 +19,18 @@ "account.block_domain": "انسداد دامنهٔ {domain}", "account.block_short": "انسداد", "account.blocked": "مسدود", + "account.blocking": "مسدود کرده", "account.cancel_follow_request": "رد کردن درخواست پی‌گیری", "account.copy": "رونوشت از پیوند به نمایه", "account.direct": "اشارهٔ خصوصی به ‪@{name}‬", "account.disable_notifications": "آگاه کردن من هنگام فرسته‌های ‎@{name} را متوقّف کن", + "account.domain_blocking": "دامنهٔ مسدود کرده", "account.edit_profile": "ویرایش نمایه", "account.enable_notifications": "هنگام فرسته‌های ‎@{name} مرا آگاه کن", "account.endorse": "معرّفی در نمایه", + "account.featured": " پیشنهادی", + "account.featured.hashtags": "برچسب‌ها", + "account.featured.posts": "فرسته‌ها", "account.featured_tags.last_status_at": "آخرین فرسته در {date}", "account.featured_tags.last_status_never": "بدون فرسته", "account.follow": "پی‌گرفتن", @@ -36,6 +41,7 @@ "account.following": "پی می‌گیرید", "account.following_counter": "{count, plural, one {{counter} پی‌گرفته} other {{counter} پی‌گرفته}}", "account.follows.empty": "این کاربر هنوز پی‌گیر کسی نیست.", + "account.follows_you": "پی‌گیرتان است", "account.go_to_profile": "رفتن به نمایه", "account.hide_reblogs": "نهفتن تقویت‌های ‎@{name}", "account.in_memoriam": "به یادبود.", @@ -50,13 +56,17 @@ "account.mute_notifications_short": "خموشی آگاهی‌ها", "account.mute_short": "خموشی", "account.muted": "خموش", + "account.muting": "خموش کرده", + "account.mutual": "یکدیگر را پی می‌گیرید", "account.no_bio": "شرحی فراهم نشده.", "account.open_original_page": "گشودن صفحهٔ اصلی", "account.posts": "فرسته", "account.posts_with_replies": "فرسته‌ها و پاسخ‌ها", + "account.remove_from_followers": "برداشتن {name} از پی‌گیران", "account.report": "گزارش ‎@{name}", "account.requested": "منتظر پذیرش است. برای لغو درخواست پی‌گیری کلیک کنید", "account.requested_follow": "{name} درخواست پی‌گیریتان را داد", + "account.requests_to_follow_you": "درخواست پی‌گیریتان را دارد", "account.share": "هم‌رسانی نمایهٔ ‎@{name}", "account.show_reblogs": "نمایش تقویت‌های ‎@{name}", "account.statuses_counter": "{count, plural, one {{counter} فرسته} other {{counter} فرسته}}", @@ -224,6 +234,9 @@ "confirmations.redraft.confirm": "حذف و بازنویسی", "confirmations.redraft.message": "مطمئنید که می‌خواهید این فرسته را حذف کنید و از نو بنویسید؟ با این کار تقویت‌ها و پسندهایش از دست رفته و پاسخ‌ها به آن بی‌مرجع می‌شود.", "confirmations.redraft.title": "حذف و پیش‌نویسی دوبارهٔ فرسته؟", + "confirmations.remove_from_followers.confirm": "برداشتن پی‌گیرنده", + "confirmations.remove_from_followers.message": "دیگر {name} پیتان نخواهد گرفت. مطمئنید که می‌خواهید ادامه دهید؟", + "confirmations.remove_from_followers.title": "برداشتن پی‌گیرنده؟", "confirmations.reply.confirm": "پاسخ", "confirmations.reply.message": "اگر الان پاسخ دهید، چیزی که در حال نوشتنش بودید پاک خواهد شد. می‌خواهید ادامه دهید؟", "confirmations.reply.title": "رونویسی فرسته؟", @@ -291,6 +304,9 @@ "emoji_button.search_results": "نتایج جست‌وجو", "emoji_button.symbols": "نمادها", "emoji_button.travel": "سفر و مکان", + "empty_column.account_featured.me": "هنوز چیزی را پیشنهاد نکرده‌اید. می‌دانید که می‌توانید فرسته‌هایتان، برچسب‌هایی که بیش‌تر استفاده می‌کنید و حتا حساب‌های دوستانتان را روی نمایه‌تان پیشنهاد کنید؟", + "empty_column.account_featured.other": "حساب {acct} هنوز چیزی را پیشنهاد نکرده. می‌دانید که می‌توانید فرسته‌هایتان، برچسب‌هایی که بیش‌تر استفاده می‌کنید و حتا حساب‌های دوستانتان را روی نمایه‌تان پیشنهاد کنید؟", + "empty_column.account_featured_other.unknown": "این حساب هنوز چیزی را پیشنهاد نکرده.", "empty_column.account_hides_collections": "کاربر خواسته که این اطّلاعات در دسترس نباشند", "empty_column.account_suspended": "حساب معلق شد", "empty_column.account_timeline": "هیچ فرسته‌ای این‌جا نیست!", @@ -310,7 +326,7 @@ "empty_column.list": "هنوز چیزی در این سیاهه نیست. هنگامی که اعضایش فرسته‌های جدیدی بفرستند، این‌جا ظاهر خواهند شد.", "empty_column.mutes": "هنوز هیچ کاربری را خموش نکرده‌اید.", "empty_column.notification_requests": "همه چیز تمیز است! هیچ‌چیزی این‌جا نیست. هنگامی که آگاهی‌های جدیدی دریافت کنید، بسته به تنظیماتتان این‌جا ظاهر خواهند شد.", - "empty_column.notifications": "هنوز هیچ آگاهی‌آی ندارید. هنگامی که دیگران با شما برهم‌کنش داشته باشند،‌این‌حا خواهید دیدش.", + "empty_column.notifications": "هنوز هیچ آگاهی‌ای ندارید. هنگامی که دیگران با شما برهم‌کنش داشته باشند، این‌جا خواهید دیدش.", "empty_column.public": "این‌جا هنوز چیزی نیست! خودتان چیزی بنویسید یا کاربران کارسازهای دیگر را پی‌گیری کنید تا این‌جا پُر شود", "error.unexpected_crash.explanation": "به خاطر اشکالی در کدهای ما یا ناسازگاری با مرورگر شما، این صفحه به درستی نمایش نیافت.", "error.unexpected_crash.explanation_addons": "این صفحه نمی‌تواند درست نشان داده شود. احتمالاً این خطا ناشی از یک افزونهٔ مرورگر یا ابزار ترجمهٔ خودکار است.", @@ -375,6 +391,8 @@ "generic.saved": "ذخیره شده", "getting_started.heading": "آغاز کنید", "hashtag.admin_moderation": "گشودن میانای نظارت برای ‎#{name}", + "hashtag.browse": "مرور فرسته‌ها در #{hashtag}", + "hashtag.browse_from_account": "مرور فرسته‌ها از ‪@{name}‬ در #{hashtag}", "hashtag.column_header.tag_mode.all": "و {additional}", "hashtag.column_header.tag_mode.any": "یا {additional}", "hashtag.column_header.tag_mode.none": "بدون {additional}", @@ -388,6 +406,7 @@ "hashtag.counter_by_uses": "{count, plural, one {{counter} فرسته} other {{counter} فرسته}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} فرسته} other {{counter} فرسته}} امروز", "hashtag.follow": "پی‌گرفتن برچسب", + "hashtag.mute": "خموشی #{hashtag}", "hashtag.unfollow": "پی‌نگرفتن برچسب", "hashtags.and_other": "…و {count, plural, other {# بیش‌تر}}", "hints.profiles.followers_may_be_missing": "شاید پی‌گیرندگان این نمایه نباشند.", @@ -903,6 +922,12 @@ "video.expand": "گسترش ویدیو", "video.fullscreen": "تمام‌صفحه", "video.hide": "نهفتن ویدیو", + "video.mute": "خموشی", "video.pause": "مکث", - "video.play": "پخش" + "video.play": "پخش", + "video.skip_backward": "پرش به پس", + "video.skip_forward": "پرش به پیش", + "video.unmute": "ناخموشی", + "video.volume_down": "کاهش حجم صدا", + "video.volume_up": "افزایش حجم صدا" } diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 58a35b2779..8fde91043e 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -24,7 +24,7 @@ "account.copy": "Kopioi linkki profiiliin", "account.direct": "Mainitse @{name} yksityisesti", "account.disable_notifications": "Lopeta ilmoittamasta minulle, kun @{name} julkaisee", - "account.domain_blocking": "Estetty verkkotunnus", + "account.domain_blocking": "Verkkotunnus estetty", "account.edit_profile": "Muokkaa profiilia", "account.enable_notifications": "Ilmoita minulle, kun @{name} julkaisee", "account.endorse": "Suosittele profiilissasi", @@ -55,12 +55,13 @@ "account.mute_notifications_short": "Mykistä ilmoitukset", "account.mute_short": "Mykistä", "account.muted": "Mykistetty", - "account.muting": "Hiljennetty", + "account.muting": "Mykistetty", "account.mutual": "Seuraatte toisianne", "account.no_bio": "Kuvausta ei ole annettu.", "account.open_original_page": "Avaa alkuperäinen sivu", "account.posts": "Julkaisut", "account.posts_with_replies": "Julkaisut ja vastaukset", + "account.remove_from_followers": "Poista {name} seuraajista", "account.report": "Raportoi @{name}", "account.requested": "Odottaa hyväksyntää. Peruuta seurantapyyntö napsauttamalla", "account.requested_follow": "{name} on pyytänyt lupaa seurata sinua", @@ -232,6 +233,9 @@ "confirmations.redraft.confirm": "Poista ja palauta muokattavaksi", "confirmations.redraft.message": "Haluatko varmasti poistaa julkaisun ja tehdä siitä luonnoksen? Suosikit ja tehostukset menetetään, ja alkuperäisen julkaisun vastaukset jäävät orvoiksi.", "confirmations.redraft.title": "Poistetaanko julkaisu ja palautetaanko se muokattavaksi?", + "confirmations.remove_from_followers.confirm": "Poista seuraaja", + "confirmations.remove_from_followers.message": "{name} lakkaa seuraamasta sinua. Haluatko varmasti jatkaa?", + "confirmations.remove_from_followers.title": "Poistetaanko seuraaja?", "confirmations.reply.confirm": "Vastaa", "confirmations.reply.message": "Jos vastaat nyt, vastaus korvaa parhaillaan työstämäsi viestin. Haluatko varmasti jatkaa?", "confirmations.reply.title": "Korvataanko julkaisu?", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 6bed01d408..6ca467199c 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -62,6 +62,7 @@ "account.open_original_page": "Opna upprunasíðuna", "account.posts": "Uppsløg", "account.posts_with_replies": "Uppsløg og svar", + "account.remove_from_followers": "Strika {name} av fylgjaralista", "account.report": "Melda @{name}", "account.requested": "Bíðar eftir góðkenning. Trýst fyri at angra umbønina", "account.requested_follow": "{name} hevur biðið um at fylgja tær", @@ -233,6 +234,9 @@ "confirmations.redraft.confirm": "Sletta og skriva umaftur", "confirmations.redraft.message": "Vilt tú veruliga strika hendan postin og í staðin gera hann til eina nýggja kladdu? Yndisfrámerki og framhevjanir blíva burtur, og svar til upprunapostin missa tilknýtið.", "confirmations.redraft.title": "Strika & ger nýtt uppskot um post?", + "confirmations.remove_from_followers.confirm": "Strika fylgjara", + "confirmations.remove_from_followers.message": "{name} fer ikki longur at fylgja tær. Er tú vís/ur í at tú vilt halda fram?", + "confirmations.remove_from_followers.title": "Strika fylgjara?", "confirmations.reply.confirm": "Svara", "confirmations.reply.message": "Svarar tú nú, verða boðini, sum tú ert í holt við at skriva yvirskrivað. Ert tú vís/ur í, at tú vilt halda fram?", "confirmations.reply.title": "Skriva omaná post?", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index a678d1ebe4..a52e0f934e 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -19,13 +19,18 @@ "account.block_domain": "Domein {domain} blokkearje", "account.block_short": "Blokkearje", "account.blocked": "Blokkearre", + "account.blocking": "Blokkearre", "account.cancel_follow_request": "Folchfersyk annulearje", "account.copy": "Keppeling nei profyl kopiearje", "account.direct": "Privee fermelde @{name}", "account.disable_notifications": "Jou gjin melding mear wannear @{name} in berjocht pleatst", + "account.domain_blocking": "Domein blokkearre", "account.edit_profile": "Profyl bewurkje", "account.enable_notifications": "Jou in melding mear wannear @{name} in berjocht pleatst", "account.endorse": "Op profyl werjaan", + "account.featured": "Foarsteld", + "account.featured.hashtags": "Hashtags", + "account.featured.posts": "Berjochten", "account.featured_tags.last_status_at": "Lêste berjocht op {date}", "account.featured_tags.last_status_never": "Gjin berjochten", "account.follow": "Folgje", @@ -36,6 +41,7 @@ "account.following": "Folgjend", "account.following_counter": "{count, plural, one {{counter} folgjend} other {{counter} folgjend}}", "account.follows.empty": "Dizze brûker folget noch net ien.", + "account.follows_you": "Folget jo", "account.go_to_profile": "Gean nei profyl", "account.hide_reblogs": "Boosts fan @{name} ferstopje", "account.in_memoriam": "Yn memoriam.", @@ -50,18 +56,23 @@ "account.mute_notifications_short": "Meldingen negearje", "account.mute_short": "Negearje", "account.muted": "Negearre", + "account.muting": "Dôve", + "account.mutual": "Jim folgje inoar", "account.no_bio": "Gjin omskriuwing opjûn.", "account.open_original_page": "Orizjinele side iepenje", "account.posts": "Berjochten", "account.posts_with_replies": "Berjochten en reaksjes", + "account.remove_from_followers": "{name} as folger fuortsmite", "account.report": "@{name} rapportearje", "account.requested": "Wacht op goedkarring. Klik om it folchfersyk te annulearjen", "account.requested_follow": "{name} hat dy in folchfersyk stjoerd", + "account.requests_to_follow_you": "Fersiken om jo te folgjen", "account.share": "Profyl fan @{name} diele", "account.show_reblogs": "Boosts fan @{name} toane", "account.statuses_counter": "{count, plural, one {{counter} berjocht} other {{counter} berjochten}}", "account.unblock": "@{name} deblokkearje", "account.unblock_domain": "Domein {domain} deblokkearje", + "account.unblock_domain_short": "Deblokkearje", "account.unblock_short": "Deblokkearje", "account.unendorse": "Net op profyl werjaan", "account.unfollow": "Net mear folgje", @@ -215,10 +226,17 @@ "confirmations.logout.confirm": "Ofmelde", "confirmations.logout.message": "Binne jo wis dat jo ôfmelde wolle?", "confirmations.logout.title": "Ofmelde?", + "confirmations.missing_alt_text.confirm": "Alt-tekst tafoegje", + "confirmations.missing_alt_text.message": "Jo berjocht befettet media sûnder alt-tekst. It tafoegjen fan beskriuwingen helpt jo om jo ynhâld tagonklik te meitsjen foar mear minsken.", + "confirmations.missing_alt_text.secondary": "Dochs pleatse", + "confirmations.missing_alt_text.title": "Alt-tekst tafoegje?", "confirmations.mute.confirm": "Negearje", "confirmations.redraft.confirm": "Fuortsmite en opnij opstelle", "confirmations.redraft.message": "Binne jo wis dat jo dit berjocht fuortsmite en opnij opstelle wolle? Favoriten en boosts geane dan ferlern en reaksjes op it oarspronklike berjocht reitsje jo kwyt.", "confirmations.redraft.title": "Berjocht fuortsmite en opnij opstelle?", + "confirmations.remove_from_followers.confirm": "Folger fuortsmite", + "confirmations.remove_from_followers.message": "{name} sil jo net mear folgje. Binne jo wis dat jo trochgean wolle?", + "confirmations.remove_from_followers.title": "Folger fuortsmite?", "confirmations.reply.confirm": "Reagearje", "confirmations.reply.message": "Troch no te reagearjen sil it berjocht dat jo no oan it skriuwen binne oerskreaun wurde. Wolle jo trochgean?", "confirmations.reply.title": "Berjocht oerskriuwe?", @@ -244,6 +262,9 @@ "dismissable_banner.community_timeline": "Dit binne de meast resinte iepenbiere berjochten fan accounts op {domain}.", "dismissable_banner.dismiss": "Slute", "dismissable_banner.explore_links": "Dizze nijsartikelen wurde hjoed de dei it meast dield op de fediverse. Nijere artikelen dy’t troch mear ferskate minsken pleatst binne, wurde heger rangskikt.", + "dismissable_banner.explore_statuses": "Dizze berjochten winne oan populariteit op de fediverse. Nijere berjochten mei mear boosts en favoriten stean heger.", + "dismissable_banner.explore_tags": "Dizze hashtags winne oan populariteit op de fediverse. Hashtags dy’t troch mear ferskate minsken brûkt wurde, wurde heger rangskikt.", + "dismissable_banner.public_timeline": "Dit binne de meast resinte iepenbiere berjochten fan accounts op de fediverse dy’t troch minsken op {domain} folge wurde.", "domain_block_modal.block": "Server blokkearje", "domain_block_modal.block_account_instead": "Yn stee hjirfan {name} blokkearje", "domain_block_modal.they_can_interact_with_old_posts": "Minsken op dizze server kinne ynteraksje hawwe mei jo âlde berjochten.", @@ -283,6 +304,9 @@ "emoji_button.search_results": "Sykresultaten", "emoji_button.symbols": "Symboalen", "emoji_button.travel": "Reizgje en lokaasjes", + "empty_column.account_featured.me": "Jo hawwe noch neat útljochte. Wisten jo dat jo jo berjochten, hashtags dy’tsto it meast brûkst en sels de accounts fan dyn freonen fermelde kinne op dyn profyl?", + "empty_column.account_featured.other": "{acct} hat noch neat útljochte. Wisten jo dat jo jo berjochten, hashtags dy’tsto it meast brûkst en sels de accounts fan dyn freonen fermelde kinne op dyn profyl?", + "empty_column.account_featured_other.unknown": "Dizze account hat noch neat útljochte.", "empty_column.account_hides_collections": "Dizze brûker hat derfoar keazen dizze ynformaasje net beskikber te meitsjen", "empty_column.account_suspended": "Account beskoattele", "empty_column.account_timeline": "Hjir binne gjin berjochten!", @@ -363,8 +387,12 @@ "footer.privacy_policy": "Privacybelied", "footer.source_code": "Boarnekoade besjen", "footer.status": "Steat", + "footer.terms_of_service": "Tsjinstbetingsten", "generic.saved": "Bewarre", "getting_started.heading": "Uteinsette", + "hashtag.admin_moderation": "Moderaasje-omjouwing fan #{name} iepenje", + "hashtag.browse": "Berjochten mei #{hashtag} besjen", + "hashtag.browse_from_account": "Berjochten fan @{name} mei #{hashtag} besjen", "hashtag.column_header.tag_mode.all": "en {additional}", "hashtag.column_header.tag_mode.any": "of {additional}", "hashtag.column_header.tag_mode.none": "sûnder {additional}", @@ -378,6 +406,7 @@ "hashtag.counter_by_uses": "{count, plural, one {{counter} berjocht} other {{counter} berjochten}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} berjocht} other {{counter} berjochten}} hjoed", "hashtag.follow": "Hashtag folgje", + "hashtag.mute": "#{hashtag} negearje", "hashtag.unfollow": "Hashtag ûntfolgje", "hashtags.and_other": "…en {count, plural, one {}other {# mear}}", "hints.profiles.followers_may_be_missing": "Folgers foar dit profyl kinne ûntbrekke.", @@ -407,6 +436,12 @@ "ignore_notifications_modal.not_following_title": "Meldingen negearje fan minsken dy’t josels net folgje?", "ignore_notifications_modal.private_mentions_title": "Meldingen negearje fan net frege priveeberjochten?", "info_button.label": "Help", + "info_button.what_is_alt_text": "

Wat is alt-tekst?

Alt-tekst biedt ôfbyldingsbeskriuwingen foar minsken mei in fisuele beheining en ferbiningen mei in lege bânbreedte of foar minsken dy’t nei ekstra kontekst sykje.

Jo kinne de tagonklikheid en de begryplikheid foar elkenien ferbetterje troch dúdlik, koart en objektyf te skriuwen.

  • Beskriuw wichtige eleminten
  • Fetsje tekst yn ôfbyldingen gear
  • Brûk in normale sinsbou
  • Mij oertallige ynformaasje
  • Fokusje op trends en wichtige befiningen yn komplekse bylden (lykas diagrammen of kaarten)
", + "interaction_modal.action.favourite": "Om troch te gaan, moatte jo fan jo eigen account ôf as favoryt markearje.", + "interaction_modal.action.follow": "Om troch te gaan, moatte jo fan jo eigen account ôf folgje.", + "interaction_modal.action.reblog": "Om troch te gaan, moatte jo fan jo eigen account ôf booste.", + "interaction_modal.action.reply": "Om troch te gaan, moatte jo fan jo eigen account ôf reagearje.", + "interaction_modal.action.vote": "Om troch te gaan, moatte jo fan jo eigen account ôf as favoryt stimme.", "interaction_modal.go": "Gean", "interaction_modal.no_account_yet": "Hawwe jo noch gjin account?", "interaction_modal.on_another_server": "Op een oare server", @@ -679,6 +714,7 @@ "poll_button.remove_poll": "Enkête fuortsmite", "privacy.change": "Sichtberheid fan berjocht oanpasse", "privacy.direct.long": "Elkenien dy’ yn it berjocht fermeld wurdt", + "privacy.direct.short": "Priveefermelding", "privacy.private.long": "Allinnich jo folgers", "privacy.private.short": "Folgers", "privacy.public.long": "Elkenien op Mastodon en dêrbûten", @@ -853,7 +889,9 @@ "subscribed_languages.target": "Toande talen foar {target} wizigje", "tabs_bar.home": "Startside", "tabs_bar.notifications": "Meldingen", + "terms_of_service.effective_as_of": "Effektyf fan {date} ôf", "terms_of_service.title": "Gebrûksbetingsten", + "terms_of_service.upcoming_changes_on": "Oankommende wizigingen op {date}", "time_remaining.days": "{number, plural, one {# dei} other {# dagen}} te gean", "time_remaining.hours": "{number, plural, one {# oere} other {# oeren}} te gean", "time_remaining.minutes": "{number, plural, one {# minút} other {# minuten}} te gean", @@ -884,6 +922,12 @@ "video.expand": "Fideo grutter meitsje", "video.fullscreen": "Folslein skerm", "video.hide": "Fideo ferstopje", + "video.mute": "Negearje", "video.pause": "Skoft", - "video.play": "Ofspylje" + "video.play": "Ofspylje", + "video.skip_backward": "Tebek", + "video.skip_forward": "Foarút", + "video.unmute": "Net mear negearje", + "video.volume_down": "Folume omleech", + "video.volume_up": "Folume omheech" } diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 0cb1905dc5..3ab093f796 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -19,10 +19,12 @@ "account.block_domain": "Agochar todo de {domain}", "account.block_short": "Bloquear", "account.blocked": "Bloqueada", + "account.blocking": "Bloqueos", "account.cancel_follow_request": "Desbotar a solicitude de seguimento", "account.copy": "Copiar ligazón ao perfil", "account.direct": "Mencionar de xeito privado a @{name}", "account.disable_notifications": "Deixar de notificarme cando @{name} publica", + "account.domain_blocking": "Bloqueo do dominio", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Noficarme cando @{name} publique", "account.endorse": "Amosar no perfil", @@ -39,6 +41,7 @@ "account.following": "Seguindo", "account.following_counter": "{count, plural, one {{counter} seguimento} other {{counter} seguimentos}}", "account.follows.empty": "Esta usuaria aínda non segue a ninguén.", + "account.follows_you": "Séguete", "account.go_to_profile": "Ir ao perfil", "account.hide_reblogs": "Agochar promocións de @{name}", "account.in_memoriam": "Lembranzas.", @@ -53,13 +56,17 @@ "account.mute_notifications_short": "Silenciar notificacións", "account.mute_short": "Acalar", "account.muted": "Acalada", + "account.muting": "Silenciamento", + "account.mutual": "Seguimento mútuo", "account.no_bio": "Sen descrición.", "account.open_original_page": "Abrir páxina orixinal", "account.posts": "Publicacións", "account.posts_with_replies": "Publicacións e respostas", + "account.remove_from_followers": "Retirar a {name} das seguidoras", "account.report": "Informar sobre @{name}", "account.requested": "Agardando aprobación. Preme para desbotar a solicitude", "account.requested_follow": "{name} solicitou seguirte", + "account.requests_to_follow_you": "Solicita seguirte", "account.share": "Compartir o perfil de @{name}", "account.show_reblogs": "Amosar compartidos de @{name}", "account.statuses_counter": "{count, plural, one {{counter} publicación} other {{counter} publicacións}}", @@ -227,6 +234,9 @@ "confirmations.redraft.confirm": "Eliminar e reescribir", "confirmations.redraft.message": "Tes a certeza de querer eliminar esta publicación e reescribila? Perderás as promocións e favorecementos, e as respostas á publicación orixinal ficarán orfas.", "confirmations.redraft.title": "Eliminar e reescribir a publicación?", + "confirmations.remove_from_followers.confirm": "Quitar seguidora", + "confirmations.remove_from_followers.message": "{name} vai deixar de seguirte. É isto o que queres?", + "confirmations.remove_from_followers.title": "Quitar seguidora?", "confirmations.reply.confirm": "Responder", "confirmations.reply.message": "Ao responder sobrescribirás a mensaxe que estás a compor. Tes a certeza de que queres continuar?", "confirmations.reply.title": "Editar a publicación?", @@ -294,6 +304,9 @@ "emoji_button.search_results": "Resultados da procura", "emoji_button.symbols": "Símbolos", "emoji_button.travel": "Viaxes e Lugares", + "empty_column.account_featured.me": "Aínda non destacaches nada. Sabías que podes facer destacar no teu perfil as túas publicacións e os cancelos que máis usas, incluso as contas das túas amizades?", + "empty_column.account_featured.other": "{acct} aínda non escolleu nada para destacar. Sabías que podes facer destacatar no teu perfil as túas publicacións e os cancelos que máis usas, incluso publicacións das túas amizades?", + "empty_column.account_featured_other.unknown": "Esta conta aínda non destacou nada.", "empty_column.account_hides_collections": "A usuaria decideu non facer pública esta información", "empty_column.account_suspended": "Conta suspendida", "empty_column.account_timeline": "Non hai publicacións aquí!", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index e2ecf6cbaa..6c814614dc 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -62,6 +62,7 @@ "account.open_original_page": "לפתיחת העמוד המקורי", "account.posts": "פוסטים", "account.posts_with_replies": "הודעות ותגובות", + "account.remove_from_followers": "הסרת {name} מעוקבי", "account.report": "דווח על @{name}", "account.requested": "בהמתנה לאישור. לחצי כדי לבטל בקשת מעקב", "account.requested_follow": "{name} ביקשו לעקוב אחריך", @@ -233,6 +234,9 @@ "confirmations.redraft.confirm": "מחיקה ועריכה מחדש", "confirmations.redraft.message": "למחוק ולהתחיל טיוטה חדשה? חיבובים והדהודים יאבדו, ותגובות להודעה המקורית ישארו יתומות.", "confirmations.redraft.title": "מחיקה ועריכה מחדש?", + "confirmations.remove_from_followers.confirm": "הסרת עוקב", + "confirmations.remove_from_followers.message": "{name} יוסר/תוסר ממעקב אחריך. האם להמשיך?", + "confirmations.remove_from_followers.title": "להסיר עוקב/עוקבת?", "confirmations.reply.confirm": "תגובה", "confirmations.reply.message": "תגובה עכשיו תמחק את ההודעה שכבר התחלת לכתוב. להמשיך?", "confirmations.reply.title": "לבצע החלפת תוכן?", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index e8d94d274e..7bf8930871 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -62,6 +62,7 @@ "account.open_original_page": "Eredeti oldal megnyitása", "account.posts": "Bejegyzések", "account.posts_with_replies": "Bejegyzések és válaszok", + "account.remove_from_followers": "{name} eltávolítása a követők közül", "account.report": "@{name} jelentése", "account.requested": "Jóváhagyásra vár. Kattints a követési kérés visszavonásához", "account.requested_follow": "{name} kérte, hogy követhessen", @@ -233,6 +234,9 @@ "confirmations.redraft.confirm": "Törlés és újraírás", "confirmations.redraft.message": "Biztos, hogy ezt a bejegyzést szeretnéd törölni és újraírni? Minden megtolást és kedvencnek jelölést elvesztesz, az eredetire adott válaszok pedig elárvulnak.", "confirmations.redraft.title": "Törlöd és újraírod a bejegyzést?", + "confirmations.remove_from_followers.confirm": "Követő eltávolítása", + "confirmations.remove_from_followers.message": "{name} követ téged. Biztos, hogy folytatod?", + "confirmations.remove_from_followers.title": "Követő eltávolítása?", "confirmations.reply.confirm": "Válasz", "confirmations.reply.message": "Ha most válaszolsz, ez felülírja a most szerkesztés alatt álló üzenetet. Mégis ezt szeretnéd?", "confirmations.reply.title": "Felülírod a bejegyzést?", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index abe7f34428..21b8ad3df0 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -62,6 +62,7 @@ "account.open_original_page": "Opna upprunalega síðu", "account.posts": "Færslur", "account.posts_with_replies": "Færslur og svör", + "account.remove_from_followers": "Fjarlægja {name} úr fylgjendum", "account.report": "Kæra @{name}", "account.requested": "Bíður eftir samþykki. Smelltu til að hætta við beiðni um að fylgjast með", "account.requested_follow": "{name} hefur beðið um að fylgjast með þér", @@ -233,6 +234,9 @@ "confirmations.redraft.confirm": "Eyða og endurvinna drög", "confirmations.redraft.message": "Ertu viss um að þú viljir eyða þessari færslu og enduvinna drögin? Eftirlæti og endurbirtingar munu glatast og svör við upprunalegu færslunni munu verða munaðarlaus.", "confirmations.redraft.title": "Eyða og byrja ný drög að færslu?", + "confirmations.remove_from_followers.confirm": "Fjarlægja fylgjanda", + "confirmations.remove_from_followers.message": "{name} mun hætta að fylgjast með þér. Ertu viss um að þú viljir halda áfram?", + "confirmations.remove_from_followers.title": "Fjarlægja fylgjanda?", "confirmations.reply.confirm": "Svara", "confirmations.reply.message": "Ef þú svarar núna verður skrifað yfir skilaboðin sem þú ert að semja núna. Ertu viss um að þú viljir halda áfram?", "confirmations.reply.title": "Skrifa yfir færslu?", @@ -300,6 +304,9 @@ "emoji_button.search_results": "Leitarniðurstöður", "emoji_button.symbols": "Tákn", "emoji_button.travel": "Ferðalög og staðir", + "empty_column.account_featured.me": "Þú hefur enn ekki sett neitt sem áberandi. Vissirðu að þú getur gefið meira vægi á notandasniðinu þínu ýmsum færslum frá þér, myllumerkjum sem þú notar oft og jafnvel aðgöngum vina þinna?", + "empty_column.account_featured.other": "{acct} hefur enn ekki sett neitt sem áberandi. Vissirðu að þú getur gefið meira vægi á notandasniðinu þínu ýmsum færslum frá þér, myllumerkjum sem þú notar oft og jafnvel aðgöngum vina þinna?", + "empty_column.account_featured_other.unknown": "Þessi notandi hefur enn ekki sett neitt sem áberandi.", "empty_column.account_hides_collections": "Notandinn hefur valið að gera ekki tiltækar þessar upplýsingar", "empty_column.account_suspended": "Notandaaðgangur í frysti", "empty_column.account_timeline": "Engar færslur hér!", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index bf54408327..9dbcb02972 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -19,10 +19,12 @@ "account.block_domain": "Blocca dominio {domain}", "account.block_short": "Blocca", "account.blocked": "Bloccato", + "account.blocking": "Account bloccato", "account.cancel_follow_request": "Annulla la richiesta di seguire", "account.copy": "Copia link del profilo", "account.direct": "Menziona privatamente @{name}", "account.disable_notifications": "Smetti di avvisarmi quando @{name} pubblica un post", + "account.domain_blocking": "Account di un dominio bloccato", "account.edit_profile": "Modifica profilo", "account.enable_notifications": "Avvisami quando @{name} pubblica un post", "account.endorse": "In evidenza sul profilo", @@ -39,6 +41,7 @@ "account.following": "Seguiti", "account.following_counter": "{count, plural, one {{counter} segui} other {{counter} seguiti}}", "account.follows.empty": "Questo utente non segue ancora nessuno.", + "account.follows_you": "Ti segue", "account.go_to_profile": "Vai al profilo", "account.hide_reblogs": "Nascondi condivisioni da @{name}", "account.in_memoriam": "In memoria.", @@ -53,13 +56,17 @@ "account.mute_notifications_short": "Silenzia notifiche", "account.mute_short": "Silenzia", "account.muted": "Mutato", + "account.muting": "Account silenziato", + "account.mutual": "Vi seguite a vicenda", "account.no_bio": "Nessuna descrizione fornita.", "account.open_original_page": "Apri la pagina originale", "account.posts": "Post", "account.posts_with_replies": "Post e risposte", + "account.remove_from_followers": "Rimuovi {name} dai seguaci", "account.report": "Segnala @{name}", "account.requested": "In attesa d'approvazione. Clicca per annullare la richiesta di seguire", "account.requested_follow": "{name} ha richiesto di seguirti", + "account.requests_to_follow_you": "Richieste di seguirti", "account.share": "Condividi il profilo di @{name}", "account.show_reblogs": "Mostra condivisioni da @{name}", "account.statuses_counter": "{count, plural, one {{counter} post} other {{counter} post}}", @@ -227,6 +234,9 @@ "confirmations.redraft.confirm": "Elimina e riscrivi", "confirmations.redraft.message": "Sei sicuro di voler eliminare questo post e riscriverlo? I preferiti e i boost andranno persi e le risposte al post originale non saranno più collegate.", "confirmations.redraft.title": "Eliminare e riformulare il post?", + "confirmations.remove_from_followers.confirm": "Rimuovi il seguace", + "confirmations.remove_from_followers.message": "{name} smetterà di seguirti. Si è sicuri di voler procedere?", + "confirmations.remove_from_followers.title": "Rimuovi il seguace?", "confirmations.reply.confirm": "Rispondi", "confirmations.reply.message": "Rispondere ora sovrascriverà il messaggio che stai correntemente componendo. Sei sicuro di voler procedere?", "confirmations.reply.title": "Sovrascrivere il post?", @@ -294,6 +304,9 @@ "emoji_button.search_results": "Risultati della ricerca", "emoji_button.symbols": "Simboli", "emoji_button.travel": "Viaggi & Luoghi", + "empty_column.account_featured.me": "Non hai ancora messo nulla in evidenza. Sapevi che puoi mettere in evidenza i tuoi post, gli hashtag che usi più spesso e persino gli account dei tuoi amici sul tuo profilo?", + "empty_column.account_featured.other": "{acct} non ha ancora messo nulla in evidenza. Sapevi che puoi mettere in evidenza i tuoi post, gli hashtag che usi più spesso e persino gli account dei tuoi amici sul tuo profilo?", + "empty_column.account_featured_other.unknown": "Questo account non ha ancora pubblicato nulla.", "empty_column.account_hides_collections": "Questo utente ha scelto di non rendere disponibili queste informazioni", "empty_column.account_suspended": "Profilo sospeso", "empty_column.account_timeline": "Nessun post qui!", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 179e922b98..0623878fe7 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -19,13 +19,18 @@ "account.block_domain": "{domain}全体をブロック", "account.block_short": "ブロック", "account.blocked": "ブロック済み", + "account.blocking": "ブロック中", "account.cancel_follow_request": "フォローリクエストの取り消し", "account.copy": "プロフィールへのリンクをコピー", "account.direct": "@{name}さんに非公開でメンション", "account.disable_notifications": "@{name}さんの投稿時の通知を停止", + "account.domain_blocking": "ブロックしているドメイン", "account.edit_profile": "プロフィール編集", "account.enable_notifications": "@{name}さんの投稿時に通知", "account.endorse": "プロフィールで紹介する", + "account.featured": "注目", + "account.featured.hashtags": "ハッシュタグ", + "account.featured.posts": "投稿", "account.featured_tags.last_status_at": "最終投稿 {date}", "account.featured_tags.last_status_never": "投稿がありません", "account.follow": "フォロー", @@ -36,6 +41,7 @@ "account.following": "フォロー中", "account.following_counter": "{count, plural, other {{counter} フォロー}}", "account.follows.empty": "まだ誰もフォローしていません。", + "account.follows_you": "フォローされています", "account.go_to_profile": "プロフィールページへ", "account.hide_reblogs": "@{name}さんからのブーストを非表示", "account.in_memoriam": "故人を偲んで。", @@ -50,18 +56,23 @@ "account.mute_notifications_short": "通知をオフにする", "account.mute_short": "ミュート", "account.muted": "ミュート済み", + "account.muting": "ミュート中", + "account.mutual": "相互フォロー中", "account.no_bio": "説明が提供されていません。", "account.open_original_page": "元のページを開く", "account.posts": "投稿", "account.posts_with_replies": "投稿と返信", + "account.remove_from_followers": "{name}さんをフォロワーから削除", "account.report": "@{name}さんを通報", "account.requested": "フォロー承認待ちです。クリックしてキャンセル", "account.requested_follow": "{name}さんがあなたにフォローリクエストしました", + "account.requests_to_follow_you": "フォローリクエスト", "account.share": "@{name}さんのプロフィールを共有する", "account.show_reblogs": "@{name}さんからのブーストを表示", "account.statuses_counter": "{count, plural, other {{counter} 投稿}}", "account.unblock": "@{name}さんのブロックを解除", "account.unblock_domain": "{domain}のブロックを解除", + "account.unblock_domain_short": "ブロックを解除", "account.unblock_short": "ブロック解除", "account.unendorse": "プロフィールから外す", "account.unfollow": "フォロー解除", @@ -113,8 +124,8 @@ "attachments_list.unprocessed": "(未処理)", "audio.hide": "音声を閉じる", "block_modal.remote_users_caveat": "このサーバーはあなたのブロックの意思を尊重するように {domain} へ通知します。しかし、サーバーによってはブロック機能の扱いが異なる場合もありえるため、相手のサーバー側で求める通りの処理が行われる確証はありません。また、公開投稿はユーザーがログアウト状態であれば閲覧できる可能性があります。", - "block_modal.show_less": "注意事項を閉じる", - "block_modal.show_more": "注意事項", + "block_modal.show_less": "表示を減らす", + "block_modal.show_more": "続きを表示", "block_modal.they_cant_mention": "相手はあなたへの返信やフォローができなくなります。", "block_modal.they_cant_see_posts": "相手はあなたの投稿を閲覧できなくなり、あなたも相手の投稿を閲覧できなくなります。", "block_modal.they_will_know": "ブロックは相手からわかります。", @@ -223,6 +234,9 @@ "confirmations.redraft.confirm": "削除して下書きに戻す", "confirmations.redraft.message": "投稿を削除して下書きに戻します。この投稿へのお気に入り登録やブーストは失われ、返信は孤立することになります。よろしいですか?", "confirmations.redraft.title": "投稿の削除と下書きの再作成", + "confirmations.remove_from_followers.confirm": "フォロワーを削除", + "confirmations.remove_from_followers.message": "{name}さんはあなたをフォローしなくなります。本当によろしいですか?", + "confirmations.remove_from_followers.title": "フォロワーを削除しますか?", "confirmations.reply.confirm": "返信", "confirmations.reply.message": "今返信すると現在作成中のメッセージが上書きされます。本当に実行しますか?", "confirmations.reply.title": "作成中の内容を上書きしようとしています", @@ -290,6 +304,9 @@ "emoji_button.search_results": "検索結果", "emoji_button.symbols": "記号", "emoji_button.travel": "旅行と場所", + "empty_column.account_featured.me": "まだ何もフィーチャーしていません。自分の投稿や最もよく使うハッシュタグ、更には友達のアカウントまでプロフィール上でフィーチャーできると知っていましたか?", + "empty_column.account_featured.other": "{acct}ではまだ何もフィーチャーされていません。自分の投稿や最もよく使うハッシュタグ、更には友達のアカウントまでプロファイル上でフィーチャーできると知っていましたか?", + "empty_column.account_featured_other.unknown": "このアカウントにはまだ何も投稿されていません。", "empty_column.account_hides_collections": "このユーザーはこの情報を開示しないことにしています。", "empty_column.account_suspended": "アカウントは停止されています", "empty_column.account_timeline": "投稿がありません!", @@ -374,6 +391,8 @@ "generic.saved": "保存しました", "getting_started.heading": "スタート", "hashtag.admin_moderation": "#{name}のモデレーション画面を開く", + "hashtag.browse": "#{hashtag}が付いた投稿を閲覧する", + "hashtag.browse_from_account": "#{hashtag}が付いた{name}の投稿を閲覧する", "hashtag.column_header.tag_mode.all": "と{additional}", "hashtag.column_header.tag_mode.any": "か{additional}", "hashtag.column_header.tag_mode.none": "({additional} を除く)", @@ -387,6 +406,7 @@ "hashtag.counter_by_uses": "{count, plural, other {{counter}件}}", "hashtag.counter_by_uses_today": "本日{count, plural, other {#件}}", "hashtag.follow": "ハッシュタグをフォローする", + "hashtag.mute": "#{hashtag}をミュート", "hashtag.unfollow": "ハッシュタグのフォローを解除", "hashtags.and_other": "ほか{count, plural, other {#個}}", "hints.profiles.followers_may_be_missing": "フォロワーの一覧は不正確な場合があります。", @@ -869,7 +889,9 @@ "subscribed_languages.target": "{target}さんの購読言語を変更します", "tabs_bar.home": "ホーム", "tabs_bar.notifications": "通知", + "terms_of_service.effective_as_of": "{date}より有効", "terms_of_service.title": "サービス利用規約", + "terms_of_service.upcoming_changes_on": "{date}から適用される変更", "time_remaining.days": "残り{number}日", "time_remaining.hours": "残り{number}時間", "time_remaining.minutes": "残り{number}分", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 9b8eabe64e..17020454c4 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -278,6 +278,8 @@ "footer.terms_of_service": "Tiwtilin n useqdec", "generic.saved": "Yettwasekles", "getting_started.heading": "Bdu", + "hashtag.browse": "Snirem tisuffaɣ yesɛan #{hashtag}", + "hashtag.browse_from_account": "Snirem tisuffaɣ sɣur @{name} yesɛan #{hashtag}", "hashtag.column_header.tag_mode.all": "d {additional}", "hashtag.column_header.tag_mode.any": "neɣ {additional}", "hashtag.column_header.tag_mode.none": "war {additional}", @@ -291,6 +293,7 @@ "hashtag.counter_by_uses": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} n tsuffeɣt} other {{counter} n tsuffaɣ}} ass-a", "hashtag.follow": "Ḍfeṛ ahacṭag", + "hashtag.mute": "Sgugem #{hashtag}", "hashtags.and_other": "…d {count, plural, one {}other {# nniḍen}}", "hints.threads.replies_may_be_missing": "Tiririyin d-yusan deg iqeddacen nniḍen, yezmer ur d-ddant ara.", "hints.threads.see_more": "Wali ugar n tririt deg {domain}", @@ -671,6 +674,8 @@ "video.expand": "Semɣeṛ tavidyut", "video.fullscreen": "Agdil aččuran", "video.hide": "Ffer tabidyutt", + "video.mute": "Sgugem", "video.pause": "Sgunfu", - "video.play": "Seddu" + "video.play": "Seddu", + "video.unmute": "Kkes asgugem" } diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 99474a1330..e69a273f9f 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -26,6 +26,7 @@ "account.edit_profile": "Profîlê serrast bike", "account.enable_notifications": "Min agahdar bike gava @{name} diweşîne", "account.endorse": "Taybetiyên li ser profîl", + "account.featured.posts": "Şandî", "account.featured_tags.last_status_at": "Şandiya dawî di {date} de", "account.featured_tags.last_status_never": "Şandî tune ne", "account.follow": "Bişopîne", @@ -50,6 +51,8 @@ "account.mute_notifications_short": "Agahdariyan bêdeng bike", "account.mute_short": "Bêdeng bike", "account.muted": "Bêdengkirî", + "account.muting": "Bêdengkirin", + "account.mutual": "Hûn hevdû dişopînin", "account.no_bio": "Ti danasîn nehatiye tevlîkirin.", "account.open_original_page": "Rûpela resen veke", "account.posts": "Şandî", @@ -62,6 +65,7 @@ "account.statuses_counter": "{count, plural,one {{counter} şandî}other {{counter} şandî}}", "account.unblock": "Astengê li ser @{name} rake", "account.unblock_domain": "Astengê li ser navperê {domain} rake", + "account.unblock_domain_short": "Astengiyê rake", "account.unblock_short": "Astengiyê rake", "account.unendorse": "Li ser profîl nîşan neke", "account.unfollow": "Neşopîne", @@ -84,6 +88,7 @@ "announcement.announcement": "Daxuyanî", "annual_report.summary.followers.followers": "şopîner", "annual_report.summary.followers.total": "{count} tevahî", + "annual_report.summary.most_used_hashtag.none": "Ne yek", "annual_report.summary.new_posts.new_posts": "şandiyên nû", "attachments_list.unprocessed": "(bêpêvajo)", "audio.hide": "Dengê veşêre", @@ -111,9 +116,10 @@ "column.blocks": "Bikarhênerên astengkirî", "column.bookmarks": "Şûnpel", "column.community": "Demnameya herêmî", - "column.direct": "Qalkirinên taybet", + "column.direct": "Payemên taybet", "column.directory": "Li profîlan bigere", "column.domain_blocks": "Navperên astengkirî", + "column.firehose": "Rojevên zindî", "column.follow_requests": "Daxwazên şopandinê", "column.home": "Rûpela sereke", "column.lists": "Lîste", @@ -128,6 +134,7 @@ "column_header.pin": "Bi derzî bike", "column_header.show_settings": "Sazkariyan nîşan bide", "column_header.unpin": "Bi derzî neke", + "column_search.cancel": "Têk bibe", "column_subheading.settings": "Sazkarî", "community.column_settings.local_only": "Tenê herêmî", "community.column_settings.media_only": "Tenê media", @@ -143,13 +150,18 @@ "compose_form.poll.duration": "Dema rapirsî yê", "compose_form.poll.switch_to_multiple": "Rapirsî yê biguherînin da ku destûr bidin vebijarkên pirjimar", "compose_form.poll.switch_to_single": "Rapirsîyê biguherîne da ku mafê bidî tenê vebijêrkek", + "compose_form.poll.type": "Şêwaz", + "compose_form.publish": "Şandî", "compose_form.publish_form": "Biweşîne", + "compose_form.reply": "Bersivê bide", + "compose_form.save_changes": "Rojane bike", "compose_form.spoiler.marked": "Hişyariya naverokê rake", "compose_form.spoiler.unmarked": "Hişyariya naverokê tevlî bike", "confirmation_modal.cancel": "Dev jê berde", "confirmations.block.confirm": "Asteng bike", "confirmations.delete.confirm": "Jê bibe", "confirmations.delete.message": "Ma tu dixwazî vê şandiyê jê bibî?", + "confirmations.delete.title": "Şandiyê jê bibe?", "confirmations.delete_list.confirm": "Jê bibe", "confirmations.delete_list.message": "Tu ji dil dixwazî vê lîsteyê bi awayekî mayînde jê bibî?", "confirmations.discard_edit_media.confirm": "Biavêje", @@ -239,14 +251,18 @@ "filter_modal.select_filter.subtitle": "Beşeke nû ya heyî bi kar bîne an jî yekî nû biafirîne", "filter_modal.select_filter.title": "Vê şandiyê parzûn bike", "filter_modal.title.status": "Şandiyekê parzûn bike", + "firehose.all": "Tevahî", + "firehose.local": "Ev rajekar", + "firehose.remote": "Rajekarên din", "follow_request.authorize": "Mafê bide", "follow_request.reject": "Nepejirîne", "follow_requests.unlocked_explanation": "Tevlî ku ajimêra te ne kilît kiriye, karmendên {domain} digotin qey tu dixwazî ku pêşdîtina daxwazên şopandinê bi destan bike.", + "follow_suggestions.view_all": "Tevahiyan nîşan bide", "footer.about": "Derbar", "footer.directory": "Pelrêça profîlan", - "footer.get_app": "Bernamokê bistîne", + "footer.get_app": "Bernameyê bistîne", "footer.keyboard_shortcuts": "Kurteriyên klavyeyê", - "footer.privacy_policy": "Peymana nepeniyê", + "footer.privacy_policy": "Politîka taybetiyê", "footer.source_code": "Koda çavkanî nîşan bide", "footer.status": "Rewş", "generic.saved": "Tomarkirî", @@ -262,6 +278,7 @@ "hashtag.column_settings.tag_toggle": "Ji bo vê stûnê hin pêvekan tevlî bike", "hashtag.follow": "Hashtagê bişopîne", "hashtag.unfollow": "Hashtagê neşopîne", + "hints.threads.replies_may_be_missing": "Beriv ji rajekarên din dibe ku wendayî bin.", "home.column_settings.show_reblogs": "Bilindkirinan nîşan bike", "home.column_settings.show_replies": "Bersivan nîşan bide", "home.hide_announcements": "Reklaman veşêre", @@ -280,7 +297,7 @@ "keyboard_shortcuts.column": "Stûna balkişandinê", "keyboard_shortcuts.compose": "Bal bikşîne cîhê nivîsê/textarea", "keyboard_shortcuts.description": "Danasîn", - "keyboard_shortcuts.direct": "ji bo vekirina stûna qalkirinên taybet", + "keyboard_shortcuts.direct": "ji bo vekirina stûna payemên taybet", "keyboard_shortcuts.down": "Di lîsteyê de dakêşe jêr", "keyboard_shortcuts.enter": "Şandiyê veke", "keyboard_shortcuts.federated": "Demnameya giştî veke", @@ -317,13 +334,14 @@ "lists.replies_policy.list": "Endamên lîsteyê", "lists.replies_policy.none": "Ne yek", "load_pending": "{count, plural, one {# hêmaneke nû} other {#hêmaneke nû}}", + "media_gallery.hide": "Veşêre", "moved_to_account_banner.text": "Ajimêrê te {disabledAccount} niha neçalak e ji ber ku te bar kir bo {movedToAccount}.", "navigation_bar.about": "Derbar", "navigation_bar.blocks": "Bikarhênerên astengkirî", "navigation_bar.bookmarks": "Şûnpel", "navigation_bar.community_timeline": "Demnameya herêmî", "navigation_bar.compose": "Şandiyeke nû binivsîne", - "navigation_bar.direct": "Qalkirinên taybet", + "navigation_bar.direct": "Payemên taybet", "navigation_bar.discover": "Vekolê", "navigation_bar.domain_blocks": "Navperên astengkirî", "navigation_bar.explore": "Vekole", @@ -354,9 +372,10 @@ "notifications.column_settings.admin.report": "Ragihandinên nû:", "notifications.column_settings.admin.sign_up": "Tomarkirinên nû:", "notifications.column_settings.alert": "Agahdariyên sermaseyê", + "notifications.column_settings.filter_bar.advanced": "Hemû beşan nîşan bide", "notifications.column_settings.follow": "Şopînerên nû:", "notifications.column_settings.follow_request": "Daxwazên şopandinê nû:", - "notifications.column_settings.mention": "Qalkirin:", + "notifications.column_settings.mention": "Gotin:", "notifications.column_settings.poll": "Encamên rapirsiyê:", "notifications.column_settings.push": "Agahdarîyên yekser", "notifications.column_settings.reblog": "Bilindkirî:", @@ -369,7 +388,7 @@ "notifications.filter.all": "Hemû", "notifications.filter.boosts": "Bilindkirî", "notifications.filter.follows": "Dişopîne", - "notifications.filter.mentions": "Qalkirin", + "notifications.filter.mentions": "Gotin", "notifications.filter.polls": "Encamên rapirsiyê", "notifications.filter.statuses": "Ji kesên tu dişopînî re rojanekirin", "notifications.grant_permission": "Destûrê bide.", @@ -391,7 +410,10 @@ "poll.votes": "{votes, plural, one {# deng} other {# deng}}", "poll_button.add_poll": "Rapirsîyek zêde bike", "poll_button.remove_poll": "Rapirsî yê rake", - "privacy.change": "Nepênîtiya şandiyan biguherîne", + "privacy.change": "Taybetiya şandiyê biguherîne", + "privacy.direct.short": "Payemên taybet", + "privacy.private.long": "Tenê şopînerên te", + "privacy.private.short": "Şopîner", "privacy.public.short": "Gelemperî", "privacy_policy.last_updated": "Rojanekirina dawî {date}", "privacy_policy.title": "Politîka taybetiyê", @@ -466,10 +488,11 @@ "search_results.statuses": "Şandî", "server_banner.about_active_users": "Kesên ku di van 30 rojên dawî de vê rajekarê bi kar tînin (Bikarhênerên Çalak ên Mehane)", "server_banner.active_users": "bikarhênerên çalak", - "server_banner.administered_by": "Tê bi rêvebirin ji aliyê:", + "server_banner.administered_by": "Tê birêvebirin ji aliyê:", "server_banner.server_stats": "Amarên rajekar:", "sign_in_banner.create_account": "Ajimêr biafirîne", "sign_in_banner.sign_in": "Têkeve", + "sign_in_banner.sso_redirect": "Têkeve yan tomar bibe", "status.admin_account": "Ji bo @{name} navrûya venihêrtinê veke", "status.admin_domain": "Navrûya bikarhêneriyê ji bo {domain} veke", "status.admin_status": "Vê şandîyê di navrûya venihêrtinê de veke", @@ -481,7 +504,7 @@ "status.delete": "Jê bibe", "status.detailed_status": "Dîtina axaftina berfireh", "status.direct": "Bi taybetî qale @{name} bike", - "status.direct_indicator": "Qalkirinê taybet", + "status.direct_indicator": "Payemên taybet", "status.edit": "Serrast bike", "status.edited_x_times": "{count, plural, one {{count} car} other {{count} car}} hate serrastkirin", "status.filter": "Vê şandiyê parzûn bike", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index 7846a05b41..3dde637adc 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -19,13 +19,17 @@ "account.block_domain": "Bloka el domeno {domain}", "account.block_short": "Bloka", "account.blocked": "Blokado", + "account.blocking": "Blokando", "account.cancel_follow_request": "Anula solisitud de segir", "account.copy": "Kopia atadijo de profil", "account.direct": "Enmenta a @{name} en privado", "account.disable_notifications": "Desha de avizarme sovre publikasyones de @{name}", + "account.domain_blocking": "Blokando el domeno", "account.edit_profile": "Edita profil", "account.enable_notifications": "Avizame kuando @{name} publike", "account.endorse": "Avalia en profil", + "account.featured.hashtags": "Etiketas", + "account.featured.posts": "Puvlikasyones", "account.featured_tags.last_status_at": "Ultima publikasyon de {date}", "account.featured_tags.last_status_never": "No ay publikasyones", "account.follow": "Sige", @@ -36,6 +40,7 @@ "account.following": "Sigiendo", "account.following_counter": "{count, plural, other {Sigiendo a {counter}}}", "account.follows.empty": "Este utilizador ainda no sige a dingun.", + "account.follows_you": "Te sige", "account.go_to_profile": "Va al profil", "account.hide_reblogs": "Eskonde repartajasyones de @{name}", "account.in_memoriam": "De bendicha memoria.", @@ -50,6 +55,7 @@ "account.mute_notifications_short": "Silensia avizos", "account.mute_short": "Silensia", "account.muted": "Silensiado", + "account.muting": "Silensyando", "account.no_bio": "No ay deskripsion.", "account.open_original_page": "Avre pajina orijnala", "account.posts": "Publikasyones", @@ -57,6 +63,7 @@ "account.report": "Raporta @{name}", "account.requested": "Asperando achetasion. Klika para anular la solisitud de segimiento", "account.requested_follow": "{name} tiene solisitado segirte", + "account.requests_to_follow_you": "Solisita segirte", "account.share": "Partaja el profil de @{name}", "account.show_reblogs": "Amostra repartajasyones de @{name}", "account.statuses_counter": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}}", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 57886f649b..e1e3ee98ab 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -54,6 +54,7 @@ "account.open_original_page": "Atvērt pirmavota lapu", "account.posts": "Ieraksti", "account.posts_with_replies": "Ieraksti un atbildes", + "account.remove_from_followers": "Dzēst sekotāju {name}", "account.report": "Sūdzēties par @{name}", "account.requested": "Gaida apstiprinājumu. Nospied, lai atceltu sekošanas pieparasījumu", "account.requested_follow": "{name} nosūtīja Tev sekošanas pieprasījumu", @@ -213,6 +214,9 @@ "confirmations.redraft.confirm": "Dzēst un pārrakstīt", "confirmations.redraft.message": "Vai tiešām vēlies izdzēst šo ierakstu un veidot jaunu tā uzmetumu? Pievienošana izlasēs un pastiprinājumi tiks zaudēti, un sākotnējā ieraksta atbildes paliks bez saiknes ar to.", "confirmations.redraft.title": "Dzēst un rakstīt vēlreiz?", + "confirmations.remove_from_followers.confirm": "Dzēst sekotāju", + "confirmations.remove_from_followers.message": "{name} pārstās sekot jums. Vai tiešām vēlaties turpināt?", + "confirmations.remove_from_followers.title": "Vai dzēst sekotāju?", "confirmations.reply.confirm": "Atbildēt", "confirmations.reply.message": "Tūlītēja atbildēšana pārrakstīs pašlaik sastādīto ziņu. Vai tiešām turpināt?", "confirmations.reply.title": "Pārrakstīt ierakstu?", diff --git a/app/javascript/mastodon/locales/nan.json b/app/javascript/mastodon/locales/nan.json index 867b371bd8..85db030290 100644 --- a/app/javascript/mastodon/locales/nan.json +++ b/app/javascript/mastodon/locales/nan.json @@ -19,10 +19,12 @@ "account.block_domain": "封鎖網域 {domain}", "account.block_short": "封鎖", "account.blocked": "Hőng封鎖", + "account.blocking": "Teh封鎖", "account.cancel_follow_request": "取消跟tuè", "account.copy": "Khóo-pih kàu個人資料ê連結", "account.direct": "私人提起 @{name}", "account.disable_notifications": "停止佇 {name} PO文ê時通知我", + "account.domain_blocking": "Teh封鎖ê網域", "account.edit_profile": "編輯個人資料", "account.enable_notifications": "佇 {name} PO文ê時通知我", "account.endorse": "用個人資料推薦對方", @@ -39,6 +41,7 @@ "account.following": "Lí跟tuè ê", "account.following_counter": "Teh跟tuè {count,plural,other {{count} ê lâng}}", "account.follows.empty": "Tsit ê用者iáu buē跟tuè別lâng。", + "account.follows_you": "跟tuè lí", "account.go_to_profile": "行kàu個人資料", "account.hide_reblogs": "Tshàng tuì @{name} 來ê轉PO", "account.in_memoriam": "佇tsia追悼。", @@ -53,13 +56,17 @@ "account.mute_notifications_short": "Kā通知消音", "account.mute_short": "消音", "account.muted": "消音ah", + "account.muting": "消音", + "account.mutual": "Lín sio跟tuè", "account.no_bio": "Bô提供敘述。", "account.open_original_page": "開原來ê頁", "account.posts": "PO文", "account.posts_with_replies": "PO文kap回應", + "account.remove_from_followers": "Kā {name} tuì跟tuè lí ê ê內底suá掉", "account.report": "檢舉 @{name}", "account.requested": "Teh等待審查。Tshi̍h tsi̍t-ē 通取消跟tuè請求", "account.requested_follow": "{name} 請求跟tuè lí", + "account.requests_to_follow_you": "請求跟tuè lí", "account.share": "分享 @{name} ê個人資料", "account.show_reblogs": "顯示uì @{name} 來ê轉PO", "account.statuses_counter": "{count, plural, other {{count} ê PO文}}", @@ -227,6 +234,9 @@ "confirmations.redraft.confirm": "Thâi掉了後重寫", "confirmations.redraft.message": "Lí kám確定behthâi掉tsit篇PO文了後koh重寫?收藏kap轉PO ē無去,而且原底ê PO文ê回應ē變孤立。", "confirmations.redraft.title": "Kám beh thâi掉koh重寫PO文?", + "confirmations.remove_from_followers.confirm": "Suá掉跟tuè lí ê", + "confirmations.remove_from_followers.message": "{name} ē停止跟tuè lí。Lí kám確定beh繼續?", + "confirmations.remove_from_followers.title": "Kám beh suá掉跟tuè lí ê?", "confirmations.reply.confirm": "回應", "confirmations.reply.message": "Tsit-má回應ē khàm掉lí tng-leh編寫ê訊息。Lí kám確定beh繼續án-ne做?", "confirmations.reply.title": "Kám beh khàm掉PO文?", @@ -585,6 +595,24 @@ "notification.moderation_warning.action_none": "Lí ê口座有收著審核ê警告。", "notification_requests.edit_selection": "編輯", "notification_requests.exit_selection": "做好ah", + "notifications.column_settings.admin.report": "新ê檢舉:", + "notifications.column_settings.admin.sign_up": "新註冊ê口座:", + "notifications.column_settings.alert": "桌面ê通知", + "notifications.column_settings.unread_notifications.category": "Iáu bē讀ê通知", + "notifications.column_settings.unread_notifications.highlight": "強調iáu bē讀ê通知", + "notifications.column_settings.update": "編輯:", + "notifications.filter.all": "Kui ê", + "notifications.filter.boosts": "轉送", + "notifications.filter.favourites": "收藏", + "notifications.filter.follows": "跟tuè", + "notifications.filter.mentions": "提起", + "notifications.filter.polls": "投票結果", + "notifications.filter.statuses": "Lí跟tuè ê lâng ê更新", + "notifications.grant_permission": "賦予權限。", + "notifications.group": "{count} 條通知", + "notifications.mark_as_read": "Kā ta̍k條通知lóng標做有讀", + "notifications.permission_denied": "因為khah早有拒絕瀏覽器權限ê請求,桌面通知bē當用。", + "notifications.permission_denied_alert": "桌面通知bē當phah開來用,因為khah早瀏覽器ê權限受拒絕", "search_popout.language_code": "ISO語言代碼", "status.translated_from_with": "用 {provider} 翻譯 {lang}" } diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 0e10eb93b9..96674518d9 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -19,12 +19,12 @@ "account.block_domain": "Alles van {domain} blokkeren", "account.block_short": "Blokkeren", "account.blocked": "Geblokkeerd", - "account.blocking": "Blokkeren", + "account.blocking": "Geblokkeerd", "account.cancel_follow_request": "Ontvolgen", "account.copy": "Link naar profiel kopiëren", "account.direct": "@{name} een privébericht sturen", "account.disable_notifications": "Geen melding meer geven wanneer @{name} een bericht plaatst", - "account.domain_blocking": "Domein blokkeren", + "account.domain_blocking": "Server geblokkeerd", "account.edit_profile": "Profiel bewerken", "account.enable_notifications": "Geef een melding wanneer @{name} een bericht plaatst", "account.endorse": "Op profiel weergeven", @@ -56,16 +56,17 @@ "account.mute_notifications_short": "Meldingen negeren", "account.mute_short": "Negeren", "account.muted": "Genegeerd", - "account.muting": "Dempen", - "account.mutual": "Je volgt elkaar", + "account.muting": "Genegeerd", + "account.mutual": "Jullie volgen elkaar", "account.no_bio": "Geen beschrijving opgegeven.", "account.open_original_page": "Originele pagina openen", "account.posts": "Berichten", "account.posts_with_replies": "Reacties", + "account.remove_from_followers": "{name} als volger verwijderen", "account.report": "@{name} rapporteren", "account.requested": "Wachten op goedkeuring. Klik om het volgverzoek te annuleren", - "account.requested_follow": "{name} wil je graag volgen", - "account.requests_to_follow_you": "Verzoeken om je te volgen", + "account.requested_follow": "{name} wil jou graag volgen", + "account.requests_to_follow_you": "Wil jou graag volgen", "account.share": "Account van @{name} delen", "account.show_reblogs": "Boosts van @{name} tonen", "account.statuses_counter": "{count, plural, one {{counter} bericht} other {{counter} berichten}}", @@ -233,6 +234,9 @@ "confirmations.redraft.confirm": "Verwijderen en herschrijven", "confirmations.redraft.message": "Weet je zeker dat je dit bericht wilt verwijderen en herschrijven? Je verliest wel de boosts en favorieten, en de reacties op het originele bericht raak je kwijt.", "confirmations.redraft.title": "Bericht verwijderen en herschrijven?", + "confirmations.remove_from_followers.confirm": "Volger verwijderen", + "confirmations.remove_from_followers.message": "{name} zal je niet meer volgen. Weet je zeker dat je wilt doorgaan?", + "confirmations.remove_from_followers.title": "Volger verwijderen?", "confirmations.reply.confirm": "Reageren", "confirmations.reply.message": "Door nu te reageren overschrijf je het bericht dat je op dit moment aan het schrijven bent. Weet je zeker dat je verder wil gaan?", "confirmations.reply.title": "Bericht overschrijven?", @@ -300,8 +304,8 @@ "emoji_button.search_results": "Zoekresultaten", "emoji_button.symbols": "Symbolen", "emoji_button.travel": "Reizen en locaties", - "empty_column.account_featured.me": "Je hebt nog niets uitgelicht. Wist je dat je je berichten, hashtags die je het meest gebruikt en zelfs de accounts van je vrienden kunt vermelden op je profiel?", - "empty_column.account_featured.other": "{acct} heeft nog niets uitgelicht. Wist je dat je je berichten, hashtags die je het meest gebruikt en zelfs de accounts van je vrienden kunt vermelden op je profiel?", + "empty_column.account_featured.me": "Je hebt nog niets uitgelicht. Wist je dat je een aantal van jouw berichten, jouw meest gebruikte hashtags en zelfs accounts van je vrienden op je profiel kunt uitlichten?", + "empty_column.account_featured.other": "{acct} heeft nog niets uitgelicht. Wist je dat je een aantal van jouw berichten, jouw meest gebruikte hashtags en zelfs accounts van je vrienden op je profiel kunt uitlichten?", "empty_column.account_featured_other.unknown": "Dit account heeft nog niets uitgelicht.", "empty_column.account_hides_collections": "Deze gebruiker heeft ervoor gekozen deze informatie niet beschikbaar te maken", "empty_column.account_suspended": "Account opgeschort", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index c982075d2b..9a3ad4295e 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -19,10 +19,12 @@ "account.block_domain": "Skjul alt frå {domain}", "account.block_short": "Blokker", "account.blocked": "Blokkert", + "account.blocking": "Blokkerer", "account.cancel_follow_request": "Trekk attende fylgeførespurnad", "account.copy": "Kopier lenka til profilen", "account.direct": "Nevn @{name} privat", "account.disable_notifications": "Slutt å varsle meg når @{name} skriv innlegg", + "account.domain_blocking": "Blokkerer domenet", "account.edit_profile": "Rediger profil", "account.enable_notifications": "Varsle meg når @{name} skriv innlegg", "account.endorse": "Vis på profilen", @@ -39,6 +41,7 @@ "account.following": "Fylgjer", "account.following_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjarar}}", "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.", + "account.follows_you": "Fylgjer deg", "account.go_to_profile": "Gå til profil", "account.hide_reblogs": "Gøym framhevingar frå @{name}", "account.in_memoriam": "Til minne om.", @@ -53,13 +56,17 @@ "account.mute_notifications_short": "Demp varslingar", "account.mute_short": "Demp", "account.muted": "Målbunden", + "account.muting": "Dempa", + "account.mutual": "De fylgjer kvarandre", "account.no_bio": "Inga skildring er gjeven.", "account.open_original_page": "Opne originalsida", "account.posts": "Tut", "account.posts_with_replies": "Tut og svar", + "account.remove_from_followers": "Fjern {name} frå fylgjarane dine", "account.report": "Rapporter @{name}", "account.requested": "Ventar på aksept. Klikk for å avbryta fylgjeførespurnaden", "account.requested_follow": "{name} har bedt om å få fylgja deg", + "account.requests_to_follow_you": "Folk som vil fylgja deg", "account.share": "Del @{name} sin profil", "account.show_reblogs": "Vis framhevingar frå @{name}", "account.statuses_counter": "{count, plural, one {{counter} innlegg} other {{counter} innlegg}}", @@ -227,6 +234,9 @@ "confirmations.redraft.confirm": "Slett & skriv på nytt", "confirmations.redraft.message": "Er du sikker på at du vil sletta denne statusen og skriva han på nytt? Då misser du favorittar og framhevingar, og svar til det opprinnelege innlegget vert foreldrelause.", "confirmations.redraft.title": "Slett og skriv på nytt?", + "confirmations.remove_from_followers.confirm": "Fjern fylgjar", + "confirmations.remove_from_followers.message": "{name} vil ikkje fylgja deg meir. Vil du halda fram?", + "confirmations.remove_from_followers.title": "Fjern fylgjar?", "confirmations.reply.confirm": "Svar", "confirmations.reply.message": "Å svara no vil overskriva den meldinga du er i ferd med å skriva. Er du sikker på at du vil halda fram?", "confirmations.reply.title": "Overskriv innlegget?", @@ -294,6 +304,9 @@ "emoji_button.search_results": "Søkeresultat", "emoji_button.symbols": "Symbol", "emoji_button.travel": "Reise & stader", + "empty_column.account_featured.me": "Du har ikkje framheva noko enno. Visste du at du kan framheva innlegg, merkelappar du bruker mykje, og til og med venekontoar på profilen din?", + "empty_column.account_featured.other": "{acct} har ikkje framheva noko enno. Visste du at du kan framheva innlegg, merkelappar du bruker mykje, og til og med venekontoar på profilen din?", + "empty_column.account_featured_other.unknown": "Denne kontoen har ikkje framheva noko enno.", "empty_column.account_hides_collections": "Denne brukaren har valt å ikkje gjere denne informasjonen tilgjengeleg", "empty_column.account_suspended": "Kontoen er utestengd", "empty_column.account_timeline": "Ingen tut her!", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index e9831e07be..8274755bb4 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -19,14 +19,16 @@ "account.block_domain": "Заблокировать {domain}", "account.block_short": "Заблокировать", "account.blocked": "Заблокирован(а)", + "account.blocking": "Заблокирован(а)", "account.cancel_follow_request": "Отозвать запрос на подписку", "account.copy": "Копировать ссылку на профиль", "account.direct": "Упомянуть @{name} лично", "account.disable_notifications": "Не уведомлять о постах от @{name}", + "account.domain_blocking": "Домен заблокирован", "account.edit_profile": "Редактировать", "account.enable_notifications": "Уведомлять о постах от @{name}", "account.endorse": "Рекомендовать в профиле", - "account.featured": "Избранное", + "account.featured": "Закреплённые…", "account.featured.hashtags": "Хэштеги", "account.featured.posts": "Посты", "account.featured_tags.last_status_at": "Последний пост {date}", @@ -54,14 +56,17 @@ "account.mute_notifications_short": "Отключить уведомления", "account.mute_short": "Игнорировать", "account.muted": "Игнорируется", + "account.muting": "Игнорируется", "account.mutual": "Вы подписаны друг на друга", "account.no_bio": "Описание профиля отсутствует.", "account.open_original_page": "Открыть исходную страницу", "account.posts": "Посты", "account.posts_with_replies": "Посты и ответы", + "account.remove_from_followers": "Убрать {name} из подписчиков", "account.report": "Пожаловаться на @{name}", "account.requested": "Ожидает подтверждения. Нажмите для отмены запроса", "account.requested_follow": "{name} отправил(а) вам запрос на подписку", + "account.requests_to_follow_you": "Отправил(а) вам запрос на подписку", "account.share": "Поделиться профилем @{name}", "account.show_reblogs": "Показывать продвижения от @{name}", "account.statuses_counter": "{count, plural, one {{counter} пост} few {{counter} поста} other {{counter} постов}}", @@ -229,6 +234,9 @@ "confirmations.redraft.confirm": "Удалить и исправить", "confirmations.redraft.message": "Вы уверены, что хотите удалить этот пост и создать его заново? Взаимодействия, такие как добавление в избранное или продвижение, будут потеряны, а ответы к оригинальному посту перестанут на него ссылаться.", "confirmations.redraft.title": "Удалить и создать пост заново?", + "confirmations.remove_from_followers.confirm": "Убрать подписчика", + "confirmations.remove_from_followers.message": "Пользователь {name} перестанет быть подписан на вас. Продолжить?", + "confirmations.remove_from_followers.title": "Убрать подписчика?", "confirmations.reply.confirm": "Ответить", "confirmations.reply.message": "Если вы начнёте составлять ответ сейчас, то набираемый в данный момент пост будет стёрт. Вы уверены, что хотите продолжить?", "confirmations.reply.title": "Стереть несохранённый черновик поста?", @@ -296,6 +304,9 @@ "emoji_button.search_results": "Результаты поиска", "emoji_button.symbols": "Символы", "emoji_button.travel": "Путешествия и места", + "empty_column.account_featured.me": "Вы ещё ничего не закрепили в своём профиле. Знаете ли вы, что вы можете рекомендовать в этом разделе свои посты, часто используемые вами хэштеги и даже профили друзей?", + "empty_column.account_featured.other": "{acct} ещё ничего не закрепил(а) в своём профиле. Знаете ли вы, что вы можете рекомендовать в этом разделе свои посты, часто используемые вами хэштеги и даже профили друзей?", + "empty_column.account_featured_other.unknown": "Этот пользователь ещё ничего не закрепил в своём профиле.", "empty_column.account_hides_collections": "Пользователь предпочёл не раскрывать эту информацию", "empty_column.account_suspended": "Учётная запись заблокирована", "empty_column.account_timeline": "Здесь нет постов!", @@ -380,7 +391,8 @@ "generic.saved": "Сохранено", "getting_started.heading": "Добро пожаловать", "hashtag.admin_moderation": "Открыть интерфейс модератора для #{name}", - "hashtag.browse": "Посмотреть посты в #{hashtag}", + "hashtag.browse": "Обзор постов с хэштегом #{hashtag}", + "hashtag.browse_from_account": "Обзор постов от @{name} с хэштегом #{hashtag}", "hashtag.column_header.tag_mode.all": "и {additional}", "hashtag.column_header.tag_mode.any": "или {additional}", "hashtag.column_header.tag_mode.none": "без {additional}", @@ -394,6 +406,7 @@ "hashtag.counter_by_uses": "{count, plural, one {{counter} пост} few {{counter} поста} other {{counter} постов}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} пост} few {{counter} поста} other {{counter} постов}} сегодня", "hashtag.follow": "Подписаться на новые посты", + "hashtag.mute": "Игнорировать #{hashtag}", "hashtag.unfollow": "Отписаться", "hashtags.and_other": "…и {count, plural, other {ещё #}}", "hints.profiles.followers_may_be_missing": "Подписчики этого профиля могут отсутствовать.", @@ -912,9 +925,9 @@ "video.mute": "Выключить звук", "video.pause": "Пауза", "video.play": "Пуск", - "video.skip_backward": "Промотать назад", - "video.skip_forward": "Промотать вперёд", + "video.skip_backward": "Перемотка назад", + "video.skip_forward": "Перемотка вперёд", "video.unmute": "Включить звук", - "video.volume_down": "Уменьшить громкость", - "video.volume_up": "Увеличить громкость" + "video.volume_down": "Громкость уменьшена", + "video.volume_up": "Громкость увеличена" } diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 5586edf450..d94d2fd658 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -62,6 +62,7 @@ "account.open_original_page": "Hap faqen origjinale", "account.posts": "Mesazhe", "account.posts_with_replies": "Mesazhe dhe përgjigje", + "account.remove_from_followers": "Hiqe {name} nga ndjekësit", "account.report": "Raportojeni @{name}", "account.requested": "Në pritje të miratimit. Që të anuloni kërkesën për ndjekje, klikojeni", "account.requested_follow": "{name} ka kërkuar t’ju ndjekë", @@ -228,6 +229,9 @@ "confirmations.redraft.confirm": "Fshijeni & rihartojeni", "confirmations.redraft.message": "Jeni i sigurt se doni të fshihet kjo gjendje dhe të rihartohet? Të parapëlqyerit dhe përforcimet do të humbin, ndërsa përgjigjet te postimi origjinal do të bëhen jetime.", "confirmations.redraft.title": "Të fshihet & riharothet postimi?", + "confirmations.remove_from_followers.confirm": "Hiqe ndjekësin", + "confirmations.remove_from_followers.message": "{name} do të reshtë së ndjekuri ju. Jeni i sigurt se doni të vazhdohet?", + "confirmations.remove_from_followers.title": "Të hiqet ndjekësi?", "confirmations.reply.confirm": "Përgjigjuni", "confirmations.reply.message": "Po të përgjigjeni tani, mesazhi që po hartoni, do të mbishkruhet. Jeni i sigurt se doni të vazhdohet më tej?", "confirmations.reply.title": "Të mbishkruhet postimi?", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index edc7b3db72..ae181ef109 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -62,6 +62,7 @@ "account.open_original_page": "Asıl sayfayı aç", "account.posts": "Gönderiler", "account.posts_with_replies": "Gönderiler ve yanıtlar", + "account.remove_from_followers": "{name} takipçilerinden kaldır", "account.report": "@{name} adlı kişiyi bildir", "account.requested": "Onay bekleniyor. Takip isteğini iptal etmek için tıklayın", "account.requested_follow": "{name} size takip isteği gönderdi", @@ -233,6 +234,9 @@ "confirmations.redraft.confirm": "Sil Düzenle ve yeniden paylaş", "confirmations.redraft.message": "Bu gönderiyi silip taslak haline getirmek istediğinize emin misiniz? Mevcut favoriler ve boostlar silinecek ve gönderiye verilen yanıtlar başıboş kalacak.", "confirmations.redraft.title": "Gönderiyi sil veya taslağa dönüştür?", + "confirmations.remove_from_followers.confirm": "Takipçi kaldır", + "confirmations.remove_from_followers.message": "{name} sizi takip etmeyi bırakacaktır. Devam etmek istediğinize emin misiniz?", + "confirmations.remove_from_followers.title": "Takipçiyi kaldır?", "confirmations.reply.confirm": "Yanıtla", "confirmations.reply.message": "Şimdi yanıtlarken o an oluşturduğun mesajın üzerine yazılır. Devam etmek istediğine emin misin?", "confirmations.reply.title": "Gönderinin üzerine yaz?", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index ffb96b816c..6abdaee2bc 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -295,6 +295,9 @@ "emoji_button.search_results": "Результати пошуку", "emoji_button.symbols": "Символи", "emoji_button.travel": "Подорожі та місця", + "empty_column.account_featured.me": "Ви ще нічого не помітили. Чи знали ви, що можете відмінити свої пости, хештеґи, які найбільше використовуються і навіть облікові записи друзів на своєму профілі?", + "empty_column.account_featured.other": "{acct} ще нічого не виділив. Чи знали ви, що можете відмінити свої пости, хештеґи, які найбільше використовуються і навіть облікові записи друзів на своєму профілі?", + "empty_column.account_featured_other.unknown": "Цей обліковий запис ще не виділив нічого.", "empty_column.account_hides_collections": "Цей користувач вирішив не робити цю інформацію доступною", "empty_column.account_suspended": "Обліковий запис заблоковано", "empty_column.account_timeline": "Тут немає дописів!", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 1e435af2a3..fe00abcea2 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -62,6 +62,7 @@ "account.open_original_page": "Mở trang gốc", "account.posts": "Tút", "account.posts_with_replies": "Trả lời", + "account.remove_from_followers": "Xóa người theo dõi {name}", "account.report": "Báo cáo @{name}", "account.requested": "Đang chờ chấp thuận. Nhấp vào đây để hủy yêu cầu theo dõi", "account.requested_follow": "{name} yêu cầu theo dõi bạn", @@ -233,6 +234,9 @@ "confirmations.redraft.confirm": "Xóa & viết lại", "confirmations.redraft.message": "Điều này sẽ khiến những lượt thích và đăng lại của tút bị mất, cũng như những trả lời sẽ không còn nội dung gốc.", "confirmations.redraft.title": "Xóa & viết lại", + "confirmations.remove_from_followers.confirm": "Xóa người theo dõi", + "confirmations.remove_from_followers.message": "{name} sẽ không còn theo dõi bạn.Bạn có chắc tiếp tục?", + "confirmations.remove_from_followers.title": "Xóa người theo dõi?", "confirmations.reply.confirm": "Trả lời", "confirmations.reply.message": "Nội dung bạn đang soạn thảo sẽ bị ghi đè, bạn có tiếp tục?", "confirmations.reply.title": "Ghi đè lên tút cũ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 90c689289e..772ff04a61 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -233,6 +233,8 @@ "confirmations.redraft.confirm": "删除并重新编辑", "confirmations.redraft.message": "确定删除这条嘟文并重写吗?所有相关的喜欢和转嘟都将丢失,嘟文的回复也会失去关联。", "confirmations.redraft.title": "是否删除并重新编辑嘟文?", + "confirmations.remove_from_followers.confirm": "移除关注者", + "confirmations.remove_from_followers.title": "移除关注者?", "confirmations.reply.confirm": "回复", "confirmations.reply.message": "回复此消息将会覆盖当前正在编辑的信息。确定继续吗?", "confirmations.reply.title": "是否重写嘟文?", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index e3d2170d4f..9145cab2eb 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -62,6 +62,7 @@ "account.open_original_page": "檢視原始頁面", "account.posts": "嘟文", "account.posts_with_replies": "嘟文與回覆", + "account.remove_from_followers": "自跟隨者中移除 {name}", "account.report": "檢舉 @{name}", "account.requested": "正在等候審核。按一下以取消跟隨請求", "account.requested_follow": "{name} 要求跟隨您", @@ -233,6 +234,9 @@ "confirmations.redraft.confirm": "刪除並重新編輯", "confirmations.redraft.message": "您確定要刪除這則嘟文並重新編輯嗎?您將失去這則嘟文之轉嘟及最愛,且對此嘟文之回覆會變成獨立的嘟文。", "confirmations.redraft.title": "是否刪除並重新編輯該嘟文?", + "confirmations.remove_from_followers.confirm": "移除跟隨者", + "confirmations.remove_from_followers.message": "{name} 將會停止跟隨您。您確定要繼續嗎?", + "confirmations.remove_from_followers.title": "是否移除該跟隨者?", "confirmations.reply.confirm": "回覆", "confirmations.reply.message": "回覆嘟文將覆蓋掉您目前正在撰寫之嘟文內容。您是否仍要繼續?", "confirmations.reply.title": "是否覆寫該嘟文?", diff --git a/config/locales/activerecord.fy.yml b/config/locales/activerecord.fy.yml index 8885fd43c1..82fc054b9d 100644 --- a/config/locales/activerecord.fy.yml +++ b/config/locales/activerecord.fy.yml @@ -49,8 +49,14 @@ fy: attributes: reblog: taken: fan berjocht bestiet al + terms_of_service: + attributes: + effective_date: + too_soon: is te betiid, moat nei %{date} wêze user: attributes: + date_of_birth: + below_limit: is ûnder de leeftiidsgrins email: blocked: brûkt in net tastiene e-mailprovider unreachable: liket net te bestean diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml index b52e92a4ec..79a0cb29fe 100644 --- a/config/locales/activerecord.ja.yml +++ b/config/locales/activerecord.ja.yml @@ -49,8 +49,14 @@ ja: attributes: reblog: taken: は既にブーストされています + terms_of_service: + attributes: + effective_date: + too_soon: 早すぎます、%{date}より後でなくてはなりません user: attributes: + date_of_birth: + below_limit: 年齢制限を下回っています email: blocked: は禁止されているメールプロバイダを使用しています unreachable: は存在しないようです diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 17efbcb4b6..9b4ee45d92 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -319,6 +319,7 @@ ca: create: Crea un anunci title: Nou anunci preview: + disclaimer: Com els usuaris no poden ometre-les, les notificacions per correu-e s'han de limitar a anuncis importants, com de violacions de dades personals o de tancament del servidor. explanation_html: 'S''enviarà el correu-e a %{display_count} usuaris. S''hi inclourà el text següent:' title: Vista prèvia de la notificació d'anunci publish: Publica @@ -486,19 +487,29 @@ ca: delete: Elimina ip: Adreça IP request_body: Solicita el cos + title: Depuració de les trucades providers: active: Actiu base_url: URL base callback: Torna la trucada delete: Elimina edit: Editeu el perfil + finish_registration: Final del registre name: Nom + providers: Proveïdors + public_key_fingerprint: Empremta de clau pública + registration_requested: Petició de registre registrations: confirm: Confirma + description: Heu rebut un registre d'un FASP. Rebutgeu-lo si no l'heu iniciat. Si ho heu fet, compareu amb cura el nom i la clau d'empremta abans de confirmar el registre. reject: Rebutja + title: Confirmeu el registre a FASP save: Desa + select_capabilities: Seleccioneu les capacitats sign_in: Inicieu la sessió status: Estat + title: Proveïdors de Serveis Auxiliars del Fedivers + title: FASP follow_recommendations: description_html: "Seguir les recomanacions ajuda als nous usuaris a trobar ràpidament contingut interessant. Quan un usuari no ha interactuat prou amb altres per a formar a qui seguir personalment, aquests comptes li seran recomanats. Es recalculen diàriament a partir d'una barreja de comptes amb els compromisos recents més alts i el nombre més alt de seguidors locals per a un idioma determinat." language: Per idioma diff --git a/config/locales/de.yml b/config/locales/de.yml index 0842ab73d7..08496b9044 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -328,7 +328,7 @@ de: scheduled_msg: Ankündigung ist zur Veröffentlichung vorgemerkt! title: Ankündigungen unpublish: Veröffentlichung rückgängig machen - unpublished_msg: Ankündigung erfolgreich unveröffentlicht! + unpublished_msg: Ankündigung ist jetzt nicht mehr sichtbar! updated_msg: Ankündigung erfolgreich aktualisiert! critical_update_pending: Kritisches Update ausstehend custom_emojis: diff --git a/config/locales/fa.yml b/config/locales/fa.yml index f1c74829c9..268c53e4f9 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -482,9 +482,13 @@ fa: fasp: debug: callbacks: + created_at: ایجاد شده در delete: حذف + ip: نشانی آی‌پی + request_body: بدنهٔ درخواست providers: active: فعال + base_url: نشانی پایه delete: حذف finish_registration: تکمیل ثبت‌نام name: نام diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 9a5bf97afe..f8d9840d70 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -495,9 +495,12 @@ fi: registrations: confirm: Vahvista reject: Hylkää + title: Vahvista FASP-rekisteröinti save: Tallenna + select_capabilities: Valitse kyvykkyydet sign_in: Kirjaudu sisään status: Tila + title: FASP follow_recommendations: description_html: "Seurantasuositukset auttavat uusia käyttäjiä löytämään nopeasti kiinnostavaa sisältöä. Kun käyttäjä ei ole ollut tarpeeksi vuorovaikutuksessa muiden kanssa, jotta hänelle olisi muodostunut henkilökohtaisia seuraamissuosituksia, suositellaan niiden sijaan näitä tilejä. Ne lasketaan päivittäin uudelleen yhdistelmästä tilejä, jotka ovat viime aikoina olleet aktiivisimmin sitoutuneita ja joilla on suurimmat paikalliset seuraajamäärät tietyllä kielellä." language: Kielelle diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml index e85952f91c..53b510e57e 100644 --- a/config/locales/fr-CA.yml +++ b/config/locales/fr-CA.yml @@ -483,6 +483,10 @@ fr-CA: title: Importer des blocages de domaine no_file: Aucun fichier sélectionné fasp: + debug: + callbacks: + delete: Supprimer + ip: Adresse IP providers: registrations: confirm: Confirmer diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 25218bd019..1ff2254a57 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -483,6 +483,10 @@ fr: title: Importer des blocages de domaine no_file: Aucun fichier sélectionné fasp: + debug: + callbacks: + delete: Supprimer + ip: Adresse IP providers: registrations: confirm: Confirmer diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 0beca83e65..3914bfffba 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -306,6 +306,7 @@ ja: title: 操作履歴 unavailable_instance: "(ドメイン名が利用できません)" announcements: + back: アナウンスに戻る destroyed_msg: お知らせが削除されました edit: title: お知らせを編集 @@ -314,6 +315,10 @@ ja: new: create: お知らせを作成 title: お知らせを追加 + preview: + disclaimer: メール通知はユーザーがオプトアウトできないため、個人データの漏洩やサーバー閉鎖の通知など重要なアナウンスに限定されるべきです。 + explanation_html: このメールは%{display_count}ユーザーへ送られます。次の文章がメールに含まれます: + title: アナウンスの通知のプレビュー publish: 公開する published_msg: お知らせを掲載しました scheduled_for: "%{time}に予約" @@ -470,14 +475,33 @@ ja: fasp: debug: callbacks: + created_at: 作成元 delete: 削除 ip: IPアドレス + request_body: リクエスト本文 + title: デバッグ コールバック providers: + active: アクティブ + base_url: 基本URL + callback: コールバック delete: 削除 + edit: プロバイダーの編集 + finish_registration: 登録を完了 name: 名前 providers: プロバイダ public_key_fingerprint: 公開キーのフィンガープリント + registration_requested: 登録がリクエストされました + registrations: + confirm: 確定 + description: FASPから登録を受け取りました。自分で登録していないなら拒否してください。自分で登録した場合は、登録を確定する前に名前と鍵のフィンガープリントを慎重に比較してください。 + reject: 拒否 + title: FASP登録を確認 save: 保存 + select_capabilities: 機能選択 + sign_in: サインイン + status: ステータス + title: フェディバース補助サービスプロバイダ + title: FASP follow_recommendations: description_html: "おすすめフォローは、新規ユーザーが興味のあるコンテンツをすばやく見つけるのに役立ちます。ユーザーが他のユーザーとの交流を十分にしていない場合、パーソナライズされたおすすめフォローを生成する代わりに、これらのアカウントが表示されます。最近のエンゲージメントが最も高いアカウントと、特定の言語のローカルフォロワー数が最も多いアカウントを組み合わせて、毎日再計算されます。" language: 言語 @@ -936,6 +960,7 @@ ja: chance_to_review_html: "生成された利用規約は自動的には公開されません。結果を確認する機会があります。手続きに必要な詳細を記入してください。" explanation_html: 提供された利用規約のテンプレートは情報提供のみを目的としており、いかなる主題に関しても法的助言と見なされるべきではありません。ご自身の状況や具体的な法的質問については、必ずご自身の弁護士に相談してください。 title: 利用規約の設定 + going_live_on_html: "%{date}より有効" history: 履歴 live: 公開中 no_history: 利用規約の変更はまだ記録されていません。 @@ -1872,6 +1897,10 @@ ja: recovery_instructions_html: 携帯電話を紛失した場合、以下の内どれかのリカバリーコードを使用してアカウントへアクセスすることができます。リカバリーコードは大切に保全してください。たとえば印刷してほかの重要な書類と一緒に保管することができます。 webauthn: セキュリティキー user_mailer: + announcement_published: + description: "%{domain}の管理者からの告知:" + subject: サービスに関する告知 + title: "%{domain}のサービスに関する告知" appeal_approved: action: アカウント設定 explanation: "%{strike_date}のストライクに対して、あなたが%{appeal_date}に行った申し立ては承認されました。アカウントは正常な状態に戻りました。" @@ -1904,6 +1933,8 @@ ja: terms_of_service_changed: agreement: "%{domain} を引き続き使用することで、これらの条件に同意したことになります。更新された条件に同意しない場合は、アカウントを削除することでいつでも %{domain} との契約を終了することができます。" changelog: 一目で分かる、この更新があなたにとって意味することは次の通りです: + description: このメールは、%{domain} の利用規約にいくつかの変更が加えられているため発信されました。これらの変更は %{date}より有効です。更新された利用規約をこちらで全てご確認いただくことをお勧めします: + description_html: このメールは、%{domain} の利用規約にいくつかの変更が加えられているため発信されました。これらの変更は %{date}より有効です。更新された利用規約をこちらで全てご確認いただくことをお勧めします。 sign_off: "%{domain} チーム" subject: 利用規約の更新 subtitle: "%{domain} の利用規約が変更されています" diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 85a88be7bb..bc13fc56b5 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -779,7 +779,7 @@ kab: weibo: Weibo current_session: Tiɣimit tamirant date: Azemz - description: "%{browser} s %{platform}" + description: "%{browser} ɣef %{platform}" explanation: Ha-t-en yiminigen web ikecmen akka tura ɣer umiḍan-ik·im Mastodon. ip: IP platforms: diff --git a/config/locales/nan.yml b/config/locales/nan.yml index 9180b7b064..5ffc7b649b 100644 --- a/config/locales/nan.yml +++ b/config/locales/nan.yml @@ -10,17 +10,32 @@ nan: followers: other: 跟tuè ê following: Leh跟tuè + instance_actor_flash: Tsit ê口座是虛ê,用來代表tsit臺服侍器,毋是個人用者ê。伊用來做聯邦ê路用,毋好kā停權。 last_active: 頂kái活動ê時間 link_verified_on: Tsit ê連結ê所有權佇 %{date} 受檢查 + nothing_here: Tsia內底無物件! + pin_errors: + following: Lí著tāi先跟tuè想beh推薦ê用者。 posts: other: PO文 posts_tab_heading: PO文 + self_follow_error: 跟tuè家己ê口座無允准 admin: + account_actions: + action: 執行動作 + already_silenced: Tsit ê口座有受著限制。 + already_suspended: Tsit ê口座已經受停權。 + title: Kā %{acct} 做審核ê動作 account_moderation_notes: create: 留記錄 created_msg: 管理記錄成功建立! destroyed_msg: 管理記錄成功thâi掉! accounts: + add_email_domain_block: 封鎖電子phue ê網域 + approve: 允准 + approved_msg: 成功審核 %{username} ê註冊申請ah + are_you_sure: Lí kám確定? + avatar: 標頭 deleted: Thâi掉ah demote: 降級 destroyed_msg: Teh-beh thâi掉 %{username} ê資料 @@ -39,6 +54,13 @@ nan: local: 本地 remote: 別ê站 title: 位置 + remove_avatar: Thâi掉標頭 + removed_avatar_msg: 成功thâi掉 %{username} ê 標頭影像 + action_logs: + action_types: + remove_avatar_user: Thâi掉標頭 + actions: + remove_avatar_user_html: "%{name} thâi掉 %{target} ê標頭" instances: dashboard: instance_languages_dimension: Tsia̍p用ê語言 @@ -54,4 +76,5 @@ nan: default_language: Kap界面ê語言sio kâng user_mailer: welcome: + feature_creativity: Mastodon支持聲音、影kap圖片êPO文、容易使用性ê描述、投票、內容ê警告、動畫ê標頭、自訂ê繪文字kap裁縮小圖ê控制等等,幫tsān lí展現家己。無論beh發表藝術作品、音樂,á是podcast,Mastodon佇tsia為lí服務。 sign_in_action: 登入 diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 1331ea7333..2fcbc91c80 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -270,6 +270,7 @@ eo: favicon: Favorikono mascot: Propa maskoto media_cache_retention_period: Audovidaĵkaŝaĵretendauro + min_age: Minimuma aĝo postulo peers_api_enabled: Eldonu liston de malkovritaj serviloj en la API profile_directory: Ŝalti la profilujon registrations_mode: Kiu povas krei konton diff --git a/config/locales/simple_form.fy.yml b/config/locales/simple_form.fy.yml index 56f02a1ff4..4e82179ab9 100644 --- a/config/locales/simple_form.fy.yml +++ b/config/locales/simple_form.fy.yml @@ -251,6 +251,7 @@ fy: name: Hashtag filters: actions: + blur: Media mei in warskôging ferstopje hide: Folslein ferstopje warn: Mei in warskôging ferstopje form_admin_settings: @@ -264,6 +265,7 @@ fy: favicon: Favicon mascot: Oanpaste maskotte (legacy) media_cache_retention_period: Bewartermyn mediabuffer + min_age: Fereaske minimum leeftiid peers_api_enabled: Publyklik meitsjen fan ûntdekte servers yn de API profile_directory: Brûkersgids ynskeakelje registrations_mode: Wa kin harren registrearje @@ -329,16 +331,22 @@ fy: usable: Berjochten tastean dizze hashtag lokaal te brûken terms_of_service: changelog: Wat is wizige? + effective_date: Yngongsdatum text: Gebrûksbetingsten terms_of_service_generator: admin_email: E-mailadres foar juridyske meldingen arbitration_address: Strjitte foar arbitraazjemeldingen arbitration_website: Website foar it yntsjinjen fan arbitraazjemeldingen + choice_of_law: Kar fan rjochtsgebiet dmca_address: Strjitte foar DMCA/auteursrjocht-meidielingen dmca_email: E-mailadres foar DMCA/auteursrjocht-meidielingen domain: Domein jurisdiction: Rjochtsgebiet + min_age: Minimum leeftiid user: + date_of_birth_1i: Dei + date_of_birth_2i: Moanne + date_of_birth_3i: Jier role: Rol time_zone: Tiidsône user_role: diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 5134711f64..5540cedd06 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -75,6 +75,7 @@ ja: filters: action: 投稿がフィルタに一致したときに実行するアクションを選択 actions: + blur: メディアは警告して非表示にするが、テキストは表示する hide: フィルタに一致した投稿を完全に非表示にします warn: フィルタに一致した投稿を非表示にし、フィルタのタイトルを含む警告を表示します form_admin_settings: @@ -88,6 +89,7 @@ ja: favicon: デフォルトのMastodonのブックマークアイコンを独自のアイコンで上書きします。WEBP、PNG、GIF、JPGが利用可能です。 mascot: 上級者向けWebインターフェースのイラストを上書きします。 media_cache_retention_period: リモートユーザーが投稿したメディアファイルは、あなたのサーバーにキャッシュされます。正の値を設定すると、メディアは指定した日数後に削除されます。削除後にメディアデータが要求された場合、ソースコンテンツがまだ利用可能であれば、再ダウンロードされます。リンクプレビューカードがサードパーティのサイトを更新する頻度に制限があるため、この値を少なくとも14日に設定することをお勧めします。 + min_age: ユーザーはサインアップ中に生年月日を確認するよう求められます peers_api_enabled: このサーバーが Fediverse で遭遇したドメイン名のリストです。このサーバーが知っているだけで、特定のサーバーと連合しているかのデータは含まれません。これは一般的に Fediverse に関する統計情報を収集するサービスによって使用されます。 profile_directory: ディレクトリには、掲載する設定をしたすべてのユーザーが一覧表示されます。 require_invite_text: アカウント登録が承認制の場合、登録の際の申請事由の入力を必須にします @@ -132,14 +134,21 @@ ja: name: 視認性向上などのためにアルファベット大文字小文字の変更のみ行うことができます terms_of_service: changelog: Markdown 記法を利用できます。 + effective_date: 期間は、ユーザーへ通知した日から10日以上30日以下にするのが適当でしょう。 text: Markdown 記法を利用できます。 terms_of_service_generator: admin_email: 法的通知とは、異議申し立て通知、裁判所命令、削除要請、法執行機関による要請などをいいます。 + arbitration_address: 上記住所と同じにすることもできます。またはEメールを使用する場合、空白でも構いません。 + arbitration_website: Webフォームまたは、Eメールを使用する場合は空白でも構いません。 + choice_of_law: あらゆる請求には都市、地域、領域、または州において施行されている実体法が適用されます。 dmca_address: 米国の運営者の場合は、DMCA Designated Agent Directory(DMCA指定代理人ディレクトリ)に登録のある住所を使用してください。申請を行えば記載を私書箱とすることも可能で、その場合はDMCA Designated Agent Post Office Box Waiver Request(DMCA指定代理人の郵便私書箱による免除申請)によって著作権局にメールを送信し、あなたが個人のコンテンツ管理者であって、行った措置に対して報復を受けるおそれがあり、住所を非公開とするために私書箱を使用する必要がある旨を伝えてください。 + dmca_email: 上で使った「法的通知を受け取るアドレス」と同じでも構いません。 domain: あなたの提供するこのオンラインサービスの識別名です。 jurisdiction: 運営責任者が居住する国を記載します。企業や他の団体である場合は、その組織の所在国に加えて、市・区・州などの地域を記載します。 + min_age: お住まいの国や地域の法律によって定められている最低年齢を下回ってはなりません。 user: chosen_languages: 選択すると、選択した言語の投稿のみが公開タイムラインに表示されるようになります + date_of_birth: Mastodonを利用するには少なくとも%{age}歳以上であることを確認する必要があります。これは保存されません。 role: そのロールは、ユーザーが持つ権限を制御します。 user_role: color: UI 全体でロールの表示に使用される色(16進数RGB形式) @@ -252,6 +261,7 @@ ja: name: ハッシュタグ filters: actions: + blur: 警告付きでメディアを非表示にする hide: 完全に隠す warn: 警告付きで隠す form_admin_settings: @@ -265,6 +275,7 @@ ja: favicon: ブックマークアイコン mascot: カスタムマスコット(レガシー) media_cache_retention_period: メディアキャッシュの保持期間 + min_age: 最低年齢の要件 peers_api_enabled: 発見したサーバーのリストをAPIで公開する profile_directory: プロフィール一覧を有効にする registrations_mode: 新規登録が可能な人 @@ -330,16 +341,22 @@ ja: usable: このサーバーのユーザーがタグをつけて投稿することを許可する terms_of_service: changelog: 変更箇所 + effective_date: 適用日 text: サービス利用規約 terms_of_service_generator: admin_email: 法的通知を受け取るメールアドレス arbitration_address: 仲裁通知の送付先住所 arbitration_website: 仲裁通知の送信用ウェブサイト + choice_of_law: 準拠法の選択 dmca_address: DMCA/著作権通知の送付先住所 dmca_email: DMCA/著作権通知の送付先メールアドレス domain: ドメイン jurisdiction: 裁判管轄 + min_age: 登録可能な最低年齢 user: + date_of_birth_1i: 日 + date_of_birth_2i: 月 + date_of_birth_3i: 年 role: ロール time_zone: タイムゾーン user_role: From cba4682ced6c710bd61e882fd4097e1911f9189d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 08:34:08 +0000 Subject: [PATCH 017/349] fix(deps): update dependency react-intl to v7.1.11 (#34503) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index b70e3fe33c..9398f08749 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14795,8 +14795,8 @@ __metadata: linkType: hard "react-intl@npm:^7.1.10": - version: 7.1.10 - resolution: "react-intl@npm:7.1.10" + version: 7.1.11 + resolution: "react-intl@npm:7.1.11" dependencies: "@formatjs/ecma402-abstract": "npm:2.3.4" "@formatjs/icu-messageformat-parser": "npm:2.11.2" @@ -14812,7 +14812,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10c0/7d47ac7e2284eb6d920d26d5cdcfee33f54805eb27284dab969ac931139c5eacb2b24f60c8e7645a623b768d0fdfa5dfc4df63a9270301d57aa356ddf231c484 + checksum: 10c0/f20770fb7bcce7a67acec70b9183f5320b7f3f9bbcb263ca8f4787817297674d1be158687f94d1e2803a9c8696d4f93dd86a28898aba8bc5197e858313e3dd06 languageName: node linkType: hard From b754e28190dfd8a23bf819fd4333d3cba1983a59 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Tue, 22 Apr 2025 14:11:21 +0200 Subject: [PATCH 018/349] Change devise to not use HTTP Basic Authentication (#34501) --- config/initializers/devise.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index 5c88c4cd5f..a277ee3059 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -158,13 +158,15 @@ Devise.setup do |config| # given strategies, for example, `config.params_authenticatable = [:database]` will # enable it only for database (email + password) authentication. # config.params_authenticatable = true + config.params_authenticatable = true # Tell if authentication through HTTP Auth is enabled. False by default. # It can be set to an array that will enable http authentication only for the # given strategies, for example, `config.http_authenticatable = [:database]` will # enable it only for database authentication. The supported strategies are: # :database = Support basic authentication with authentication key + password - config.http_authenticatable = [:pam, :database] + # config.http_authenticatable = [:pam, :database] + config.http_authenticatable = false # If 401 status code should be returned for AJAX requests. True by default. # config.http_authenticatable_on_xhr = true From 6027764c3156ff4000bbbc812fa93873b4b65fd6 Mon Sep 17 00:00:00 2001 From: Gomasy Date: Tue, 22 Apr 2025 21:39:35 +0900 Subject: [PATCH 019/349] Fix icon crushed when account name was too long (#34514) --- app/javascript/styles/mastodon/components.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 279636c446..25d33566ef 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -10399,6 +10399,10 @@ noscript { bdi { color: $darker-text-color; } + + .account__avatar { + flex: 0 0 auto; + } } &__content { From e097f0e9eb76514efc405f3d1cef0692ff4cff35 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 22 Apr 2025 16:55:17 +0200 Subject: [PATCH 020/349] fix(deps): update dependency sass to v1.87.0 (#34511) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9398f08749..4dd32a1d8a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15737,8 +15737,8 @@ __metadata: linkType: hard "sass@npm:^1.62.1": - version: 1.86.3 - resolution: "sass@npm:1.86.3" + version: 1.87.0 + resolution: "sass@npm:1.87.0" dependencies: "@parcel/watcher": "npm:^2.4.1" chokidar: "npm:^4.0.0" @@ -15749,7 +15749,7 @@ __metadata: optional: true bin: sass: sass.js - checksum: 10c0/ba819a0828f732adf7a94cd8ca017bce92bc299ffb878836ed1da80a30612bfbbf56a5e42d6dff3ad80d919c2025afb42948fc7b54a7bc61a9a2d58e1e0c558a + checksum: 10c0/bd245faf14e4783dc547765350cf05817edaac0d6d6f6e4da8ab751f3eb3cc3873afd563c0ce416a24aa6c9c4e9023b05096447fc006660a01f76adffb54fbc6 languageName: node linkType: hard From dee744c79382ffd208bcf050cf8f32e02724e110 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 23 Apr 2025 09:29:13 +0200 Subject: [PATCH 021/349] Fix quote serializer (#34510) --- .../status_relationships_presenter.rb | 33 +++++++++++++++---- app/serializers/rest/base_quote_serializer.rb | 2 +- spec/requests/api/v1/timelines/home_spec.rb | 7 +++- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/app/presenters/status_relationships_presenter.rb b/app/presenters/status_relationships_presenter.rb index 2d95db82da..0807f1c95e 100644 --- a/app/presenters/status_relationships_presenter.rb +++ b/app/presenters/status_relationships_presenter.rb @@ -7,14 +7,24 @@ class StatusRelationshipsPresenter :bookmarks_map, :filters_map, :attributes_map def initialize(statuses, current_account_id = nil, **options) + @current_account_id = current_account_id + + # Keeping a reference to @statuses is ok since `StatusRelationshipsPresenter` + # basically never outlives the statuses collection it is passed + @statuses = statuses + if current_account_id.nil? - @reblogs_map = {} - @favourites_map = {} - @bookmarks_map = {} - @mutes_map = {} - @pins_map = {} - @filters_map = {} + @preloaded_account_relations = {} + @filters_map = {} + @reblogs_map = {} + @favourites_map = {} + @bookmarks_map = {} + @mutes_map = {} + @pins_map = {} + @attributes_map = {} else + @preloaded_account_relations = nil + statuses = statuses.compact status_ids = statuses.flat_map { |s| [s.id, s.reblog_of_id, s.proper.quote&.quoted_status_id] }.uniq.compact conversation_ids = statuses.flat_map { |s| [s.proper.conversation_id, s.proper.quote&.quoted_status&.conversation_id] }.uniq.compact @@ -30,6 +40,17 @@ class StatusRelationshipsPresenter end end + # This one is currently on-demand as it is only used for quote posts + def preloaded_account_relations + @preloaded_account_relations ||= begin + accounts = @statuses.compact.flat_map { |s| [s.account, s.proper.account, s.proper.quote&.quoted_account] }.uniq.compact + + account_ids = accounts.pluck(:id) + account_domains = accounts.pluck(:domain).uniq + Account.find(@current_account_id).relations_map(account_ids, account_domains) + end + end + private def build_filters_map(statuses, current_account_id) diff --git a/app/serializers/rest/base_quote_serializer.rb b/app/serializers/rest/base_quote_serializer.rb index 0434f342c9..20a53d1a20 100644 --- a/app/serializers/rest/base_quote_serializer.rb +++ b/app/serializers/rest/base_quote_serializer.rb @@ -20,6 +20,6 @@ class REST::BaseQuoteSerializer < ActiveModel::Serializer private def status_filter - @status_filter ||= StatusFilter.new(object.quoted_status, current_user&.account, instance_options[:relationships] || {}) + @status_filter ||= StatusFilter.new(object.quoted_status, current_user&.account, instance_options[:relationships]&.preloaded_account_relations || {}) end end diff --git a/spec/requests/api/v1/timelines/home_spec.rb b/spec/requests/api/v1/timelines/home_spec.rb index 2023b189ec..38e18979d2 100644 --- a/spec/requests/api/v1/timelines/home_spec.rb +++ b/spec/requests/api/v1/timelines/home_spec.rb @@ -26,8 +26,13 @@ RSpec.describe 'Home', :inline_jobs do before do user.account.follow!(bob) user.account.follow!(ana) - PostStatusService.new.call(bob, text: 'New toot from bob.') + quoted = PostStatusService.new.call(bob, text: 'New toot from bob.') PostStatusService.new.call(tim, text: 'New toot from tim.') + reblogged = PostStatusService.new.call(tim, text: 'New toot from tim, which will end up boosted.') + ReblogService.new.call(bob, reblogged) + # TODO: use PostStatusService argument when available rather than manually creating quote + quoting = PostStatusService.new.call(bob, text: 'Self-quote from bob.') + Quote.create!(status: quoting, quoted_status: quoted, state: :accepted) PostStatusService.new.call(ana, text: 'New toot from ana.') end From 7bc301e184afb95d8acd77294e2c23a6989ebc34 Mon Sep 17 00:00:00 2001 From: Claire Date: Wed, 23 Apr 2025 10:12:31 +0200 Subject: [PATCH 022/349] Make `Web::PushSubscription#user` and `Web::PushSubscription#access_token` relationships non-optional (#34498) Co-authored-by: Emelia Smith --- app/models/web/push_subscription.rb | 38 +++---------------- .../web/notification_serializer.rb | 2 +- ..._not_null_to_web_push_subscription_user.rb | 7 ++++ ..._not_null_to_web_push_subscription_user.rb | 19 ++++++++++ ...l_to_web_push_subscription_access_token.rb | 7 ++++ ...l_to_web_push_subscription_access_token.rb | 19 ++++++++++ db/schema.rb | 6 +-- .../web_push_subscription_fabricator.rb | 2 + .../api/v1/push/subscriptions_spec.rb | 3 +- 9 files changed, 66 insertions(+), 37 deletions(-) create mode 100644 db/migrate/20250422083912_add_not_null_to_web_push_subscription_user.rb create mode 100644 db/migrate/20250422084214_validate_add_not_null_to_web_push_subscription_user.rb create mode 100644 db/migrate/20250422085027_add_not_null_to_web_push_subscription_access_token.rb create mode 100644 db/migrate/20250422085303_validate_add_not_null_to_web_push_subscription_access_token.rb diff --git a/app/models/web/push_subscription.rb b/app/models/web/push_subscription.rb index 12d843cd09..25140598a5 100644 --- a/app/models/web/push_subscription.rb +++ b/app/models/web/push_subscription.rb @@ -12,13 +12,13 @@ # standard :boolean default(FALSE), not null # created_at :datetime not null # updated_at :datetime not null -# access_token_id :bigint(8) -# user_id :bigint(8) +# access_token_id :bigint(8) not null +# user_id :bigint(8) not null # class Web::PushSubscription < ApplicationRecord - belongs_to :user, optional: true - belongs_to :access_token, class_name: 'Doorkeeper::AccessToken', optional: true + belongs_to :user + belongs_to :access_token, class_name: 'Doorkeeper::AccessToken' has_one :session_activation, foreign_key: 'web_push_subscription_id', inverse_of: :web_push_subscription, dependent: nil @@ -28,7 +28,7 @@ class Web::PushSubscription < ApplicationRecord validates_with WebPushKeyValidator - delegate :locale, to: :associated_user + delegate :locale, to: :user generates_token_for :unsubscribe, expires_in: Web::PushNotificationWorker::TTL @@ -36,24 +36,8 @@ class Web::PushSubscription < ApplicationRecord policy_allows_notification?(notification) && alert_enabled_for_notification_type?(notification) end - def associated_user - return @associated_user if defined?(@associated_user) - - @associated_user = if user_id.nil? - session_activation.user - else - user - end - end - def associated_access_token - return @associated_access_token if defined?(@associated_access_token) - - @associated_access_token = if access_token_id.nil? - find_or_create_access_token.token - else - access_token.token - end + access_token.token end class << self @@ -65,16 +49,6 @@ class Web::PushSubscription < ApplicationRecord private - def find_or_create_access_token - Doorkeeper::AccessToken.find_or_create_for( - application: Doorkeeper::Application.find_by(superapp: true), - resource_owner: user_id || session_activation.user_id, - scopes: Doorkeeper::OAuth::Scopes.from_string('read write follow push'), - expires_in: Doorkeeper.configuration.access_token_expires_in, - use_refresh_token: Doorkeeper.configuration.refresh_token_enabled? - ) - end - def alert_enabled_for_notification_type?(notification) truthy?(data&.dig('alerts', notification.type.to_s)) end diff --git a/app/serializers/web/notification_serializer.rb b/app/serializers/web/notification_serializer.rb index fb2f7248a6..1c2b26bf5b 100644 --- a/app/serializers/web/notification_serializer.rb +++ b/app/serializers/web/notification_serializer.rb @@ -13,7 +13,7 @@ class Web::NotificationSerializer < ActiveModel::Serializer end def preferred_locale - current_push_subscription.associated_user&.locale || I18n.default_locale + current_push_subscription.user&.locale || I18n.default_locale end def notification_id diff --git a/db/migrate/20250422083912_add_not_null_to_web_push_subscription_user.rb b/db/migrate/20250422083912_add_not_null_to_web_push_subscription_user.rb new file mode 100644 index 0000000000..2af08edc40 --- /dev/null +++ b/db/migrate/20250422083912_add_not_null_to_web_push_subscription_user.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddNotNullToWebPushSubscriptionUser < ActiveRecord::Migration[8.0] + def change + add_check_constraint :web_push_subscriptions, 'user_id IS NOT NULL', name: 'web_push_subscriptions_user_id_null', validate: false + end +end diff --git a/db/migrate/20250422084214_validate_add_not_null_to_web_push_subscription_user.rb b/db/migrate/20250422084214_validate_add_not_null_to_web_push_subscription_user.rb new file mode 100644 index 0000000000..af1962a8fb --- /dev/null +++ b/db/migrate/20250422084214_validate_add_not_null_to_web_push_subscription_user.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class ValidateAddNotNullToWebPushSubscriptionUser < ActiveRecord::Migration[8.0] + def up + connection.execute(<<~SQL.squish) + DELETE FROM web_push_subscriptions + WHERE user_id IS NULL + SQL + + validate_check_constraint :web_push_subscriptions, name: 'web_push_subscriptions_user_id_null' + change_column_null :web_push_subscriptions, :user_id, false + remove_check_constraint :web_push_subscriptions, name: 'web_push_subscriptions_user_id_null' + end + + def down + add_check_constraint :web_push_subscriptions, 'user_id IS NOT NULL', name: 'web_push_subscriptions_user_id_null', validate: false + change_column_null :web_push_subscriptions, :user_id, true + end +end diff --git a/db/migrate/20250422085027_add_not_null_to_web_push_subscription_access_token.rb b/db/migrate/20250422085027_add_not_null_to_web_push_subscription_access_token.rb new file mode 100644 index 0000000000..167bc71b72 --- /dev/null +++ b/db/migrate/20250422085027_add_not_null_to_web_push_subscription_access_token.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddNotNullToWebPushSubscriptionAccessToken < ActiveRecord::Migration[8.0] + def change + add_check_constraint :web_push_subscriptions, 'access_token_id IS NOT NULL', name: 'web_push_subscriptions_access_token_id_null', validate: false + end +end diff --git a/db/migrate/20250422085303_validate_add_not_null_to_web_push_subscription_access_token.rb b/db/migrate/20250422085303_validate_add_not_null_to_web_push_subscription_access_token.rb new file mode 100644 index 0000000000..322d376667 --- /dev/null +++ b/db/migrate/20250422085303_validate_add_not_null_to_web_push_subscription_access_token.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class ValidateAddNotNullToWebPushSubscriptionAccessToken < ActiveRecord::Migration[8.0] + def up + connection.execute(<<~SQL.squish) + DELETE FROM web_push_subscriptions + WHERE access_token_id IS NULL + SQL + + validate_check_constraint :web_push_subscriptions, name: 'web_push_subscriptions_access_token_id_null' + change_column_null :web_push_subscriptions, :access_token_id, false + remove_check_constraint :web_push_subscriptions, name: 'web_push_subscriptions_access_token_id_null' + end + + def down + add_check_constraint :web_push_subscriptions, 'access_token_id IS NOT NULL', name: 'web_push_subscriptions_access_token_id_null', validate: false + change_column_null :web_push_subscriptions, :access_token_id, true + end +end diff --git a/db/schema.rb b/db/schema.rb index 6b1aa81bd0..0cabf8997c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.0].define(version: 2025_04_11_095859) do +ActiveRecord::Schema[8.0].define(version: 2025_04_22_085303) do # These are extensions that must be enabled in order to support this database enable_extension "pg_catalog.plpgsql" @@ -1237,8 +1237,8 @@ ActiveRecord::Schema[8.0].define(version: 2025_04_11_095859) do t.json "data" t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false - t.bigint "access_token_id" - t.bigint "user_id" + t.bigint "access_token_id", null: false + t.bigint "user_id", null: false t.boolean "standard", default: false, null: false t.index ["access_token_id"], name: "index_web_push_subscriptions_on_access_token_id", where: "(access_token_id IS NOT NULL)" t.index ["user_id"], name: "index_web_push_subscriptions_on_user_id" diff --git a/spec/fabricators/web_push_subscription_fabricator.rb b/spec/fabricators/web_push_subscription_fabricator.rb index 6b4028342c..458aa8296e 100644 --- a/spec/fabricators/web_push_subscription_fabricator.rb +++ b/spec/fabricators/web_push_subscription_fabricator.rb @@ -8,4 +8,6 @@ Fabricator(:web_push_subscription, from: Web::PushSubscription) do Base64.urlsafe_encode64(ecdh_key) end key_auth { Base64.urlsafe_encode64(Random.new.bytes(16)) } + user { Fabricate(:user) } + access_token { |attrs| Fabricate.build(:accessible_access_token, resource_owner_id: attrs[:user].id) } end diff --git a/spec/requests/api/v1/push/subscriptions_spec.rb b/spec/requests/api/v1/push/subscriptions_spec.rb index 69adeb9b6f..359de9d95c 100644 --- a/spec/requests/api/v1/push/subscriptions_spec.rb +++ b/spec/requests/api/v1/push/subscriptions_spec.rb @@ -207,7 +207,8 @@ RSpec.describe 'API V1 Push Subscriptions' do Fabricate( :web_push_subscription, endpoint: create_payload[:subscription][:endpoint], - access_token_id: token.id + access_token: token, + user: user ) end end From b68c622a077a087c820823807236e82fd5daee88 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 10:25:46 +0200 Subject: [PATCH 023/349] fix(deps): update dependency pg-connection-string to v2.8.1 (#34517) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4dd32a1d8a..80eb1a0503 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13287,9 +13287,9 @@ __metadata: linkType: hard "pg-connection-string@npm:^2.6.0, pg-connection-string@npm:^2.7.0": - version: 2.7.0 - resolution: "pg-connection-string@npm:2.7.0" - checksum: 10c0/50a1496a1c858f9495d78a2c7a66d93ef3602e718aff2953bb5738f3ea616d7f727f32fc20513c9bed127650cd14c1ddc7b458396f4000e689d4b64c65c5c51e + version: 2.8.1 + resolution: "pg-connection-string@npm:2.8.1" + checksum: 10c0/87cb519d97a5bdc756f71a6b051eea4d4887e2e102bc694ecda935fe636a037666a0444729b08c7a26c2e9e4b052b2b366af58492ccc49704bacd6876f946ce8 languageName: node linkType: hard From 577e407ffc9c217195283661fd7dfd5ac0fe0d30 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 10:47:20 +0200 Subject: [PATCH 024/349] New Crowdin Translations (automated) (#34522) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/de.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 4a86c46f28..e6eb25ec2d 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -56,8 +56,8 @@ "account.mute_notifications_short": "Benachrichtigungen stummschalten", "account.mute_short": "Stummschalten", "account.muted": "Stummgeschaltet", - "account.muting": "Wird stummgeschaltet", - "account.mutual": "Ihr folgt euch", + "account.muting": "Stummgeschaltet", + "account.mutual": "Ihr folgt einander", "account.no_bio": "Keine Beschreibung verfügbar.", "account.open_original_page": "Ursprüngliche Seite öffnen", "account.posts": "Beiträge", From ffc853c08694cc5f1ec37e42da9a00e9e6ede0ba Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 10:53:29 +0200 Subject: [PATCH 025/349] fix(deps): update dependency pg to v8.15.1 (#34516) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/yarn.lock b/yarn.lock index 80eb1a0503..cd7af4bf3d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13279,14 +13279,14 @@ __metadata: languageName: node linkType: hard -"pg-cloudflare@npm:^1.1.1": - version: 1.1.1 - resolution: "pg-cloudflare@npm:1.1.1" - checksum: 10c0/a68b957f755be6af813d68ccaf4c906a000fd2ecb362cd281220052cc9e2f6c26da3b88792742387008c30b3bf0d2fa3a0eff04aeb8af4414023c99ae78e07bd +"pg-cloudflare@npm:^1.2.0": + version: 1.2.0 + resolution: "pg-cloudflare@npm:1.2.0" + checksum: 10c0/d6f2d032aeab291b17d627b051aae85420aea86a3371895a77b55fec93e3dac05880fbf09e5de33486ad3a2e6d7d56a025a8aa66f0d5883984f9834e4cd6f6a4 languageName: node linkType: hard -"pg-connection-string@npm:^2.6.0, pg-connection-string@npm:^2.7.0": +"pg-connection-string@npm:^2.6.0, pg-connection-string@npm:^2.8.1": version: 2.8.1 resolution: "pg-connection-string@npm:2.8.1" checksum: 10c0/87cb519d97a5bdc756f71a6b051eea4d4887e2e102bc694ecda935fe636a037666a0444729b08c7a26c2e9e4b052b2b366af58492ccc49704bacd6876f946ce8 @@ -13307,19 +13307,19 @@ __metadata: languageName: node linkType: hard -"pg-pool@npm:^3.8.0": - version: 3.8.0 - resolution: "pg-pool@npm:3.8.0" +"pg-pool@npm:^3.9.1": + version: 3.9.1 + resolution: "pg-pool@npm:3.9.1" peerDependencies: pg: ">=8.0" - checksum: 10c0/c05287b0caafeab43807e6ad22d153c09c473dbeb5b2cea13b83102376e9a56f46b91fa9adf9d53885ce198280c6a95555390987c42b3858d1936d3e0cdc83aa + checksum: 10c0/2bbc0892ab7325486b7d5ad8ade59ec925476666ac3959cb4850814c5334bb2f1344258707f8d0445093b59dd6e94401508cebcee490d4827821549147a2ebd9 languageName: node linkType: hard -"pg-protocol@npm:*, pg-protocol@npm:^1.8.0": - version: 1.8.0 - resolution: "pg-protocol@npm:1.8.0" - checksum: 10c0/2be784955599d84b564795952cee52cc2b8eab0be43f74fc1061506353801e282c1d52c9e0691a9b72092c1f3fde370e9b181e80fef6bb82a9b8d1618bfa91e6 +"pg-protocol@npm:*, pg-protocol@npm:^1.9.0": + version: 1.9.0 + resolution: "pg-protocol@npm:1.9.0" + checksum: 10c0/c37e61d7fafa97f22eabf12de69863f42fdabb3671df9cc2623bd0ffd6bdedc212e7e8460ad2c721c8a08d8477b4f128a923bf2381905d68a23a532ec7517c77 languageName: node linkType: hard @@ -13352,13 +13352,13 @@ __metadata: linkType: hard "pg@npm:^8.5.0": - version: 8.14.1 - resolution: "pg@npm:8.14.1" + version: 8.15.1 + resolution: "pg@npm:8.15.1" dependencies: - pg-cloudflare: "npm:^1.1.1" - pg-connection-string: "npm:^2.7.0" - pg-pool: "npm:^3.8.0" - pg-protocol: "npm:^1.8.0" + pg-cloudflare: "npm:^1.2.0" + pg-connection-string: "npm:^2.8.1" + pg-pool: "npm:^3.9.1" + pg-protocol: "npm:^1.9.0" pg-types: "npm:^2.1.0" pgpass: "npm:1.x" peerDependencies: @@ -13369,7 +13369,7 @@ __metadata: peerDependenciesMeta: pg-native: optional: true - checksum: 10c0/221741cfcea4ab32c8b57bd60703bc36cfb5622dcac56c19e45f504ef8669f2f2e0429af8850f58079cfc89055da35b5a5e12de19e0505e3f61a4b4349388dcb + checksum: 10c0/c6e5fd9cd6af7fc3208e48f860fd9ec9f7bc20192e449b0b36b096a9d5889de50706c705f6996e51a765bd4b7331179d7ffb43528a141bb996ee6f2c8f994c9a languageName: node linkType: hard From ca4139be07fb0022fc8d915f48ff97c8389ac889 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 23 Apr 2025 11:50:42 +0200 Subject: [PATCH 026/349] chore(deps): update node.js to 22.15 (#34523) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .nvmrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nvmrc b/.nvmrc index 744ca17ec0..5d621bb2fe 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22.14 +22.15 From d845d1e9fb7869778922fac8e822d41a3c7da1f1 Mon Sep 17 00:00:00 2001 From: KMY Date: Thu, 24 Apr 2025 08:48:28 +0900 Subject: [PATCH 027/349] =?UTF-8?q?Remove:=20kmyblue=E7=8B=AC=E8=87=AA?= =?UTF-8?q?=E6=A9=9F=E8=83=BD=E3=81=AE=E5=BC=95=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/filters_controller.rb | 4 +- app/controllers/api/v2/filters_controller.rb | 2 +- app/controllers/filters_controller.rb | 2 +- app/helpers/context_helper.rb | 1 - app/helpers/kmyblue_capabilities_helper.rb | 2 - .../mastodon/actions/importer/index.js | 4 - .../mastodon/actions/importer/normalizer.js | 5 - .../mastodon/actions/notifications.js | 2 +- app/javascript/mastodon/api_types/accounts.ts | 2 - .../mastodon/components/compacted_status.jsx | 580 --------- app/javascript/mastodon/components/status.jsx | 12 +- .../mastodon/components/status_action_bar.jsx | 17 +- .../containers/compacted_status_container.jsx | 78 -- .../mastodon/containers/status_container.jsx | 4 - .../components/column_settings.jsx | 2 +- .../notifications/components/notification.jsx | 4 +- .../notification_status_reference.tsx | 2 +- .../features/status/components/action_bar.jsx | 17 +- .../status/components/detailed_status.tsx | 12 +- .../mastodon/features/status/index.jsx | 7 +- .../features/status_references/index.jsx | 2 +- app/javascript/mastodon/initial_state.js | 6 +- app/javascript/mastodon/locales/en.json | 13 +- app/javascript/mastodon/locales/ja.json | 14 +- app/javascript/mastodon/models/account.ts | 2 - app/javascript/mastodon/reducers/filters.js | 1 - app/javascript/mastodon/selectors/index.js | 17 +- app/lib/activitypub/activity/create.rb | 23 +- app/lib/activitypub/case_transform.rb | 1 - app/lib/status_reach_finder.rb | 5 - app/models/concerns/account/other_settings.rb | 8 - app/models/concerns/user/has_settings.rb | 24 - app/models/custom_filter.rb | 21 +- app/models/instance_info.rb | 4 - app/models/status.rb | 17 - app/models/status_reference.rb | 23 +- app/models/user_settings.rb | 8 - app/policies/status_policy.rb | 4 - .../status_relationships_presenter.rb | 1 - .../activitypub/note_serializer.rb | 44 +- app/serializers/initial_state_serializer.rb | 4 - app/serializers/rest/filter_serializer.rb | 2 +- app/serializers/rest/status_serializer.rb | 24 - .../process_status_update_service.rb | 3 +- app/services/fan_out_on_write_service.rb | 2 +- app/services/post_status_service.rb | 1 + app/services/process_references_service.rb | 18 +- app/services/update_status_service.rb | 1 + app/views/filters/_filter_fields.html.haml | 1 - .../preferences/appearance/show.html.haml | 8 - .../settings/privacy_extra/show.html.haml | 3 - config/locales/en.yml | 15 +- config/locales/ja.yml | 1 - config/locales/simple_form.en.yml | 10 +- config/locales/simple_form.ja.yml | 7 - ...224935_remove_kmyblue_quote_accessories.rb | 10 + db/schema.rb | 4 +- lib/tasks/dangerous.rake | 2 +- .../status_reference_fabricator.rb | 1 - spec/lib/activitypub/activity/create_spec.rb | 141 -- spec/lib/status_reach_finder_spec.rb | 12 +- spec/models/account_spec.rb | 20 +- spec/models/status_spec.rb | 33 - spec/policies/status_policy_spec.rb | 24 - spec/requests/api/v1/timelines/public_spec.rb | 14 +- .../activitypub/note_serializer_spec.rb | 21 - spec/serializers/node_info/serializer_spec.rb | 1 - .../services/fan_out_on_write_service_spec.rb | 9 +- .../process_references_service_spec.rb | 52 +- streaming/index.js | 1159 ++++++++++------- 70 files changed, 812 insertions(+), 1788 deletions(-) delete mode 100644 app/javascript/mastodon/components/compacted_status.jsx delete mode 100644 app/javascript/mastodon/containers/compacted_status_container.jsx create mode 100644 db/migrate/20250423224935_remove_kmyblue_quote_accessories.rb diff --git a/app/controllers/api/v1/filters_controller.rb b/app/controllers/api/v1/filters_controller.rb index f8d91c5f7f..9a2e0d5d17 100644 --- a/app/controllers/api/v1/filters_controller.rb +++ b/app/controllers/api/v1/filters_controller.rb @@ -56,11 +56,11 @@ class Api::V1::FiltersController < Api::BaseController end def resource_params - params.permit(:phrase, :expires_in, :irreversible, :exclude_follows, :exclude_localusers, :with_quote, :with_profile, :whole_word, context: []) + params.permit(:phrase, :expires_in, :irreversible, :exclude_follows, :exclude_localusers, :with_profile, :whole_word, context: []) end def filter_params - resource_params.slice(:phrase, :expires_in, :irreversible, :exclude_follows, :exclude_localusers, :with_quote, :with_profile, :context) + resource_params.slice(:phrase, :expires_in, :irreversible, :exclude_follows, :exclude_localusers, :with_profile, :context) end def keyword_params diff --git a/app/controllers/api/v2/filters_controller.rb b/app/controllers/api/v2/filters_controller.rb index 51e778e1d6..fda4c0c215 100644 --- a/app/controllers/api/v2/filters_controller.rb +++ b/app/controllers/api/v2/filters_controller.rb @@ -43,6 +43,6 @@ class Api::V2::FiltersController < Api::BaseController end def resource_params - params.permit(:title, :expires_in, :filter_action, :exclude_follows, :exclude_localusers, :with_quote, :with_profile, context: [], keywords_attributes: [:id, :keyword, :whole_word, :_destroy]) + params.permit(:title, :expires_in, :filter_action, :exclude_follows, :exclude_localusers, :with_profile, context: [], keywords_attributes: [:id, :keyword, :whole_word, :_destroy]) end end diff --git a/app/controllers/filters_controller.rb b/app/controllers/filters_controller.rb index 20b8135908..dc47bd77ec 100644 --- a/app/controllers/filters_controller.rb +++ b/app/controllers/filters_controller.rb @@ -47,6 +47,6 @@ class FiltersController < ApplicationController end def resource_params - params.expect(custom_filter: [:title, :expires_in, :filter_action, :exclude_follows, :exclude_localusers, :exclude_quote, :exclude_profile, context: [], keywords_attributes: [[:id, :keyword, :whole_word, :_destroy]]]) + params.expect(custom_filter: [:title, :expires_in, :filter_action, :exclude_follows, :exclude_localusers, :exclude_profile, context: [], keywords_attributes: [[:id, :keyword, :whole_word, :_destroy]]]) end end diff --git a/app/helpers/context_helper.rb b/app/helpers/context_helper.rb index 077c5272a5..cb8fb46466 100644 --- a/app/helpers/context_helper.rb +++ b/app/helpers/context_helper.rb @@ -29,7 +29,6 @@ module ContextHelper limited_scope: { 'kmyblue' => 'http://kmy.blue/ns#', 'limitedScope' => 'kmyblue:limitedScope' }, other_setting: { 'fedibird' => 'http://fedibird.com/ns#', 'otherSetting' => 'fedibird:otherSetting' }, references: { 'fedibird' => 'http://fedibird.com/ns#', 'references' => { '@id' => 'fedibird:references', '@type' => '@id' } }, - quote_uri: { 'fedibird' => 'http://fedibird.com/ns#', 'quoteUri' => 'fedibird:quoteUri' }, keywords: { 'schema' => 'http://schema.org#', 'keywords' => 'schema:keywords' }, license: { 'schema' => 'http://schema.org#', 'license' => 'schema:license' }, suspended: { 'toot' => 'http://joinmastodon.org/ns#', 'suspended' => 'toot:suspended' }, diff --git a/app/helpers/kmyblue_capabilities_helper.rb b/app/helpers/kmyblue_capabilities_helper.rb index 279505bec8..39669c0680 100644 --- a/app/helpers/kmyblue_capabilities_helper.rb +++ b/app/helpers/kmyblue_capabilities_helper.rb @@ -15,7 +15,6 @@ module KmyblueCapabilitiesHelper kmyblue_limited_scope kmyblue_antenna kmyblue_bookmark_category - kmyblue_quote kmyblue_searchability_limited kmyblue_circle_history kmyblue_list_notification @@ -41,7 +40,6 @@ module KmyblueCapabilitiesHelper capabilities = %i( enable_wide_emoji status_reference - quote emoji_keywords circle ) diff --git a/app/javascript/mastodon/actions/importer/index.js b/app/javascript/mastodon/actions/importer/index.js index fc165b1a1f..a527043940 100644 --- a/app/javascript/mastodon/actions/importer/index.js +++ b/app/javascript/mastodon/actions/importer/index.js @@ -70,10 +70,6 @@ export function importFetchedStatuses(statuses) { processStatus(status.reblog); } - if (status.quote?.id && !getState().getIn(['statuses', status.id])) { - processStatus(status.quote); - } - if (status.poll?.id) { pushUnique(polls, createPollFromServerJSON(status.poll, getState().polls[status.poll.id])); } diff --git a/app/javascript/mastodon/actions/importer/normalizer.js b/app/javascript/mastodon/actions/importer/normalizer.js index b643cf5613..93fc3b9fef 100644 --- a/app/javascript/mastodon/actions/importer/normalizer.js +++ b/app/javascript/mastodon/actions/importer/normalizer.js @@ -66,11 +66,6 @@ export function normalizeStatus(status, normalOldStatus) { normalStatus.spoiler_text = normalOldStatus.get('spoiler_text'); normalStatus.hidden = normalOldStatus.get('hidden'); - // for quoted post - if (!normalStatus.filtered && normalOldStatus.get('filtered')) { - normalStatus.filtered = normalOldStatus.get('filtered'); - } - if (normalOldStatus.get('translation')) { normalStatus.translation = normalOldStatus.get('translation'); } diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index 87b842e51f..cc258db307 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -33,7 +33,7 @@ const messages = defineMessages({ message_poll: { id: 'notification.poll', defaultMessage: 'A poll you voted in has ended' }, message_reblog: { id: 'notification.reblog', defaultMessage: '{name} boosted your post' }, message_status: { id: 'notification.status', defaultMessage: '{name} just posted' }, - message_status_reference: { id: 'notification.status_reference', defaultMessage: '{name} quoted your post' }, + message_status_reference: { id: 'notification.status_reference', defaultMessage: '{name} linked your post' }, message_update: { id: 'notification.update', defaultMessage: '{name} edited a post' }, }); diff --git a/app/javascript/mastodon/api_types/accounts.ts b/app/javascript/mastodon/api_types/accounts.ts index 9d7974eda0..a2a6dfdf28 100644 --- a/app/javascript/mastodon/api_types/accounts.ts +++ b/app/javascript/mastodon/api_types/accounts.ts @@ -20,7 +20,6 @@ export interface ApiAccountOtherSettingsJSON { hide_followers_count: boolean; translatable_private: boolean; link_preview: boolean; - allow_quote: boolean; emoji_reaction_policy: | 'allow' | 'outside_only' @@ -34,7 +33,6 @@ export interface ApiAccountOtherSettingsJSON { export interface ApiServerFeaturesJSON { circle: boolean; emoji_reaction: boolean; - quote: boolean; status_reference: boolean; } diff --git a/app/javascript/mastodon/components/compacted_status.jsx b/app/javascript/mastodon/components/compacted_status.jsx deleted file mode 100644 index 6986bcd34c..0000000000 --- a/app/javascript/mastodon/components/compacted_status.jsx +++ /dev/null @@ -1,580 +0,0 @@ -import PropTypes from 'prop-types'; - -import { injectIntl, defineMessages, FormattedMessage } from 'react-intl'; - -import classNames from 'classnames'; - -import ImmutablePropTypes from 'react-immutable-proptypes'; -import ImmutablePureComponent from 'react-immutable-pure-component'; - -import { HotKeys } from 'react-hotkeys'; - -import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react'; -import PushPinIcon from '@/material-icons/400-24px/push_pin.svg?react'; -import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; -import ReplyIcon from '@/material-icons/400-24px/reply.svg?react'; -import AttachmentList from 'mastodon/components/attachment_list'; -import { ContentWarning } from 'mastodon/components/content_warning'; -import { Icon } from 'mastodon/components/icon'; -import PictureInPicturePlaceholder from 'mastodon/components/picture_in_picture_placeholder'; -import { withOptionalRouter, WithOptionalRouterPropTypes } from 'mastodon/utils/react_router'; - -import Card from '../features/status/components/card'; -// We use the component (and not the container) since we do not want -// to use the progress bar to show download progress -import Bundle from '../features/ui/components/bundle'; -import { MediaGallery, Video, Audio } from '../features/ui/util/async-components'; -import { SensitiveMediaContext } from '../features/ui/util/sensitive_media_context'; -import { displayMedia } from '../initial_state'; - -import { Avatar } from './avatar'; -import { DisplayName } from './display_name'; -import { getHashtagBarForStatus } from './hashtag_bar'; -import { RelativeTimestamp } from './relative_timestamp'; -import StatusContent from './status_content'; -import { VisibilityIcon } from './visibility_icon'; - -const domParser = new DOMParser(); - -export const textForScreenReader = (intl, status, rebloggedByText = false) => { - const displayName = status.getIn(['account', 'display_name']); - - const spoilerText = status.getIn(['translation', 'spoiler_text']) || status.get('spoiler_text'); - const contentHtml = status.getIn(['translation', 'contentHtml']) || status.get('contentHtml'); - const contentText = domParser.parseFromString(contentHtml, 'text/html').documentElement.textContent; - - const values = [ - displayName.length === 0 ? status.getIn(['account', 'acct']).split('@')[0] : displayName, - spoilerText && status.get('hidden') ? spoilerText : contentText, - intl.formatDate(status.get('created_at'), { hour: '2-digit', minute: '2-digit', month: 'short', day: 'numeric' }), - status.getIn(['account', 'acct']), - ]; - - if (rebloggedByText) { - values.push(rebloggedByText); - } - - return values.join(', '); -}; - -export const defaultMediaVisibility = (status) => { - if (!status) { - return undefined; - } - - if (status.get('reblog', null) !== null && typeof status.get('reblog') === 'object') { - status = status.get('reblog'); - } - - return (displayMedia !== 'hide_all' && !status.get('sensitive') || displayMedia === 'show_all'); -}; - -const messages = defineMessages({ - limited_short: { id: 'privacy.limited.short', defaultMessage: 'Limited' }, - edited: { id: 'status.edited', defaultMessage: 'Edited {date}' }, -}); - -class CompactedStatus extends ImmutablePureComponent { - - static contextType = SensitiveMediaContext; - - static propTypes = { - status: ImmutablePropTypes.map, - account: ImmutablePropTypes.record, - previousId: PropTypes.string, - nextInReplyToId: PropTypes.string, - rootId: PropTypes.string, - onClick: PropTypes.func, - onReply: PropTypes.func, - onFavourite: PropTypes.func, - onEmojiReact: PropTypes.func, - onUnEmojiReact: PropTypes.func, - onReblog: PropTypes.func, - onReblogForceModal: PropTypes.func, - onDelete: PropTypes.func, - onDirect: PropTypes.func, - onMention: PropTypes.func, - onPin: PropTypes.func, - onOpenMedia: PropTypes.func, - onOpenVideo: PropTypes.func, - onBlock: PropTypes.func, - onAddFilter: PropTypes.func, - onEmbed: PropTypes.func, - onHeightChange: PropTypes.func, - onToggleHidden: PropTypes.func, - onToggleCollapsed: PropTypes.func, - onTranslate: PropTypes.func, - onInteractionModal: PropTypes.func, - muted: PropTypes.bool, - hidden: PropTypes.bool, - unread: PropTypes.bool, - onMoveUp: PropTypes.func, - onMoveDown: PropTypes.func, - showThread: PropTypes.bool, - getScrollPosition: PropTypes.func, - updateScrollBottom: PropTypes.func, - cacheMediaWidth: PropTypes.func, - cachedMediaWidth: PropTypes.number, - scrollKey: PropTypes.string, - skipPrepend: PropTypes.bool, - deployPictureInPicture: PropTypes.func, - unfocusable: PropTypes.bool, - pictureInPicture: ImmutablePropTypes.contains({ - inUse: PropTypes.bool, - available: PropTypes.bool, - }), - withoutEmojiReactions: PropTypes.bool, - ...WithOptionalRouterPropTypes, - }; - - // Avoid checking props that are functions (and whose equality will always - // evaluate to false. See react-immutable-pure-component for usage. - updateOnProps = [ - 'status', - 'account', - 'muted', - 'hidden', - 'unread', - 'pictureInPicture', - ]; - - state = { - showMedia: defaultMediaVisibility(this.props.status) && !(this.context?.hideMediaByDefault), - }; - - componentDidUpdate (prevProps) { - // This will potentially cause a wasteful redraw, but in most cases `Status` components are used - // with a `key` directly depending on their `id`, preventing re-use of the component across - // different IDs. - // But just in case this does change, reset the state on status change. - - if (this.props.status?.get('id') !== prevProps.status?.get('id')) { - this.setState({ - showMedia: defaultMediaVisibility(this.props.status) && !(this.context?.hideMediaByDefault), - }); - } - } - - handleToggleMediaVisibility = () => { - this.setState({ showMedia: !this.state.showMedia }); - }; - - handleClick = e => { - if (e && (e.button !== 0 || e.ctrlKey || e.metaKey)) { - return; - } - - if (e) { - e.preventDefault(); - } - - this.handleHotkeyOpen(); - }; - - handlePrependAccountClick = e => { - this.handleAccountClick(e, false); - }; - - handleAccountClick = (e, proper = true) => { - if (e && (e.button !== 0 || e.ctrlKey || e.metaKey)) { - return; - } - - if (e) { - e.preventDefault(); - e.stopPropagation(); - } - - this._openProfile(proper); - }; - - handleExpandedToggle = () => { - this.props.onToggleHidden(this._properStatus()); - }; - - handleCollapsedToggle = isCollapsed => { - this.props.onToggleCollapsed(this._properStatus(), isCollapsed); - }; - - handleTranslate = () => { - this.props.onTranslate(this._properStatus()); - }; - - getAttachmentAspectRatio () { - const attachments = this._properStatus().get('media_attachments'); - - if (attachments.getIn([0, 'type']) === 'video') { - return `${attachments.getIn([0, 'meta', 'original', 'width'])} / ${attachments.getIn([0, 'meta', 'original', 'height'])}`; - } else if (attachments.getIn([0, 'type']) === 'audio') { - return '16 / 9'; - } else { - return (attachments.size === 1 && attachments.getIn([0, 'meta', 'small', 'aspect'])) ? attachments.getIn([0, 'meta', 'small', 'aspect']) : '3 / 2'; - } - } - - renderLoadingMediaGallery = () => { - return ( -
- ); - }; - - renderLoadingVideoPlayer = () => { - return ( -
- ); - }; - - renderLoadingAudioPlayer = () => { - return ( -
- ); - }; - - handleOpenVideo = (options) => { - const status = this._properStatus(); - const lang = status.getIn(['translation', 'language']) || status.get('language'); - this.props.onOpenVideo(status.get('id'), status.getIn(['media_attachments', 0]), lang, options); - }; - - handleOpenMedia = (media, index) => { - const status = this._properStatus(); - const lang = status.getIn(['translation', 'language']) || status.get('language'); - this.props.onOpenMedia(status.get('id'), media, index, lang); - }; - - handleHotkeyOpenMedia = e => { - const { onOpenMedia, onOpenVideo } = this.props; - const status = this._properStatus(); - - e.preventDefault(); - - if (status.get('media_attachments').size > 0) { - const lang = status.getIn(['translation', 'language']) || status.get('language'); - if (status.getIn(['media_attachments', 0, 'type']) === 'video') { - onOpenVideo(status.get('id'), status.getIn(['media_attachments', 0]), lang, { startTime: 0 }); - } else { - onOpenMedia(status.get('id'), status.get('media_attachments'), 0, lang); - } - } - }; - - handleDeployPictureInPicture = (type, mediaProps) => { - const { deployPictureInPicture } = this.props; - const status = this._properStatus(); - - deployPictureInPicture(status, type, mediaProps); - }; - - handleHotkeyReply = e => { - e.preventDefault(); - this.props.onReply(this._properStatus()); - }; - - handleHotkeyFavourite = () => { - this.props.onFavourite(this._properStatus()); - }; - - handleHotkeyBoost = e => { - this.props.onReblog(this._properStatus(), e); - }; - - handleHotkeyMention = e => { - e.preventDefault(); - this.props.onMention(this._properStatus().get('account')); - }; - - handleHotkeyOpen = () => { - if (this.props.onClick) { - this.props.onClick(); - return; - } - - const { history } = this.props; - const status = this._properStatus(); - - if (!history) { - return; - } - - history.push(`/@${status.getIn(['account', 'acct'])}/${status.get('id')}`); - }; - - handleHotkeyOpenProfile = () => { - this._openProfile(); - }; - - _openProfile = (proper = true) => { - const { history } = this.props; - const status = proper ? this._properStatus() : this.props.status; - - if (!history) { - return; - } - - history.push(`/@${status.getIn(['account', 'acct'])}`); - }; - - handleHotkeyMoveUp = e => { - this.props.onMoveUp(this.props.status.get('id'), e.target.getAttribute('data-featured')); - }; - - handleHotkeyMoveDown = e => { - this.props.onMoveDown(this.props.status.get('id'), e.target.getAttribute('data-featured')); - }; - - handleHotkeyToggleHidden = () => { - const { onToggleHidden } = this.props; - const status = this._properStatus(); - - onToggleHidden(status); - }; - - handleHotkeyToggleSensitive = () => { - this.handleToggleMediaVisibility(); - }; - - _properStatus () { - const { status } = this.props; - - if (status.get('reblog', null) !== null && typeof status.get('reblog') === 'object') { - return status.get('reblog'); - } else { - return status; - } - } - - handleRef = c => { - this.node = c; - }; - - render () { - const { intl, hidden, featured, unfocusable, unread, showThread, pictureInPicture, previousId, nextInReplyToId, rootId, skipPrepend } = this.props; - - let { status } = this.props; - - if (status === null) { - return null; - } - - const handlers = this.props.muted ? {} : { - reply: this.handleHotkeyReply, - favourite: this.handleHotkeyFavourite, - boost: this.handleHotkeyBoost, - mention: this.handleHotkeyMention, - open: this.handleHotkeyOpen, - openProfile: this.handleHotkeyOpenProfile, - moveUp: this.handleHotkeyMoveUp, - moveDown: this.handleHotkeyMoveDown, - toggleHidden: this.handleHotkeyToggleHidden, - toggleSensitive: this.handleHotkeyToggleSensitive, - openMedia: this.handleHotkeyOpenMedia, - }; - - let media, prepend, rebloggedByText; - - if (hidden) { - return ( - -
- {status.getIn(['account', 'display_name']) || status.getIn(['account', 'username'])} - {status.get('content')} -
-
- ); - } - - const connectUp = previousId && previousId === status.get('in_reply_to_id'); - const connectToRoot = rootId && rootId === status.get('in_reply_to_id'); - const connectReply = nextInReplyToId && nextInReplyToId === status.get('id'); - - let visibilityName = status.get('limited_scope') || status.get('visibility_ex') || status.get('visibility'); - - if (featured) { - prepend = ( -
-
- -
- ); - } else if (status.get('reblog', null) !== null && typeof status.get('reblog') === 'object') { - const display_name_html = { __html: status.getIn(['account', 'display_name_html']) }; - - prepend = ( -
-
-
- }} /> -
- ); - - rebloggedByText = intl.formatMessage({ id: 'status.reblogged_by', defaultMessage: '{name} boosted' }, { name: status.getIn(['account', 'acct']) }); - - status = status.get('reblog'); - } else if (status.get('visibility') === 'direct') { - prepend = ( -
-
- -
- ); - } else if (showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id'])) { - const display_name_html = { __html: status.getIn(['account', 'display_name_html']) }; - - prepend = ( -
-
- }} /> -
- ); - } - - if (pictureInPicture.get('inUse')) { - media = ; - } else if (status.get('media_attachments').size > 0) { - const language = status.getIn(['translation', 'language']) || status.get('language'); - - if (this.props.muted) { - media = ( - - ); - } else if (status.getIn(['media_attachments', 0, 'type']) === 'audio') { - const attachment = status.getIn(['media_attachments', 0]); - const description = attachment.getIn(['translation', 'description']) || attachment.get('description'); - - media = ( - - {Component => ( - - )} - - ); - } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') { - const attachment = status.getIn(['media_attachments', 0]); - const description = attachment.getIn(['translation', 'description']) || attachment.get('description'); - - media = ( - - {Component => ( - - )} - - ); - } else { - media = ( - - {Component => ( - - )} - - ); - } - } else if (status.get('card') && !this.props.muted) { - media = ( - - ); - } - - visibilityName = status.get('limited_scope') || status.get('visibility_ex') || status.get('visibility'); - - const {statusContentProps, hashtagBar} = getHashtagBarForStatus(status); - const expanded = !status.get('hidden') || status.get('spoiler_text').length === 0; - - return ( - -
- {!skipPrepend && prepend} - -
- - {(connectReply || connectUp || connectToRoot) &&
} - - {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */} - - - {status.get('spoiler_text').length > 0 && } - - {expanded && ( - <> - - - {media} - {hashtagBar} - - )} -
-
- - ); - } - -} - -export default withOptionalRouter(injectIntl(CompactedStatus)); diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index 0efea48f87..de30325e69 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -12,7 +12,6 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; import { HotKeys } from 'react-hotkeys'; import AlternateEmailIcon from '@/material-icons/400-24px/alternate_email.svg?react'; -import QuoteIcon from '@/material-icons/400-24px/format_quote.svg?react'; import ReferenceIcon from '@/material-icons/400-24px/link.svg?react'; import PushPinIcon from '@/material-icons/400-24px/push_pin.svg?react'; import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; @@ -25,7 +24,6 @@ import { Icon } from 'mastodon/components/icon'; import PictureInPicturePlaceholder from 'mastodon/components/picture_in_picture_placeholder'; import { withOptionalRouter, WithOptionalRouterPropTypes } from 'mastodon/utils/react_router'; -import CompactedStatusContainer from '../containers/compacted_status_container'; import Card from '../features/status/components/card'; // We use the component (and not the container) since we do not want // to use the progress bar to show download progress @@ -136,7 +134,6 @@ class Status extends ImmutablePureComponent { available: PropTypes.bool, }), withoutEmojiReactions: PropTypes.bool, - withoutQuote: PropTypes.bool, ...WithOptionalRouterPropTypes, }; @@ -382,7 +379,7 @@ class Status extends ImmutablePureComponent { }; render () { - const { intl, hidden, featured, unfocusable, unread, showThread, scrollKey, pictureInPicture, previousId, rootId, withoutQuote, skipPrepend, avatarSize = 46 } = this.props; + const { intl, hidden, featured, unfocusable, unread, showThread, scrollKey, pictureInPicture, previousId, rootId, skipPrepend, avatarSize = 46 } = this.props; let { status, account, ...other } = this.props; @@ -582,12 +579,9 @@ class Status extends ImmutablePureComponent { const {statusContentProps, hashtagBar} = getHashtagBarForStatus(status); const withLimited = status.get('visibility_ex') === 'limited' && status.get('limited_scope') ? : null; - const withQuote = status.get('quote_id') ? : null; - const withReference = (!withQuote && status.get('status_references_count') > 0) ? : null; + const withReference = status.get('status_references_count') > 0 ? : null; const withExpiration = status.get('expires_at') ? : null; - const quote = !this.props.muted && !withoutQuote && status.get('quote_id') && (['public', 'community'].includes(contextType) ? isShowItem('quote_in_public') : isShowItem('quote_in_home')) && ; - return (
@@ -598,7 +592,6 @@ class Status extends ImmutablePureComponent { {(!matchedFilters || expanded || isShowItem('avatar_on_filter')) && (
- {withQuote} {withReference} {withExpiration} {withLimited} @@ -633,7 +626,6 @@ class Status extends ImmutablePureComponent { {media} {hashtagBar} - {quote} {emojiReactionsBar} )} diff --git a/app/javascript/mastodon/components/status_action_bar.jsx b/app/javascript/mastodon/components/status_action_bar.jsx index 4721e9da93..ada72a0792 100644 --- a/app/javascript/mastodon/components/status_action_bar.jsx +++ b/app/javascript/mastodon/components/status_action_bar.jsx @@ -68,8 +68,7 @@ const messages = defineMessages({ admin_status: { id: 'status.admin_status', defaultMessage: 'Open this post in the moderation interface' }, admin_domain: { id: 'status.admin_domain', defaultMessage: 'Open moderation interface for {domain}' }, copy: { id: 'status.copy', defaultMessage: 'Copy link to post' }, - reference: { id: 'status.reference', defaultMessage: 'Quiet quote' }, - quote: { id: 'status.quote', defaultMessage: 'Quote' }, + reference: { id: 'status.reference', defaultMessage: 'Link' }, blockDomain: { id: 'account.block_domain', defaultMessage: 'Block domain {domain}' }, unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' }, unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, @@ -110,7 +109,6 @@ class StatusActionBar extends ImmutablePureComponent { onFilter: PropTypes.func, onAddFilter: PropTypes.func, onReference: PropTypes.func, - onQuote: PropTypes.func, onInteractionModal: PropTypes.func, withDismiss: PropTypes.bool, withCounters: PropTypes.bool, @@ -288,10 +286,6 @@ class StatusActionBar extends ImmutablePureComponent { this.props.onReference(this.props.status, this.props.history); }; - handleQuote = () => { - this.props.onQuote(this.props.status, this.props.history); - }; - render () { const { status, relationship, intl, withDismiss, withCounters, scrollKey } = this.props; const { signedIn, permissions } = this.props.identity; @@ -303,7 +297,6 @@ class StatusActionBar extends ImmutablePureComponent { const account = status.get('account'); const writtenByMe = status.getIn(['account', 'id']) === me; const isRemote = status.getIn(['account', 'username']) !== status.getIn(['account', 'acct']); - const allowQuote = status.getIn(['account', 'other_settings', 'allow_quote']); let menu = []; @@ -335,10 +328,6 @@ class StatusActionBar extends ImmutablePureComponent { } if (!boostMenu) { - if (publicStatus && allowQuote && (account.getIn(['server_features', 'quote']) || !isHideItem('quote_unavailable_server'))) { - menu.push({ text: intl.formatMessage(messages.quote), action: this.handleQuote, tag: 'reblog' }); - } - if (account.getIn(['server_features', 'status_reference']) || !isHideItem('status_reference_unavailable_server')) { menu.push({ text: intl.formatMessage(messages.reference), action: this.handleReference, tag: 'reblog' }); } @@ -423,10 +412,6 @@ class StatusActionBar extends ImmutablePureComponent { } if (publicStatus) { - if (allowQuote && (account.getIn(['server_features', 'quote']) || !isHideItem('quote_unavailable_server'))) { - reblogMenu.push({ text: intl.formatMessage(messages.quote), action: this.handleQuote }); - } - if (account.getIn(['server_features', 'status_reference']) || !isHideItem('status_reference_unavailable_server')) { reblogMenu.push({ text: intl.formatMessage(messages.reference), action: this.handleReference }); } diff --git a/app/javascript/mastodon/containers/compacted_status_container.jsx b/app/javascript/mastodon/containers/compacted_status_container.jsx deleted file mode 100644 index 8d483ed36f..0000000000 --- a/app/javascript/mastodon/containers/compacted_status_container.jsx +++ /dev/null @@ -1,78 +0,0 @@ -import { injectIntl } from 'react-intl'; - -import { connect } from 'react-redux'; - -import { openModal } from '../actions/modal'; -import { - hideStatus, - revealStatus, - toggleStatusCollapse, - translateStatus, - undoStatusTranslation, -} from '../actions/statuses'; -import CompactedStatus from '../components/compacted_status'; -import { makeGetStatus, makeGetPictureInPicture } from '../selectors'; - -const makeMapStateToProps = () => { - const getStatus = makeGetStatus(); - const getPictureInPicture = makeGetPictureInPicture(); - - const mapStateToProps = (state, props) => ({ - status: getStatus(state, props), - nextInReplyToId: props.nextId ? state.getIn(['statuses', props.nextId, 'in_reply_to_id']) : null, - pictureInPicture: getPictureInPicture(state, props), - }); - - return mapStateToProps; -}; - -const mapDispatchToProps = (dispatch) => ({ - - onTranslate (status) { - if (status.get('translation')) { - dispatch(undoStatusTranslation(status.get('id'), status.get('poll'))); - } else { - dispatch(translateStatus(status.get('id'))); - } - }, - - onOpenMedia (statusId, media, index, lang) { - dispatch(openModal({ - modalType: 'MEDIA', - modalProps: { statusId, media, index, lang }, - })); - }, - - onOpenVideo (statusId, media, lang, options) { - dispatch(openModal({ - modalType: 'VIDEO', - modalProps: { statusId, media, lang, options }, - })); - }, - - onToggleHidden (status) { - if (status.get('hidden')) { - dispatch(revealStatus(status.get('id'))); - } else { - dispatch(hideStatus(status.get('id'))); - } - }, - - onToggleCollapsed (status, isCollapsed) { - dispatch(toggleStatusCollapse(status.get('id'), isCollapsed)); - }, - - onInteractionModal (type, status) { - dispatch(openModal({ - modalType: 'INTERACTION', - modalProps: { - type, - accountId: status.getIn(['account', 'id']), - url: status.get('uri'), - }, - })); - }, - -}); - -export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(CompactedStatus)); diff --git a/app/javascript/mastodon/containers/status_container.jsx b/app/javascript/mastodon/containers/status_container.jsx index 225fb328fb..3371bd37d2 100644 --- a/app/javascript/mastodon/containers/status_container.jsx +++ b/app/javascript/mastodon/containers/status_container.jsx @@ -152,10 +152,6 @@ const mapDispatchToProps = (dispatch, { contextType }) => ({ dispatch(insertReferenceCompose(0, status.get('url'), 'BT', router)); }, - onQuote (status, router) { - dispatch(insertReferenceCompose(0, status.get('url'), 'QT', router)); - }, - onTranslate (status) { if (status.get('translation')) { dispatch(undoStatusTranslation(status.get('id'), status.get('poll'))); diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.jsx b/app/javascript/mastodon/features/notifications/components/column_settings.jsx index e8f02f1718..ea03d5fa58 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.jsx +++ b/app/javascript/mastodon/features/notifications/components/column_settings.jsx @@ -164,7 +164,7 @@ class ColumnSettings extends PureComponent {
-

+

diff --git a/app/javascript/mastodon/features/notifications/components/notification.jsx b/app/javascript/mastodon/features/notifications/components/notification.jsx index 90c32c5642..1de09ef405 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.jsx +++ b/app/javascript/mastodon/features/notifications/components/notification.jsx @@ -42,7 +42,7 @@ const messages = defineMessages({ reblog: { id: 'notification.reblog', defaultMessage: '{name} boosted your post' }, status: { id: 'notification.status', defaultMessage: '{name} just posted' }, listStatus: { id: 'notification.list_status', defaultMessage: '{name} post is added to {listName}' }, - statusReference: { id: 'notification.status_reference', defaultMessage: '{name} quoted your post' }, + statusReference: { id: 'notification.status_reference', defaultMessage: '{name} linked your post' }, update: { id: 'notification.update', defaultMessage: '{name} edited a post' }, adminSignUp: { id: 'notification.admin.sign_up', defaultMessage: '{name} signed up' }, adminReport: { id: 'notification.admin.report', defaultMessage: '{name} reported {target}' }, @@ -305,7 +305,7 @@ class Notification extends ImmutablePureComponent {
- +
diff --git a/app/javascript/mastodon/features/notifications_v2/components/notification_status_reference.tsx b/app/javascript/mastodon/features/notifications_v2/components/notification_status_reference.tsx index 49674f42aa..ece42ea34b 100644 --- a/app/javascript/mastodon/features/notifications_v2/components/notification_status_reference.tsx +++ b/app/javascript/mastodon/features/notifications_v2/components/notification_status_reference.tsx @@ -9,7 +9,7 @@ import { NotificationWithStatus } from './notification_with_status'; const labelRenderer: LabelRenderer = (displayedName) => ( ); diff --git a/app/javascript/mastodon/features/status/components/action_bar.jsx b/app/javascript/mastodon/features/status/components/action_bar.jsx index f56a616b9d..63b91b287c 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.jsx +++ b/app/javascript/mastodon/features/status/components/action_bar.jsx @@ -64,8 +64,7 @@ const messages = defineMessages({ admin_status: { id: 'status.admin_status', defaultMessage: 'Open this post in the moderation interface' }, admin_domain: { id: 'status.admin_domain', defaultMessage: 'Open moderation interface for {domain}' }, copy: { id: 'status.copy', defaultMessage: 'Copy link to post' }, - reference: { id: 'status.reference', defaultMessage: 'Quiet quote' }, - quote: { id: 'status.quote', defaultMessage: 'Quote' }, + reference: { id: 'status.reference', defaultMessage: 'Link' }, blockDomain: { id: 'account.block_domain', defaultMessage: 'Block domain {domain}' }, unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' }, unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' }, @@ -89,7 +88,6 @@ class ActionBar extends PureComponent { onFavourite: PropTypes.func.isRequired, onEmojiReact: PropTypes.func.isRequired, onReference: PropTypes.func.isRequired, - onQuote: PropTypes.func.isRequired, onBookmark: PropTypes.func.isRequired, onBookmarkCategoryAdder: PropTypes.func.isRequired, onDelete: PropTypes.func.isRequired, @@ -225,10 +223,6 @@ class ActionBar extends PureComponent { this.props.onReference(this.props.status, this.props.history); }; - handleQuote = () => { - this.props.onQuote(this.props.status, this.props.history); - }; - handleEmojiPick = (data) => { this.props.onEmojiReact(this.props.status, data); }; @@ -244,7 +238,6 @@ class ActionBar extends PureComponent { const account = status.get('account'); const writtenByMe = status.getIn(['account', 'id']) === me; const isRemote = status.getIn(['account', 'username']) !== status.getIn(['account', 'acct']); - const allowQuote = status.getIn(['account', 'other_settings', 'allow_quote']); let menu = []; @@ -269,10 +262,6 @@ class ActionBar extends PureComponent { menu.push({ text: intl.formatMessage(status.get('reblogged') ? messages.cancel_reblog : messages.reblog), action: this.handleReblogForceModalClick, tag: 'reblog' }); if (publicStatus) { - if (allowQuote && (account.getIn(['server_features', 'quote']) || !isHideItem('quote_unavailable_server'))) { - menu.push({ text: intl.formatMessage(messages.quote), action: this.handleQuote, tag: 'reblog' }); - } - if (account.getIn(['server_features', 'status_reference']) || !isHideItem('status_reference_unavailable_server')) { menu.push({ text: intl.formatMessage(messages.reference), action: this.handleReference, tag: 'reblog' }); } @@ -350,10 +339,6 @@ class ActionBar extends PureComponent { } if (publicStatus) { - if (allowQuote && (account.getIn(['server_features', 'quote']) || !isHideItem('quote_unavailable_server'))) { - reblogMenu.push({ text: intl.formatMessage(messages.quote), action: this.handleQuote }); - } - if (account.getIn(['server_features', 'status_reference']) || !isHideItem('status_reference_unavailable_server')) { reblogMenu.push({ text: intl.formatMessage(messages.reference), action: this.handleReference }); } diff --git a/app/javascript/mastodon/features/status/components/detailed_status.tsx b/app/javascript/mastodon/features/status/components/detailed_status.tsx index e0a68ad263..e680a6641f 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.tsx +++ b/app/javascript/mastodon/features/status/components/detailed_status.tsx @@ -32,7 +32,6 @@ import { DisplayName } from '../../../components/display_name'; import MediaGallery from '../../../components/media_gallery'; import StatusContent from '../../../components/status_content'; import StatusEmojiReactionsBar from '../../../components/status_emoji_reactions_bar'; -import CompactedStatusContainer from '../../../containers/compacted_status_container'; import Audio from '../../audio'; import scheduleIdleTask from '../../ui/util/schedule_idle_task'; @@ -77,7 +76,6 @@ export const DetailedStatus: React.FC<{ onToggleHidden, onEmojiReact, onUnEmojiReact, - muted, }) => { const properStatus = status?.get('reblog') ?? status; const [height, setHeight] = useState(0); @@ -330,7 +328,7 @@ export const DetailedStatus: React.FC<{ @@ -383,13 +381,6 @@ export const DetailedStatus: React.FC<{ (!matchedFilters || showDespiteFilter) && (!status.get('hidden') || status.get('spoiler_text').length === 0); - const quote = !muted && status.get('quote_id') && ( - <> - {/* @ts-expect-error: CompactedStatusContainer class is not typescript still. */} - - - ); - return (
@@ -459,7 +450,6 @@ export const DetailedStatus: React.FC<{ {media} {hashtagBar} - {quote} {emojiReactionsBar} )} diff --git a/app/javascript/mastodon/features/status/index.jsx b/app/javascript/mastodon/features/status/index.jsx index e9d0c9f8d6..5d42220173 100644 --- a/app/javascript/mastodon/features/status/index.jsx +++ b/app/javascript/mastodon/features/status/index.jsx @@ -156,7 +156,7 @@ const makeMapStateToProps = () => { if (status) { ancestorsIds = getAncestorsIds(state, { id: status.get('in_reply_to_id') }); descendantsIds = getDescendantsIds(state, { id: status.get('id') }); - referenceIds = getReferenceIds(state, { id: status.get('id') }).filter((id) => id !== status.get('quote_id')); + referenceIds = getReferenceIds(state, { id: status.get('id') }); } return { @@ -341,10 +341,6 @@ class Status extends ImmutablePureComponent { this.props.dispatch(insertReferenceCompose(0, status.get('url'), 'BT', router)); }; - handleQuote = (status, router) => { - this.props.dispatch(insertReferenceCompose(0, status.get('url'), 'QT', router)); - }; - handleBookmarkClick = (status) => { if (bookmarkCategoryNeeded) { this.handleBookmarkCategoryAdderClick(status); @@ -774,7 +770,6 @@ class Status extends ImmutablePureComponent { onReblog={this.handleReblogClick} onReblogForceModal={this.handleReblogForceModalClick} onReference={this.handleReference} - onQuote={this.handleQuote} onBookmark={this.handleBookmarkClick} onBookmarkCategoryAdder={this.handleBookmarkCategoryAdderClick} onDelete={this.handleDeleteClick} diff --git a/app/javascript/mastodon/features/status_references/index.jsx b/app/javascript/mastodon/features/status_references/index.jsx index e2cc86f426..c36d6fadc4 100644 --- a/app/javascript/mastodon/features/status_references/index.jsx +++ b/app/javascript/mastodon/features/status_references/index.jsx @@ -81,7 +81,7 @@ class StatusReferences extends ImmutablePureComponent { bindToDocument={!multiColumn} > {accountIds.map(id => - , + , )} diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js index d16d4d64ee..5e3ad55db9 100644 --- a/app/javascript/mastodon/initial_state.js +++ b/app/javascript/mastodon/initial_state.js @@ -2,14 +2,10 @@ /** - * @typedef { 'blocking_quote' - * | 'emoji_reaction_on_timeline' + * @typedef { 'emoji_reaction_on_timeline' * | 'emoji_reaction_unavailable_server' * | 'emoji_reaction_count' * | 'favourite_menu' - * | 'quote_in_home' - * | 'quote_in_public' - * | 'quote_unavailable_server' * | 'recent_emojis' * | 'relationships' * | 'status_reference_unavailable_server' diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index ade34591a5..dee37a3752 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -462,7 +462,7 @@ "empty_column.notification_requests": "All clear! There is nothing here. When you receive new notifications, they will appear here according to your settings.", "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.", "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up", - "empty_column.status_references": "No one has quotes this post yet. When someone does, they will show up here.", + "empty_column.status_references": "No one has links this post yet. When someone does, they will show up here.", "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.", "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.", "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.", @@ -762,7 +762,7 @@ "notification.relationships_severance_event.learn_more": "Learn more", "notification.relationships_severance_event.user_domain_block": "You have blocked {target}, removing {followersCount} of your followers and {followingCount, plural, one {# account} other {# accounts}} you follow.", "notification.status": "{name} just posted", - "notification.status_reference": "{name} quoted your post", + "notification.status_reference": "{name} linked your post", "notification.update": "{name} edited a post", "notification_requests.accept": "Accept", "notification_requests.accept_multiple": "{count, plural, one {Accept # request…} other {Accept # requests…}}", @@ -804,7 +804,7 @@ "notifications.column_settings.show": "Show in column", "notifications.column_settings.sound": "Play sound", "notifications.column_settings.status": "New posts:", - "notifications.column_settings.status_reference": "Quotes:", + "notifications.column_settings.status_reference": "Links:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", "notifications.column_settings.update": "Edits:", @@ -815,7 +815,7 @@ "notifications.filter.follows": "Follows", "notifications.filter.mentions": "Mentions", "notifications.filter.polls": "Poll results", - "notifications.filter.status_references": "Quotes", + "notifications.filter.status_references": "Links", "notifications.filter.statuses": "Updates from people you follow", "notifications.grant_permission": "Grant permission.", "notifications.group": "{count} notifications", @@ -1061,8 +1061,6 @@ "status.open": "Expand this post", "status.pin": "Pin on profile", "status.pinned": "Pinned post", - "status.quote": "Quote", - "status.quotes": "{count, plural, one {quote} other {quotes}}", "status.read_more": "Read more", "status.reblog": "Boost", "status.reblog_private": "Boost with original visibility", @@ -1071,7 +1069,8 @@ "status.reblogs": "{count, plural, one {boost} other {boosts}}", "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.", "status.redraft": "Delete & re-draft", - "status.reference": "Quiet quote", + "status.reference": "Link", + "status.references": "{count, plural, one {link} other {links}}", "status.remove_bookmark": "Remove bookmark", "status.remove_favourite": "Remove from favorites", "status.replied_in_thread": "Replied in thread", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index a2328401f4..9f2bafc00f 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -438,7 +438,7 @@ "empty_column.notification_requests": "ここに表示するものはありません。新しい通知を受け取ったとき、フィルタリング設定で通知がブロックされたアカウントがある場合はここに表示されます。", "empty_column.notifications": "まだ通知がありません。他の人とふれ合って会話を始めましょう。", "empty_column.public": "ここにはまだ何もありません! 公開で何かを投稿したり、他のサーバーのユーザーをフォローしたりしていっぱいにしましょう", - "empty_column.status_references": "まだ誰も引用していません。引用されるとここに表示されます。", + "empty_column.status_references": "まだ誰もリンクしていません。リンクされるとここに表示されます。", "error.unexpected_crash.explanation": "不具合かブラウザの互換性問題のため、このページを正しく表示できませんでした。", "error.unexpected_crash.explanation_addons": "このページは正しく表示できませんでした。このエラーはブラウザのアドオンや自動翻訳ツールによって引き起こされることがあります。", "error.unexpected_crash.next_steps": "ページの再読み込みをお試しください。それでも解決しない場合、別のブラウザかアプリを使えば使用できることがあります。", @@ -733,7 +733,7 @@ "notification.relationships_severance_event.learn_more": "詳細を確認", "notification.relationships_severance_event.user_domain_block": "{target} のブロックにより{followersCount}フォロワーと{followingCount, plural, other {#フォロー}}が解除されました。", "notification.status": "{name}さんが投稿しました", - "notification.status_reference": "{name}さんがあなたの投稿を引用しました", + "notification.status_reference": "{name}さんがあなたの投稿をリンクしました", "notification.update": "{name}さんが投稿を編集しました", "notification_requests.accept": "受け入れる", "notification_requests.accept_multiple": "{count, plural, other {選択中の#件を受け入れる}}", @@ -774,7 +774,7 @@ "notifications.column_settings.show": "カラムに表示", "notifications.column_settings.sound": "通知音を再生", "notifications.column_settings.status": "新しい投稿:", - "notifications.column_settings.status_reference": "引用", + "notifications.column_settings.status_reference": "リンク", "notifications.column_settings.unread_notifications.category": "未読の通知:", "notifications.column_settings.unread_notifications.highlight": "未読の通知を強調表示", "notifications.column_settings.update": "編集:", @@ -786,7 +786,7 @@ "notifications.filter.mentions": "返信", "notifications.filter.polls": "アンケート結果", "notifications.filter.statuses": "フォローしている人の新着情報", - "notifications.filter.status_references": "引用", + "notifications.filter.status_references": "リンク", "notifications.grant_permission": "権限の付与", "notifications.group": "{count}件の通知", "notifications.mark_as_read": "すべて既読にする", @@ -1031,8 +1031,7 @@ "status.open": "詳細を表示", "status.pin": "プロフィールに固定表示", "status.pinned": "固定された投稿", - "status.quote": "引用", - "status.quotes": "{count, plural, one {引用} other {引用}}", + "status.quote": "リンク", "status.read_more": "もっと見る", "status.reblog": "ブースト", "status.reblog_private": "ブースト", @@ -1041,7 +1040,8 @@ "status.reblogs": "{count, plural, one {ブースト} other {ブースト}}", "status.reblogs.empty": "まだ誰もブーストしていません。ブーストされるとここに表示されます。", "status.redraft": "削除して下書きに戻す", - "status.reference": "ひかえめな引用", + "status.reference": "リンク", + "status.references": "{count, plural, one {リンク} other {リンク}}", "status.remove_bookmark": "ブックマークを削除", "status.remove_favourite": "お気に入りから削除", "status.replied_in_thread": "ほかのユーザーへ", diff --git a/app/javascript/mastodon/models/account.ts b/app/javascript/mastodon/models/account.ts index 55dbbcbb34..dd9c9efa28 100644 --- a/app/javascript/mastodon/models/account.ts +++ b/app/javascript/mastodon/models/account.ts @@ -56,7 +56,6 @@ const AccountOtherSettingsFactory = ImmutableRecord({ hide_statuses_count: false, translatable_private: false, link_preview: true, - allow_quote: true, emoji_reaction_policy: 'allow', subscription_policy: 'allow', }); @@ -69,7 +68,6 @@ const AccountServerFeaturesFactory = ImmutableRecord({ circle: false, emoji_reaction: false, - quote: false, status_reference: false, }); diff --git a/app/javascript/mastodon/reducers/filters.js b/app/javascript/mastodon/reducers/filters.js index 28f0c3e6e4..566ad0c6ca 100644 --- a/app/javascript/mastodon/reducers/filters.js +++ b/app/javascript/mastodon/reducers/filters.js @@ -11,7 +11,6 @@ const normalizeFilter = (state, filter) => { filter_action: filter.filter_action, keywords: filter.keywords, expires_at: filter.expires_at ? Date.parse(filter.expires_at) : null, - with_quote: filter.with_quote, }); if (is(state.get(filter.id), normalizedFilter)) { diff --git a/app/javascript/mastodon/selectors/index.js b/app/javascript/mastodon/selectors/index.js index a03ee70e3f..3da829d11d 100644 --- a/app/javascript/mastodon/selectors/index.js +++ b/app/javascript/mastodon/selectors/index.js @@ -13,41 +13,27 @@ export const makeGetStatus = () => { [ (state, { id }) => state.getIn(['statuses', id]), (state, { id }) => state.getIn(['statuses', state.getIn(['statuses', id, 'reblog'])]), - (state, { id }) => state.getIn(['statuses', state.getIn(['statuses', id, 'quote_id'])]), - (state, { id }) => state.getIn(['statuses', state.getIn(['statuses', state.getIn(['statuses', id, 'reblog']), 'quote_id'])]), (state, { id }) => state.getIn(['accounts', state.getIn(['statuses', id, 'account'])]), (state, { id }) => state.getIn(['accounts', state.getIn(['statuses', state.getIn(['statuses', id, 'reblog']), 'account'])]), getFilters, (_, { contextType }) => ['detailed', 'bookmarks', 'favourites'].includes(contextType), ], - (statusBase, statusReblog, statusQuote, statusReblogQuote, accountBase, accountReblog, filters, warnInsteadOfHide) => { + (statusBase, statusReblog, accountBase, accountReblog, filters, warnInsteadOfHide) => { if (!statusBase || statusBase.get('isLoading')) { return null; } if (statusReblog) { statusReblog = statusReblog.set('account', accountReblog); - statusQuote = statusReblogQuote; } else { statusReblog = null; } - if (isHideItem('blocking_quote') && (statusReblog || statusBase).getIn(['quote', 'quote_muted'])) { - return null; - } - let filtered = false; let mediaFiltered = false; if ((accountReblog || accountBase).get('id') !== me && filters) { let filterResults = statusReblog?.get('filtered') || statusBase.get('filtered') || ImmutableList(); - const quoteFilterResults = statusQuote?.get('filtered'); - if (quoteFilterResults) { - const filterWithQuote = quoteFilterResults.some((result) => filters.getIn([result.get('filter'), 'with_quote'])); - if (filterWithQuote) { - filterResults = filterResults.concat(quoteFilterResults); - } - } if (!warnInsteadOfHide && filterResults.some((result) => filters.getIn([result.get('filter'), 'filter_action']) === 'hide')) { return null; @@ -66,7 +52,6 @@ export const makeGetStatus = () => { return statusBase.withMutations(map => { map.set('reblog', statusReblog); - map.set('quote', statusQuote); map.set('account', accountBase); map.set('matched_filters', filtered); map.set('matched_media_filters', mediaFiltered); diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 6cdc21ce75..c6748ddbae 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -555,7 +555,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity def related_to_local_activity? fetch? || followed_by_local_accounts? || requested_through_relay? || - responds_to_followed_account? || addresses_local_accounts? || quote_local? || free_friend_domain? + responds_to_followed_account? || addresses_local_accounts? || free_friend_domain? end def responds_to_followed_account? @@ -621,16 +621,6 @@ class ActivityPub::Activity::Create < ActivityPub::Activity ProcessReferencesService.call_service_without_error(@status, [], reference_uris, [quote].compact) end - def quote_local? - url = quote - - if url.present? - ActivityPub::TagManager.instance.uri_to_resource(url, Status)&.local? - else - false - end - end - def free_friend_domain? FriendDomain.free_receivings.exists?(domain: @account.domain) end @@ -640,15 +630,6 @@ class ActivityPub::Activity::Create < ActivityPub::Activity end def quote - @quote ||= quote_from_tags || @object['quote'] || @object['quoteUrl'] || @object['quoteURL'] || @object['_misskey_quote'] - end - - def quote_from_tags - return @quote_from_tags if defined?(@quote_from_tags) - - hit_tag = as_array(@object['tag']).detect do |tag| - equals_or_includes?(tag['type'], 'Link') && LINK_MEDIA_TYPES.include?(tag['mediaType']) && tag['href'].present? - end - @quote_from_tags = hit_tag && hit_tag['href'] + @quote ||= nil # TODO: quote end end diff --git a/app/lib/activitypub/case_transform.rb b/app/lib/activitypub/case_transform.rb index 33e3ef6fac..05b9477907 100644 --- a/app/lib/activitypub/case_transform.rb +++ b/app/lib/activitypub/case_transform.rb @@ -5,7 +5,6 @@ module ActivityPub::CaseTransform NO_CONVERT_VALUES = %w( _misskey_content _misskey_license - _misskey_quote ).freeze def camel_lower_cache diff --git a/app/lib/status_reach_finder.rb b/app/lib/status_reach_finder.rb index 04dd254458..b622e140f7 100644 --- a/app/lib/status_reach_finder.rb +++ b/app/lib/status_reach_finder.rb @@ -78,7 +78,6 @@ class StatusReachFinder reblogs_account_ids, favourites_account_ids, replies_account_ids, - quoted_account_id, ].tap do |arr| arr.flatten! arr.compact! @@ -114,10 +113,6 @@ class StatusReachFinder @status.replies.pluck(:account_id) if distributable? || unsafe? end - def quoted_account_id - @status.quote.account_id if @status.quote? - end - def followers_inboxes scope = followers_scope inboxes_without_suspended_for(scope) diff --git a/app/models/concerns/account/other_settings.rb b/app/models/concerns/account/other_settings.rb index 7968f857ff..a8311c6788 100644 --- a/app/models/concerns/account/other_settings.rb +++ b/app/models/concerns/account/other_settings.rb @@ -15,13 +15,6 @@ module Account::OtherSettings false end - def allow_quote? - return user.setting_allow_quote if local? && user.present? - return settings['allow_quote'] if settings.present? && settings.key?('allow_quote') - - true - end - def hide_statuses_count? return user&.setting_hide_statuses_count if local? && user.present? return settings['hide_statuses_count'] if settings.present? && settings.key?('hide_statuses_count') @@ -88,7 +81,6 @@ module Account::OtherSettings 'hide_following_count' => hide_following_count?, 'hide_followers_count' => hide_followers_count?, 'translatable_private' => translatable_private?, - 'allow_quote' => allow_quote?, 'emoji_reaction_policy' => Setting.enable_emoji_reaction ? emoji_reaction_policy.to_s : 'block', } end diff --git a/app/models/concerns/user/has_settings.rb b/app/models/concerns/user/has_settings.rb index 2f8b11dcec..fdd4009e84 100644 --- a/app/models/concerns/user/has_settings.rb +++ b/app/models/concerns/user/has_settings.rb @@ -107,18 +107,6 @@ module User::HasSettings settings['web.content_font_size'] end - def setting_show_quote_in_home - settings['web.show_quote_in_home'] - end - - def setting_show_quote_in_public - settings['web.show_quote_in_public'] - end - - def setting_hide_blocking_quote - settings['web.hide_blocking_quote'] - end - def setting_show_relationships settings['web.show_relationships'] end @@ -127,10 +115,6 @@ module User::HasSettings settings['web.show_avatar_on_filter'] end - def setting_allow_quote - settings['allow_quote'] - end - def setting_reject_send_limited_to_suspects settings['reject_send_limited_to_suspects'] end @@ -259,10 +243,6 @@ module User::HasSettings settings['use_public_index'] end - def setting_reverse_search_quote - settings['reverse_search_quote'] - end - def setting_disallow_unlisted_public_searchability settings['disallow_unlisted_public_searchability'] end @@ -275,10 +255,6 @@ module User::HasSettings settings['web.hide_emoji_reaction_unavailable_server'] end - def setting_hide_quote_unavailable_server - settings['web.hide_quote_unavailable_server'] - end - def setting_hide_status_reference_unavailable_server settings['web.hide_status_reference_unavailable_server'] end diff --git a/app/models/custom_filter.rb b/app/models/custom_filter.rb index b67105aade..ed1c782328 100644 --- a/app/models/custom_filter.rb +++ b/app/models/custom_filter.rb @@ -12,7 +12,6 @@ # expires_at :datetime # phrase :text default(""), not null # with_profile :boolean default(FALSE), not null -# with_quote :boolean default(TRUE), not null # created_at :datetime not null # updated_at :datetime not null # account_id :bigint(8) not null @@ -69,14 +68,6 @@ class CustomFilter < ApplicationRecord hide_action? end - def exclude_quote=(value) - self.with_quote = !ActiveModel::Type::Boolean.new.cast(value) - end - - def exclude_quote - !with_quote - end - def exclude_profile=(value) self.with_profile = !ActiveModel::Type::Boolean.new.cast(value) end @@ -111,9 +102,6 @@ class CustomFilter < ApplicationRecord end def self.apply_cached_filters(cached_filters, status, following: false) - references_text_cache = nil - references_spoiler_text_cache = nil - cached_filters.filter_map do |filter, rules| next if filter.exclude_follows && following next if filter.exclude_localusers && status.account.local? @@ -121,17 +109,10 @@ class CustomFilter < ApplicationRecord if rules[:keywords].present? match = rules[:keywords].match(status.proper.searchable_text) match = rules[:keywords].match([status.account.display_name, status.account.note].join("\n\n")) if !match && filter.with_profile - if match.nil? && filter.with_quote && status.proper.reference_objects.exists? - references_text_cache = status.proper.references.pluck(:text).join("\n\n") if references_text_cache.nil? - references_spoiler_text_cache = status.proper.references.pluck(:spoiler_text).join("\n\n") if references_spoiler_text_cache.nil? - match = rules[:keywords].match(references_text_cache) - match = rules[:keywords].match(references_spoiler_text_cache) if match.nil? - end end keyword_matches = [match.to_s] unless match.nil? - reference_ids = filter.with_quote ? status.proper.reference_objects.pluck(:target_status_id) : [] - status_matches = ([status.id, status.reblog_of_id] + reference_ids).compact & rules[:status_ids] if rules[:status_ids].present? + status_matches = [status.id, status.reblog_of_id].compact & rules[:status_ids] if rules[:status_ids].present? next if keyword_matches.blank? && status_matches.blank? diff --git a/app/models/instance_info.rb b/app/models/instance_info.rb index 7b42c2df7e..8862501ce4 100644 --- a/app/models/instance_info.rb +++ b/app/models/instance_info.rb @@ -35,8 +35,6 @@ class InstanceInfo < ApplicationRecord yojo-art ).freeze - QUOTE_AVAILABLE_SOFTWARES = EMOJI_REACTION_AVAILABLE_SOFTWARES + %w(bridgy-fed).freeze - STATUS_REFERENCE_AVAILABLE_SOFTWARES = %w(fedibird).freeze CIRCLE_AVAILABLE_SOFTWARES = %w(fedibird).freeze @@ -87,7 +85,6 @@ class InstanceInfo < ApplicationRecord { emoji_reaction: feature_available?(info, EMOJI_REACTION_AVAILABLE_SOFTWARES, 'emoji_reaction'), - quote: feature_available?(info, QUOTE_AVAILABLE_SOFTWARES, 'quote'), status_reference: feature_available?(info, STATUS_REFERENCE_AVAILABLE_SOFTWARES, 'status_reference'), circle: feature_available?(info, CIRCLE_AVAILABLE_SOFTWARES, 'circle'), } @@ -96,7 +93,6 @@ class InstanceInfo < ApplicationRecord def local_features { emoji_reaction: Setting.enable_emoji_reaction, - quote: true, status_reference: true, circle: true, } diff --git a/app/models/status.rb b/app/models/status.rb index 0325802022..a908bf2e7d 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -205,19 +205,6 @@ class Status < ApplicationRecord account: [:account_stat, user: :role], active_mentions: { account: :account_stat }, ], - quote: [ - :application, - :tags, - :media_attachments, - :conversation, - :status_stat, - :preloadable_poll, - :reference_objects, - :scheduled_expiration_status, - preview_cards_status: { preview_card: { author_account: [:account_stat, user: :role] } }, - account: [:account_stat, user: :role], - active_mentions: :account, - ], thread: :account delegate :domain, to: :account, prefix: true @@ -252,10 +239,6 @@ class Status < ApplicationRecord !reblog_of_id.nil? end - def quote? - !quote_of_id.nil? && !quote.nil? - end - def expires? scheduled_expiration_status.present? end diff --git a/app/models/status_reference.rb b/app/models/status_reference.rb index 79207291ac..b5d522baf4 100644 --- a/app/models/status_reference.rb +++ b/app/models/status_reference.rb @@ -5,12 +5,11 @@ # Table name: status_references # # id :bigint(8) not null, primary key -# status_id :bigint(8) not null -# target_status_id :bigint(8) not null +# attribute_type :string # created_at :datetime not null # updated_at :datetime not null -# attribute_type :string -# quote :boolean default(FALSE), not null +# status_id :bigint(8) not null +# target_status_id :bigint(8) not null # class StatusReference < ApplicationRecord @@ -22,8 +21,6 @@ class StatusReference < ApplicationRecord has_one :notification, as: :activity, dependent: :destroy after_commit :reset_parent_cache - after_create_commit :set_quote - after_destroy_commit :remove_quote private @@ -31,18 +28,4 @@ class StatusReference < ApplicationRecord Rails.cache.delete("statuses/#{status_id}") Rails.cache.delete("statuses/#{target_status_id}") end - - def set_quote - return unless quote - return if status.quote_of_id.present? - - status.quote_of_id = target_status_id - end - - def remove_quote - return unless quote - return unless status.quote_of_id == target_status_id - - status.quote_of_id = nil - end end diff --git a/app/models/user_settings.rb b/app/models/user_settings.rb index fb7d81a5f4..6d57e1a864 100644 --- a/app/models/user_settings.rb +++ b/app/models/user_settings.rb @@ -27,7 +27,6 @@ class UserSettings setting :default_searchability, default: :direct, in: %w(public private direct limited public_unlisted) setting :default_searchability_of_search, default: :public, in: %w(public private direct limited) setting :use_public_index, default: true - setting :reverse_search_quote, default: false setting :disallow_unlisted_public_searchability, default: false setting :public_post_to_unlisted, default: false setting :reject_public_unlisted_subscription, default: false @@ -40,7 +39,6 @@ class UserSettings setting :dtl_force_visibility, default: :unchange, in: %w(unchange public public_unlisted unlisted) setting :dtl_force_searchability, default: :unchange, in: %w(unchange public public_unlisted) setting :lock_follow_from_bot, default: false - setting :allow_quote, default: true setting :reject_send_limited_to_suspects, default: false setting_inverse_alias :indexable, :noindex @@ -75,18 +73,12 @@ class UserSettings setting :auto_play, default: true setting :simple_timeline_menu, default: false setting :boost_menu, default: false - setting :show_quote_in_home, default: true - setting :show_quote_in_public, default: false setting :show_relationships, default: true - setting :hide_blocking_quote, default: true setting :hide_emoji_reaction_unavailable_server, default: false - setting :hide_quote_unavailable_server, default: false - setting :hide_status_reference_unavailable_server, default: false setting :hide_favourite_menu, default: false setting :hide_emoji_reaction_count, default: false setting :show_avatar_on_filter, default: true - setting_inverse_alias :'web.show_blocking_quote', :'web.hide_blocking_quote' setting_inverse_alias :'web.show_emoji_reaction_count', :'web.hide_emoji_reaction_count' setting_inverse_alias :'web.show_favourite_menu', :'web.hide_favourite_menu' setting_inverse_alias :'web.show_recent_emojis', :'web.hide_recent_emojis' diff --git a/app/policies/status_policy.rb b/app/policies/status_policy.rb index f846a9bc75..c8f9af1ee4 100644 --- a/app/policies/status_policy.rb +++ b/app/policies/status_policy.rb @@ -47,10 +47,6 @@ class StatusPolicy < ApplicationPolicy show? && !blocking_author? end - def quote? - %i(public public_unlisted unlisted).include?(record.visibility.to_sym) && show? && !blocking_author? - end - def destroy? owned? end diff --git a/app/presenters/status_relationships_presenter.rb b/app/presenters/status_relationships_presenter.rb index e42bdb560f..631d3ca9ef 100644 --- a/app/presenters/status_relationships_presenter.rb +++ b/app/presenters/status_relationships_presenter.rb @@ -21,7 +21,6 @@ class StatusRelationshipsPresenter @emoji_reaction_allows_map = nil else statuses = statuses.compact - statuses += statuses.filter_map(&:quote) status_ids = statuses.flat_map { |s| [s.id, s.reblog_of_id] }.uniq.compact conversation_ids = statuses.filter_map(&:conversation_id).uniq pinnable_status_ids = statuses.map(&:proper).filter_map { |s| s.id if s.account_id == current_account_id && PINNABLE_VISIBILITIES.include?(s.visibility) } diff --git a/app/serializers/activitypub/note_serializer.rb b/app/serializers/activitypub/note_serializer.rb index d778440450..49c39a2c47 100644 --- a/app/serializers/activitypub/note_serializer.rb +++ b/app/serializers/activitypub/note_serializer.rb @@ -3,7 +3,7 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer include FormattingHelper - context_extensions :atom_uri, :conversation, :sensitive, :voters_count, :searchable_by, :references, :limited_scope, :quote_uri + context_extensions :atom_uri, :conversation, :sensitive, :voters_count, :searchable_by, :references, :limited_scope attributes :id, :type, :summary, :in_reply_to, :published, :url, @@ -16,9 +16,6 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer attribute :updated, if: :edited? attribute :limited_scope, if: :limited_visibility? - attribute :quote_uri, if: :quote? - attribute :misskey_quote, key: :_misskey_quote, if: :quote? - has_many :virtual_attachments, key: :attachment has_many :virtual_tags, key: :tag @@ -158,30 +155,7 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer end def virtual_tags - object.active_mentions.to_a.sort_by(&:id) + object.tags + object.emojis + virtual_tags_of_quote - end - - class NoteLink < ActiveModelSerializers::Model - attributes :href - end - - class NoteLinkSerializer < ActivityPub::Serializer - attributes :type, :href - attribute :media_type, key: :mediaType - - def type - 'Link' - end - - def media_type - 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' - end - end - - def virtual_tags_of_quote - return [] unless object.quote? - - [NoteLink.new(href: quote_uri)] + object.active_mentions.to_a.sort_by(&:id) + object.tags + object.emojis end def atom_uri @@ -218,20 +192,6 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer object.account.local? end - delegate :quote?, to: :object - - def quote_post - @quote_post ||= object.quote - end - - def quote_uri - ActivityPub::TagManager.instance.uri_for(quote_post) - end - - def misskey_quote - quote_uri - end - def poll_options object.preloadable_poll.loaded_options end diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb index 7fbee3a626..ffac02be76 100644 --- a/app/serializers/initial_state_serializer.rb +++ b/app/serializers/initial_state_serializer.rb @@ -40,14 +40,10 @@ class InitialStateSerializer < ActiveModel::Serializer store[:hide_items] = [ object_account_user.setting_hide_favourite_menu ? 'favourite_menu' : nil, object_account_user.setting_hide_recent_emojis ? 'recent_emojis' : nil, - object_account_user.setting_hide_blocking_quote ? 'blocking_quote' : nil, object_account_user.setting_hide_emoji_reaction_unavailable_server ? 'emoji_reaction_unavailable_server' : nil, - object_account_user.setting_hide_quote_unavailable_server ? 'quote_unavailable_server' : nil, object_account_user.setting_hide_status_reference_unavailable_server ? 'status_reference_unavailable_server' : nil, object_account_user.setting_hide_emoji_reaction_count ? 'emoji_reaction_count' : nil, object_account_user.setting_show_emoji_reaction_on_timeline ? nil : 'emoji_reaction_on_timeline', - object_account_user.setting_show_quote_in_home ? nil : 'quote_in_home', - object_account_user.setting_show_quote_in_public ? nil : 'quote_in_public', object_account_user.setting_show_relationships ? nil : 'relationships', object_account_user.setting_show_avatar_on_filter ? nil : 'avatar_on_filter', ].compact diff --git a/app/serializers/rest/filter_serializer.rb b/app/serializers/rest/filter_serializer.rb index 578cf16d98..55e74de49a 100644 --- a/app/serializers/rest/filter_serializer.rb +++ b/app/serializers/rest/filter_serializer.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class REST::FilterSerializer < ActiveModel::Serializer - attributes :id, :title, :exclude_follows, :exclude_localusers, :with_quote, :with_profile, :context, :expires_at, :filter_action + attributes :id, :title, :exclude_follows, :exclude_localusers, :with_profile, :context, :expires_at, :filter_action has_many :keywords, serializer: REST::FilterKeywordSerializer, if: :rules_requested? has_many :statuses, serializer: REST::FilterStatusSerializer, if: :rules_requested? diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb index 21fb3ae399..6d3c16cbea 100644 --- a/app/serializers/rest/status_serializer.rb +++ b/app/serializers/rest/status_serializer.rb @@ -18,7 +18,6 @@ class REST::StatusSerializer < ActiveModel::Serializer attribute :pinned, if: :pinnable? attribute :reactions, if: :reactions? attribute :expires_at, if: :will_expire? - attribute :quote_id, if: :quote? attribute :markdown_opt, key: :markdown has_many :filtered, serializer: REST::FilterResultSerializer, if: :current_user? @@ -37,23 +36,6 @@ class REST::StatusSerializer < ActiveModel::Serializer has_one :preview_card, key: :card, serializer: REST::PreviewCardSerializer has_one :preloadable_poll, key: :poll, serializer: REST::PollSerializer - class QuotedStatusSerializer < REST::StatusSerializer - attribute :quote_muted, if: :current_user? - - def quote - nil - end - - def quote_muted - if relationships - muted || relationships.blocks_map[object.account_id] || relationships.domain_blocks_map[object.account.domain] || false - else - muted || current_user.account.blocking?(object.account_id) || current_user.account.domain_blocking?(object.account.domain) - end - end - end - belongs_to :quote, if: :quote?, serializer: QuotedStatusSerializer, relationships: -> { relationships } - def id object.id.to_s end @@ -182,12 +164,6 @@ class REST::StatusSerializer < ActiveModel::Serializer end end - def quote_id - object.quote_of_id.to_s - end - - delegate :quote?, to: :object - def reblogged if relationships relationships.reblogs_map[object.id] || false diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb index 10224f4d7e..9c6c3f00c5 100644 --- a/app/services/activitypub/process_status_update_service.rb +++ b/app/services/activitypub/process_status_update_service.rb @@ -351,7 +351,8 @@ class ActivityPub::ProcessStatusUpdateService < BaseService end def quote - @json['quote'] || @json['quoteUrl'] || @json['quoteURL'] || @json['_misskey_quote'] + # TODO: quote + nil end def local_referred_accounts diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index 590c7c8e82..6e19872926 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -115,7 +115,7 @@ class FanOutOnWriteService < BaseService end def notify_about_update! - @status.reblogged_by_accounts.or(@status.quoted_by_accounts).merge(Account.local).select(:id).reorder(nil).find_in_batches do |accounts| + @status.reblogged_by_accounts.merge(Account.local).select(:id).reorder(nil).find_in_batches do |accounts| LocalNotificationWorker.push_bulk(accounts) do |account| [account.id, @status.id, 'Status', 'update'] end diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index 61409f7e71..f093fd48ca 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -277,6 +277,7 @@ class PostStatusService < BaseService def quote_url ProcessReferencesService.extract_quote(@text) + # TODO: quote end def reference_urls diff --git a/app/services/process_references_service.rb b/app/services/process_references_service.rb index bbb22a0575..0862da081d 100644 --- a/app/services/process_references_service.rb +++ b/app/services/process_references_service.rb @@ -188,7 +188,8 @@ class ProcessReferencesService < BaseService quote = quote_attribute?(attribute_type) @added_objects << @status.reference_objects.new(target_status: status, attribute_type: attribute_type, quote: quote) - @status.update!(quote_of_id: status_id) if quote + # TODO: quote + # @status.update!(quote_of_id: status_id) if quote status.increment_count!(:status_referred_by_count) @references_count += 1 @@ -214,7 +215,9 @@ class ProcessReferencesService < BaseService @removed_objects = [] @status.reference_objects.where(target_status: @removed_items.keys).destroy_all - @status.update!(quote_of_id: nil) if @status.quote_of_id.present? && @removed_items.key?(@status.quote_of_id) + + # TODO: quote + # @status.update!(quote_of_id: nil) if @status.quote_of_id.present? && @removed_items.key?(@status.quote_of_id) statuses = Status.where(id: @added_items.keys).to_a @removed_items.each_key do |status_id| @@ -240,11 +243,12 @@ class ProcessReferencesService < BaseService next unless quote_change - if quote - ref.status.update!(quote_of_id: ref.target_status.id) - else - ref.status.update!(quote_of_id: nil) - end + # TODO: quote + # if quote + # ref.status.update!(quote_of_id: ref.target_status.id) + # else + # ref.status.update!(quote_of_id: nil) + # end end end diff --git a/app/services/update_status_service.rb b/app/services/update_status_service.rb index bc9a22d45f..0fe08ad209 100644 --- a/app/services/update_status_service.rb +++ b/app/services/update_status_service.rb @@ -139,6 +139,7 @@ class UpdateStatusService < BaseService def quote_url ProcessReferencesService.extract_quote(text) + # TODO: quote end def reference_urls diff --git a/app/views/filters/_filter_fields.html.haml b/app/views/filters/_filter_fields.html.haml index 18e9a6580e..f4b851c85a 100644 --- a/app/views/filters/_filter_fields.html.haml +++ b/app/views/filters/_filter_fields.html.haml @@ -38,7 +38,6 @@ = f.input :exclude_localusers, wrapper: :with_label, kmyblue: true, label: t('simple_form.labels.filters.options.exclude_localusers') .fields-group - = f.input :exclude_quote, wrapper: :with_label, as: :boolean, kmyblue: true, label: t('simple_form.labels.filters.options.exclude_quote') = f.input :exclude_profile, wrapper: :with_label, as: :boolean, kmyblue: true, label: t('simple_form.labels.filters.options.exclude_profile') %hr.spacer/ diff --git a/app/views/settings/preferences/appearance/show.html.haml b/app/views/settings/preferences/appearance/show.html.haml index 195ad2f76e..c95d6c3c10 100644 --- a/app/views/settings/preferences/appearance/show.html.haml +++ b/app/views/settings/preferences/appearance/show.html.haml @@ -86,7 +86,6 @@ .fields-group - if Setting.enable_emoji_reaction = ff.input :'web.hide_emoji_reaction_unavailable_server', wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_hide_emoji_reaction_unavailable_server') - = ff.input :'web.hide_quote_unavailable_server', wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_hide_quote_unavailable_server') = ff.input :'web.hide_status_reference_unavailable_server', wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_hide_status_reference_unavailable_server') %h4= t 'appearance.saved_posts' @@ -95,13 +94,6 @@ = ff.input :'web.bookmark_category_needed', wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_bookmark_category_needed'), hint: I18n.t('simple_form.hints.defaults.setting_bookmark_category_needed') = ff.input :'web.show_favourite_menu', wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_show_favourite_menu') - %h4= t 'appearance.quotes' - - .fields-group - = ff.input :'web.show_quote_in_home', wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_show_quote_in_home'), hint: false - = ff.input :'web.show_quote_in_public', wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_show_quote_in_public'), hint: false - = ff.input :'web.show_blocking_quote', wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_show_blocking_quote'), hint: false - %h4= t 'appearance.status_action_bar' .fields-group diff --git a/app/views/settings/privacy_extra/show.html.haml b/app/views/settings/privacy_extra/show.html.haml index b97f949c4b..7209544ad0 100644 --- a/app/views/settings/privacy_extra/show.html.haml +++ b/app/views/settings/privacy_extra/show.html.haml @@ -18,9 +18,6 @@ .fields-group = ff.input :translatable_private, wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_translatable_private') - .fields-group - = ff.input :allow_quote, wrapper: :with_label, kmyblue: true, label: I18n.t('simple_form.labels.defaults.setting_allow_quote'), hint: I18n.t('simple_form.hints.defaults.setting_allow_quote') - - if Setting.enable_emoji_reaction %h4= t 'preferences.emoji_reaction_permitting' diff --git a/config/locales/en.yml b/config/locales/en.yml index dca6a2d9f8..fa0a93793b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -484,7 +484,7 @@ en: reject_media_hint: Removes locally stored media files and refuses to download any in the future. Irrelevant for suspensions reject_new_follow: Reject follows reject_new_follow_hint: Reject follows in the future - reject_reply_exclude_followers: Reject mentions/quotes exclude followers + reject_reply_exclude_followers: Reject mentions exclude followers reject_reply_exclude_followers_hint: Reject replies exclude followers in the future reject_reports: Reject reports reject_reports_hint: Ignore all reports coming from this domain. Irrelevant for suspensions @@ -629,7 +629,7 @@ en: reject_hashtag: Reject hashtags reject_media: Reject media reject_new_follow: Reject follows - reject_reply_exclude_followers: Reject reply/quote exclude followers + reject_reply_exclude_followers: Reject reply exclude followers reject_reports: Reject reports reject_send_sensitive: No Sensitive Submission Delivery reject_straight_follow: Reject straight follow @@ -781,7 +781,7 @@ en: needed: have no_needed: Should not have optional: Optional - status_allow_follower_mention: Check posts only if they contain mentions/quotes to non-followers + status_allow_follower_mention: Check posts only if they contain mentions to non-followers status_allow_follower_mention_hint: If enabled, mentions between other servers are unconditionally allowed status_cw_state: Has warning or not status_media_state: Has media or not @@ -791,8 +791,8 @@ en: status_poll_state: Has poll or not status_poll_threshold: Poll items limit status_quote_state: Has quote or not - status_reference_state: Has quiet quote or not - status_reference_threshold: Has quiet quote or not + status_reference_state: Has link or not + status_reference_threshold: Has link or not status_reply_state: Is reply or not status_searchability: Searchability status_sensitive_state: Is sensitive or not @@ -811,7 +811,7 @@ en: phrases: regexp_html: "Reg - If the Reg checkbox is checked, the comparison is performed using regular expressions." regexp_short: Reg - stranger_html: "UE - Items checked under Uem apply only to mentions, replies, quotes, etc. from accounts with which you have no follow relationship." + stranger_html: "UE - Items checked under Uem apply only to mentions, replies, links, etc. from accounts with which you have no follow relationship." stranger_short: Uem post_hash_tags_max: Hash tags limit of a post post_mentions_max: Mentions limit of a post @@ -1106,7 +1106,7 @@ en: special_domains: stop_fetch_activity_domains: preamble: On servers with different domains for Web and Activity, you may not be able to retrieve Activity even if you access Web. In citations, this setting suppresses fetching when such a URL is specified in the body of a post. In most cases, this setting is rarely used. - title: Domains do not fetch for quotes + title: Domains do not fetch for links stop_link_preview_domains: preamble: If a site temporarily restricts connections from IP addresses that have received many hits, your server may be treated unfavorably. This setting suppresses the process of accessing such sites and generating link previews. In most cases, this setting is rarely used. title: Domains do not fetch for link previews @@ -1435,7 +1435,6 @@ en: body: Mastodon is translated by volunteers. guide_link: https://crowdin.com/project/mastodon guide_link_text: Everyone can contribute. - quotes: Quotes remote_server_features: Other server features saved_posts: Saving posts sensitive_content: Sensitive content diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 73de14abeb..c728cd3f84 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1389,7 +1389,6 @@ ja: body: Mastodonは有志によって翻訳されています。 guide_link: https://ja.crowdin.com/project/mastodon guide_link_text: 誰でも参加することができます。 - quotes: 引用 remote_server_features: 他のサーバーの機能 saved_posts: 投稿の記録 sensitive_content: 閲覧注意コンテンツ diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 9264216121..43262b631a 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -60,7 +60,6 @@ en: phrase: Will be matched regardless of casing in text or content warning of a post scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones. setting_aggregate_reblogs: Do not show new boosts for posts that have been recently boosted (only affects newly-received boosts) - setting_allow_quote: Subdued quotes are allowed regardless of this setting; you can quote freely from any source except kmyblue! setting_always_send_emails: Normally e-mail notifications won't be sent when you are actively using Mastodon setting_bookmark_category_needed: When removing from all category, unbookmarked automatically setting_custom_css_lead: 'Be sure to remember: In the unlikely event that you make a mistake in entering your custom CSS and the screen does not display properly, you can disable your custom CSS from the link at the bottom of the sign-in screen. Open the sign-in screen in private mode of your browser, for example, and disable it.' @@ -80,7 +79,6 @@ en: setting_public_post_to_unlisted: 未対応のサードパーティアプリからもローカル公開で投稿できますが、公開投稿はWeb以外できなくなります setting_reject_send_limited_to_suspects: This applies to "Mutual Only" posts. Circle posts will be delivered without exception. Some Misskey servers have independently supported limited posting, but this is a setting for those who are concerned about it, as mutual-only posting exposes some of the users you are mutual with to Misskey users! setting_reject_unlisted_subscription: Misskey and its forks can **subscribe and search** for "non-following" posts from accounts they do not follow. This differs from kmyblue's behavior. It delivers posts in the specified public range to such servers as "followers only". Please understand, however, that due to its structure, it is difficult to handle perfectly and will occasionally be delivered as non-subscribed. - setting_reverse_search_quote: Double-quotes will result in a search with a wider range of notation, which is the opposite of Mastodon's default behavior. setting_show_application: 投稿するのに使用したアプリが投稿の詳細ビューに表示されるようになります setting_stay_privacy: If you choose to enable this setting, please consider manually setting the visibility of the boost setting_stop_emoji_reaction_streaming: Helps to save communication capacity. @@ -270,7 +268,6 @@ en: phrase: Keyword or phrase setting_advanced_layout: Enable advanced web interface setting_aggregate_reblogs: Group boosts in timelines - setting_allow_quote: Allow quote your posts setting_always_send_emails: Always send e-mail notifications setting_auto_play_gif: Auto-play animated GIFs setting_bio_markdown: Enable profile markdown @@ -315,8 +312,7 @@ en: setting_expand_spoilers: Always expand posts marked with content warnings setting_hide_emoji_reaction_unavailable_server: Hide emoji reaction button from unavailable server setting_hide_network: Hide your social graph - setting_hide_quote_unavailable_server: Hide quote menu from unavailable server - setting_hide_status_reference_unavailable_server: Hide quiet quote (reference named by Fedibird) menu from unavailable server + setting_hide_status_reference_unavailable_server: Hide link (reference named by Fedibird) menu from unavailable server setting_lock_follow_from_bot: Request approval about bot follow setting_missing_alt_text_modal: Show confirmation dialog before posting media without alt text setting_public_post_to_unlisted: Convert public post to public unlisted if not using Web app @@ -327,14 +323,11 @@ en: setting_reverse_search_quote: Perform word-by-word search when search keywords are not enclosed in double quotes setting_show_application: Disclose application used to send posts setting_show_avatar_on_filter: Show filtered posts with avatar and user profile - setting_show_blocking_quote: Show posts which have a quote written by the user you are blocking setting_show_emoji_reaction_count: Show emoji reaction number setting_show_emoji_reaction_on_timeline: Show all emoji reactions on timeline setting_show_favourite_menu: Show favourite menu setting_show_followers_count: Show followers count setting_show_following_count: Show following count - setting_show_quote_in_home: Show quotes in home, list or antenna timelines - setting_show_quote_in_public: Show quotes in public timelines setting_show_recent_emojis: Show recent emojis setting_show_relationships: Show relationships on account page setting_show_statuses_count: Show statuses count @@ -386,7 +379,6 @@ en: exclude_follows: Exclude following users exclude_localusers: Exclude local users exclude_profile: Exclude account name and bio - exclude_quote: Exclude quote or references form_admin_settings: activity_api_enabled: Publish aggregate statistics about user activity in the API app_icon: App icon diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index b8728f63a0..348e41820d 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -60,7 +60,6 @@ ja: phrase: 投稿内容の大文字小文字や閲覧注意に関係なく一致 scopes: アプリの API に許可するアクセス権を選択してください。最上位のスコープを選択する場合、個々のスコープを選択する必要はありません。 setting_aggregate_reblogs: 最近ブーストされた投稿が新たにブーストされても表示しません (設定後受信したものにのみ影響) - setting_allow_quote: ひかえめな引用はこの設定に関わらず可能です。kmyblue以外からは自由に引用できます setting_always_send_emails: 通常、Mastodon からメール通知は行われません。 setting_bookmark_category_needed: すべてのカテゴリから削除したとき、ブックマークが自動で外れるようになります setting_custom_css_lead: '必ず覚えてください: 万が一カスタムCSSの入力を誤り、画面が正常に表示されなくなった場合は、サインイン画面の下にあるリンクよりカスタムCSSを無効化することができます。ブラウザのプライベートモードなどでサインイン画面を開き、無効化してください。' @@ -261,7 +260,6 @@ ja: phrase: キーワードまたはフレーズ setting_advanced_layout: 上級者向けUIを有効にする setting_aggregate_reblogs: ブーストをまとめる - setting_allow_quote: 引用を許可する setting_always_send_emails: 常にメール通知を送信する setting_auto_play_gif: アニメーションGIFを自動再生する setting_bio_markdown: プロフィールのMarkdownを有効にする @@ -306,7 +304,6 @@ ja: setting_expand_spoilers: 閲覧注意としてマークされた投稿を常に展開する setting_hide_emoji_reaction_unavailable_server: 絵文字リアクションに対応していないと思われるサーバーの投稿から絵文字リアクション機能を隠す setting_hide_network: 繋がりを隠す - setting_hide_quote_unavailable_server: 引用に対応していないと思われるサーバーの投稿からメニューを隠す setting_hide_status_reference_unavailable_server: ひかえめな引用(Fedibirdの参照)に対応していないと思われるサーバーの投稿からメニューを隠す setting_lock_follow_from_bot: botからのフォローを承認制にする setting_missing_alt_text_modal: 代替テキストなしでメディアを投稿する前に確認ダイアログを表示する @@ -318,14 +315,11 @@ ja: setting_reverse_search_quote: ダブルクオートで囲まず検索した時、単語単位で検索する setting_show_application: 送信したアプリを開示する setting_show_avatar_on_filter: フィルター対象投稿の投稿者名やアイコンを表示する - setting_show_blocking_quote: ブロックしたユーザーの投稿を引用した投稿を表示する setting_show_emoji_reaction_count: 投稿につけられた各絵文字の数を表示する setting_show_emoji_reaction_on_timeline: タイムライン上の投稿に他の人のつけた絵文字を表示する setting_show_favourite_menu: 右サイドメニューに「お気に入り」を表示する setting_show_followers_count: フォロワー数を公開する setting_show_following_count: フォロー数を公開する - setting_show_quote_in_home: ホーム・リスト・アンテナなどで引用された投稿を表示する - setting_show_quote_in_public: 公開タイムライン(ローカル・連合)で引用された投稿を表示する setting_show_recent_emojis: 絵文字ピッカーで絵文字デッキと一緒に、絵文字の使用履歴も表示する setting_show_relationships: アカウント詳細ベージで、相手からのフォロー状況を表示する setting_show_statuses_count: 投稿数を公開する @@ -376,7 +370,6 @@ ja: exclude_follows: フォロー中のユーザーをフィルターの対象にしない exclude_localusers: ローカルユーザーをフィルターの対象にしない exclude_profile: アカウント名および紹介文をフィルターの対象にしない - exclude_quote: 引用の内容をフィルターの対象にしない form_admin_settings: activity_api_enabled: APIでユーザーアクティビティに関する集計統計を公開する app_icon: アプリアイコン diff --git a/db/migrate/20250423224935_remove_kmyblue_quote_accessories.rb b/db/migrate/20250423224935_remove_kmyblue_quote_accessories.rb new file mode 100644 index 0000000000..3a629b3295 --- /dev/null +++ b/db/migrate/20250423224935_remove_kmyblue_quote_accessories.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class RemoveKmyblueQuoteAccessories < ActiveRecord::Migration[8.0] + def change + safety_assured do + remove_column :custom_filters, :with_quote, :boolean, default: true, null: false + remove_column :status_references, :quote, :boolean, default: false, null: false + end + end +end diff --git a/db/schema.rb b/db/schema.rb index d9a082eb24..a1d77e716a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.0].define(version: 2025_04_10_144908) do +ActiveRecord::Schema[8.0].define(version: 2025_04_23_224935) do # These are extensions that must be enabled in order to support this database enable_extension "pg_catalog.plpgsql" @@ -552,7 +552,6 @@ ActiveRecord::Schema[8.0].define(version: 2025_04_10_144908) do t.integer "action", default: 0, null: false t.boolean "exclude_follows", default: false, null: false t.boolean "exclude_localusers", default: false, null: false - t.boolean "with_quote", default: true, null: false t.boolean "with_profile", default: false, null: false t.index ["account_id"], name: "index_custom_filters_on_account_id" end @@ -1374,7 +1373,6 @@ ActiveRecord::Schema[8.0].define(version: 2025_04_10_144908) do t.datetime "created_at", precision: nil, null: false t.datetime "updated_at", precision: nil, null: false t.string "attribute_type" - t.boolean "quote", default: false, null: false t.index ["status_id"], name: "index_status_references_on_status_id" t.index ["target_status_id"], name: "index_status_references_on_target_status_id" end diff --git a/lib/tasks/dangerous.rake b/lib/tasks/dangerous.rake index fbd9268271..d136474f7e 100644 --- a/lib/tasks/dangerous.rake +++ b/lib/tasks/dangerous.rake @@ -158,7 +158,7 @@ namespace :dangerous do %w(custom_filters exclude_follows), %w(custom_filters exclude_localusers), %w(custom_filters with_profile), - %w(custom_filters with_quote), + # Removed: custom_filters with_quote, %w(domain_blocks block_trends), %w(domain_blocks detect_invalid_subscription), %w(domain_blocks hidden), diff --git a/spec/fabricators/status_reference_fabricator.rb b/spec/fabricators/status_reference_fabricator.rb index 0eff89c14b..1a25d76fdd 100644 --- a/spec/fabricators/status_reference_fabricator.rb +++ b/spec/fabricators/status_reference_fabricator.rb @@ -4,5 +4,4 @@ Fabricator(:status_reference) do status { Fabricate.build(:status) } target_status { Fabricate.build(:status) } attribute_type 'BT' - quote false end diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb index 108111c06b..1d09c9d4d3 100644 --- a/spec/lib/activitypub/activity/create_spec.rb +++ b/spec/lib/activitypub/activity/create_spec.rb @@ -1711,104 +1711,10 @@ RSpec.describe ActivityPub::Activity::Create do status = sender.statuses.first expect(status).to_not be_nil - expect(status.quote).to be_nil expect(status.references.pluck(:id)).to eq [target_status.id] end end - context 'with quote' do - let(:recipient) { Fabricate(:account) } - let!(:target_status) { Fabricate(:status, account: Fabricate(:account, domain: nil)) } - - let(:object_json) do - { - id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join, - type: 'Note', - content: 'Lorem ipsum', - quote: ActivityPub::TagManager.instance.uri_for(target_status), - } - end - - it 'creates status' do - expect { subject.perform }.to change(sender.statuses, :count).by(1) - - status = sender.statuses.first - - expect(status).to_not be_nil - expect(status.references.pluck(:id)).to eq [target_status.id] - expect(status.quote).to_not be_nil - expect(status.quote.id).to eq target_status.id - end - end - - context 'with quote as feb-e232 object links' do - let(:recipient) { Fabricate(:account) } - let!(:target_status) { Fabricate(:status, account: Fabricate(:account, domain: nil)) } - - let(:object_json) do - { - id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join, - type: 'Note', - content: 'Lorem ipsum', - tag: [ - { - type: 'Link', - mediaType: 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', - href: ActivityPub::TagManager.instance.uri_for(target_status), - }, - ], - } - end - - it 'creates status' do - expect { subject.perform }.to change(sender.statuses, :count).by(1) - - status = sender.statuses.first - - expect(status).to_not be_nil - expect(status.references.pluck(:id)).to eq [target_status.id] - expect(status.quote).to_not be_nil - expect(status.quote.id).to eq target_status.id - end - end - - context 'with references and quote' do - let(:recipient) { Fabricate(:account) } - let!(:target_status) { Fabricate(:status, account: Fabricate(:account, domain: nil)) } - - let(:object_json) do - { - id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join, - type: 'Note', - content: 'Lorem ipsum', - quote: ActivityPub::TagManager.instance.uri_for(target_status), - references: { - id: 'target_status', - type: 'Collection', - first: { - type: 'CollectionPage', - next: nil, - partOf: 'target_status', - items: [ - ActivityPub::TagManager.instance.uri_for(target_status), - ], - }, - }, - } - end - - it 'creates status' do - expect { subject.perform }.to change(sender.statuses, :count).by(1) - - status = sender.statuses.first - - expect(status).to_not be_nil - expect(status.references.pluck(:id)).to eq [target_status.id] - expect(status.quote).to_not be_nil - expect(status.quote.id).to eq target_status.id - end - end - context 'with language' do let(:to) { 'https://www.w3.org/ns/activitystreams#Public' } let(:object_json) do @@ -2556,53 +2462,6 @@ RSpec.describe ActivityPub::Activity::Create do end end - context 'when sender quotes to local status' do - subject { described_class.new(json, sender, delivery: true) } - - let!(:local_status) { Fabricate(:status) } - let(:object_json) do - { - id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join, - type: 'Note', - content: 'Lorem ipsum', - quote: ActivityPub::TagManager.instance.uri_for(local_status), - } - end - - before do - subject.perform - end - - it 'creates status' do - status = sender.statuses.first - - expect(status).to_not be_nil - expect(status.text).to eq 'Lorem ipsum' - end - end - - context 'when sender quotes to non-local status' do - subject { described_class.new(json, sender, delivery: true) } - - let!(:remote_status) { Fabricate(:status, uri: 'https://foo.bar/among', account: Fabricate(:account, domain: 'foo.bar', uri: 'https://foo.bar/account')) } - let(:object_json) do - { - id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join, - type: 'Note', - content: 'Lorem ipsum', - quote: ActivityPub::TagManager.instance.uri_for(remote_status), - } - end - - before do - subject.perform - end - - it 'creates status' do - expect(sender.statuses.count).to eq 0 - end - end - context 'when sender targets a local user' do subject { described_class.new(json, sender, delivery: true) } diff --git a/spec/lib/status_reach_finder_spec.rb b/spec/lib/status_reach_finder_spec.rb index c935ab7292..2b0f6e8f51 100644 --- a/spec/lib/status_reach_finder_spec.rb +++ b/spec/lib/status_reach_finder_spec.rb @@ -8,11 +8,10 @@ RSpec.describe StatusReachFinder do subject { described_class.new(status) } let(:parent_status) { nil } - let(:quoted_status) { nil } let(:visibility) { :public } let(:searchability) { :public } let(:alice) { Fabricate(:account, username: 'alice') } - let(:status) { Fabricate(:status, account: alice, thread: parent_status, quote_of_id: quoted_status&.id, visibility: visibility, searchability: searchability) } + let(:status) { Fabricate(:status, account: alice, thread: parent_status, visibility: visibility, searchability: searchability) } context 'with a simple case' do let(:bob) { Fabricate(:account, username: 'bob', domain: 'foo.bar', protocol: :activitypub, inbox_url: 'https://foo.bar/inbox') } @@ -353,15 +352,6 @@ RSpec.describe StatusReachFinder do end end end - - context 'when it is a quote to a remote account' do - let(:bob) { Fabricate(:account, username: 'bob', domain: 'foo.bar', protocol: :activitypub, inbox_url: 'https://foo.bar/inbox') } - let(:quoted_status) { Fabricate(:status, account: bob) } - - it 'includes the inbox of the quoted-to account' do - expect(subject.inboxes).to include 'https://foo.bar/inbox' - end - end end context 'with extended domain block' do diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 193ceaecde..defc17ab3c 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -397,13 +397,9 @@ RSpec.describe Account do describe '#public_settings_for_local' do subject { account.public_settings_for_local } - let(:account) { Fabricate(:user, settings: { allow_quote: true, hide_statuses_count: true, emoji_reaction_policy: :followers_only }).account } + let(:account) { Fabricate(:user, settings: { hide_statuses_count: true, emoji_reaction_policy: :followers_only }).account } shared_examples 'some settings' do |permitted, emoji_reaction_policy| - it 'allow_quote is allowed' do - expect(subject['allow_quote']).to be permitted.include?(:allow_quote) - end - it 'hide_statuses_count is allowed' do expect(subject['hide_statuses_count']).to be permitted.include?(:hide_statuses_count) end @@ -417,24 +413,18 @@ RSpec.describe Account do end end - it_behaves_like 'some settings', %i(allow_quote hide_statuses_count), 'followers_only' + it_behaves_like 'some settings', %i(hide_statuses_count), 'followers_only' context 'when default true setting is set false' do - let(:account) { Fabricate(:user, settings: { allow_quote: false, hide_statuses_count: true, emoji_reaction_policy: :followers_only }).account } + let(:account) { Fabricate(:user, settings: { hide_statuses_count: true, emoji_reaction_policy: :followers_only }).account } it_behaves_like 'some settings', %i(hide_statuses_count), 'followers_only' end context 'when remote user' do - let(:account) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/actor', settings: { 'allow_quote' => true, 'hide_statuses_count' => true, 'emoji_reaction_policy' => 'followers_only' }) } + let(:account) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/actor', settings: { 'hide_statuses_count' => true, 'emoji_reaction_policy' => 'followers_only' }) } - it_behaves_like 'some settings', %i(allow_quote hide_statuses_count), 'followers_only' - end - - context 'when remote user by server other_settings is not supported' do - let(:account) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/actor') } - - it_behaves_like 'some settings', %i(allow_quote), 'allow' + it_behaves_like 'some settings', %i(hide_statuses_count), 'followers_only' end end diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index 13acb7d909..dc4aaeb42c 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -86,39 +86,6 @@ RSpec.describe Status do end end - describe '#quote' do - let(:target_status) { Fabricate(:status) } - let(:quote) { true } - - before do - Fabricate(:status_reference, status: subject, target_status: target_status, quote: quote) - end - - context 'when quoting single' do - it 'get quote' do - expect(subject.quote).to_not be_nil - expect(subject.quote.id).to eq target_status.id - end - end - - context 'when multiple quotes' do - it 'get quote' do - target2 = Fabricate(:status) - Fabricate(:status_reference, status: subject, quote: quote) - expect(subject.quote).to_not be_nil - expect([target_status.id, target2.id].include?(subject.quote.id)).to be true - end - end - - context 'when no quote but reference' do - let(:quote) { false } - - it 'get quote' do - expect(subject.quote).to be_nil - end - end - end - describe '#content' do it 'returns the text of the status if it is not a reblog' do expect(subject.content).to eql subject.text diff --git a/spec/policies/status_policy_spec.rb b/spec/policies/status_policy_spec.rb index c564e82f7d..19bba46fb9 100644 --- a/spec/policies/status_policy_spec.rb +++ b/spec/policies/status_policy_spec.rb @@ -251,30 +251,6 @@ RSpec.describe StatusPolicy, type: :model do end end - context 'with the permission of quote?' do - permissions :quote? do - it 'grants access when viewer is not blocked' do - follow = Fabricate(:follow) - status.account = follow.target_account - - expect(subject).to permit(follow.account, status) - end - - it 'denies when viewer is blocked' do - block = Fabricate(:block) - status.account = block.target_account - - expect(subject).to_not permit(block.account, status) - end - - it 'denies when private visibility' do - status.visibility = :private - - expect(subject).to_not permit(Fabricate(:account), status) - end - end - end - context 'with the permission of update?' do permissions :update? do it 'grants access if owner' do diff --git a/spec/requests/api/v1/timelines/public_spec.rb b/spec/requests/api/v1/timelines/public_spec.rb index 29ece18ce6..cca41c4f45 100644 --- a/spec/requests/api/v1/timelines/public_spec.rb +++ b/spec/requests/api/v1/timelines/public_spec.rb @@ -170,11 +170,9 @@ RSpec.describe 'Public' do let(:exclude_follows) { false } let(:exclude_localusers) { false } - let(:include_quotes) { false } let(:account) { user.account } let(:remote_account) { remote_status.account } - let!(:filter) { Fabricate(:custom_filter, account: account, exclude_follows: exclude_follows, exclude_localusers: exclude_localusers, with_quote: include_quotes) } - let!(:quote_status) { Fabricate(:status, quote: Fabricate(:status, text: 'ohagi')) } + let!(:filter) { Fabricate(:custom_filter, account: account, exclude_follows: exclude_follows, exclude_localusers: exclude_localusers) } it 'load statuses', :aggregate_failures do ids = subject @@ -201,16 +199,6 @@ RSpec.describe 'Public' do expect(ids).to_not include(remote_status.id) end end - - context 'when include_quotes' do - let(:with_quote) { true } - - it 'load statuses', :aggregate_failures do - ids = subject - expect(ids).to_not include(local_status.id) - expect(ids).to include(quote_status.id) - end - end end end end diff --git a/spec/serializers/activitypub/note_serializer_spec.rb b/spec/serializers/activitypub/note_serializer_spec.rb index c89bb47af6..17488e7bdd 100644 --- a/spec/serializers/activitypub/note_serializer_spec.rb +++ b/spec/serializers/activitypub/note_serializer_spec.rb @@ -16,14 +16,9 @@ RSpec.describe ActivityPub::NoteSerializer do let!(:reply_by_account_third) { Fabricate(:status, account: account, thread: parent, visibility: :public) } let!(:reply_by_account_visibility_direct) { Fabricate(:status, account: account, thread: parent, visibility: :direct) } let!(:referred) { nil } - let!(:quote) { nil } before do parent.references << referred if referred.present? - if quote.present? - parent.references << quote - parent.quote = quote - end end it 'has the expected shape and replies collection' do @@ -98,23 +93,7 @@ RSpec.describe ActivityPub::NoteSerializer do end it 'has as reference' do - expect(subject['quoteUri']).to be_nil expect(subject['references']['first']['items']).to include referred.uri end end - - context 'when has a quote' do - let(:quote) { Fabricate(:status) } - - it 'has a quote as transitional type' do - expect(subject['quoteUri']).to eq ActivityPub::TagManager.instance.uri_for(quote) - end - - it 'has a quote as feb-e232 object link' do - tag = subject['tag'].detect { |t| t['type'] == 'Link' } - expect(tag).to_not be_nil - expect(tag['mediaType']).to eq 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' - expect(tag['href']).to eq ActivityPub::TagManager.instance.uri_for(quote) - end - end end diff --git a/spec/serializers/node_info/serializer_spec.rb b/spec/serializers/node_info/serializer_spec.rb index da7a6bcebb..55c8800878 100644 --- a/spec/serializers/node_info/serializer_spec.rb +++ b/spec/serializers/node_info/serializer_spec.rb @@ -30,7 +30,6 @@ RSpec.describe NodeInfo::Serializer do end it 'returns nodeinfo own features' do - expect(serialization['metadata']['features']).to include 'quote' expect(serialization['metadata']['features']).to_not include 'kmyblue_markdown' end end diff --git a/spec/services/fan_out_on_write_service_spec.rb b/spec/services/fan_out_on_write_service_spec.rb index 9319814ddc..d6bd3ea2ee 100644 --- a/spec/services/fan_out_on_write_service_spec.rb +++ b/spec/services/fan_out_on_write_service_spec.rb @@ -678,7 +678,7 @@ RSpec.describe FanOutOnWriteService do end end - context 'when updated status is already boosted or quoted' do + context 'when updated status is already boosted' do let(:custom_before) { true } before do @@ -695,13 +695,6 @@ RSpec.describe FanOutOnWriteService do expect(notification.activity_id).to eq status.id end - it 'notified to quoted account', :inline_jobs do - notification = Notification.find_by(account: tom, type: 'update') - - expect(notification).to_not be_nil - expect(notification.activity_id).to eq status.id - end - it 'notified not to non-boosted account', :inline_jobs do notification = Notification.find_by(account: ohagi, type: 'update') diff --git a/spec/services/process_references_service_spec.rb b/spec/services/process_references_service_spec.rb index f10a181832..0304293359 100644 --- a/spec/services/process_references_service_spec.rb +++ b/spec/services/process_references_service_spec.rb @@ -11,7 +11,6 @@ RSpec.describe ProcessReferencesService, type: :service do let(:target_status) { Fabricate(:status, account: Fabricate(:user).account, visibility: target_status_visibility) } let(:target_status_uri) { ActivityPub::TagManager.instance.uri_for(target_status) } let(:quote_urls) { nil } - let(:allow_quote) { true } def notify?(target_status_id = nil) target_status_id ||= target_status.id @@ -20,7 +19,6 @@ RSpec.describe ProcessReferencesService, type: :service do describe 'posting new status' do subject do - target_status.account.user.settings['allow_quote'] = false unless allow_quote target_status.account.user&.save described_class.new.call(status, reference_parameters, urls: urls, fetch_remote: fetch_remote, quote_urls: quote_urls) @@ -42,7 +40,9 @@ RSpec.describe ProcessReferencesService, type: :service do end it 'not quote', :inline_jobs do - expect(status.quote).to be_nil + # TODO: quote + expect(status).to_not be_nil # Remove + # expect(status.quote).to be_nil end end @@ -89,8 +89,9 @@ RSpec.describe ProcessReferencesService, type: :service do expect(subject.size).to eq 1 expect(subject.pluck(0)).to include target_status.id expect(subject.pluck(1)).to include 'QT' - expect(status.quote).to_not be_nil - expect(status.quote.id).to eq target_status.id + # TODO: quote + # expect(status.quote).to_not be_nil + # expect(status.quote.id).to eq target_status.id expect(notify?).to be true end end @@ -103,8 +104,9 @@ RSpec.describe ProcessReferencesService, type: :service do expect(subject.size).to eq 1 expect(subject.pluck(0)).to include target_status.id expect(subject.pluck(1)).to include 'QT' - expect(status.quote).to_not be_nil - expect(status.quote.id).to eq target_status.id + # TODO: quote + # expect(status.quote).to_not be_nil + # expect(status.quote.id).to eq target_status.id expect(notify?).to be true end end @@ -117,8 +119,9 @@ RSpec.describe ProcessReferencesService, type: :service do expect(subject.size).to eq 1 expect(subject.pluck(0)).to include target_status.id expect(subject.pluck(1)).to include 'QT' - expect(status.quote).to_not be_nil - expect(status.quote.id).to eq target_status.id + # TODO: quote + # expect(status.quote).to_not be_nil + # expect(status.quote.id).to eq target_status.id expect(notify?).to be true end end @@ -131,21 +134,23 @@ RSpec.describe ProcessReferencesService, type: :service do expect(subject.size).to eq 1 expect(subject.pluck(0)).to include target_status.id expect(subject.pluck(1)).to include 'QT' - expect(status.quote).to_not be_nil - expect(status.quote.id).to eq target_status.id + # TODO: quote + # expect(status.quote).to_not be_nil + # expect(status.quote.id).to eq target_status.id expect(notify?).to be true end end context 'when quote is rejected' do let(:text) { "Hello QT #{target_status_uri}" } - let(:allow_quote) { false } + # let(:allow_quote) { false } it 'post status', :inline_jobs do expect(subject.size).to eq 1 expect(subject.pluck(0)).to include target_status.id expect(subject.pluck(1)).to include 'BT' - expect(status.quote).to be_nil + # TODO: quote + # expect(status.quote).to be_nil expect(notify?).to be true end end @@ -159,8 +164,9 @@ RSpec.describe ProcessReferencesService, type: :service do expect(subject.size).to eq 2 expect(subject).to include [target_status.id, 'QT'] expect(subject).to include [target_status2.id, 'BT'] - expect(status.quote).to_not be_nil - expect(status.quote.id).to eq target_status.id + # TODO: quote + # expect(status.quote).to_not be_nil + # expect(status.quote.id).to eq target_status.id expect(notify?).to be true expect(notify?(target_status2.id)).to be true end @@ -407,7 +413,8 @@ RSpec.describe ProcessReferencesService, type: :service do it 'post status', :inline_jobs do expect(subject.size).to eq 0 - expect(status.quote).to be_nil + # TODO: quote + # expect(status.quote).to be_nil expect(notify?).to be false end end @@ -430,8 +437,9 @@ RSpec.describe ProcessReferencesService, type: :service do it 'post status', :inline_jobs do expect(subject.size).to eq 1 expect(subject).to include target_status2.id - expect(status.quote).to_not be_nil - expect(status.quote.id).to eq target_status2.id + # TODO: quote + # expect(status.quote).to_not be_nil + # expect(status.quote.id).to eq target_status2.id expect(notify?(target_status2.id)).to be true end end @@ -443,7 +451,8 @@ RSpec.describe ProcessReferencesService, type: :service do it 'post status', :inline_jobs do expect(subject.size).to eq 1 expect(subject).to include target_status.id - expect(status.quote).to be_nil + # TODO: quote + # expect(status.quote).to be_nil expect(notify?(target_status.id)).to be true end end @@ -455,8 +464,9 @@ RSpec.describe ProcessReferencesService, type: :service do it 'post status', :inline_jobs do expect(subject.size).to eq 1 expect(subject).to include target_status.id - expect(status.quote).to_not be_nil - expect(status.quote.id).to eq target_status.id + # TODO: quote + # expect(status.quote).to_not be_nil + # expect(status.quote.id).to eq target_status.id expect(notify?(target_status.id)).to be true end end diff --git a/streaming/index.js b/streaming/index.js index ff3ef1c7ba..29e00ac941 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -12,8 +12,18 @@ import { JSDOM } from 'jsdom'; import { WebSocketServer } from 'ws'; import * as Database from './database.js'; -import { AuthenticationError, RequestError, extractStatusAndMessage as extractErrorStatusAndMessage } from './errors.js'; -import { logger, httpLogger, initializeLogLevel, attachWebsocketHttpLogger, createWebsocketLogger } from './logging.js'; +import { + AuthenticationError, + RequestError, + extractStatusAndMessage as extractErrorStatusAndMessage, +} from './errors.js'; +import { + logger, + httpLogger, + initializeLogLevel, + attachWebsocketHttpLogger, + createWebsocketLogger, +} from './logging.js'; import { setupMetrics } from './metrics.js'; import * as Redis from './redis.js'; import { isTruthy, normalizeHashtag, firstParam } from './utils.js'; @@ -23,13 +33,11 @@ const environment = process.env.NODE_ENV || 'development'; // Correctly detect and load .env or .env.production file based on environment: const dotenvFile = environment === 'production' ? '.env.production' : '.env'; const dotenvFilePath = path.resolve( - url.fileURLToPath( - new URL(path.join('..', dotenvFile), import.meta.url) - ) + url.fileURLToPath(new URL(path.join('..', dotenvFile), import.meta.url)), ); dotenv.config({ - path: dotenvFilePath + path: dotenvFilePath, }); initializeLogLevel(process.env, environment); @@ -46,7 +54,6 @@ initializeLogLevel(process.env, environment); * @property {string[]} chosenLanguages */ - /** * Attempts to safely parse a string as JSON, used when both receiving a message * from redis and when receiving a message from a client over a websocket @@ -67,9 +74,15 @@ const parseJSON = (json, req) => { */ if (req) { if (req.accountId) { - req.log.error({ err }, `Error parsing message from user ${req.accountId}`); + req.log.error( + { err }, + `Error parsing message from user ${req.accountId}`, + ); } else { - req.log.error({ err }, `Error parsing message from ${req.remoteAddress}`); + req.log.error( + { err }, + `Error parsing message from ${req.remoteAddress}`, + ); } } else { logger.error({ err }, `Error parsing message from redis`); @@ -97,7 +110,7 @@ const CHANNEL_NAMES = [ 'user:notification', 'list', 'direct', - ...PUBLIC_CHANNELS + ...PUBLIC_CHANNELS, ]; const startServer = async () => { @@ -131,7 +144,7 @@ const startServer = async () => { * @returns {string} */ function redisUnnamespaced(channel) { - if (typeof redisConfig.namespace === "string") { + if (typeof redisConfig.namespace === 'string') { // Note: this removes the configured namespace and the colon that is used // to separate it: return channel.slice(redisConfig.namespace.length + 1); @@ -141,13 +154,18 @@ const startServer = async () => { } // Set the X-Request-Id header on WebSockets: - wss.on("headers", function onHeaders(headers, req) { + wss.on('headers', function onHeaders(headers, req) { headers.push(`X-Request-Id: ${req.id}`); }); const app = express(); - app.set('trust proxy', process.env.TRUSTED_PROXY_IP ? process.env.TRUSTED_PROXY_IP.split(/(?:\s*,\s*|\s+)/) : 'loopback,uniquelocal'); + app.set( + 'trust proxy', + process.env.TRUSTED_PROXY_IP + ? process.env.TRUSTED_PROXY_IP.split(/(?:\s*,\s*|\s+)/) + : 'loopback,uniquelocal', + ); app.use(httpLogger); app.use(cors()); @@ -161,7 +179,7 @@ const startServer = async () => { // logger. This decorates the `request` object. attachWebsocketHttpLogger(request); - request.log.info("HTTP Upgrade Requested"); + request.log.info('HTTP Upgrade Requested'); /** @param {Error} err */ const onSocketError = (err) => { @@ -179,15 +197,15 @@ const startServer = async () => { // Unfortunately for using the on('upgrade') setup, we need to manually // write a HTTP Response to the Socket to close the connection upgrade // attempt, so the following code is to handle all of that. - const {statusCode, errorMessage } = extractErrorStatusAndMessage(err); + const { statusCode, errorMessage } = extractErrorStatusAndMessage(err); /** @type {Record} */ const headers = { - 'Connection': 'close', + Connection: 'close', 'Content-Type': 'text/plain', 'Content-Length': 0, 'X-Request-Id': request.id, - 'X-Error-Message': errorMessage + 'X-Error-Message': errorMessage, }; // Ensure the socket is closed once we've finished writing to it: @@ -196,16 +214,25 @@ const startServer = async () => { }); // Write the HTTP response manually: - socket.end(`HTTP/1.1 ${statusCode} ${http.STATUS_CODES[statusCode]}\r\n${Object.keys(headers).map((key) => `${key}: ${headers[key]}`).join('\r\n')}\r\n\r\n`); + socket.end( + `HTTP/1.1 ${statusCode} ${http.STATUS_CODES[statusCode]}\r\n${Object.keys( + headers, + ) + .map((key) => `${key}: ${headers[key]}`) + .join('\r\n')}\r\n\r\n`, + ); // Finally, log the error: - request.log.error({ - err, - res: { - statusCode, - headers - } - }, errorMessage); + request.log.error( + { + err, + res: { + statusCode, + headers, + }, + }, + errorMessage, + ); return; } @@ -214,7 +241,9 @@ const startServer = async () => { socket.removeListener('error', onSocketError); wss.handleUpgrade(request, socket, head, function done(ws) { - request.log.info("Authenticated request & upgraded to WebSocket connection"); + request.log.info( + 'Authenticated request & upgraded to WebSocket connection', + ); const wsLogger = createWebsocketLogger(request, resolvedAccount); @@ -236,7 +265,10 @@ const startServer = async () => { app.get('/favicon.ico', (_req, res) => res.status(404).end()); app.get('/api/v1/streaming/health', (_req, res) => { - res.writeHead(200, { 'Content-Type': 'text/plain', 'Cache-Control': 'private, no-store' }); + res.writeHead(200, { + 'Content-Type': 'text/plain', + 'Cache-Control': 'private, no-store', + }); res.end('OK'); }); @@ -246,11 +278,18 @@ const startServer = async () => { * @param {string[]} channels * @returns {function(): void} */ - const subscriptionHeartbeat = channels => { + const subscriptionHeartbeat = (channels) => { const interval = 6 * 60; const tellSubscribed = () => { - channels.forEach(channel => redisClient.set(redisNamespaced(`subscribed:${channel}`), '1', 'EX', interval * 3)); + channels.forEach((channel) => + redisClient.set( + redisNamespaced(`subscribed:${channel}`), + '1', + 'EX', + interval * 3, + ), + ); }; tellSubscribed(); @@ -279,9 +318,9 @@ const startServer = async () => { const json = parseJSON(message, null); if (!json) return; - callbacks.forEach(callback => callback(json)); + callbacks.forEach((callback) => callback(json)); }; - redisSubscribeClient.on("message", onRedisMessage); + redisSubscribeClient.on('message', onRedisMessage); /** * @callback SubscriptionListener @@ -324,19 +363,22 @@ const startServer = async () => { return; } - subs[channel] = subs[channel].filter(item => item !== callback); + subs[channel] = subs[channel].filter((item) => item !== callback); if (subs[channel].length === 0) { logger.debug(`Unsubscribe ${channel}`); // FIXME: https://github.com/redis/ioredis/issues/1910 - redisSubscribeClient.unsubscribe(redisNamespaced(channel), (err, count) => { - if (err) { - logger.error(`Error unsubscribing to ${channel}`); - } else if (typeof count === 'number') { - metrics.redisSubscriptions.set(count); - } - }); + redisSubscribeClient.unsubscribe( + redisNamespaced(channel), + (err, count) => { + if (err) { + logger.error(`Error unsubscribing to ${channel}`); + } else if (typeof count === 'number') { + metrics.redisSubscriptions.set(count); + } + }, + ); delete subs[channel]; } }; @@ -347,7 +389,7 @@ const startServer = async () => { * @returns {boolean} */ const isInScope = (req, necessaryScopes) => - req.scopes.some(scope => necessaryScopes.includes(scope)); + req.scopes.some((scope) => necessaryScopes.includes(scope)); /** * @param {string} token @@ -355,7 +397,10 @@ const startServer = async () => { * @returns {Promise} */ const accountFromToken = async (token, req) => { - const result = await pgPool.query('SELECT oauth_access_tokens.id, oauth_access_tokens.resource_owner_id, users.account_id, users.chosen_languages, oauth_access_tokens.scopes FROM oauth_access_tokens INNER JOIN users ON oauth_access_tokens.resource_owner_id = users.id WHERE oauth_access_tokens.token = $1 AND oauth_access_tokens.revoked_at IS NULL LIMIT 1', [token]); + const result = await pgPool.query( + 'SELECT oauth_access_tokens.id, oauth_access_tokens.resource_owner_id, users.account_id, users.chosen_languages, oauth_access_tokens.scopes FROM oauth_access_tokens INNER JOIN users ON oauth_access_tokens.resource_owner_id = users.id WHERE oauth_access_tokens.token = $1 AND oauth_access_tokens.revoked_at IS NULL LIMIT 1', + [token], + ); if (result.rows.length === 0) { throw new AuthenticationError('Invalid access token'); @@ -378,52 +423,56 @@ const startServer = async () => { * @param {any} req * @returns {Promise} */ - const accountFromRequest = (req) => new Promise((resolve, reject) => { - const authorization = req.headers.authorization; - const location = url.parse(req.url, true); - const accessToken = location.query.access_token || req.headers['sec-websocket-protocol']; + const accountFromRequest = (req) => + new Promise((resolve, reject) => { + const authorization = req.headers.authorization; + const location = url.parse(req.url, true); + const accessToken = + location.query.access_token || req.headers['sec-websocket-protocol']; - if (!authorization && !accessToken) { - reject(new AuthenticationError('Missing access token')); - return; - } + if (!authorization && !accessToken) { + reject(new AuthenticationError('Missing access token')); + return; + } - const token = authorization ? authorization.replace(/^Bearer /, '') : accessToken; + const token = authorization + ? authorization.replace(/^Bearer /, '') + : accessToken; - resolve(accountFromToken(token, req)); - }); + resolve(accountFromToken(token, req)); + }); /** * @param {any} req * @returns {string|undefined} */ - const channelNameFromPath = req => { + const channelNameFromPath = (req) => { const { path, query } = req; const onlyMedia = isTruthy(query.only_media); switch (path) { - case '/api/v1/streaming/user': - return 'user'; - case '/api/v1/streaming/user/notification': - return 'user:notification'; - case '/api/v1/streaming/public': - return onlyMedia ? 'public:media' : 'public'; - case '/api/v1/streaming/public/local': - return onlyMedia ? 'public:local:media' : 'public:local'; - case '/api/v1/streaming/public/remote': - return onlyMedia ? 'public:remote:media' : 'public:remote'; - case '/api/v1/streaming/hashtag': - return 'hashtag'; - case '/api/v1/streaming/hashtag/local': - return 'hashtag:local'; - case '/api/v1/streaming/direct': - return 'direct'; - case '/api/v1/streaming/list': - return 'list'; - case '/api/v1/streaming/antenna': - return 'antenna'; - default: - return undefined; + case '/api/v1/streaming/user': + return 'user'; + case '/api/v1/streaming/user/notification': + return 'user:notification'; + case '/api/v1/streaming/public': + return onlyMedia ? 'public:media' : 'public'; + case '/api/v1/streaming/public/local': + return onlyMedia ? 'public:local:media' : 'public:local'; + case '/api/v1/streaming/public/remote': + return onlyMedia ? 'public:remote:media' : 'public:remote'; + case '/api/v1/streaming/hashtag': + return 'hashtag'; + case '/api/v1/streaming/hashtag/local': + return 'hashtag:local'; + case '/api/v1/streaming/direct': + return 'direct'; + case '/api/v1/streaming/list': + return 'list'; + case '/api/v1/streaming/antenna': + return 'antenna'; + default: + return undefined; } }; @@ -433,38 +482,48 @@ const startServer = async () => { * @param {string|undefined} channelName * @returns {Promise.} */ - const checkScopes = (req, logger, channelName) => new Promise((resolve, reject) => { - logger.debug(`Checking OAuth scopes for ${channelName}`); + const checkScopes = (req, logger, channelName) => + new Promise((resolve, reject) => { + logger.debug(`Checking OAuth scopes for ${channelName}`); - // When accessing public channels, no scopes are needed - if (channelName && PUBLIC_CHANNELS.includes(channelName)) { - resolve(); - return; - } + // When accessing public channels, no scopes are needed + if (channelName && PUBLIC_CHANNELS.includes(channelName)) { + resolve(); + return; + } - // The `read` scope has the highest priority, if the token has it - // then it can access all streams - const requiredScopes = ['read']; + // The `read` scope has the highest priority, if the token has it + // then it can access all streams + const requiredScopes = ['read']; - // When accessing specifically the notifications stream, - // we need a read:notifications, while in all other cases, - // we can allow access with read:statuses. Mind that the - // user stream will not contain notifications unless - // the token has either read or read:notifications scope - // as well, this is handled separately. - if (channelName === 'user:notification') { - requiredScopes.push('read:notifications'); - } else { - requiredScopes.push('read:statuses'); - } + // When accessing specifically the notifications stream, + // we need a read:notifications, while in all other cases, + // we can allow access with read:statuses. Mind that the + // user stream will not contain notifications unless + // the token has either read or read:notifications scope + // as well, this is handled separately. + if (channelName === 'user:notification') { + requiredScopes.push('read:notifications'); + } else { + requiredScopes.push('read:statuses'); + } - if (req.scopes && requiredScopes.some(requiredScope => req.scopes.includes(requiredScope))) { - resolve(); - return; - } + if ( + req.scopes && + requiredScopes.some((requiredScope) => + req.scopes.includes(requiredScope), + ) + ) { + resolve(); + return; + } - reject(new AuthenticationError('Access token does not have the required scopes')); - }); + reject( + new AuthenticationError( + 'Access token does not have the required scopes', + ), + ); + }); /** * @typedef SystemMessageHandlers @@ -477,7 +536,7 @@ const startServer = async () => { * @returns {SubscriptionListener} */ const createSystemMessageListener = (req, eventHandlers) => { - return message => { + return (message) => { if (!message?.event) { return; } @@ -487,7 +546,9 @@ const startServer = async () => { req.log.debug(`System message for ${req.accountId}: ${event}`); if (event === 'kill') { - req.log.debug(`Closing connection for ${req.accountId} due to expired access token`); + req.log.debug( + `Closing connection for ${req.accountId} due to expired access token`, + ); eventHandlers.onKill(); } else if (event === 'filters_changed') { req.log.debug(`Invalidating filters cache for ${req.accountId}`); @@ -514,13 +575,17 @@ const startServer = async () => { unsubscribe(accessTokenChannelId, listener); unsubscribe(systemChannelId, listener); - metrics.connectedChannels.labels({ type: 'eventsource', channel: 'system' }).dec(2); + metrics.connectedChannels + .labels({ type: 'eventsource', channel: 'system' }) + .dec(2); }); subscribe(accessTokenChannelId, listener); subscribe(systemChannelId, listener); - metrics.connectedChannels.labels({ type: 'eventsource', channel: 'system' }).inc(2); + metrics.connectedChannels + .labels({ type: 'eventsource', channel: 'system' }) + .inc(2); }; /** @@ -543,13 +608,17 @@ const startServer = async () => { return; } - accountFromRequest(req).then(() => checkScopes(req, req.log, channelName)).then(() => { - subscribeHttpToSystemChannel(req, res); - }).then(() => { - next(); - }).catch(err => { - next(err); - }); + accountFromRequest(req) + .then(() => checkScopes(req, req.log, channelName)) + .then(() => { + subscribeHttpToSystemChannel(req, res); + }) + .then(() => { + next(); + }) + .catch((err) => { + next(err); + }); }; /** @@ -566,7 +635,7 @@ const startServer = async () => { return; } - const {statusCode, errorMessage } = extractErrorStatusAndMessage(err); + const { statusCode, errorMessage } = extractErrorStatusAndMessage(err); res.writeHead(statusCode, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ error: errorMessage })); @@ -578,7 +647,8 @@ const startServer = async () => { * @returns {string} */ // @ts-ignore - const placeholders = (arr, shift = 0) => arr.map((_, i) => `$${i + 1 + shift}`).join(', '); + const placeholders = (arr, shift = 0) => + arr.map((_, i) => `$${i + 1 + shift}`).join(', '); /** * @param {string} listId @@ -588,7 +658,10 @@ const startServer = async () => { const authorizeListAccess = async (listId, req) => { const { accountId } = req; - const result = await pgPool.query('SELECT id, account_id FROM lists WHERE id = $1 AND account_id = $2 LIMIT 1', [listId, accountId]); + const result = await pgPool.query( + 'SELECT id, account_id FROM lists WHERE id = $1 AND account_id = $2 LIMIT 1', + [listId, accountId], + ); if (result.rows.length === 0) { throw new AuthenticationError('List not found'); @@ -600,28 +673,37 @@ const startServer = async () => { * @param {any} req * @returns {Promise.} */ - const authorizeAntennaAccess = (antennaId, req) => new Promise((resolve, reject) => { - const { accountId } = req; + const authorizeAntennaAccess = (antennaId, req) => + new Promise((resolve, reject) => { + const { accountId } = req; - pgPool.connect((err, client, done) => { - if (err) { - reject(); - return; - } - - // @ts-ignore - client.query('SELECT id, account_id FROM antennas WHERE id = $1 LIMIT 1', [antennaId], (err, result) => { - done(); - - if (err || result.rows.length === 0 || result.rows[0].account_id !== accountId) { + pgPool.connect((err, client, done) => { + if (err) { reject(); return; } - resolve(); + // @ts-ignore + client.query( + 'SELECT id, account_id FROM antennas WHERE id = $1 LIMIT 1', + [antennaId], + (err, result) => { + done(); + + if ( + err || + result.rows.length === 0 || + result.rows[0].account_id !== accountId + ) { + reject(); + return; + } + + resolve(); + }, + ); }); }); - }); /** * @param {string[]} channelIds @@ -633,7 +715,15 @@ const startServer = async () => { * @param {boolean=} needsFiltering * @returns {SubscriptionListener} */ - const streamFrom = (channelIds, req, log, output, attachCloseHandler, destinationType, needsFiltering = false) => { + const streamFrom = ( + channelIds, + req, + log, + output, + attachCloseHandler, + destinationType, + needsFiltering = false, + ) => { log.info({ channelIds }, `Starting stream`); /** @@ -642,11 +732,15 @@ const startServer = async () => { */ const transmit = (event, payload) => { // TODO: Replace "string"-based delete payloads with object payloads: - const encodedPayload = typeof payload === 'object' ? JSON.stringify(payload) : payload; + const encodedPayload = + typeof payload === 'object' ? JSON.stringify(payload) : payload; metrics.messagesSent.labels({ type: destinationType }).inc(1); - log.debug({ event, payload }, `Transmitting ${event} to ${req.accountId}`); + log.debug( + { event, payload }, + `Transmitting ${event} to ${req.accountId}`, + ); output(event, encodedPayload); }; @@ -656,7 +750,7 @@ const startServer = async () => { // events also include a queued_at value, but this is being removed shortly. /** @type {SubscriptionListener} */ - const listener = message => { + const listener = (message) => { if (!message?.event || !message?.payload) { return; } @@ -680,7 +774,10 @@ const startServer = async () => { // // The channels that need filtering are determined in the function // `channelNameToIds` defined below: - if (!needsFiltering || (event !== 'update' && event !== 'status.update')) { + if ( + !needsFiltering || + (event !== 'update' && event !== 'status.update') + ) { transmit(event, payload); return; } @@ -689,8 +786,13 @@ const startServer = async () => { // filtering of statuses: // Filter based on language: - if (Array.isArray(req.chosenLanguages) && req.chosenLanguages.indexOf(payload.language) === -1) { - log.debug(`Message ${payload.id} filtered by language (${payload.language})`); + if ( + Array.isArray(req.chosenLanguages) && + req.chosenLanguages.indexOf(payload.language) === -1 + ) { + log.debug( + `Message ${payload.id} filtered by language (${payload.language})`, + ); return; } @@ -702,7 +804,9 @@ const startServer = async () => { // Filter based on domain blocks, blocks, mutes, or custom filters: // @ts-ignore - const targetAccountIds = [payload.account.id].concat(payload.mentions.map(item => item.id)); + const targetAccountIds = [payload.account.id].concat( + payload.mentions.map((item) => item.id), + ); const accountDomain = payload.account.acct.split('@')[1]; // TODO: Move this logic out of the message handling loop @@ -714,7 +818,8 @@ const startServer = async () => { const queries = [ // @ts-ignore - client.query(`SELECT 1 + client.query( + `SELECT 1 FROM blocks WHERE (account_id = $1 AND target_account_id IN (${placeholders(targetAccountIds, 2)})) OR (account_id = $2 AND target_account_id = $1) @@ -722,176 +827,238 @@ const startServer = async () => { SELECT 1 FROM mutes WHERE account_id = $1 - AND target_account_id IN (${placeholders(targetAccountIds, 2)})`, [req.accountId, payload.account.id].concat(targetAccountIds)), + AND target_account_id IN (${placeholders(targetAccountIds, 2)})`, + [req.accountId, payload.account.id].concat(targetAccountIds), + ), ]; if (accountDomain) { // @ts-ignore - queries.push(client.query('SELECT 1 FROM account_domain_blocks WHERE account_id = $1 AND domain = $2', [req.accountId, accountDomain])); + queries.push( + client.query( + 'SELECT 1 FROM account_domain_blocks WHERE account_id = $1 AND domain = $2', + [req.accountId, accountDomain], + ), + ); } // @ts-ignore if (!payload.filtered && !req.cachedFilters) { // @ts-ignore - queries.push(client.query('SELECT filter.id AS id, filter.phrase AS title, filter.context AS context, filter.expires_at AS expires_at, filter.action AS filter_action, filter.with_quote AS with_quote, filter.with_profile AS with_profile, keyword.keyword AS keyword, keyword.whole_word AS whole_word, filter.exclude_follows AS exclude_follows, filter.exclude_localusers AS exclude_localusers FROM custom_filter_keywords keyword JOIN custom_filters filter ON keyword.custom_filter_id = filter.id WHERE filter.account_id = $1 AND (filter.expires_at IS NULL OR filter.expires_at > NOW())', [req.accountId])); + queries.push( + client.query( + 'SELECT filter.id AS id, filter.phrase AS title, filter.context AS context, filter.expires_at AS expires_at, filter.action AS filter_action, filter.with_profile AS with_profile, keyword.keyword AS keyword, keyword.whole_word AS whole_word, filter.exclude_follows AS exclude_follows, filter.exclude_localusers AS exclude_localusers FROM custom_filter_keywords keyword JOIN custom_filters filter ON keyword.custom_filter_id = filter.id WHERE filter.account_id = $1 AND (filter.expires_at IS NULL OR filter.expires_at > NOW())', + [req.accountId], + ), + ); } if (!payload.filtered) { // @ts-ignore - queries.push(client.query(`SELECT 1 + queries.push( + client.query( + `SELECT 1 FROM follows - WHERE (account_id = $1 AND target_account_id = $2)`, [req.accountId, payload.account.id])); + WHERE (account_id = $1 AND target_account_id = $2)`, + [req.accountId, payload.account.id], + ), + ); } - Promise.all(queries).then(values => { - releasePgConnection(); + Promise.all(queries) + .then((values) => { + releasePgConnection(); - // Handling blocks & mutes and domain blocks: If one of those applies, - // then we don't transmit the payload of the event to the client - if (values[0].rows.length > 0 || (accountDomain && values[1].rows.length > 0)) { - return; - } + // Handling blocks & mutes and domain blocks: If one of those applies, + // then we don't transmit the payload of the event to the client + if ( + values[0].rows.length > 0 || + (accountDomain && values[1].rows.length > 0) + ) { + return; + } - // If the payload already contains the `filtered` property, it means - // that filtering has been applied on the ruby on rails side, as - // such, we don't need to construct or apply the filters in streaming: - if (Object.hasOwn(payload, "filtered")) { - transmit(event, payload); - return; - } + // If the payload already contains the `filtered` property, it means + // that filtering has been applied on the ruby on rails side, as + // such, we don't need to construct or apply the filters in streaming: + if (Object.hasOwn(payload, 'filtered')) { + transmit(event, payload); + return; + } - const following = values[values.length - 1].rows.length > 0; - - // Handling for constructing the custom filters and caching them on the request - // TODO: Move this logic out of the message handling lifecycle - // @ts-ignore - if (!req.cachedFilters) { - const filterRows = values[accountDomain ? 2 : 1].rows; + const following = values[values.length - 1].rows.length > 0; + // Handling for constructing the custom filters and caching them on the request + // TODO: Move this logic out of the message handling lifecycle // @ts-ignore - req.cachedFilters = filterRows.reduce((cache, filter) => { - if (cache[filter.id]) { - cache[filter.id].keywords.push([filter.keyword, filter.whole_word]); - } else { - cache[filter.id] = { - keywords: [[filter.keyword, filter.whole_word]], - expires_at: filter.expires_at, - filter: { - id: filter.id, - title: filter.title, - context: filter.context, - expires_at: filter.expires_at, - // filter.filter_action is the value from the - // custom_filters.action database column, it is an integer - // representing a value in an enum defined by Ruby on Rails: - // - // enum { warn: 0, hide: 1 } - filter_action: ['warn', 'hide'][filter.filter_action], - with_quote: filter.with_quote, - withAccountName: filter.with_profile, - excludeFollows: filter.exclude_follows, - excludeLocalusers: filter.exclude_localusers, - }, - }; - } + if (!req.cachedFilters) { + const filterRows = values[accountDomain ? 2 : 1].rows; - return cache; - }, {}); - - // Construct the regular expressions for the custom filters: This - // needs to be done in a separate loop as the database returns one - // filterRow per keyword, so we need all the keywords before - // constructing the regular expression - // @ts-ignore - Object.keys(req.cachedFilters).forEach((key) => { // @ts-ignore - req.cachedFilters[key].regexp = new RegExp(req.cachedFilters[key].keywords.map(([keyword, whole_word]) => { - let expr = keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - - if (whole_word) { - if (/^[\w]/.test(expr)) { - expr = `\\b${expr}`; - } - - if (/[\w]$/.test(expr)) { - expr = `${expr}\\b`; - } + req.cachedFilters = filterRows.reduce((cache, filter) => { + if (cache[filter.id]) { + cache[filter.id].keywords.push([ + filter.keyword, + filter.whole_word, + ]); + } else { + cache[filter.id] = { + keywords: [[filter.keyword, filter.whole_word]], + expires_at: filter.expires_at, + filter: { + id: filter.id, + title: filter.title, + context: filter.context, + expires_at: filter.expires_at, + // filter.filter_action is the value from the + // custom_filters.action database column, it is an integer + // representing a value in an enum defined by Ruby on Rails: + // + // enum { warn: 0, hide: 1 } + filter_action: ['warn', 'hide'][filter.filter_action], + withAccountName: filter.with_profile, + excludeFollows: filter.exclude_follows, + excludeLocalusers: filter.exclude_localusers, + }, + }; } - return expr; - }).join('|'), 'i'); - }); - } + return cache; + }, {}); - // Apply cachedFilters against the payload, constructing a - // `filter_results` array of FilterResult entities - // @ts-ignore - if (req.cachedFilters) { - const status = payload; - // TODO: Calculate searchableContent in Ruby on Rails: + // Construct the regular expressions for the custom filters: This + // needs to be done in a separate loop as the database returns one + // filterRow per keyword, so we need all the keywords before + // constructing the regular expression + // @ts-ignore + Object.keys(req.cachedFilters).forEach((key) => { + // @ts-ignore + req.cachedFilters[key].regexp = new RegExp( + req.cachedFilters[key].keywords + .map(([keyword, whole_word]) => { + let expr = keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + + if (whole_word) { + if (/^[\w]/.test(expr)) { + expr = `\\b${expr}`; + } + + if (/[\w]$/.test(expr)) { + expr = `${expr}\\b`; + } + } + + return expr; + }) + .join('|'), + 'i', + ); + }); + } + + // Apply cachedFilters against the payload, constructing a + // `filter_results` array of FilterResult entities // @ts-ignore - const searchableContent = ([status.spoiler_text || '', status.content, ...(reference_texts || [])].concat((status.poll && status.poll.options) ? status.poll.options.map(option => option.title) : [])).concat(status.media_attachments.map(att => att.description)).join('\n\n').replace(//g, '\n').replace(/<\/p>

/g, '\n\n'); - const searchableTextContent = JSDOM.fragment(searchableContent).textContent; - const searchableAccountContent = JSDOM.fragment([status.account.display_name, status.account.note].join('\n\n')).textContent; + if (req.cachedFilters) { + const status = payload; + // TODO: Calculate searchableContent in Ruby on Rails: + // @ts-ignore + const searchableContent = [ + status.spoiler_text || '', + status.content, + ...(reference_texts || []), + ] + .concat( + status.poll && status.poll.options + ? status.poll.options.map((option) => option.title) + : [], + ) + .concat(status.media_attachments.map((att) => att.description)) + .join('\n\n') + .replace(//g, '\n') + .replace(/<\/p>

/g, '\n\n'); + const searchableTextContent = + JSDOM.fragment(searchableContent).textContent; + const searchableAccountContent = JSDOM.fragment( + [status.account.display_name, status.account.note].join('\n\n'), + ).textContent; - const now = new Date(); - // @ts-ignore - const filter_results = Object.values(req.cachedFilters).reduce((results, cachedFilter) => { - // Check the filter hasn't expired before applying: - if (cachedFilter.expires_at !== null && cachedFilter.expires_at < now) { - return results; - } + const now = new Date(); + // @ts-ignore + const filter_results = Object.values(req.cachedFilters).reduce( + (results, cachedFilter) => { + // Check the filter hasn't expired before applying: + if ( + cachedFilter.expires_at !== null && + cachedFilter.expires_at < now + ) { + return results; + } - if (cachedFilter.filter && cachedFilter.filter.excludeFollows && following) { - return results; - } + if ( + cachedFilter.filter && + cachedFilter.filter.excludeFollows && + following + ) { + return results; + } - if (cachedFilter.filter && cachedFilter.filter.excludeLocalusers && !accountDomain) { - return results; - } + if ( + cachedFilter.filter && + cachedFilter.filter.excludeLocalusers && + !accountDomain + ) { + return results; + } - // Just in-case JSDOM fails to find textContent in searchableContent - if (!searchableTextContent) { - return results; - } + // Just in-case JSDOM fails to find textContent in searchableContent + if (!searchableTextContent) { + return results; + } - const keyword_matches = searchableTextContent.match(cachedFilter.regexp) || - ((cachedFilter.withAccountName && searchableAccountContent) ? searchableAccountContent.match(cachedFilter.regexp) : null); - if (keyword_matches) { - // results is an Array of FilterResult; status_matches is always - // null as we only are only applying the keyword-based custom - // filters, not the status-based custom filters. - // https://docs.joinmastodon.org/entities/FilterResult/ - results.push({ - filter: cachedFilter.filter, - keyword_matches, - status_matches: null - }); - } + const keyword_matches = + searchableTextContent.match(cachedFilter.regexp) || + (cachedFilter.withAccountName && searchableAccountContent + ? searchableAccountContent.match(cachedFilter.regexp) + : null); + if (keyword_matches) { + // results is an Array of FilterResult; status_matches is always + // null as we only are only applying the keyword-based custom + // filters, not the status-based custom filters. + // https://docs.joinmastodon.org/entities/FilterResult/ + results.push({ + filter: cachedFilter.filter, + keyword_matches, + status_matches: null, + }); + } - return results; - }, []); + return results; + }, + [], + ); - // Send the payload + the FilterResults as the `filtered` property - // to the streaming connection. To reach this code, the `event` must - // have been either `update` or `status.update`, meaning the - // `payload` is a Status entity, which has a `filtered` property: - // - // filtered: https://docs.joinmastodon.org/entities/Status/#filtered - transmit(event, { - ...payload, - filtered: filter_results - }); - } else { - transmit(event, payload); - } - }).catch(err => { - log.error(err); - releasePgConnection(); - }); + // Send the payload + the FilterResults as the `filtered` property + // to the streaming connection. To reach this code, the `event` must + // have been either `update` or `status.update`, meaning the + // `payload` is a Status entity, which has a `filtered` property: + // + // filtered: https://docs.joinmastodon.org/entities/Status/#filtered + transmit(event, { + ...payload, + filtered: filter_results, + }); + } else { + transmit(event, payload); + } + }) + .catch((err) => { + log.error(err); + releasePgConnection(); + }); }); }; - channelIds.forEach(id => { + channelIds.forEach((id) => { subscribe(id, listener); }); @@ -914,7 +1081,9 @@ const startServer = async () => { // In theory we'll always have a channel name, but channelNameFromPath can return undefined: if (typeof channelName === 'string') { - metrics.connectedChannels.labels({ type: 'eventsource', channel: channelName }).inc(); + metrics.connectedChannels + .labels({ type: 'eventsource', channel: channelName }) + .inc(); } res.setHeader('Content-Type', 'text/event-stream'); @@ -933,7 +1102,9 @@ const startServer = async () => { metrics.connectedClients.labels({ type: 'eventsource' }).dec(); // In theory we'll always have a channel name, but channelNameFromPath can return undefined: if (typeof channelName === 'string') { - metrics.connectedChannels.labels({ type: 'eventsource', channel: channelName }).dec(); + metrics.connectedChannels + .labels({ type: 'eventsource', channel: channelName }) + .dec(); } clearInterval(heartbeat); @@ -951,17 +1122,19 @@ const startServer = async () => { * @returns {function(string[], SubscriptionListener): void} */ - const streamHttpEnd = (req, closeHandler = undefined) => (ids, listener) => { - req.on('close', () => { - ids.forEach(id => { - unsubscribe(id, listener); - }); + const streamHttpEnd = + (req, closeHandler = undefined) => + (ids, listener) => { + req.on('close', () => { + ids.forEach((id) => { + unsubscribe(id, listener); + }); - if (closeHandler) { - closeHandler(); - } - }); - }; + if (closeHandler) { + closeHandler(); + } + }); + }; /** * @param {http.IncomingMessage} req @@ -979,7 +1152,7 @@ const startServer = async () => { ws.send(message, (/** @type {Error|undefined} */ err) => { if (err) { - req.log.error({err}, `Failed to send to websocket`); + req.log.error({ err }, `Failed to send to websocket`); } }); }; @@ -987,7 +1160,7 @@ const startServer = async () => { /** * @param {http.ServerResponse} res */ - const httpNotFound = res => { + const httpNotFound = (res) => { res.writeHead(404, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ error: 'Not found' })); }; @@ -1010,20 +1183,30 @@ const startServer = async () => { return; } - channelNameToIds(req, channelName, req.query).then(({ channelIds, options }) => { - const onSend = streamToHttp(req, res); - const onEnd = streamHttpEnd(req, subscriptionHeartbeat(channelIds)); + channelNameToIds(req, channelName, req.query) + .then(({ channelIds, options }) => { + const onSend = streamToHttp(req, res); + const onEnd = streamHttpEnd(req, subscriptionHeartbeat(channelIds)); - // @ts-ignore - streamFrom(channelIds, req, req.log, onSend, onEnd, 'eventsource', options.needsFiltering); - }).catch(err => { - const {statusCode, errorMessage } = extractErrorStatusAndMessage(err); + // @ts-ignore + streamFrom( + channelIds, + req, + req.log, + onSend, + onEnd, + 'eventsource', + options.needsFiltering, + ); + }) + .catch((err) => { + const { statusCode, errorMessage } = extractErrorStatusAndMessage(err); - res.log.info({ err }, 'Eventsource subscription error'); + res.log.info({ err }, 'Eventsource subscription error'); - res.writeHead(statusCode, { 'Content-Type': 'application/json' }); - res.end(JSON.stringify({ error: errorMessage })); - }); + res.writeHead(statusCode, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ error: errorMessage })); + }); }); /** @@ -1038,7 +1221,7 @@ const startServer = async () => { * @param {any} req * @returns {string[]} */ - const channelsForUserStream = req => { + const channelsForUserStream = (req) => { const arr = [`timeline:${req.accountId}`]; if (isInScope(req, ['read', 'read:notifications'])) { @@ -1054,125 +1237,134 @@ const startServer = async () => { * @param {StreamParams} params * @returns {Promise.<{ channelIds: string[], options: { needsFiltering: boolean } }>} */ - const channelNameToIds = (req, name, params) => new Promise((resolve, reject) => { - switch (name) { - case 'user': - resolve({ - channelIds: channelsForUserStream(req), - options: { needsFiltering: false }, - }); + const channelNameToIds = (req, name, params) => + new Promise((resolve, reject) => { + switch (name) { + case 'user': + resolve({ + channelIds: channelsForUserStream(req), + options: { needsFiltering: false }, + }); - break; - case 'user:notification': - resolve({ - channelIds: [`timeline:${req.accountId}:notifications`], - options: { needsFiltering: false }, - }); + break; + case 'user:notification': + resolve({ + channelIds: [`timeline:${req.accountId}:notifications`], + options: { needsFiltering: false }, + }); - break; - case 'public': - resolve({ - channelIds: ['timeline:public'], - options: { needsFiltering: true }, - }); + break; + case 'public': + resolve({ + channelIds: ['timeline:public'], + options: { needsFiltering: true }, + }); - break; - case 'public:local': - resolve({ - channelIds: ['timeline:public:local'], - options: { needsFiltering: true }, - }); + break; + case 'public:local': + resolve({ + channelIds: ['timeline:public:local'], + options: { needsFiltering: true }, + }); - break; - case 'public:remote': - resolve({ - channelIds: ['timeline:public:remote'], - options: { needsFiltering: true }, - }); + break; + case 'public:remote': + resolve({ + channelIds: ['timeline:public:remote'], + options: { needsFiltering: true }, + }); - break; - case 'public:media': - resolve({ - channelIds: ['timeline:public:media'], - options: { needsFiltering: true }, - }); + break; + case 'public:media': + resolve({ + channelIds: ['timeline:public:media'], + options: { needsFiltering: true }, + }); - break; - case 'public:local:media': - resolve({ - channelIds: ['timeline:public:local:media'], - options: { needsFiltering: true }, - }); + break; + case 'public:local:media': + resolve({ + channelIds: ['timeline:public:local:media'], + options: { needsFiltering: true }, + }); - break; - case 'public:remote:media': - resolve({ - channelIds: ['timeline:public:remote:media'], - options: { needsFiltering: true }, - }); + break; + case 'public:remote:media': + resolve({ + channelIds: ['timeline:public:remote:media'], + options: { needsFiltering: true }, + }); - break; - case 'direct': - resolve({ - channelIds: [`timeline:direct:${req.accountId}`], - options: { needsFiltering: false }, - }); + break; + case 'direct': + resolve({ + channelIds: [`timeline:direct:${req.accountId}`], + options: { needsFiltering: false }, + }); - break; - case 'hashtag': - if (!params.tag) { - reject(new RequestError('Missing tag name parameter')); - } else { - resolve({ - channelIds: [`timeline:hashtag:${normalizeHashtag(params.tag)}`], - options: { needsFiltering: true }, - }); + break; + case 'hashtag': + if (!params.tag) { + reject(new RequestError('Missing tag name parameter')); + } else { + resolve({ + channelIds: [`timeline:hashtag:${normalizeHashtag(params.tag)}`], + options: { needsFiltering: true }, + }); + } + + break; + case 'hashtag:local': + if (!params.tag) { + reject(new RequestError('Missing tag name parameter')); + } else { + resolve({ + channelIds: [ + `timeline:hashtag:${normalizeHashtag(params.tag)}:local`, + ], + options: { needsFiltering: true }, + }); + } + + break; + case 'list': + if (!params.list) { + reject(new RequestError('Missing list name parameter')); + return; + } + + authorizeListAccess(params.list, req) + .then(() => { + resolve({ + channelIds: [`timeline:list:${params.list}`], + options: { needsFiltering: false }, + }); + }) + .catch(() => { + reject( + new AuthenticationError('Not authorized to stream this list'), + ); + }); + + break; + case 'antenna': + // @ts-ignore + authorizeAntennaAccess(params.antenna, req) + .then(() => { + resolve({ + channelIds: [`timeline:antenna:${params.antenna}`], + options: { needsFiltering: false }, + }); + }) + .catch(() => { + reject('Not authorized to stream this antenna'); + }); + + break; + default: + reject(new RequestError('Unknown stream type')); } - - break; - case 'hashtag:local': - if (!params.tag) { - reject(new RequestError('Missing tag name parameter')); - } else { - resolve({ - channelIds: [`timeline:hashtag:${normalizeHashtag(params.tag)}:local`], - options: { needsFiltering: true }, - }); - } - - break; - case 'list': - if (!params.list) { - reject(new RequestError('Missing list name parameter')); - return; - } - - authorizeListAccess(params.list, req).then(() => { - resolve({ - channelIds: [`timeline:list:${params.list}`], - options: { needsFiltering: false }, - }); - }).catch(() => { - reject(new AuthenticationError('Not authorized to stream this list')); - }); - - break; - case 'antenna': - // @ts-ignore - authorizeAntennaAccess(params.antenna, req).then(() => { - resolve({ - channelIds: [`timeline:antenna:${params.antenna}`], - options: { needsFiltering: false }, - }); - }).catch(() => { - reject('Not authorized to stream this antenna'); - }); - - break; - default: - reject(new RequestError('Unknown stream type')); - } - }); + }); /** * @param {string} channelName @@ -1184,7 +1376,10 @@ const startServer = async () => { return [channelName, params.list]; } else if (channelName === 'antenna' && params.antenna) { return [channelName, params.antenna]; - } else if (['hashtag', 'hashtag:local'].includes(channelName) && params.tag) { + } else if ( + ['hashtag', 'hashtag:local'].includes(channelName) && + params.tag + ) { return [channelName, params.tag]; } else { return [channelName]; @@ -1205,46 +1400,69 @@ const startServer = async () => { * @param {StreamParams} params * @returns {void} */ - const subscribeWebsocketToChannel = ({ websocket, request, logger, subscriptions }, channelName, params) => { - checkScopes(request, logger, channelName).then(() => channelNameToIds(request, channelName, params)).then(({ - channelIds, - options, - }) => { - if (subscriptions[channelIds.join(';')]) { - return; - } + const subscribeWebsocketToChannel = ( + { websocket, request, logger, subscriptions }, + channelName, + params, + ) => { + checkScopes(request, logger, channelName) + .then(() => channelNameToIds(request, channelName, params)) + .then(({ channelIds, options }) => { + if (subscriptions[channelIds.join(';')]) { + return; + } - const onSend = streamToWs(request, websocket, streamNameFromChannelName(channelName, params)); - const stopHeartbeat = subscriptionHeartbeat(channelIds); - const listener = streamFrom(channelIds, request, logger, onSend, undefined, 'websocket', options.needsFiltering); + const onSend = streamToWs( + request, + websocket, + streamNameFromChannelName(channelName, params), + ); + const stopHeartbeat = subscriptionHeartbeat(channelIds); + const listener = streamFrom( + channelIds, + request, + logger, + onSend, + undefined, + 'websocket', + options.needsFiltering, + ); - metrics.connectedChannels.labels({ type: 'websocket', channel: channelName }).inc(); + metrics.connectedChannels + .labels({ type: 'websocket', channel: channelName }) + .inc(); - subscriptions[channelIds.join(';')] = { - channelName, - listener, - stopHeartbeat, - }; - }).catch(err => { - const {statusCode, errorMessage } = extractErrorStatusAndMessage(err); + subscriptions[channelIds.join(';')] = { + channelName, + listener, + stopHeartbeat, + }; + }) + .catch((err) => { + const { statusCode, errorMessage } = extractErrorStatusAndMessage(err); - logger.error({ err }, 'Websocket subscription error'); + logger.error({ err }, 'Websocket subscription error'); - // If we have a socket that is alive and open still, send the error back to the client: - if (websocket.isAlive && websocket.readyState === websocket.OPEN) { - websocket.send(JSON.stringify({ - error: errorMessage, - status: statusCode - })); - } - }); + // If we have a socket that is alive and open still, send the error back to the client: + if (websocket.isAlive && websocket.readyState === websocket.OPEN) { + websocket.send( + JSON.stringify({ + error: errorMessage, + status: statusCode, + }), + ); + } + }); }; /** * @param {WebSocketSession} session * @param {string[]} channelIds */ - const removeSubscription = ({ request, logger, subscriptions }, channelIds) => { + const removeSubscription = ( + { request, logger, subscriptions }, + channelIds, + ) => { logger.info({ channelIds, accountId: request.accountId }, `Ending stream`); const subscription = subscriptions[channelIds.join(';')]; @@ -1253,11 +1471,13 @@ const startServer = async () => { return; } - channelIds.forEach(channelId => { + channelIds.forEach((channelId) => { unsubscribe(channelId, subscription.listener); }); - metrics.connectedChannels.labels({ type: 'websocket', channel: subscription.channelName }).dec(); + metrics.connectedChannels + .labels({ type: 'websocket', channel: subscription.channelName }) + .dec(); subscription.stopHeartbeat(); delete subscriptions[channelIds.join(';')]; @@ -1272,23 +1492,31 @@ const startServer = async () => { const unsubscribeWebsocketFromChannel = (session, channelName, params) => { const { websocket, request, logger } = session; - channelNameToIds(request, channelName, params).then(({ channelIds }) => { - removeSubscription(session, channelIds); - }).catch(err => { - logger.error({err}, 'Websocket unsubscribe error'); + channelNameToIds(request, channelName, params) + .then(({ channelIds }) => { + removeSubscription(session, channelIds); + }) + .catch((err) => { + logger.error({ err }, 'Websocket unsubscribe error'); - // If we have a socket that is alive and open still, send the error back to the client: - if (websocket.isAlive && websocket.readyState === websocket.OPEN) { - // TODO: Use a better error response here - websocket.send(JSON.stringify({ error: "Error unsubscribing from channel" })); - } - }); + // If we have a socket that is alive and open still, send the error back to the client: + if (websocket.isAlive && websocket.readyState === websocket.OPEN) { + // TODO: Use a better error response here + websocket.send( + JSON.stringify({ error: 'Error unsubscribing from channel' }), + ); + } + }); }; /** * @param {WebSocketSession} session */ - const subscribeWebsocketToSystemChannel = ({ websocket, request, subscriptions }) => { + const subscribeWebsocketToSystemChannel = ({ + websocket, + request, + subscriptions, + }) => { const accessTokenChannelId = `timeline:access_token:${request.accessTokenId}`; const systemChannelId = `timeline:system:${request.accountId}`; @@ -1304,18 +1532,18 @@ const startServer = async () => { subscriptions[accessTokenChannelId] = { channelName: 'system', listener, - stopHeartbeat: () => { - }, + stopHeartbeat: () => {}, }; subscriptions[systemChannelId] = { channelName: 'system', listener, - stopHeartbeat: () => { - }, + stopHeartbeat: () => {}, }; - metrics.connectedChannels.labels({ type: 'websocket', channel: 'system' }).inc(2); + metrics.connectedChannels + .labels({ type: 'websocket', channel: 'system' }) + .inc(2); }; /** @@ -1348,7 +1576,7 @@ const startServer = async () => { ws.on('close', function onWebsocketClose() { const subscriptions = Object.keys(session.subscriptions); - subscriptions.forEach(channelIds => { + subscriptions.forEach((channelIds) => { removeSubscription(session, channelIds.split(';')); }); @@ -1375,7 +1603,10 @@ const startServer = async () => { ws.on('message', (data, isBinary) => { if (isBinary) { log.warn('Received binary data, closing connection'); - ws.close(1003, 'The mastodon streaming server does not support binary messages'); + ws.close( + 1003, + 'The mastodon streaming server does not support binary messages', + ); return; } const message = data.toString('utf8'); @@ -1401,14 +1632,18 @@ const startServer = async () => { const location = req.url && url.parse(req.url, true); if (location && location.query.stream) { - subscribeWebsocketToChannel(session, firstParam(location.query.stream), location.query); + subscribeWebsocketToChannel( + session, + firstParam(location.query.stream), + location.query, + ); } } wss.on('connection', onConnection); setInterval(() => { - wss.clients.forEach(ws => { + wss.clients.forEach((ws) => { // @ts-ignore if (ws.isAlive === false) { ws.terminate(); @@ -1421,7 +1656,7 @@ const startServer = async () => { }); }, 30000); - attachServerWithConfig(server, address => { + attachServerWithConfig(server, (address) => { logger.info(`Streaming API now listening on ${address}`); }); From 65c67fb827ad49da7fd4b45d9ffff36e79a3047a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 09:42:59 +0200 Subject: [PATCH 028/349] fix(deps): update dependency pg-connection-string to v2.8.5 (#34532) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index cd7af4bf3d..8c16c96158 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13287,9 +13287,9 @@ __metadata: linkType: hard "pg-connection-string@npm:^2.6.0, pg-connection-string@npm:^2.8.1": - version: 2.8.1 - resolution: "pg-connection-string@npm:2.8.1" - checksum: 10c0/87cb519d97a5bdc756f71a6b051eea4d4887e2e102bc694ecda935fe636a037666a0444729b08c7a26c2e9e4b052b2b366af58492ccc49704bacd6876f946ce8 + version: 2.8.5 + resolution: "pg-connection-string@npm:2.8.5" + checksum: 10c0/5f65afc9dfc99ecf1583a1699c97511f3d505659c9c6a91db8cd0ffe862caa29060722712a034abd6da493356567261febf18b3a6ef223d0a219f0d50d959b97 languageName: node linkType: hard From 57a6c5f4e9905103d1dac87c4cf9f2313897853c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 07:43:39 +0000 Subject: [PATCH 029/349] chore(deps): update dependency connection_pool to v2.5.2 (#34530) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1c1f752ec3..1faec93b4c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -160,7 +160,7 @@ GEM cocoon (1.2.15) color_diff (0.1) concurrent-ruby (1.3.5) - connection_pool (2.5.1) + connection_pool (2.5.2) cose (1.3.1) cbor (~> 0.5.9) openssl-signature_algorithm (~> 1.0) From 1fc66c1970194c95a174eee9f79254542f0c03b8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 10:06:10 +0200 Subject: [PATCH 030/349] New Crowdin Translations (automated) (#34534) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/id.json | 4 ++++ app/javascript/mastodon/locales/ko.json | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 7e207d917e..ff44e4ab96 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -19,13 +19,16 @@ "account.block_domain": "Blokir domain {domain}", "account.block_short": "Blokir", "account.blocked": "Terblokir", + "account.blocking": "Memblokir", "account.cancel_follow_request": "Batalkan permintaan ikut", "account.copy": "Salin tautan ke profil", "account.direct": "Sebut secara pribadi @{name}", "account.disable_notifications": "Berhenti memberitahu saya ketika @{name} memposting", + "account.domain_blocking": "Memblokir domain", "account.edit_profile": "Ubah profil", "account.enable_notifications": "Beritahu saya saat @{name} memposting", "account.endorse": "Tampilkan di profil", + "account.featured": "", "account.featured_tags.last_status_at": "Kiriman terakhir pada {date}", "account.featured_tags.last_status_never": "Tidak ada kiriman", "account.follow": "Ikuti", @@ -36,6 +39,7 @@ "account.following": "Mengikuti", "account.following_counter": "{count, plural, other {{counter} following}}", "account.follows.empty": "Pengguna ini belum mengikuti siapa pun.", + "account.follows_you": "Mengikuti Anda", "account.go_to_profile": "Buka profil", "account.hide_reblogs": "Sembunyikan boosts dari @{name}", "account.in_memoriam": "Mengenang.", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 111c78db0f..94e561cb28 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -19,10 +19,12 @@ "account.block_domain": "{domain} 도메인 차단", "account.block_short": "차단", "account.blocked": "차단함", + "account.blocking": "차단함", "account.cancel_follow_request": "팔로우 취소", "account.copy": "프로필 링크 복사", "account.direct": "@{name} 님에게 개인적으로 멘션", "account.disable_notifications": "@{name} 의 게시물 알림 끄기", + "account.domain_blocking": "도메인 차단함", "account.edit_profile": "프로필 편집", "account.enable_notifications": "@{name} 의 게시물 알림 켜기", "account.endorse": "프로필에 추천하기", @@ -39,6 +41,7 @@ "account.following": "팔로잉", "account.following_counter": "{count, plural, other {팔로잉 {counter}명}}", "account.follows.empty": "이 사용자는 아직 아무도 팔로우하고 있지 않습니다.", + "account.follows_you": "나를 팔로우", "account.go_to_profile": "프로필로 이동", "account.hide_reblogs": "@{name}의 부스트를 숨기기", "account.in_memoriam": "고인의 계정입니다.", @@ -53,13 +56,17 @@ "account.mute_notifications_short": "알림 뮤트", "account.mute_short": "뮤트", "account.muted": "뮤트됨", + "account.muting": "뮤트함", + "account.mutual": "서로 팔로우", "account.no_bio": "제공된 설명이 없습니다.", "account.open_original_page": "원본 페이지 열기", "account.posts": "게시물", "account.posts_with_replies": "게시물과 답장", + "account.remove_from_followers": "팔로워에서 {name} 제거", "account.report": "@{name} 신고", "account.requested": "승인 대기 중. 클릭해서 취소하기", "account.requested_follow": "{name} 님이 팔로우 요청을 보냈습니다", + "account.requests_to_follow_you": "팔로우 요청", "account.share": "@{name}의 프로필 공유", "account.show_reblogs": "@{name}의 부스트 보기", "account.statuses_counter": "{count, plural, other {게시물 {counter}개}}", @@ -227,6 +234,9 @@ "confirmations.redraft.confirm": "삭제하고 다시 쓰기", "confirmations.redraft.message": "정말로 이 게시물을 삭제하고 다시 쓰시겠습니까? 해당 게시물에 대한 부스트와 좋아요를 잃게 되고 원본에 대한 답장은 연결 되지 않습니다.", "confirmations.redraft.title": "삭제하고 다시 작성할까요?", + "confirmations.remove_from_followers.confirm": "팔로워 제거", + "confirmations.remove_from_followers.message": "{name} 님이 나를 팔로우하지 않게 됩니다. 계속할까요?", + "confirmations.remove_from_followers.title": "팔로워를 제거할까요?", "confirmations.reply.confirm": "답글", "confirmations.reply.message": "지금 답장하면 작성 중인 메시지를 덮어쓰게 됩니다. 정말 진행합니까?", "confirmations.reply.title": "게시물을 덮어쓸까요?", @@ -294,6 +304,9 @@ "emoji_button.search_results": "검색 결과", "emoji_button.symbols": "기호", "emoji_button.travel": "여행과 장소", + "empty_column.account_featured.me": "아직 아무 것도 추천하지 않았습니다. 게시물, 자주 사용하는 해시태그, 친구의 계정까지 내 계정에서 추천할 수 있다는 것을 알고 계신가요?", + "empty_column.account_featured.other": "{acct} 님은 아직 아무 것도 추천하지 않았습니다. 게시물, 자주 사용하는 해시태그, 친구의 계정까지 내 계정에서 추천할 수 있다는 것을 알고 계신가요?", + "empty_column.account_featured_other.unknown": "이 계정은 아직 아무 것도 추천하지 않았습니다.", "empty_column.account_hides_collections": "이 사용자는 이 정보를 사용할 수 없도록 설정했습니다", "empty_column.account_suspended": "계정 정지됨", "empty_column.account_timeline": "이곳에는 게시물이 없습니다!", From 5679bb539409203f46bef17439631f848958db2f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 24 Apr 2025 10:24:16 +0200 Subject: [PATCH 031/349] fix(deps): update dependency pg to v8.15.5 (#34531) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8c16c96158..c099cc427f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13279,14 +13279,14 @@ __metadata: languageName: node linkType: hard -"pg-cloudflare@npm:^1.2.0": - version: 1.2.0 - resolution: "pg-cloudflare@npm:1.2.0" - checksum: 10c0/d6f2d032aeab291b17d627b051aae85420aea86a3371895a77b55fec93e3dac05880fbf09e5de33486ad3a2e6d7d56a025a8aa66f0d5883984f9834e4cd6f6a4 +"pg-cloudflare@npm:^1.2.5": + version: 1.2.5 + resolution: "pg-cloudflare@npm:1.2.5" + checksum: 10c0/48b9105ef027c7b3f57ef88ceaec3634cd82120059bd68273cce06989a1ec547e0b0fbb5d1afdd0711824f409c8b410f9bdec2f6c8034728992d3658c0b36f86 languageName: node linkType: hard -"pg-connection-string@npm:^2.6.0, pg-connection-string@npm:^2.8.1": +"pg-connection-string@npm:^2.6.0, pg-connection-string@npm:^2.8.5": version: 2.8.5 resolution: "pg-connection-string@npm:2.8.5" checksum: 10c0/5f65afc9dfc99ecf1583a1699c97511f3d505659c9c6a91db8cd0ffe862caa29060722712a034abd6da493356567261febf18b3a6ef223d0a219f0d50d959b97 @@ -13307,19 +13307,19 @@ __metadata: languageName: node linkType: hard -"pg-pool@npm:^3.9.1": - version: 3.9.1 - resolution: "pg-pool@npm:3.9.1" +"pg-pool@npm:^3.9.5": + version: 3.9.5 + resolution: "pg-pool@npm:3.9.5" peerDependencies: pg: ">=8.0" - checksum: 10c0/2bbc0892ab7325486b7d5ad8ade59ec925476666ac3959cb4850814c5334bb2f1344258707f8d0445093b59dd6e94401508cebcee490d4827821549147a2ebd9 + checksum: 10c0/ebb36b6a1fd753213263a2e0e73d06ffe9fc93907deceae484c7fe4b464f6e9c41a578eb096b4b6012beec94a5d6e0e47728dfc4425e06d283744aa7432365a4 languageName: node linkType: hard -"pg-protocol@npm:*, pg-protocol@npm:^1.9.0": - version: 1.9.0 - resolution: "pg-protocol@npm:1.9.0" - checksum: 10c0/c37e61d7fafa97f22eabf12de69863f42fdabb3671df9cc2623bd0ffd6bdedc212e7e8460ad2c721c8a08d8477b4f128a923bf2381905d68a23a532ec7517c77 +"pg-protocol@npm:*, pg-protocol@npm:^1.9.5": + version: 1.9.5 + resolution: "pg-protocol@npm:1.9.5" + checksum: 10c0/5cb3444cf973adadd22ee9ea26bb1674f0d980ef8f9c66d426bbe67fc9cb5f0ca4a204bf7e432b3ab2ab59ac8227f4b18ab3b2e64eaed537e037e916991c7319 languageName: node linkType: hard @@ -13352,13 +13352,13 @@ __metadata: linkType: hard "pg@npm:^8.5.0": - version: 8.15.1 - resolution: "pg@npm:8.15.1" + version: 8.15.5 + resolution: "pg@npm:8.15.5" dependencies: - pg-cloudflare: "npm:^1.2.0" - pg-connection-string: "npm:^2.8.1" - pg-pool: "npm:^3.9.1" - pg-protocol: "npm:^1.9.0" + pg-cloudflare: "npm:^1.2.5" + pg-connection-string: "npm:^2.8.5" + pg-pool: "npm:^3.9.5" + pg-protocol: "npm:^1.9.5" pg-types: "npm:^2.1.0" pgpass: "npm:1.x" peerDependencies: @@ -13369,7 +13369,7 @@ __metadata: peerDependenciesMeta: pg-native: optional: true - checksum: 10c0/c6e5fd9cd6af7fc3208e48f860fd9ec9f7bc20192e449b0b36b096a9d5889de50706c705f6996e51a765bd4b7331179d7ffb43528a141bb996ee6f2c8f994c9a + checksum: 10c0/4c118cd9bec37c8880b4489b9acbd10cf1eaa86a0a9024de2dac83f4ce5adedecc4cab54b66fa3bcb204aab7297c08d03617ae15499538939692b48651cc52d1 languageName: node linkType: hard From 13b13c8726c1e81d02abc389f8b9bce19df6dbe2 Mon Sep 17 00:00:00 2001 From: Terence Eden Date: Thu, 24 Apr 2025 12:38:02 +0100 Subject: [PATCH 032/349] Reduce path size for oEmbed and logo (#34538) Co-authored-by: Terence Eden --- app/javascript/images/logo-symbol-icon.svg | 2 +- app/serializers/oembed_serializer.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/javascript/images/logo-symbol-icon.svg b/app/javascript/images/logo-symbol-icon.svg index c4c14f098a..40216cb769 100644 --- a/app/javascript/images/logo-symbol-icon.svg +++ b/app/javascript/images/logo-symbol-icon.svg @@ -1,2 +1,2 @@ - + diff --git a/app/serializers/oembed_serializer.rb b/app/serializers/oembed_serializer.rb index c87f14f26b..077c47d027 100644 --- a/app/serializers/oembed_serializer.rb +++ b/app/serializers/oembed_serializer.rb @@ -75,7 +75,7 @@ class OEmbedSerializer < ActiveModel::Serializer <<~HTML.squish

- +
Post by @#{object.account.pretty_acct}@#{provider_name}
View on Mastodon
From 22ec8289510c4b683cd150e5b5dc0d5a55cb063b Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 24 Apr 2025 13:38:27 +0200 Subject: [PATCH 033/349] Change `DEFAULT_LOCALE` to not override unauthenticated users' browser language (#34535) --- app/controllers/concerns/localized.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/concerns/localized.rb b/app/controllers/concerns/localized.rb index 14742e3b5c..fa452c12b5 100644 --- a/app/controllers/concerns/localized.rb +++ b/app/controllers/concerns/localized.rb @@ -16,7 +16,7 @@ module Localized def requested_locale requested_locale_name = available_locale_or_nil(params[:lang]) requested_locale_name ||= available_locale_or_nil(current_user.locale) if respond_to?(:user_signed_in?) && user_signed_in? - requested_locale_name ||= http_accept_language if ENV['DEFAULT_LOCALE'].blank? + requested_locale_name ||= http_accept_language unless ENV['FORCE_DEFAULT_LOCALE'] == 'true' requested_locale_name end From 6463415e06d4d617e011adf7e184276f0007137a Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Thu, 24 Apr 2025 10:56:13 -0400 Subject: [PATCH 034/349] Update `rubocop-rspec` to version 3.6.0 (#34497) --- .rubocop_todo.yml | 2 +- Gemfile.lock | 4 +- .../application_controller_spec.rb | 18 +-- .../auth/registrations_controller_spec.rb | 6 +- spec/controllers/concerns/localized_spec.rb | 4 +- .../relationships_controller_spec.rb | 6 +- .../settings/imports_controller_spec.rb | 12 +- .../confirmations_controller_spec.rb | 4 +- spec/lib/cache_buster_spec.rb | 10 +- spec/lib/fasp/request_spec.rb | 6 +- spec/lib/link_details_extractor_spec.rb | 10 +- spec/lib/mastodon/cli/ip_blocks_spec.rb | 12 +- spec/lib/mastodon/redis_configuration_spec.rb | 20 +-- spec/mailers/notification_mailer_spec.rb | 26 ++-- spec/mailers/user_mailer_spec.rb | 64 +++++----- spec/models/account_spec.rb | 8 +- spec/models/custom_filter_spec.rb | 2 +- spec/models/invite_spec.rb | 2 +- spec/models/ip_block_spec.rb | 2 +- spec/models/login_activity_spec.rb | 2 +- spec/models/mute_spec.rb | 2 +- spec/models/poll_spec.rb | 2 +- spec/models/preview_card_provider_spec.rb | 2 +- spec/models/preview_card_trend_spec.rb | 2 +- spec/models/session_activation_spec.rb | 2 +- spec/models/status_spec.rb | 2 +- spec/models/status_trend_spec.rb | 2 +- spec/models/tag_spec.rb | 2 +- spec/models/tag_trend_spec.rb | 2 +- .../admin/fasp/provider_policy_spec.rb | 4 +- spec/requests/oauth/token_spec.rb | 10 +- spec/requests/omniauth_callbacks_spec.rb | 6 +- .../fetch_remote_account_service_spec.rb | 4 +- .../fetch_remote_actor_service_spec.rb | 4 +- spec/services/bulk_import_row_service_spec.rb | 12 +- spec/services/delete_account_service_spec.rb | 4 +- spec/services/suspend_account_service_spec.rb | 4 +- .../unsuspend_account_service_spec.rb | 11 +- spec/workers/import/row_worker_spec.rb | 118 +++++++++--------- spec/workers/move_worker_spec.rb | 34 ++--- ...ccounts_statuses_cleanup_scheduler_spec.rb | 2 +- 41 files changed, 223 insertions(+), 228 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index c3c41f3c5d..13e2cc3caf 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,6 +1,6 @@ # This configuration was generated by # `rubocop --auto-gen-config --auto-gen-only-exclude --no-offense-counts --no-auto-gen-timestamp` -# using RuboCop version 1.75.2. +# using RuboCop version 1.75.3. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new diff --git a/Gemfile.lock b/Gemfile.lock index 1faec93b4c..b5cf21cc51 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -743,7 +743,7 @@ GEM rspec-mocks (~> 3.0) sidekiq (>= 5, < 9) rspec-support (3.13.2) - rubocop (1.75.2) + rubocop (1.75.3) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -773,7 +773,7 @@ GEM rack (>= 1.1) rubocop (>= 1.75.0, < 2.0) rubocop-ast (>= 1.38.0, < 2.0) - rubocop-rspec (3.5.0) + rubocop-rspec (3.6.0) lint_roller (~> 1.1) rubocop (~> 1.72, >= 1.72.1) rubocop-rspec_rails (2.31.0) diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb index 2e7a59db05..cd4181a00d 100644 --- a/spec/controllers/application_controller_spec.rb +++ b/spec/controllers/application_controller_spec.rb @@ -23,7 +23,7 @@ RSpec.describe ApplicationController do end end - shared_examples 'respond_with_error' do |code| + shared_examples 'error response' do |code| it "returns http #{code} for http and renders template" do subject @@ -51,7 +51,7 @@ RSpec.describe ApplicationController do post 'success' end - include_examples 'respond_with_error', 422 + it_behaves_like 'error response', 422 end describe 'helper_method :current_account' do @@ -123,7 +123,7 @@ RSpec.describe ApplicationController do get 'routing_error' end - include_examples 'respond_with_error', 404 + it_behaves_like 'error response', 404 end context 'with ActiveRecord::RecordNotFound' do @@ -132,7 +132,7 @@ RSpec.describe ApplicationController do get 'record_not_found' end - include_examples 'respond_with_error', 404 + it_behaves_like 'error response', 404 end context 'with ActionController::InvalidAuthenticityToken' do @@ -141,7 +141,7 @@ RSpec.describe ApplicationController do get 'invalid_authenticity_token' end - include_examples 'respond_with_error', 422 + it_behaves_like 'error response', 422 end describe 'before_action :check_suspension' do @@ -186,7 +186,7 @@ RSpec.describe ApplicationController do get 'route_forbidden' end - include_examples 'respond_with_error', 403 + it_behaves_like 'error response', 403 end describe 'not_found' do @@ -201,7 +201,7 @@ RSpec.describe ApplicationController do get 'route_not_found' end - include_examples 'respond_with_error', 404 + it_behaves_like 'error response', 404 end describe 'gone' do @@ -216,7 +216,7 @@ RSpec.describe ApplicationController do get 'route_gone' end - include_examples 'respond_with_error', 410 + it_behaves_like 'error response', 410 end describe 'unprocessable_entity' do @@ -231,6 +231,6 @@ RSpec.describe ApplicationController do get 'route_unprocessable_entity' end - include_examples 'respond_with_error', 422 + it_behaves_like 'error response', 422 end end diff --git a/spec/controllers/auth/registrations_controller_spec.rb b/spec/controllers/auth/registrations_controller_spec.rb index 4e43592a4e..a110717166 100644 --- a/spec/controllers/auth/registrations_controller_spec.rb +++ b/spec/controllers/auth/registrations_controller_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' RSpec.describe Auth::RegistrationsController do render_views - shared_examples 'checks for enabled registrations' do |path| + shared_examples 'registration mode based responses' do |path| context 'when in single user mode and open for registration' do before do Setting.registrations_mode = 'open' @@ -156,7 +156,7 @@ RSpec.describe Auth::RegistrationsController do end end - include_examples 'checks for enabled registrations', :new + it_behaves_like 'registration mode based responses', :new end describe 'POST #create' do @@ -378,7 +378,7 @@ RSpec.describe Auth::RegistrationsController do end end - include_examples 'checks for enabled registrations', :create + it_behaves_like 'registration mode based responses', :create end describe 'DELETE #destroy' do diff --git a/spec/controllers/concerns/localized_spec.rb b/spec/controllers/concerns/localized_spec.rb index 4798e8270c..d4b8064d90 100644 --- a/spec/controllers/concerns/localized_spec.rb +++ b/spec/controllers/concerns/localized_spec.rb @@ -59,10 +59,10 @@ RSpec.describe Localized do sign_in(user) end - include_examples 'default locale' + it_behaves_like 'default locale' end context 'with a user who has not signed in' do - include_examples 'default locale' + it_behaves_like 'default locale' end end diff --git a/spec/controllers/relationships_controller_spec.rb b/spec/controllers/relationships_controller_spec.rb index 75b5e71f35..633d72fbba 100644 --- a/spec/controllers/relationships_controller_spec.rb +++ b/spec/controllers/relationships_controller_spec.rb @@ -35,7 +35,7 @@ RSpec.describe RelationshipsController do describe 'PATCH #update' do let(:alice) { Fabricate(:account, username: 'alice', domain: 'example.com') } - shared_examples 'redirects back to followers page' do + shared_examples 'general behavior for followed user' do it 'redirects back to followers page' do alice.follow!(user.account) @@ -49,7 +49,7 @@ RSpec.describe RelationshipsController do context 'when select parameter is not provided' do subject { patch :update } - include_examples 'redirects back to followers page' + it_behaves_like 'general behavior for followed user' end context 'when select parameter is provided' do @@ -83,7 +83,7 @@ RSpec.describe RelationshipsController do end end - include_examples 'redirects back to followers page' + it_behaves_like 'general behavior for followed user' end end end diff --git a/spec/controllers/settings/imports_controller_spec.rb b/spec/controllers/settings/imports_controller_spec.rb index 219b882e6d..c2c6c353f3 100644 --- a/spec/controllers/settings/imports_controller_spec.rb +++ b/spec/controllers/settings/imports_controller_spec.rb @@ -162,7 +162,7 @@ RSpec.describe Settings::ImportsController do ] end - include_examples 'export failed rows', "Account address,Show boosts,Notify on new posts,Languages\nfoo@bar,true,false,\nuser@bar,false,true,\"fr, de\"\n" + it_behaves_like 'export failed rows', "Account address,Show boosts,Notify on new posts,Languages\nfoo@bar,true,false,\nuser@bar,false,true,\"fr, de\"\n" end context 'with blocks' do @@ -175,7 +175,7 @@ RSpec.describe Settings::ImportsController do ] end - include_examples 'export failed rows', "foo@bar\nuser@bar\n" + it_behaves_like 'export failed rows', "foo@bar\nuser@bar\n" end context 'with mutes' do @@ -188,7 +188,7 @@ RSpec.describe Settings::ImportsController do ] end - include_examples 'export failed rows', "Account address,Hide notifications\nfoo@bar,true\nuser@bar,false\n" + it_behaves_like 'export failed rows', "Account address,Hide notifications\nfoo@bar,true\nuser@bar,false\n" end context 'with domain blocks' do @@ -201,7 +201,7 @@ RSpec.describe Settings::ImportsController do ] end - include_examples 'export failed rows', "bad.domain\nevil.domain\n" + it_behaves_like 'export failed rows', "bad.domain\nevil.domain\n" end context 'with bookmarks' do @@ -214,7 +214,7 @@ RSpec.describe Settings::ImportsController do ] end - include_examples 'export failed rows', "https://foo.com/1\nhttps://foo.com/2\n" + it_behaves_like 'export failed rows', "https://foo.com/1\nhttps://foo.com/2\n" end context 'with lists' do @@ -227,7 +227,7 @@ RSpec.describe Settings::ImportsController do ] end - include_examples 'export failed rows', "Amigos,user@example.com\nFrenemies,user@org.org\n" + it_behaves_like 'export failed rows', "Amigos,user@example.com\nFrenemies,user@org.org\n" end end diff --git a/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb b/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb index 45c5e77323..0121c94330 100644 --- a/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb +++ b/spec/controllers/settings/two_factor_authentication/confirmations_controller_spec.rb @@ -34,7 +34,7 @@ RSpec.describe Settings::TwoFactorAuthentication::ConfirmationsController do get :new, session: { challenge_passed_at: Time.now.utc, new_otp_secret: 'thisisasecretforthespecofnewview' } end - include_examples 'renders expected page' + it_behaves_like 'renders expected page' end it 'redirects if a new otp_secret has not been set in the session' do @@ -94,7 +94,7 @@ RSpec.describe Settings::TwoFactorAuthentication::ConfirmationsController do .to include(I18n.t('otp_authentication.wrong_code')) end - include_examples 'renders expected page' + it_behaves_like 'renders expected page' end private diff --git a/spec/lib/cache_buster_spec.rb b/spec/lib/cache_buster_spec.rb index f7cff9c1c3..65eb72ff3b 100644 --- a/spec/lib/cache_buster_spec.rb +++ b/spec/lib/cache_buster_spec.rb @@ -12,7 +12,7 @@ RSpec.describe CacheBuster do let(:purge_url) { 'https://example.com/test_purge' } describe '#bust' do - shared_examples 'makes_request' do + shared_examples 'cache busting request' do it 'makes an HTTP purging request' do method = http_method&.to_sym || :get stub_request(method, purge_url).to_return(status: 200) @@ -28,28 +28,28 @@ RSpec.describe CacheBuster do end context 'when using default options' do - include_examples 'makes_request' + it_behaves_like 'cache busting request' end context 'when specifying a secret header' do let(:secret_header) { 'X-Purge-Secret' } let(:secret) { SecureRandom.hex(20) } - include_examples 'makes_request' + it_behaves_like 'cache busting request' end context 'when specifying a PURGE method' do let(:http_method) { 'purge' } context 'when not using headers' do - include_examples 'makes_request' + it_behaves_like 'cache busting request' end context 'when specifying a secret header' do let(:secret_header) { 'X-Purge-Secret' } let(:secret) { SecureRandom.hex(20) } - include_examples 'makes_request' + it_behaves_like 'cache busting request' end end end diff --git a/spec/lib/fasp/request_spec.rb b/spec/lib/fasp/request_spec.rb index 5d81c09722..80d061dc61 100644 --- a/spec/lib/fasp/request_spec.rb +++ b/spec/lib/fasp/request_spec.rb @@ -44,14 +44,14 @@ RSpec.describe Fasp::Request do end describe '#get' do - include_examples 'a provider request', :get + it_behaves_like 'a provider request', :get end describe '#post' do - include_examples 'a provider request', :post + it_behaves_like 'a provider request', :post end describe '#delete' do - include_examples 'a provider request', :delete + it_behaves_like 'a provider request', :delete end end diff --git a/spec/lib/link_details_extractor_spec.rb b/spec/lib/link_details_extractor_spec.rb index cb072c4870..019a57cac5 100644 --- a/spec/lib/link_details_extractor_spec.rb +++ b/spec/lib/link_details_extractor_spec.rb @@ -118,7 +118,7 @@ RSpec.describe LinkDetailsExtractor do HTML - include_examples 'structured data' + it_behaves_like 'structured data' end context 'with the first tag is invalid JSON' do @@ -136,7 +136,7 @@ RSpec.describe LinkDetailsExtractor do HTML - include_examples 'structured data' + it_behaves_like 'structured data' end context 'with the first tag is null' do @@ -154,7 +154,7 @@ RSpec.describe LinkDetailsExtractor do HTML - include_examples 'structured data' + it_behaves_like 'structured data' end context 'with preceding block of unsupported LD+JSON' do @@ -194,7 +194,7 @@ RSpec.describe LinkDetailsExtractor do HTML - include_examples 'structured data' + it_behaves_like 'structured data' end context 'with unsupported in same block LD+JSON' do @@ -218,7 +218,7 @@ RSpec.describe LinkDetailsExtractor do HTML - include_examples 'structured data' + it_behaves_like 'structured data' end context 'with author names as array' do diff --git a/spec/lib/mastodon/cli/ip_blocks_spec.rb b/spec/lib/mastodon/cli/ip_blocks_spec.rb index 68d6b19859..d531b8b7a8 100644 --- a/spec/lib/mastodon/cli/ip_blocks_spec.rb +++ b/spec/lib/mastodon/cli/ip_blocks_spec.rb @@ -56,7 +56,7 @@ RSpec.describe Mastodon::CLI::IpBlocks do end context 'with valid IP addresses' do - include_examples 'ip address blocking' + it_behaves_like 'ip address blocking' end context 'when a specified IP address is already blocked' do @@ -84,7 +84,7 @@ RSpec.describe Mastodon::CLI::IpBlocks do .to('sign_up_requires_approval') end - include_examples 'ip address blocking' + it_behaves_like 'ip address blocking' end end @@ -101,25 +101,25 @@ RSpec.describe Mastodon::CLI::IpBlocks do context 'with --comment option' do let(:options) { { severity: 'no_access', comment: 'Spam' } } - include_examples 'ip address blocking' + it_behaves_like 'ip address blocking' end context 'with --duration option' do let(:options) { { severity: 'no_access', duration: 10.days } } - include_examples 'ip address blocking' + it_behaves_like 'ip address blocking' end context 'with "sign_up_requires_approval" severity' do let(:options) { { severity: 'sign_up_requires_approval' } } - include_examples 'ip address blocking' + it_behaves_like 'ip address blocking' end context 'with "sign_up_block" severity' do let(:options) { { severity: 'sign_up_block' } } - include_examples 'ip address blocking' + it_behaves_like 'ip address blocking' end context 'when a specified IP address fails to be blocked' do diff --git a/spec/lib/mastodon/redis_configuration_spec.rb b/spec/lib/mastodon/redis_configuration_spec.rb index e36dcfba0a..90dc20f6dd 100644 --- a/spec/lib/mastodon/redis_configuration_spec.rb +++ b/spec/lib/mastodon/redis_configuration_spec.rb @@ -207,18 +207,18 @@ RSpec.describe Mastodon::RedisConfiguration do end end - include_examples 'setting a different driver' - include_examples 'setting a namespace' - include_examples 'sentinel support' + it_behaves_like 'setting a different driver' + it_behaves_like 'setting a namespace' + it_behaves_like 'sentinel support' end describe '#sidekiq' do subject { redis_environment.sidekiq } - include_examples 'secondary configuration', 'SIDEKIQ' - include_examples 'setting a different driver' - include_examples 'setting a namespace' - include_examples 'sentinel support', 'SIDEKIQ' + it_behaves_like 'secondary configuration', 'SIDEKIQ' + it_behaves_like 'setting a different driver' + it_behaves_like 'setting a namespace' + it_behaves_like 'sentinel support', 'SIDEKIQ' end describe '#cache' do @@ -256,8 +256,8 @@ RSpec.describe Mastodon::RedisConfiguration do end end - include_examples 'secondary configuration', 'CACHE' - include_examples 'setting a different driver' - include_examples 'sentinel support', 'CACHE' + it_behaves_like 'secondary configuration', 'CACHE' + it_behaves_like 'setting a different driver' + it_behaves_like 'sentinel support', 'CACHE' end end diff --git a/spec/mailers/notification_mailer_spec.rb b/spec/mailers/notification_mailer_spec.rb index d97c01858d..25eb4ada26 100644 --- a/spec/mailers/notification_mailer_spec.rb +++ b/spec/mailers/notification_mailer_spec.rb @@ -35,7 +35,7 @@ RSpec.describe NotificationMailer do let(:notification) { Notification.create!(account: receiver.account, activity: mention) } let(:mail) { prepared_mailer_for(receiver.account).mention } - include_examples 'localized subject', 'notification_mailer.mention.subject', name: 'bob' + it_behaves_like 'localized subject', 'notification_mailer.mention.subject', name: 'bob' it 'renders the email' do expect(mail) @@ -47,8 +47,8 @@ RSpec.describe NotificationMailer do .and have_standard_headers('mention').for(receiver) end - include_examples 'delivery to non functional user' - include_examples 'delivery without status' + it_behaves_like 'delivery to non functional user' + it_behaves_like 'delivery without status' end describe 'follow' do @@ -56,7 +56,7 @@ RSpec.describe NotificationMailer do let(:notification) { Notification.create!(account: receiver.account, activity: follow) } let(:mail) { prepared_mailer_for(receiver.account).follow } - include_examples 'localized subject', 'notification_mailer.follow.subject', name: 'bob' + it_behaves_like 'localized subject', 'notification_mailer.follow.subject', name: 'bob' it 'renders the email' do expect(mail) @@ -66,7 +66,7 @@ RSpec.describe NotificationMailer do .and have_standard_headers('follow').for(receiver) end - include_examples 'delivery to non functional user' + it_behaves_like 'delivery to non functional user' end describe 'favourite' do @@ -74,7 +74,7 @@ RSpec.describe NotificationMailer do let(:notification) { Notification.create!(account: receiver.account, activity: favourite) } let(:mail) { prepared_mailer_for(own_status.account).favourite } - include_examples 'localized subject', 'notification_mailer.favourite.subject', name: 'bob' + it_behaves_like 'localized subject', 'notification_mailer.favourite.subject', name: 'bob' it 'renders the email' do expect(mail) @@ -86,8 +86,8 @@ RSpec.describe NotificationMailer do .and have_standard_headers('favourite').for(receiver) end - include_examples 'delivery to non functional user' - include_examples 'delivery without status' + it_behaves_like 'delivery to non functional user' + it_behaves_like 'delivery without status' end describe 'reblog' do @@ -95,7 +95,7 @@ RSpec.describe NotificationMailer do let(:notification) { Notification.create!(account: receiver.account, activity: reblog) } let(:mail) { prepared_mailer_for(own_status.account).reblog } - include_examples 'localized subject', 'notification_mailer.reblog.subject', name: 'bob' + it_behaves_like 'localized subject', 'notification_mailer.reblog.subject', name: 'bob' it 'renders the email' do expect(mail) @@ -107,8 +107,8 @@ RSpec.describe NotificationMailer do .and have_standard_headers('reblog').for(receiver) end - include_examples 'delivery to non functional user' - include_examples 'delivery without status' + it_behaves_like 'delivery to non functional user' + it_behaves_like 'delivery without status' end describe 'follow_request' do @@ -116,7 +116,7 @@ RSpec.describe NotificationMailer do let(:notification) { Notification.create!(account: receiver.account, activity: follow_request) } let(:mail) { prepared_mailer_for(receiver.account).follow_request } - include_examples 'localized subject', 'notification_mailer.follow_request.subject', name: 'bob' + it_behaves_like 'localized subject', 'notification_mailer.follow_request.subject', name: 'bob' it 'renders the email' do expect(mail) @@ -126,7 +126,7 @@ RSpec.describe NotificationMailer do .and have_standard_headers('follow_request').for(receiver) end - include_examples 'delivery to non functional user' + it_behaves_like 'delivery to non functional user' end private diff --git a/spec/mailers/user_mailer_spec.rb b/spec/mailers/user_mailer_spec.rb index 3f40e24c8b..6586d51a41 100644 --- a/spec/mailers/user_mailer_spec.rb +++ b/spec/mailers/user_mailer_spec.rb @@ -29,10 +29,10 @@ RSpec.describe UserMailer do .and(have_body_text(Rails.configuration.x.local_domain)) end - include_examples 'localized subject', - 'devise.mailer.confirmation_instructions.subject', - instance: Rails.configuration.x.local_domain - include_examples 'delivery to memorialized user' + it_behaves_like 'localized subject', + 'devise.mailer.confirmation_instructions.subject', + instance: Rails.configuration.x.local_domain + it_behaves_like 'delivery to memorialized user' end describe '#reconfirmation_instructions' do @@ -48,10 +48,10 @@ RSpec.describe UserMailer do .and(have_body_text(Rails.configuration.x.local_domain)) end - include_examples 'localized subject', - 'devise.mailer.confirmation_instructions.subject', - instance: Rails.configuration.x.local_domain - include_examples 'delivery to memorialized user' + it_behaves_like 'localized subject', + 'devise.mailer.confirmation_instructions.subject', + instance: Rails.configuration.x.local_domain + it_behaves_like 'delivery to memorialized user' end describe '#reset_password_instructions' do @@ -66,9 +66,9 @@ RSpec.describe UserMailer do .and(have_body_text('spec')) end - include_examples 'localized subject', - 'devise.mailer.reset_password_instructions.subject' - include_examples 'delivery to memorialized user' + it_behaves_like 'localized subject', + 'devise.mailer.reset_password_instructions.subject' + it_behaves_like 'delivery to memorialized user' end describe '#password_change' do @@ -82,9 +82,9 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.password_change.title'))) end - include_examples 'localized subject', - 'devise.mailer.password_change.subject' - include_examples 'delivery to memorialized user' + it_behaves_like 'localized subject', + 'devise.mailer.password_change.subject' + it_behaves_like 'delivery to memorialized user' end describe '#email_changed' do @@ -98,9 +98,9 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.email_changed.title'))) end - include_examples 'localized subject', - 'devise.mailer.email_changed.subject' - include_examples 'delivery to memorialized user' + it_behaves_like 'localized subject', + 'devise.mailer.email_changed.subject' + it_behaves_like 'delivery to memorialized user' end describe '#warning' do @@ -129,9 +129,9 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.webauthn_credential.deleted.title'))) end - include_examples 'localized subject', - 'devise.mailer.webauthn_credential.deleted.subject' - include_examples 'delivery to memorialized user' + it_behaves_like 'localized subject', + 'devise.mailer.webauthn_credential.deleted.subject' + it_behaves_like 'delivery to memorialized user' end describe '#suspicious_sign_in' do @@ -148,8 +148,8 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('user_mailer.suspicious_sign_in.explanation'))) end - include_examples 'localized subject', - 'user_mailer.suspicious_sign_in.subject' + it_behaves_like 'localized subject', + 'user_mailer.suspicious_sign_in.subject' end describe '#failed_2fa' do @@ -166,8 +166,8 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('user_mailer.failed_2fa.explanation'))) end - include_examples 'localized subject', - 'user_mailer.failed_2fa.subject' + it_behaves_like 'localized subject', + 'user_mailer.failed_2fa.subject' end describe '#appeal_approved' do @@ -204,7 +204,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.two_factor_enabled.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#two_factor_disabled' do @@ -217,7 +217,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.two_factor_disabled.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#webauthn_enabled' do @@ -230,7 +230,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.webauthn_enabled.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#webauthn_disabled' do @@ -243,7 +243,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.webauthn_disabled.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#two_factor_recovery_codes_changed' do @@ -256,7 +256,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.two_factor_recovery_codes_changed.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#webauthn_credential_added' do @@ -270,7 +270,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('devise.mailer.webauthn_credential.added.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#welcome' do @@ -289,7 +289,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('user_mailer.welcome.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#backup_ready' do @@ -303,7 +303,7 @@ RSpec.describe UserMailer do .and(have_body_text(I18n.t('user_mailer.backup_ready.explanation'))) end - include_examples 'delivery to memorialized user' + it_behaves_like 'delivery to memorialized user' end describe '#terms_of_service_changed' do diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 2baf1fd3db..06b7b78e64 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -3,8 +3,8 @@ require 'rails_helper' RSpec.describe Account do - include_examples 'Account::Search' - include_examples 'Reviewable' + it_behaves_like 'Account::Search' + it_behaves_like 'Reviewable' context 'with an account record' do subject { Fabricate(:account) } @@ -806,8 +806,8 @@ RSpec.describe Account do end end - include_examples 'AccountAvatar', :account - include_examples 'AccountHeader', :account + it_behaves_like 'AccountAvatar', :account + it_behaves_like 'AccountHeader', :account describe '#increment_count!' do subject { Fabricate(:account) } diff --git a/spec/models/custom_filter_spec.rb b/spec/models/custom_filter_spec.rb index 168cbb7c91..03914fa6b4 100644 --- a/spec/models/custom_filter_spec.rb +++ b/spec/models/custom_filter_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe CustomFilter do - include_examples 'Expireable' + it_behaves_like 'Expireable' describe 'Validations' do it { is_expected.to validate_presence_of(:title) } diff --git a/spec/models/invite_spec.rb b/spec/models/invite_spec.rb index 6363f77a64..12ea6897f9 100644 --- a/spec/models/invite_spec.rb +++ b/spec/models/invite_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Invite do - include_examples 'Expireable' + it_behaves_like 'Expireable' describe 'Associations' do it { is_expected.to belong_to(:user).inverse_of(:invites) } diff --git a/spec/models/ip_block_spec.rb b/spec/models/ip_block_spec.rb index 856d55be9d..18fb7ea136 100644 --- a/spec/models/ip_block_spec.rb +++ b/spec/models/ip_block_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe IpBlock do - include_examples 'Expireable' + it_behaves_like 'Expireable' describe 'Validations' do subject { Fabricate.build :ip_block } diff --git a/spec/models/login_activity_spec.rb b/spec/models/login_activity_spec.rb index 5b7935e8ba..bdee99c20f 100644 --- a/spec/models/login_activity_spec.rb +++ b/spec/models/login_activity_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe LoginActivity do - include_examples 'BrowserDetection' + it_behaves_like 'BrowserDetection' describe 'Associations' do it { is_expected.to belong_to(:user).required } diff --git a/spec/models/mute_spec.rb b/spec/models/mute_spec.rb index 33aa4f15dc..9cc4f74bea 100644 --- a/spec/models/mute_spec.rb +++ b/spec/models/mute_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Mute do - include_examples 'Expireable' + it_behaves_like 'Expireable' describe 'Associations' do it { is_expected.to belong_to(:account).required } diff --git a/spec/models/poll_spec.rb b/spec/models/poll_spec.rb index 3288119546..04efb03a0b 100644 --- a/spec/models/poll_spec.rb +++ b/spec/models/poll_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Poll do - include_examples 'Expireable' + it_behaves_like 'Expireable' describe '#reset_votes!' do let(:poll) { Fabricate :poll, cached_tallies: [2, 3], votes_count: 5, voters_count: 5 } diff --git a/spec/models/preview_card_provider_spec.rb b/spec/models/preview_card_provider_spec.rb index a3bd4f49ad..561c93d0b2 100644 --- a/spec/models/preview_card_provider_spec.rb +++ b/spec/models/preview_card_provider_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe PreviewCardProvider do - include_examples 'Reviewable' + it_behaves_like 'Reviewable' describe 'scopes' do let(:trendable_and_reviewed) { Fabricate(:preview_card_provider, trendable: true, reviewed_at: 5.days.ago) } diff --git a/spec/models/preview_card_trend_spec.rb b/spec/models/preview_card_trend_spec.rb index a5cb159af3..fb1f4643d5 100644 --- a/spec/models/preview_card_trend_spec.rb +++ b/spec/models/preview_card_trend_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe PreviewCardTrend do - include_examples 'RankedTrend' + it_behaves_like 'RankedTrend' describe 'Associations' do it { is_expected.to belong_to(:preview_card).required } diff --git a/spec/models/session_activation_spec.rb b/spec/models/session_activation_spec.rb index bb9b3c785f..63d22f0208 100644 --- a/spec/models/session_activation_spec.rb +++ b/spec/models/session_activation_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe SessionActivation do - include_examples 'BrowserDetection' + it_behaves_like 'BrowserDetection' describe '.active?' do subject { described_class.active?(id) } diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb index a197aaf1d2..8a87d35366 100644 --- a/spec/models/status_spec.rb +++ b/spec/models/status_spec.rb @@ -9,7 +9,7 @@ RSpec.describe Status do let(:bob) { Fabricate(:account, username: 'bob') } let(:other) { Fabricate(:status, account: bob, text: 'Skulls for the skull god! The enemy\'s gates are sideways!') } - include_examples 'Status::Visibility' + it_behaves_like 'Status::Visibility' describe '#local?' do it 'returns true when no remote URI is set' do diff --git a/spec/models/status_trend_spec.rb b/spec/models/status_trend_spec.rb index 50fb9b5f5c..28485ae4df 100644 --- a/spec/models/status_trend_spec.rb +++ b/spec/models/status_trend_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe StatusTrend do - include_examples 'RankedTrend' + it_behaves_like 'RankedTrend' describe 'Associations' do it { is_expected.to belong_to(:account).required } diff --git a/spec/models/tag_spec.rb b/spec/models/tag_spec.rb index a1cc6a064f..0831ac34b8 100644 --- a/spec/models/tag_spec.rb +++ b/spec/models/tag_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe Tag do - include_examples 'Reviewable' + it_behaves_like 'Reviewable' describe 'Validations' do describe 'name' do diff --git a/spec/models/tag_trend_spec.rb b/spec/models/tag_trend_spec.rb index 37b50686db..2ddedd6cbc 100644 --- a/spec/models/tag_trend_spec.rb +++ b/spec/models/tag_trend_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe TagTrend do - include_examples 'RankedTrend' + it_behaves_like 'RankedTrend' describe 'Associations' do it { is_expected.to belong_to(:tag).required } diff --git a/spec/policies/admin/fasp/provider_policy_spec.rb b/spec/policies/admin/fasp/provider_policy_spec.rb index 802760f2e9..3bdb51405d 100644 --- a/spec/policies/admin/fasp/provider_policy_spec.rb +++ b/spec/policies/admin/fasp/provider_policy_spec.rb @@ -25,10 +25,10 @@ RSpec.describe Admin::Fasp::ProviderPolicy, type: :policy do end permissions :index?, :create? do - include_examples 'admin only', Fasp::Provider + it_behaves_like 'admin only', Fasp::Provider end permissions :show?, :create?, :update?, :destroy? do - include_examples 'admin only', :fasp_provider + it_behaves_like 'admin only', :fasp_provider end end diff --git a/spec/requests/oauth/token_spec.rb b/spec/requests/oauth/token_spec.rb index 74f301c577..7be65e7ab3 100644 --- a/spec/requests/oauth/token_spec.rb +++ b/spec/requests/oauth/token_spec.rb @@ -29,7 +29,7 @@ RSpec.describe 'Managing OAuth Tokens' do access_grant.plaintext_token end - shared_examples 'returns originally requested scopes' do + shared_examples 'original scope request preservation' do it 'returns all scopes requested for the given code' do subject @@ -41,26 +41,26 @@ RSpec.describe 'Managing OAuth Tokens' do context 'with no scopes specified' do let(:scope) { nil } - include_examples 'returns originally requested scopes' + it_behaves_like 'original scope request preservation' end context 'with scopes specified' do context 'when the scopes were requested for this code' do let(:scope) { 'write' } - include_examples 'returns originally requested scopes' + it_behaves_like 'original scope request preservation' end context 'when the scope was not requested for the code' do let(:scope) { 'follow' } - include_examples 'returns originally requested scopes' + it_behaves_like 'original scope request preservation' end context 'when the scope does not belong to the application' do let(:scope) { 'push' } - include_examples 'returns originally requested scopes' + it_behaves_like 'original scope request preservation' end end end diff --git a/spec/requests/omniauth_callbacks_spec.rb b/spec/requests/omniauth_callbacks_spec.rb index e13a49ec62..c71d025f9f 100644 --- a/spec/requests/omniauth_callbacks_spec.rb +++ b/spec/requests/omniauth_callbacks_spec.rb @@ -130,14 +130,14 @@ RSpec.describe 'OmniAuth callbacks' do end describe '#openid_connect', if: ENV['OIDC_ENABLED'] == 'true' && ENV['OIDC_SCOPE'].present? do - include_examples 'omniauth provider callbacks', :openid_connect + it_behaves_like 'omniauth provider callbacks', :openid_connect end describe '#cas', if: ENV['CAS_ENABLED'] == 'true' do - include_examples 'omniauth provider callbacks', :cas + it_behaves_like 'omniauth provider callbacks', :cas end describe '#saml', if: ENV['SAML_ENABLED'] == 'true' do - include_examples 'omniauth provider callbacks', :saml + it_behaves_like 'omniauth provider callbacks', :saml end end diff --git a/spec/services/activitypub/fetch_remote_account_service_spec.rb b/spec/services/activitypub/fetch_remote_account_service_spec.rb index 175ac9cb61..7ebd3cdc70 100644 --- a/spec/services/activitypub/fetch_remote_account_service_spec.rb +++ b/spec/services/activitypub/fetch_remote_account_service_spec.rb @@ -68,7 +68,7 @@ RSpec.describe ActivityPub::FetchRemoteAccountService do expect(account.domain).to eq 'example.com' end - include_examples 'sets profile data' + it_behaves_like 'sets profile data' end context 'when WebFinger presents different domain than URI' do @@ -91,7 +91,7 @@ RSpec.describe ActivityPub::FetchRemoteAccountService do expect(account.domain).to eq 'iscool.af' end - include_examples 'sets profile data' + it_behaves_like 'sets profile data' end context 'when WebFinger returns a different URI' do diff --git a/spec/services/activitypub/fetch_remote_actor_service_spec.rb b/spec/services/activitypub/fetch_remote_actor_service_spec.rb index 9d031cb89b..975e0799dd 100644 --- a/spec/services/activitypub/fetch_remote_actor_service_spec.rb +++ b/spec/services/activitypub/fetch_remote_actor_service_spec.rb @@ -68,7 +68,7 @@ RSpec.describe ActivityPub::FetchRemoteActorService do expect(account.domain).to eq 'example.com' end - include_examples 'sets profile data' + it_behaves_like 'sets profile data' end context 'when WebFinger presents different domain than URI' do @@ -91,7 +91,7 @@ RSpec.describe ActivityPub::FetchRemoteActorService do expect(account.domain).to eq 'iscool.af' end - include_examples 'sets profile data' + it_behaves_like 'sets profile data' end context 'when WebFinger returns a different URI' do diff --git a/spec/services/bulk_import_row_service_spec.rb b/spec/services/bulk_import_row_service_spec.rb index b9af795a5d..0601261bdb 100644 --- a/spec/services/bulk_import_row_service_spec.rb +++ b/spec/services/bulk_import_row_service_spec.rb @@ -115,7 +115,7 @@ RSpec.describe BulkImportRowService do account.follow!(target_account) end - include_examples 'row import success and list addition' + it_behaves_like 'row import success and list addition' end context 'when the user already requested to follow the target account' do @@ -123,17 +123,17 @@ RSpec.describe BulkImportRowService do account.request_follow!(target_account) end - include_examples 'row import success and list addition' + it_behaves_like 'row import success and list addition' end context 'when the target account is neither followed nor requested' do - include_examples 'row import success and list addition' + it_behaves_like 'row import success and list addition' end context 'when the target account is the user themself' do let(:target_account) { account } - include_examples 'row import success and list addition' + it_behaves_like 'row import success and list addition' end def add_target_account_to_list @@ -153,7 +153,7 @@ RSpec.describe BulkImportRowService do end context 'when the list does not exist yet' do - include_examples 'common behavior' + it_behaves_like 'common behavior' end context 'when the list exists' do @@ -161,7 +161,7 @@ RSpec.describe BulkImportRowService do Fabricate(:list, account: account, title: list_name) end - include_examples 'common behavior' + it_behaves_like 'common behavior' it 'does not create a new list' do account.follow!(target_account) diff --git a/spec/services/delete_account_service_spec.rb b/spec/services/delete_account_service_spec.rb index 741ac340cf..da02d2bd59 100644 --- a/spec/services/delete_account_service_spec.rb +++ b/spec/services/delete_account_service_spec.rb @@ -71,7 +71,7 @@ RSpec.describe DeleteAccountService do let!(:remote_alice) { Fabricate(:account, inbox_url: 'https://alice.com/inbox', domain: 'alice.com', protocol: :activitypub) } let!(:remote_bob) { Fabricate(:account, inbox_url: 'https://bob.com/inbox', domain: 'bob.com', protocol: :activitypub) } - include_examples 'common behavior' do + it_behaves_like 'common behavior' do let(:account) { Fabricate(:account) } let(:local_follower) { Fabricate(:account) } @@ -88,7 +88,7 @@ RSpec.describe DeleteAccountService do stub_request(:post, account.inbox_url).to_return(status: 201) end - include_examples 'common behavior' do + it_behaves_like 'common behavior' do let(:account) { Fabricate(:account, inbox_url: 'https://bob.com/inbox', protocol: :activitypub, domain: 'bob.com') } let(:local_follower) { Fabricate(:account) } diff --git a/spec/services/suspend_account_service_spec.rb b/spec/services/suspend_account_service_spec.rb index c15c23ca30..2b1455e9a8 100644 --- a/spec/services/suspend_account_service_spec.rb +++ b/spec/services/suspend_account_service_spec.rb @@ -46,7 +46,7 @@ RSpec.describe SuspendAccountService do json['type'] == 'Update' && json['actor'] == actor_id && json['object']['id'] == actor_id && json['object']['suspended'] end - include_examples 'common behavior' do + it_behaves_like 'common behavior' do let!(:account) { Fabricate(:account) } let!(:remote_follower) { Fabricate(:account, uri: 'https://alice.com', inbox_url: 'https://alice.com/inbox', protocol: :activitypub, domain: 'alice.com') } let!(:remote_reporter) { Fabricate(:account, uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub, domain: 'bob.com') } @@ -72,7 +72,7 @@ RSpec.describe SuspendAccountService do json['type'] == 'Reject' && json['actor'] == ActivityPub::TagManager.instance.uri_for(followee) && json['object']['actor'] == account.uri end - include_examples 'common behavior' do + it_behaves_like 'common behavior' do let!(:account) { Fabricate(:account, domain: 'bob.com', uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } let!(:local_followee) { Fabricate(:account) } diff --git a/spec/services/unsuspend_account_service_spec.rb b/spec/services/unsuspend_account_service_spec.rb index 8d4882c37f..2410040062 100644 --- a/spec/services/unsuspend_account_service_spec.rb +++ b/spec/services/unsuspend_account_service_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' RSpec.describe UnsuspendAccountService do - shared_context 'with common context' do + shared_context 'when account is unsuspended' do subject { described_class.new.call(account) } let!(:local_follower) { Fabricate(:user, current_sign_in_at: 1.hour.ago).account } @@ -31,12 +31,13 @@ RSpec.describe UnsuspendAccountService do stub_request(:post, 'https://bob.com/inbox').to_return(status: 201) end + let!(:account) { Fabricate(:account) } + it 'does not change the “suspended” flag' do expect { subject }.to_not change(account, :suspended?) end - include_examples 'with common context' do - let!(:account) { Fabricate(:account) } + include_context 'when account is unsuspended' do let!(:remote_follower) { Fabricate(:account, uri: 'https://alice.com', inbox_url: 'https://alice.com/inbox', protocol: :activitypub, domain: 'alice.com') } let!(:remote_reporter) { Fabricate(:account, uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub, domain: 'bob.com') } @@ -65,8 +66,8 @@ RSpec.describe UnsuspendAccountService do end describe 'unsuspending a remote account' do - include_examples 'with common context' do - let!(:account) { Fabricate(:account, domain: 'bob.com', uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } + include_context 'when account is unsuspended' do + let!(:account) { Fabricate(:account, domain: 'bob.com', uri: 'https://bob.com', inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } let!(:resolve_account_service) { instance_double(ResolveAccountService) } before do diff --git a/spec/workers/import/row_worker_spec.rb b/spec/workers/import/row_worker_spec.rb index edb02cb391..f173d49706 100644 --- a/spec/workers/import/row_worker_spec.rb +++ b/spec/workers/import/row_worker_spec.rb @@ -8,95 +8,82 @@ RSpec.describe Import::RowWorker do let(:row) { Fabricate(:bulk_import_row, bulk_import: import) } describe '#perform' do - before do - allow(BulkImportRowService).to receive(:new).and_return(service_double) + before { allow(BulkImportRowService).to receive(:new).and_return(service_double) } + + shared_context 'when service succeeds' do + let(:service_double) { instance_double(BulkImportRowService, call: true) } + end + + shared_context 'when service fails' do + let(:service_double) { instance_double(BulkImportRowService, call: false) } + end + + shared_context 'when service errors' do + let(:service_double) { instance_double(BulkImportRowService) } + before { allow(service_double).to receive(:call).and_raise('dummy error') } end shared_examples 'clean failure' do - let(:service_double) { instance_double(BulkImportRowService, call: false) } - - it 'calls BulkImportRowService' do - subject.perform(row.id) - expect(service_double).to have_received(:call).with(row) - end - - it 'increases the number of processed items' do - expect { subject.perform(row.id) }.to(change { import.reload.processed_items }.by(+1)) - end - - it 'does not increase the number of imported items' do - expect { subject.perform(row.id) }.to_not(change { import.reload.imported_items }) - end - - it 'does not delete the row' do - subject.perform(row.id) - expect(BulkImportRow.exists?(row.id)).to be true + it 'calls service, increases processed items, preserves imported items, and keeps row' do + expect { subject.perform(row.id) } + .to change { import.reload.processed_items }.by(+1) + .and not_change { import.reload.imported_items } + .and(not_change { BulkImportRow.exists?(row.id) }.from(true)) + expect(service_double) + .to have_received(:call).with(row) end end shared_examples 'unclean failure' do - let(:service_double) { instance_double(BulkImportRowService) } - - before do - allow(service_double).to receive(:call) do - raise 'dummy error' - end - end - - it 'raises an error and does not change processed items count' do - expect { subject.perform(row.id) }.to raise_error(StandardError, 'dummy error').and(not_change { import.reload.processed_items }) - end - - it 'does not delete the row' do - expect { subject.perform(row.id) }.to raise_error(StandardError, 'dummy error').and(not_change { BulkImportRow.exists?(row.id) }) + it 'raises an error, preserves processed items, and keeps row' do + expect { subject.perform(row.id) } + .to raise_error(StandardError, 'dummy error') + .and(not_change { import.reload.processed_items }) + .and(not_change { BulkImportRow.exists?(row.id) }.from(true)) end end shared_examples 'clean success' do - let(:service_double) { instance_double(BulkImportRowService, call: true) } - - it 'calls BulkImportRowService' do - subject.perform(row.id) + it 'calls service, increases processed items, increases imported items, and deletes row' do + expect { subject.perform(row.id) } + .to change { import.reload.processed_items }.by(+1) + .and change { import.reload.imported_items }.by(+1) + .and(change { BulkImportRow.exists?(row.id) }.from(true).to(false)) expect(service_double).to have_received(:call).with(row) end - - it 'increases the number of processed items' do - expect { subject.perform(row.id) }.to(change { import.reload.processed_items }.by(+1)) - end - - it 'increases the number of imported items' do - expect { subject.perform(row.id) }.to(change { import.reload.imported_items }.by(+1)) - end - - it 'deletes the row' do - expect { subject.perform(row.id) }.to change { BulkImportRow.exists?(row.id) }.from(true).to(false) - end end context 'when there are multiple rows to process' do let(:import) { Fabricate(:bulk_import, total_items: 2, processed_items: 0, imported_items: 0, state: :in_progress) } context 'with a clean failure' do - include_examples 'clean failure' + include_context 'when service fails' + it_behaves_like 'clean failure' it 'does not mark the import as finished' do - expect { subject.perform(row.id) }.to_not(change { import.reload.state.to_sym }) + expect { subject.perform(row.id) } + .to_not(change { import.reload.state.to_sym }) end end context 'with an unclean failure' do - include_examples 'unclean failure' + include_context 'when service errors' + it_behaves_like 'unclean failure' it 'does not mark the import as finished' do - expect { subject.perform(row.id) }.to raise_error(StandardError).and(not_change { import.reload.state.to_sym }) + expect { subject.perform(row.id) } + .to raise_error(StandardError) + .and(not_change { import.reload.state.to_sym }) end end context 'with a clean success' do - include_examples 'clean success' + include_context 'when service succeeds' + it_behaves_like 'clean success' it 'does not mark the import as finished' do - expect { subject.perform(row.id) }.to_not(change { import.reload.state.to_sym }) + expect { subject.perform(row.id) } + .to_not(change { import.reload.state.to_sym }) end end end @@ -105,21 +92,28 @@ RSpec.describe Import::RowWorker do let(:import) { Fabricate(:bulk_import, total_items: 2, processed_items: 1, imported_items: 0, state: :in_progress) } context 'with a clean failure' do - include_examples 'clean failure' + include_context 'when service fails' + it_behaves_like 'clean failure' it 'marks the import as finished' do - expect { subject.perform(row.id) }.to change { import.reload.state.to_sym }.from(:in_progress).to(:finished) + expect { subject.perform(row.id) } + .to change { import.reload.state.to_sym }.from(:in_progress).to(:finished) end end - # NOTE: sidekiq retry logic may be a bit too difficult to test, so leaving this blind spot for now - it_behaves_like 'unclean failure' + context 'with an unclean failure' do + # NOTE: sidekiq retry logic may be a bit too difficult to test, so leaving this blind spot for now + include_context 'when service errors' + it_behaves_like 'unclean failure' + end context 'with a clean success' do - include_examples 'clean success' + include_context 'when service succeeds' + it_behaves_like 'clean success' it 'marks the import as finished' do - expect { subject.perform(row.id) }.to change { import.reload.state.to_sym }.from(:in_progress).to(:finished) + expect { subject.perform(row.id) } + .to change { import.reload.state.to_sym }.from(:in_progress).to(:finished) end end end diff --git a/spec/workers/move_worker_spec.rb b/spec/workers/move_worker_spec.rb index a24de57e27..d9cf4a1686 100644 --- a/spec/workers/move_worker_spec.rb +++ b/spec/workers/move_worker_spec.rb @@ -113,27 +113,27 @@ RSpec.describe MoveWorker do end shared_examples 'common tests' do - include_examples 'user note handling' - include_examples 'block and mute handling' - include_examples 'followers count handling' - include_examples 'lists handling' + it_behaves_like 'user note handling' + it_behaves_like 'block and mute handling' + it_behaves_like 'followers count handling' + it_behaves_like 'lists handling' context 'when a local user already follows both source and target' do before do local_follower.request_follow!(target_account) end - include_examples 'user note handling' - include_examples 'block and mute handling' - include_examples 'followers count handling' - include_examples 'lists handling' + it_behaves_like 'user note handling' + it_behaves_like 'block and mute handling' + it_behaves_like 'followers count handling' + it_behaves_like 'lists handling' context 'when the local user already has the target in a list' do before do list.accounts << target_account end - include_examples 'lists handling' + it_behaves_like 'lists handling' end end @@ -142,17 +142,17 @@ RSpec.describe MoveWorker do local_follower.follow!(target_account) end - include_examples 'user note handling' - include_examples 'block and mute handling' - include_examples 'followers count handling' - include_examples 'lists handling' + it_behaves_like 'user note handling' + it_behaves_like 'block and mute handling' + it_behaves_like 'followers count handling' + it_behaves_like 'lists handling' context 'when the local user already has the target in a list' do before do list.accounts << target_account end - include_examples 'lists handling' + it_behaves_like 'lists handling' end end end @@ -164,7 +164,7 @@ RSpec.describe MoveWorker do expect(UnfollowFollowWorker).to have_enqueued_sidekiq_job(local_follower.id, source_account.id, target_account.id, false) end - include_examples 'common tests' + it_behaves_like 'common tests' end context 'when target account is local' do @@ -175,7 +175,7 @@ RSpec.describe MoveWorker do expect(UnfollowFollowWorker).to have_enqueued_sidekiq_job(local_follower.id, source_account.id, target_account.id, true) end - include_examples 'common tests' + it_behaves_like 'common tests' end context 'when both target and source accounts are local' do @@ -187,7 +187,7 @@ RSpec.describe MoveWorker do expect(local_follower.following?(target_account)).to be true end - include_examples 'common tests' + it_behaves_like 'common tests' it 'does not allow the moved account to follow themselves' do source_account.follow!(target_account) diff --git a/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb b/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb index 28a4176193..55b66629e0 100644 --- a/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb +++ b/spec/workers/scheduler/accounts_statuses_cleanup_scheduler_spec.rb @@ -108,7 +108,7 @@ RSpec.describe Scheduler::AccountsStatusesCleanupScheduler do context 'when the budget is lower than the number of toots to delete' do it 'deletes the appropriate statuses' do - expect(Status.count).to be > (subject.compute_budget) # Data check + expect(Status.count).to be > subject.compute_budget # Data check expect { subject.perform } .to change(Status, :count).by(-subject.compute_budget) # Cleanable statuses From b1b949f16c680937db9316c3a03421e38ec50425 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 08:44:41 +0200 Subject: [PATCH 035/349] New Crowdin Translations (automated) (#34546) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/lv.json | 137 +++++++++++++++--------- app/javascript/mastodon/locales/ru.json | 20 ++-- config/locales/ru.yml | 10 +- 3 files changed, 97 insertions(+), 70 deletions(-) diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index e1e3ee98ab..cc008e06a1 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -6,10 +6,10 @@ "about.domain_blocks.preamble": "Mastodon parasti ļauj apskatīt saturu un mijiedarboties ar lietotājiem no jebkura cita fediversa servera. Šie ir izņēmumi, kas veikti tieši šajā serverī.", "about.domain_blocks.silenced.explanation": "Parasti tu neredzēsi profilus un saturu no šī servera, ja vien tu nepārprotami izvēlēsies to pārskatīt vai sekot.", "about.domain_blocks.silenced.title": "Ierobežotie", - "about.domain_blocks.suspended.explanation": "Nekādi dati no šī servera netiks apstrādāti, uzglabāti vai apmainīti, padarot neiespējamu mijiedarbību vai saziņu ar lietotājiem no šī servera.", + "about.domain_blocks.suspended.explanation": "Nekādi dati no šī servera netiks apstrādāti, uzglabāti vai apmainīti, padarot neiespējamu jebkādu mijiedarbību vai saziņu ar šī servera lietotājiem.", "about.domain_blocks.suspended.title": "Apturētie", "about.not_available": "Šī informācija nav padarīta pieejama šajā serverī.", - "about.powered_by": "Decentralizētu sociālo tīklu nodrošina {mastodon}", + "about.powered_by": "Decentralizētu sabiedrisko tīklu darbina {mastodon}", "about.rules": "Servera noteikumi", "account.account_note_header": "Personīga piezīme", "account.add_or_remove_from_list": "Pievienot vai Noņemt no sarakstiem", @@ -22,12 +22,14 @@ "account.cancel_follow_request": "Atsaukt sekošanas pieprasījumu", "account.copy": "Ievietot saiti uz profilu starpliktuvē", "account.direct": "Pieminēt @{name} privāti", - "account.disable_notifications": "Pārtraukt man paziņot, kad @{name} publicē ierakstu", + "account.disable_notifications": "Pārtraukt man paziņot, kad @{name} izveido ierakstu", "account.edit_profile": "Labot profilu", - "account.enable_notifications": "Paziņot man, kad @{name} publicē ierakstu", + "account.enable_notifications": "Paziņot man, kad @{name} izveido ierakstu", "account.endorse": "Izcelts profilā", - "account.featured_tags.last_status_at": "Beidzamā ziņa {date}", - "account.featured_tags.last_status_never": "Ierakstu nav", + "account.featured.hashtags": "Tēmturi", + "account.featured.posts": "Ieraksti", + "account.featured_tags.last_status_at": "Pēdējais ieraksts {date}", + "account.featured_tags.last_status_never": "Nav ierakstu", "account.follow": "Sekot", "account.follow_back": "Sekot atpakaļ", "account.followers": "Sekotāji", @@ -36,6 +38,7 @@ "account.following": "Seko", "account.following_counter": "{count, plural, one {seko {counter}} other {seko {counter}}}", "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.", + "account.follows_you": "Seko tev", "account.go_to_profile": "Doties uz profilu", "account.hide_reblogs": "Paslēpt @{name} pastiprinātos ierakstus", "account.in_memoriam": "Piemiņai.", @@ -47,17 +50,19 @@ "account.mention": "Pieminēt @{name}", "account.moved_to": "{name} norādīja, ka viņu jaunais konts tagad ir:", "account.mute": "Apklusināt @{name}", - "account.mute_notifications_short": "Izslēgt paziņojumu skaņu", + "account.mute_notifications_short": "Apklusināt paziņojumus", "account.mute_short": "Apklusināt", "account.muted": "Apklusināts", + "account.mutual": "Jūs sekojat viens otram", "account.no_bio": "Apraksts nav sniegts.", "account.open_original_page": "Atvērt pirmavota lapu", "account.posts": "Ieraksti", "account.posts_with_replies": "Ieraksti un atbildes", "account.remove_from_followers": "Dzēst sekotāju {name}", - "account.report": "Sūdzēties par @{name}", + "account.report": "Ziņot par @{name}", "account.requested": "Gaida apstiprinājumu. Nospied, lai atceltu sekošanas pieparasījumu", "account.requested_follow": "{name} nosūtīja Tev sekošanas pieprasījumu", + "account.requests_to_follow_you": "Sekošanas pieprasījumi", "account.share": "Dalīties ar @{name} profilu", "account.show_reblogs": "Parādīt @{name} pastiprinātos ierakstus", "account.statuses_counter": "{count, plural, zero {{counter} ierakstu} one {{counter} ieraksts} other {{counter} ieraksti}}", @@ -67,7 +72,7 @@ "account.unendorse": "Neizcelt profilā", "account.unfollow": "Pārstāt sekot", "account.unmute": "Noņemt apklusinājumu @{name}", - "account.unmute_notifications_short": "Ieslēgt paziņojumu skaņu", + "account.unmute_notifications_short": "Atcelet paziņojumu apklusināšanu", "account.unmute_short": "Noņemt apklusinājumu", "account_note.placeholder": "Noklikšķini, lai pievienotu piezīmi", "admin.dashboard.daily_retention": "Lietotāju saglabāšanas rādītājs dienā pēc reģistrēšanās", @@ -91,12 +96,13 @@ "alt_text_modal.describe_for_people_with_visual_impairments": "Aprakstīt šo cilvēkiem ar redzes traucējumiem…", "alt_text_modal.done": "Gatavs", "announcement.announcement": "Paziņojums", + "annual_report.summary.archetype.lurker": "Glūņa", "annual_report.summary.archetype.oracle": "Orākuls", "annual_report.summary.archetype.replier": "Sabiedriskais tauriņš", "annual_report.summary.followers.followers": "sekotāji", "annual_report.summary.followers.total": "pavisam {count}", "annual_report.summary.here_it_is": "Šeit ir {year}. gada pārskats:", - "annual_report.summary.highlighted_post.by_favourites": "izlasēs visvairāk ievietotais ieraksts", + "annual_report.summary.highlighted_post.by_favourites": "izlasēm visvairāk pievienotais ieraksts", "annual_report.summary.highlighted_post.by_reblogs": "vispastiprinātākais ieraksts", "annual_report.summary.highlighted_post.by_replies": "ieraksts ar vislielāko atbilžu skaitu", "annual_report.summary.highlighted_post.possessive": "{name}", @@ -109,16 +115,17 @@ "annual_report.summary.thanks": "Paldies, ka esi daļa no Mastodon!", "attachments_list.unprocessed": "(neapstrādāti)", "audio.hide": "Slēpt audio", - "block_modal.remote_users_caveat": "Mēs vaicāsim serverim {domain} ņemt vērā Tavu lēmumu. Tomēr atbilstība nav nodrošināta, jo atsevišķi serveri var apstrādāt bloķēšanu citādi. Publiski ieraksti joprojām var būt redzami lietotājiem, kuri nav pieteikušies.", + "block_modal.remote_users_caveat": "Mēs vaicāsim serverim {domain} ņemt vērā Tavu lēmumu. Tomēr atbilstība nav nodrošināta, jo atsevišķi serveri liegšanu var apstrādāt citādi. Publiski ieraksti joprojām var būt redzami lietotājiem, kuri nav pieteikušies.", "block_modal.show_less": "Rādīt mazāk", "block_modal.show_more": "Parādīt mazāk", "block_modal.they_cant_mention": "Nevar Tevi pieminēt vai sekot Tev.", - "block_modal.they_cant_see_posts": "Nevar redzēt Tavus ierakstus, un Tu neredzēsi lietotāja.", + "block_modal.they_cant_see_posts": "Lietotajs nevarēs redzēt Tavus ierakstus, un Tu neredzēsi lietotāja.", "block_modal.title": "Bloķēt lietotāju?", + "block_modal.you_wont_see_mentions": "Tu neredzēsi ierakstus, kuros ir minēts šis lietotājs.", "boost_modal.combo": "Nospied {combo}, lai nākamreiz šo izlaistu", "boost_modal.reblog": "Pastiprināt ierakstu?", "boost_modal.undo_reblog": "Atcelt ieraksta pastiprināšanu?", - "bundle_column_error.copy_stacktrace": "Kopēt kļūdu ziņojumu", + "bundle_column_error.copy_stacktrace": "Ievietot kļūdu ziņojumu starpliktuvē", "bundle_column_error.error.body": "Pieprasīto lapu nevarēja atveidot. Tas varētu būt saistīts ar kļūdu mūsu kodā, vai tā ir pārlūkprogrammas saderības problēma.", "bundle_column_error.error.title": "Ak vai!", "bundle_column_error.network.body": "Mēģinot ielādēt šo lapu, radās kļūda. Tas varētu būt saistīts ar īslaicīgu interneta savienojuma vai šī servera problēmu.", @@ -167,9 +174,9 @@ "community.column_settings.remote_only": "Tikai attālinātie", "compose.language.change": "Mainīt valodu", "compose.language.search": "Meklēt valodas...", - "compose.published.body": "Ieraksts izveidots.", + "compose.published.body": "Ieraksts pievienots.", "compose.published.open": "Atvērt", - "compose.saved.body": "Ziņa saglabāta.", + "compose.saved.body": "Ieraksts saglabāts.", "compose_form.direct_message_warning_learn_more": "Uzzināt vairāk", "compose_form.encryption_warning": "Mastodon ieraksti nav pilnībā šifrēti. Nedalies ar jebkādu jūtīgu informāciju caur Mastodon!", "compose_form.hashtag_warning": "Šis ieraksts netiks uzrādīts nevienā tēmturī, jo tas nav redzams visiem. Tikai visiem redzamos ierakstus var meklēt pēc tēmtura.", @@ -193,7 +200,7 @@ "confirmation_modal.cancel": "Atcelt", "confirmations.block.confirm": "Bloķēt", "confirmations.delete.confirm": "Dzēst", - "confirmations.delete.message": "Vai tiešām vēlies dzēst šo ierakstu?", + "confirmations.delete.message": "Vai tiešām izdzēst šo ierakstu?", "confirmations.delete.title": "Izdzēst ierakstu?", "confirmations.delete_list.confirm": "Dzēst", "confirmations.delete_list.message": "Vai tiešām neatgriezeniski izdzēst šo sarakstu?", @@ -206,14 +213,15 @@ "confirmations.follow_to_list.confirm": "Sekot un pievienot sarakstam", "confirmations.follow_to_list.message": "Ir jāseko {name}, lai pievienotu sarakstam.", "confirmations.follow_to_list.title": "Sekot lietotājam?", - "confirmations.logout.confirm": "Iziet", - "confirmations.logout.message": "Vai tiešām vēlies izrakstīties?", + "confirmations.logout.confirm": "Atteikties", + "confirmations.logout.message": "Vai tiešām atteikties?", "confirmations.logout.title": "Atteikties?", + "confirmations.missing_alt_text.message": "Tavs ieraksts satur informācijas nesējus bez paskaidrojošā teksta. Aprakstu pievienošana palīdz padarīt saturu pieejamāku vairāk cilvēku.", "confirmations.missing_alt_text.secondary": "Vienalga iesūtīt", "confirmations.mute.confirm": "Apklusināt", "confirmations.redraft.confirm": "Dzēst un pārrakstīt", "confirmations.redraft.message": "Vai tiešām vēlies izdzēst šo ierakstu un veidot jaunu tā uzmetumu? Pievienošana izlasēs un pastiprinājumi tiks zaudēti, un sākotnējā ieraksta atbildes paliks bez saiknes ar to.", - "confirmations.redraft.title": "Dzēst un rakstīt vēlreiz?", + "confirmations.redraft.title": "Izdzēst un rakstīt ierakstu no jauna?", "confirmations.remove_from_followers.confirm": "Dzēst sekotāju", "confirmations.remove_from_followers.message": "{name} pārstās sekot jums. Vai tiešām vēlaties turpināt?", "confirmations.remove_from_followers.title": "Vai dzēst sekotāju?", @@ -241,14 +249,23 @@ "disabled_account_banner.text": "Tavs konts {disabledAccount} pašlaik ir atspējots.", "dismissable_banner.community_timeline": "Šie ir jaunākie publiskie ieraksti no cilvēkiem, kuru konti ir mitināti {domain}.", "dismissable_banner.dismiss": "Atcelt", + "dismissable_banner.explore_links": "Šie jaunumi šodien Fediversā tiek visvairāk kopīgoti. Jaunākas ziņas, kuras pievienoši vairāki dažādi cilvēki, tiek novietotas augstāk.", + "dismissable_banner.public_timeline": "Šie ir jaunākie Fediverse lietotāju publiskie ieraksti, kuriem {domain} seko cilvēki.", "domain_block_modal.block": "Bloķēt serveri", "domain_block_modal.block_account_instead": "Tā vietā liegt @{name}", "domain_block_modal.they_cant_follow": "Neviens šajā serverī nevar Tev sekot.", "domain_block_modal.they_wont_know": "Viņi nezinās, ka tikuši bloķēti.", "domain_block_modal.title": "Bloķēt domēnu?", + "domain_pill.activitypub_lets_connect": "Tas ļauj savienoties un mijiedarboties ar cilvēkiem ne tikai no Mastodon, bet arī starp dažādām sabiedriskajām lietotnēm.", + "domain_pill.activitypub_like_language": "ActivityPub ir kā valoda, kurā Mastodon sazināš ar citiem sabiedriskajiem tīkliem.", "domain_pill.server": "Serveris", + "domain_pill.their_handle": "Turis:", "domain_pill.username": "Lietotājvārds", - "embed.instructions": "Iestrādā šo ziņu savā mājaslapā, kopējot zemāk redzamo kodu.", + "domain_pill.whats_in_a_handle": "Kas ir turī?", + "domain_pill.who_they_are": "Tā kā turi norāda, kas kāds ir un kur viņi ir atrodami, Tu vari mijiedarboties ar cilvēkiem viscaur sabiedriskajā tīklā no .", + "domain_pill.who_you_are": "Tā kā Tavs turis norāda, kas Tu esi un kur atrodies, cilvēki var mijiedarboties ar Tevi viscaur sabiedriskajā tīklā no .", + "domain_pill.your_handle": "Tavs turis:", + "embed.instructions": "Iekļauj šo ierakstu savā tīmekļvietnē, ievietojot zemāk redzamo kodu starpliktuvē!", "embed.preview": "Tas izskatīsies šādi:", "emoji_button.activity": "Aktivitāte", "emoji_button.clear": "Notīrīt", @@ -267,20 +284,20 @@ "emoji_button.travel": "Ceļošana un vietas", "empty_column.account_hides_collections": "Šis lietotājs ir izvēlējies nedarīt šo informāciju pieejamu", "empty_column.account_suspended": "Konta darbība ir apturēta", - "empty_column.account_timeline": "Šeit ziņojumu nav!", + "empty_column.account_timeline": "Šeit nav ierakstu.", "empty_column.account_unavailable": "Profils nav pieejams", "empty_column.blocks": "Pašreiz tu neesi nevienu bloķējis.", "empty_column.bookmarked_statuses": "Pašlaik Tev nav neviena grāmatzīmēs pievienota ieraksta. Kad tādu pievienosi, tas parādīsies šeit.", - "empty_column.community": "Vietējā laika līnija ir tukša. Uzraksti kaut ko publiski, lai viss notiktu!", + "empty_column.community": "Vietējā laika līnija ir tukša. Uzraksti kaut ko publiski, lai iekustinātu visu!", "empty_column.direct": "Tev vēl nav privātu pieminēšanu. Kad Tu nosūtīsi vai saņemsi kādu, tā pārādīsies šeit.", "empty_column.domain_blocks": "Vēl nav neviena bloķēta domēna.", "empty_column.explore_statuses": "Pašlaik nav nekā aktuāla. Ieskaties šeit vēlāk!", - "empty_column.favourited_statuses": "Tev vēl nav iecienītāko ierakstu. Kad pievienosi kādu izlasei, tas tiks parādīts šeit.", - "empty_column.favourites": "Šo ziņu neviens vēl nav pievienojis izlasei. Kad kāds to izdarīs, tas parādīsies šeit.", + "empty_column.favourited_statuses": "Tev vēl nav izlasei pievienotu ierakstu. Kad pievienosi kādu, tas tiks parādīts šeit.", + "empty_column.favourites": "Šo ierakstu vēl neviens nav pievienojis izlasei. Kad kāds to izdarīs, šeit parādīsies ieraksti.", "empty_column.follow_requests": "Šobrīd Tev nav sekošanas pieprasījumu. Kad saņemsi kādu, tas parādīsies šeit.", "empty_column.followed_tags": "Tu vēl neseko nevienam tēmturim. Kad to izdarīsi, tie tiks parādīti šeit.", "empty_column.hashtag": "Ar šo tēmturi nekas nav atrodams.", - "empty_column.home": "Tava mājas laikjosla ir tukša. Seko vairāk cilvēkiem, lai to piepildītu!", + "empty_column.home": "Tava mājas laika līnija ir tukša. Seko vairāk cilvēkiem, lai to piepildītu!", "empty_column.list": "Pagaidām šajā sarakstā nekā nav. Kad šī saraksta dalībnieki ievietos jaunus ierakstus, tie parādīsies šeit.", "empty_column.mutes": "Neviens lietotājs vēl nav apklusināts.", "empty_column.notifications": "Tev vēl nav paziņojumu. Kad citi cilvēki ar Tevi mijiedarbosies, Tu to redzēsi šeit.", @@ -303,15 +320,15 @@ "filter_modal.added.review_and_configure": "Lai pārskatītu un tālāk konfigurētu šo filtru kategoriju, dodies uz {settings_link}.", "filter_modal.added.review_and_configure_title": "Filtra iestatījumi", "filter_modal.added.settings_link": "iestatījumu lapu", - "filter_modal.added.short_explanation": "Šī ziņa ir pievienota šai filtra kategorijai: {title}.", + "filter_modal.added.short_explanation": "Šis ieraksts tika pievienots šai atlasīšanas kategorijai: {title}.", "filter_modal.added.title": "Filtrs pievienots!", "filter_modal.select_filter.context_mismatch": "neattiecas uz šo kontekstu", "filter_modal.select_filter.expired": "beidzies", "filter_modal.select_filter.prompt_new": "Jauna kategorija: {name}", "filter_modal.select_filter.search": "Meklēt vai izveidot", "filter_modal.select_filter.subtitle": "Izmanto esošu kategoriju vai izveido jaunu", - "filter_modal.select_filter.title": "Filtrēt šo ziņu", - "filter_modal.title.status": "Filtrēt ziņu", + "filter_modal.select_filter.title": "Atlasīt šo ierakstu", + "filter_modal.title.status": "Atlasīt ziņu", "filtered_notifications_banner.title": "Filtrētie paziņojumi", "firehose.all": "Visi", "firehose.local": "Šis serveris", @@ -368,12 +385,21 @@ "home.pending_critical_update.title": "Ir pieejams būtisks drošības atjauninājums.", "home.show_announcements": "Rādīt paziņojumus", "ignore_notifications_modal.ignore": "Neņemt vērā paziņojumus", + "ignore_notifications_modal.not_following_title": "Neņemt vērā paziņojumus no cilvēkiem, kuriem neseko?", + "interaction_modal.action.favourite": "Lai turpinātu, nepieciešams pievienot sava konta izlasei.", + "interaction_modal.action.follow": "Lai turpinātu, nepieciešams sekot no sava konta.", + "interaction_modal.action.reblog": "Lai turpinātu, nepieciešams pastiprināt no sava konta.", + "interaction_modal.action.reply": "Lai turpinātu, nepieciešams atbildēt no sava konta.", + "interaction_modal.action.vote": "Lai turpinātu, nepieciešams balsot no sava konta.", + "interaction_modal.go": "Aiziet", + "interaction_modal.no_account_yet": "Vēl nav konta?", "interaction_modal.on_another_server": "Citā serverī", "interaction_modal.on_this_server": "Šajā serverī", - "interaction_modal.title.favourite": "Pievienot {name} ziņu izlasei", + "interaction_modal.title.favourite": "Pievienot {name} ierakstu izlasei", "interaction_modal.title.follow": "Sekot {name}", "interaction_modal.title.reblog": "Pastiprināt {name} ierakstu", - "interaction_modal.title.reply": "Atbildēt uz {name} ziņu", + "interaction_modal.title.reply": "Atbildēt uz {name} ierakstu", + "interaction_modal.username_prompt": "Piem., {example}", "intervals.full.days": "{number, plural, one {# diena} other {# dienas}}", "intervals.full.hours": "{number, plural, one {# stunda} other {# stundas}}", "intervals.full.minutes": "{number, plural, one {# minūte} other {# minūtes}}", @@ -385,8 +411,8 @@ "keyboard_shortcuts.description": "Apraksts", "keyboard_shortcuts.direct": "lai atvērtu privāto pieminējumu sleju", "keyboard_shortcuts.down": "Pārvietoties lejup sarakstā", - "keyboard_shortcuts.enter": "Atvērt ziņu", - "keyboard_shortcuts.favourite": "Pievienot izlasei", + "keyboard_shortcuts.enter": "Atvērt ierakstu", + "keyboard_shortcuts.favourite": "Pievienot ierakstu izlasei", "keyboard_shortcuts.favourites": "Atvērt izlašu sarakstu", "keyboard_shortcuts.federated": "Atvērt apvienoto laika līniju", "keyboard_shortcuts.heading": "Īsinājumtaustiņi", @@ -399,7 +425,7 @@ "keyboard_shortcuts.my_profile": "Atvērt savu profilu", "keyboard_shortcuts.notifications": "Atvērt paziņojumu kolonnu", "keyboard_shortcuts.open_media": "Atvērt multividi", - "keyboard_shortcuts.pinned": "Atvērt piesprausto ziņu sarakstu", + "keyboard_shortcuts.pinned": "Atvērt piesprausto ierakstu sarakstu", "keyboard_shortcuts.profile": "Atvērt autora profilu", "keyboard_shortcuts.reply": "Atbildēt", "keyboard_shortcuts.requests": "Atvērt sekošanas pieprasījumu sarakstu", @@ -408,7 +434,7 @@ "keyboard_shortcuts.start": "Atvērt kolonnu “Darba sākšana”", "keyboard_shortcuts.toggle_hidden": "Rādīt/slēpt tekstu aiz satura brīdinājuma", "keyboard_shortcuts.toggle_sensitivity": "Rādīt/slēpt multividi", - "keyboard_shortcuts.toot": "Sākt jaunu ziņu", + "keyboard_shortcuts.toot": "Uzsākt jaunu ierakstu", "keyboard_shortcuts.unfocus": "Atfokusēt veidojamā teksta/meklēšanas lauku", "keyboard_shortcuts.up": "Pārvietoties augšup sarakstā", "lightbox.close": "Aizvērt", @@ -444,7 +470,7 @@ "navigation_bar.blocks": "Bloķētie lietotāji", "navigation_bar.bookmarks": "Grāmatzīmes", "navigation_bar.community_timeline": "Vietējā laika līnija", - "navigation_bar.compose": "Veidot jaunu ziņu", + "navigation_bar.compose": "Izveidot jaunu ierakstu", "navigation_bar.direct": "Privātas pieminēšanas", "navigation_bar.discover": "Atklāt", "navigation_bar.domain_blocks": "Bloķētie domēni", @@ -460,15 +486,17 @@ "navigation_bar.mutes": "Apklusinātie lietotāji", "navigation_bar.opened_in_classic_interface": "Ieraksti, konti un citas noteiktas lapas pēc noklusējuma tiek atvērtas klasiskajā tīmekļa saskarnē.", "navigation_bar.personal": "Personīgie", - "navigation_bar.pins": "Piespraustās ziņas", + "navigation_bar.pins": "Piespraustie ieraksti", "navigation_bar.preferences": "Iestatījumi", "navigation_bar.public_timeline": "Apvienotā laika līnija", "navigation_bar.search": "Meklēt", "navigation_bar.security": "Drošība", "not_signed_in_indicator.not_signed_in": "Ir jāpiesakās, lai piekļūtu šim resursam.", "notification.admin.report": "{name} ziņoja par {target}", + "notification.admin.report_account": "{name} ziņoja par {count, plural, one {# ierakstu} other {# ierakstiem}} no {target} ar iemeslu: {category}", + "notification.admin.report_statuses": "{name} ziņoja par {target} ar iemeslu: {category}", "notification.admin.sign_up": "{name} pierakstījās", - "notification.favourite": "{name} pievienoja tavu ziņu izlasei", + "notification.favourite": "{name} pievienoja izlasei Tavu ierakstu", "notification.follow": "{name} uzsāka Tev sekot", "notification.follow_request": "{name} nosūtīja Tev sekošanas pieprasījumu", "notification.moderation-warning.learn_more": "Uzzināt vairāk", @@ -484,7 +512,7 @@ "notification.reblog": "{name} pastiprināja Tavu ierakstu", "notification.relationships_severance_event": "Zaudēti savienojumi ar {name}", "notification.relationships_severance_event.learn_more": "Uzzināt vairāk", - "notification.status": "{name} tikko publicēja", + "notification.status": "{name} tikko pievienoja ierakstu", "notification.update": "{name} laboja ierakstu", "notification_requests.accept": "Pieņemt", "notification_requests.dismiss": "Noraidīt", @@ -586,15 +614,15 @@ "reply_indicator.cancel": "Atcelt", "reply_indicator.poll": "Aptauja", "report.block": "Bloķēt", - "report.block_explanation": "Tu neredzēsi viņu ierakstus. Viņi nevarēs redzēt Tavus ierakstus vai sekot tev. Viņi varēs saprast, ka ir bloķēti.", + "report.block_explanation": "Tu neredzēsi viņu ierakstus. Viņi nevarēs redzēt Tavus ierakstus vai sekot tev. Viņi varēs saprast, ka ir liegti.", "report.categories.legal": "Tiesisks", "report.categories.other": "Citi", - "report.categories.spam": "Spams", + "report.categories.spam": "Mēstule", "report.categories.violation": "Saturs pārkāpj vienu vai vairākus servera noteikumus", "report.category.subtitle": "Izvēlieties labāko atbilstību", "report.category.title": "Pastāsti mums, kas notiek ar šo {type}", "report.category.title_account": "profilu", - "report.category.title_status": "ziņu", + "report.category.title_status": "ierakstu", "report.close": "Darīts", "report.comment.title": "Vai, tavuprāt, mums vēl būtu kas jāzina?", "report.forward": "Pārsūtīt {target}", @@ -609,7 +637,7 @@ "report.reasons.legal_description": "Tu uzskati, ka tas pārkāpj tavus vai servera valsts likumus", "report.reasons.other": "Tas ir kaut kas cits", "report.reasons.other_description": "Šī sūdzība neatbilst pārējām kategorijām", - "report.reasons.spam": "Tas ir spams", + "report.reasons.spam": "Tā ir mēstule", "report.reasons.spam_description": "Ļaunprātīgas saites, viltus iesaistīšana vai atkārtotas atbildes", "report.reasons.violation": "Tas pārkāpj servera noteikumus", "report.reasons.violation_description": "Tu zini, ka tas pārkāpj īpašus noteikumus", @@ -621,15 +649,19 @@ "report.target": "Ziņošana par: {target}", "report.thanks.take_action": "Šeit ir iespējas, lai pārvaldītu Mastodon redzamo saturu:", "report.thanks.take_action_actionable": "Kamēr mēs to izskatām, tu vari veikt darbības pret @{name}:", - "report.thanks.title": "Vai nevēlies to redzēt?", + "report.thanks.title": "Nevēlies to redzēt?", "report.thanks.title_actionable": "Paldies, ka ziņoji, mēs to izskatīsim.", "report.unfollow": "Pārtraukt sekot @{name}", "report.unfollow_explanation": "Tu seko šim kontam. Lai vairs neredzētu tā ierakstus savā mājas plūsmā, pārtrauc sekot tam!", - "report_notification.attached_statuses": "Pievienoti {count, plural,one {{count} sūtījums} other {{count} sūtījumi}}", + "report_notification.attached_statuses": "{count, plural, zero {Pievienoti {count} ierakstu} one {Pievienots {count} ieraksts} other {Pievienoti {count} ieraksti}}", "report_notification.categories.legal": "Tiesisks", + "report_notification.categories.legal_sentence": "nelikumīgs saturs", "report_notification.categories.other": "Cita", - "report_notification.categories.spam": "Spams", + "report_notification.categories.other_sentence": "cits", + "report_notification.categories.spam": "Mēstule", + "report_notification.categories.spam_sentence": "mēstule", "report_notification.categories.violation": "Noteikumu pārkāpums", + "report_notification.categories.violation_sentence": "noteikumu pārkāpums", "report_notification.open": "Atvērt ziņojumu", "search.no_recent_searches": "Nav nesen veiktu meklējumu", "search.placeholder": "Meklēšana", @@ -657,6 +689,7 @@ "server_banner.administered_by": "Pārvalda:", "server_banner.server_stats": "Servera statistika:", "sign_in_banner.create_account": "Izveidot kontu", + "sign_in_banner.follow_anyone": "Seko ikvienam Fediversā un redzi visu pievienošanas secībā! Nekādu algoritmu, reklāmu vai klikšķēsmu.", "sign_in_banner.sign_in": "Pieteikties", "sign_in_banner.sso_redirect": "Piesakies vai Reģistrējies", "status.admin_account": "Atvērt @{name} satura pārraudzības saskarni", @@ -665,7 +698,7 @@ "status.block": "Bloķēt @{name}", "status.bookmark": "Grāmatzīme", "status.cancel_reblog_private": "Nepastiprināt", - "status.cannot_reblog": "Šo ziņu nevar izcelt", + "status.cannot_reblog": "Šo ierakstu nevar pastiprināt", "status.continued_thread": "Turpināts pavediens", "status.copy": "Ievietot ieraksta saiti starpliktuvē", "status.delete": "Dzēst", @@ -676,8 +709,8 @@ "status.edited": "Pēdējoreiz labots {date}", "status.edited_x_times": "Labots {count, plural, zero {{count} reižu} one {{count} reizi} other {{count} reizes}}", "status.favourite": "Izlasē", - "status.favourites": "{count, plural, zero {izlasēs} one {izlasē} other {izlasēs}}", - "status.filter": "Filtrē šo ziņu", + "status.favourites": "{count, plural, one {izlasē} other {izlasēs}}", + "status.filter": "Atlasīt šo ierakstu", "status.history.created": "{name} izveidoja {date}", "status.history.edited": "{name} laboja {date}", "status.load_more": "Ielādēt vairāk", @@ -688,7 +721,7 @@ "status.more": "Vairāk", "status.mute": "Apklusināt @{name}", "status.mute_conversation": "Apklusināt sarunu", - "status.open": "Paplašināt šo ziņu", + "status.open": "Izvērst šo ierakstu", "status.pin": "Piespraust profilam", "status.pinned": "Piesprausts ieraksts", "status.read_more": "Lasīt vairāk", @@ -696,7 +729,7 @@ "status.reblog_private": "Pastiprināt ar sākotnējo redzamību", "status.reblogged_by": "{name} pastiprināja", "status.reblogs": "{count, plural, zero {pastiprinājumu} one {pastiprinājums} other {pastiprinājumi}}", - "status.reblogs.empty": "Neviens šo ierakstu vēl nav pastiprinājis. Kad būs, tie parādīsies šeit.", + "status.reblogs.empty": "Neviens vēl nav pastiprinājis šo ierakstu. Kad kāds to izdarīs, šeit tiks parādīti lietotāji.", "status.redraft": "Dzēst un pārrakstīt", "status.remove_bookmark": "Noņemt grāmatzīmi", "status.replied_to": "Atbildēja {name}", @@ -708,13 +741,13 @@ "status.show_less_all": "Rādīt mazāk visiem", "status.show_more_all": "Rādīt vairāk visiem", "status.show_original": "Rādīt pirmavotu", - "status.title.with_attachments": "{user} publicējis {attachmentCount, plural, one {pielikumu} other {{attachmentCount} pielikumus}}", + "status.title.with_attachments": "{user} pievienoja {attachmentCount, plural, zero {{attachmentCount} pielikumu} one {{attachmentCount} pielikumu} other {{attachmentCount} pielikumus}}", "status.translate": "Tulkot", "status.translated_from_with": "Tulkots no {lang} izmantojot {provider}", "status.uncached_media_warning": "Priekšskatījums nav pieejams", "status.unmute_conversation": "Noņemt sarunas apklusinājumu", "status.unpin": "Noņemt profila piespraudumu", - "subscribed_languages.lead": "Pēc izmaiņu veikšanas Tavā mājas un sarakstu laika līnijā tiks rādīti tikai tie ieraksti atlasītajās valodās. Neatlasīt nevienu, lai saņemtu ierakstus visās valodās.", + "subscribed_languages.lead": "Pēc izmaiņu veikšanas Tavā mājas un sarakstu laika līnijā tiks rādīti tikai ieraksti atlasītajās valodās. Neatlasīt nevienu, lai saņemtu ierakstus visās valodās.", "subscribed_languages.save": "Saglabāt izmaiņas", "subscribed_languages.target": "Mainīt abonētās valodas priekš {target}", "tabs_bar.home": "Sākums", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 8274755bb4..eaa3bcec64 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -98,8 +98,8 @@ "alt_text_modal.add_text_from_image": "Добавить текст из изображения", "alt_text_modal.cancel": "Отмена", "alt_text_modal.change_thumbnail": "Изменить обложку", - "alt_text_modal.describe_for_people_with_hearing_impairments": "Опишите то, что слышите, для людей с нарушениями слуха…", - "alt_text_modal.describe_for_people_with_visual_impairments": "Опишите то, что видите, для людей с нарушениями зрения…", + "alt_text_modal.describe_for_people_with_hearing_impairments": "Добавьте описание для людей с нарушениями слуха…", + "alt_text_modal.describe_for_people_with_visual_impairments": "Добавьте описание для людей с нарушениями зрения…", "alt_text_modal.done": "Готово", "announcement.announcement": "Объявление", "annual_report.summary.archetype.booster": "Репостер", @@ -456,36 +456,36 @@ "intervals.full.hours": "{number, plural, one {# час} few {# часа} other {# часов}}", "intervals.full.minutes": "{number, plural, one {# минута} few {# минуты} other {# минут}}", "keyboard_shortcuts.back": "перейти назад", - "keyboard_shortcuts.blocked": "чтобы открыть список заблокированных", + "keyboard_shortcuts.blocked": "открыть список заблокированных", "keyboard_shortcuts.boost": "продвинуть пост", "keyboard_shortcuts.column": "фокус на одном из столбцов", "keyboard_shortcuts.compose": "фокус на поле ввода", "keyboard_shortcuts.description": "Описание", - "keyboard_shortcuts.direct": "чтобы открыть столбец личных упоминаний", + "keyboard_shortcuts.direct": "перейти к личным упоминаниям", "keyboard_shortcuts.down": "вниз по списку", "keyboard_shortcuts.enter": "открыть пост", "keyboard_shortcuts.favourite": "добавить пост в избранное", - "keyboard_shortcuts.favourites": "открыть «Избранные»", + "keyboard_shortcuts.favourites": "перейти к избранным постам", "keyboard_shortcuts.federated": "перейти к глобальной ленте", "keyboard_shortcuts.heading": "Сочетания клавиш", "keyboard_shortcuts.home": "перейти к домашней ленте", - "keyboard_shortcuts.hotkey": "Гор. клавиша", - "keyboard_shortcuts.legend": "показать это окно", + "keyboard_shortcuts.hotkey": "Горячая клавиша", + "keyboard_shortcuts.legend": "показать эту справку", "keyboard_shortcuts.local": "перейти к локальной ленте", "keyboard_shortcuts.mention": "упомянуть автора поста", "keyboard_shortcuts.muted": "открыть список игнорируемых", "keyboard_shortcuts.my_profile": "перейти к своему профилю", "keyboard_shortcuts.notifications": "перейти к уведомлениям", - "keyboard_shortcuts.open_media": "открыть вложение", + "keyboard_shortcuts.open_media": "открыть медиа", "keyboard_shortcuts.pinned": "перейти к закреплённым постам", "keyboard_shortcuts.profile": "перейти к профилю автора", "keyboard_shortcuts.reply": "ответить", "keyboard_shortcuts.requests": "перейти к запросам на подписку", "keyboard_shortcuts.search": "перейти к поиску", "keyboard_shortcuts.spoilers": "показать/скрыть поле предупреждения о содержании", - "keyboard_shortcuts.start": "перейти к разделу \"добро пожаловать\"", + "keyboard_shortcuts.start": "перейти к разделу «Добро пожаловать»", "keyboard_shortcuts.toggle_hidden": "показать/скрыть текст за предупреждением", - "keyboard_shortcuts.toggle_sensitivity": "показать/скрыть медиафайлы", + "keyboard_shortcuts.toggle_sensitivity": "показать/скрыть медиа", "keyboard_shortcuts.toot": "начать писать новый пост", "keyboard_shortcuts.translate": "перевести пост", "keyboard_shortcuts.unfocus": "убрать фокус с поля ввода/поиска", diff --git a/config/locales/ru.yml b/config/locales/ru.yml index dca4fff60c..d6ed3f917c 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -325,6 +325,7 @@ ru: create: Создать объявление title: Новое объявление preview: + disclaimer: Так как пользователи не могут отказаться от получения уведомлений по электронной почте, их следует использовать только для действительно важных объявлений, например, чтобы сообщить об утечке персональных данных или о закрытии сервера. explanation_html: 'Сообщение будет отравлено %{display_count} пользователям. В теле письма будет указан следующий текст:' title: Предпросмотр объявления по электронной почте publish: Опубликовать @@ -509,6 +510,7 @@ ru: save: Сохранить sign_in: status: Пост + title: FASP follow_recommendations: description_html: "Следуйте рекомендациям, чтобы помочь новым пользователям быстро находить интересный контент. Если пользователь не взаимодействовал с другими в достаточной степени, чтобы сформировать персонализированные рекомендации, вместо этого рекомендуется использовать эти учетные записи. Они пересчитываются на ежедневной основе на основе комбинации аккаунтов с наибольшим количеством недавних взаимодействий и наибольшим количеством местных подписчиков для данного языка." language: Для языка @@ -1620,13 +1622,6 @@ ru: action: Да, отписаться complete: Подписка отменена confirmation_html: Вы точно желаете отписаться от всех уведомления типа «%{type}», доставляемых из сервера Mastodon %{domain} на ваш адрес электронной почты %{email}? Вы всегда сможете подписаться снова в настройках e-mail уведомлений. - emails: - notification_emails: - favourite: любимые электронные письма с уведомлениями - follow: Следить за электронными сообщениями - follow_request: Письма с просьбой о помощи - mention: Упоминание электронных писем с уведомлениями - reblog: Уведомления по электронной почте resubscribe_html: Если вы отписались от рассылки по ошибке, вы можете повторно подписаться на рассылку в настройках настроек почтовых уведомлений. success_html: Вы больше не будете получать %{type} для Mastodon на %{domain} на вашу электронную почту %{email}. title: Отписаться @@ -1710,7 +1705,6 @@ ru: update: subject: "%{name} изменил(а) пост" notifications: - administration_emails: Уведомления администратора по электронной почте email_events: События для уведомлений по электронной почте email_events_hint: 'Выберите события, для которых вы хотели бы получать уведомления:' number: From 199acce48176d50b8ec7085f31a36f35119abfcc Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 25 Apr 2025 11:00:54 +0200 Subject: [PATCH 036/349] Fix sign-up e-mail confirmation page reloading on error or redirect (#34548) --- app/javascript/entrypoints/sign_up.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/javascript/entrypoints/sign_up.ts b/app/javascript/entrypoints/sign_up.ts index 880738fcb7..87100be56d 100644 --- a/app/javascript/entrypoints/sign_up.ts +++ b/app/javascript/entrypoints/sign_up.ts @@ -4,9 +4,12 @@ import axios from 'axios'; import ready from '../mastodon/ready'; async function checkConfirmation() { - const response = await axios.get('/api/v1/emails/check_confirmation'); + const response = await axios.get('/api/v1/emails/check_confirmation', { + headers: { Accept: 'application/json' }, + withCredentials: true, + }); - if (response.data) { + if (response.status === 200 && response.data === true) { window.location.href = '/start'; } } From 1326c8cb1d34d08588304fdbf401728354af98ef Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Apr 2025 11:54:56 +0200 Subject: [PATCH 037/349] chore(deps): update dependency rqrcode to v3 (#34541) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 9e5955e0b8..b55ec1d730 100644 --- a/Gemfile +++ b/Gemfile @@ -79,7 +79,7 @@ gem 'rails-i18n', '~> 8.0' gem 'redcarpet', '~> 3.6' gem 'redis', '~> 4.5', require: ['redis', 'redis/connection/hiredis'] gem 'redis-namespace', '~> 1.10' -gem 'rqrcode', '~> 2.2' +gem 'rqrcode', '~> 3.0' gem 'ruby-progressbar', '~> 1.13' gem 'sanitize', '~> 7.0' gem 'scenic', '~> 1.7' diff --git a/Gemfile.lock b/Gemfile.lock index b5cf21cc51..4eb975c6c0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -711,10 +711,10 @@ GEM rotp (6.3.0) rouge (4.5.1) rpam2 (4.0.2) - rqrcode (2.2.0) + rqrcode (3.0.0) chunky_png (~> 1.0) - rqrcode_core (~> 1.0) - rqrcode_core (1.2.0) + rqrcode_core (~> 2.0) + rqrcode_core (2.0.0) rspec (3.13.0) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) @@ -1043,7 +1043,7 @@ DEPENDENCIES redcarpet (~> 3.6) redis (~> 4.5) redis-namespace (~> 1.10) - rqrcode (~> 2.2) + rqrcode (~> 3.0) rspec-github (~> 3.0) rspec-rails (~> 7.0) rspec-sidekiq (~> 5.0) From 7a70d9543525681b5c408cfd17782843da13177f Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 25 Apr 2025 12:35:11 +0200 Subject: [PATCH 038/349] Add warning for Elasticsearch index analyzers mismatch (#34515) --- app/lib/admin/system_check/elasticsearch_check.rb | 15 +++++++++++++++ config/locales/en.yml | 2 ++ 2 files changed, 17 insertions(+) diff --git a/app/lib/admin/system_check/elasticsearch_check.rb b/app/lib/admin/system_check/elasticsearch_check.rb index ea35807f30..3950756e6a 100644 --- a/app/lib/admin/system_check/elasticsearch_check.rb +++ b/app/lib/admin/system_check/elasticsearch_check.rb @@ -38,6 +38,11 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck :elasticsearch_index_mismatch, mismatched_indexes.join(' ') ) + elsif !specifications_match? + Admin::SystemCheck::Message.new( + :elasticsearch_analysis_mismatch, + mismatched_specifications_indexes.join(' ') + ) elsif cluster_health['status'] == 'red' Admin::SystemCheck::Message.new(:elasticsearch_health_red) elsif cluster_health['number_of_nodes'] < 2 && es_preset != 'single_node_cluster' @@ -111,10 +116,20 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck end end + def mismatched_specifications_indexes + @mismatched_specifications_indexes ||= INDEXES.filter_map do |klass| + klass.base_name if klass.specification.changed? + end + end + def indexes_match? mismatched_indexes.empty? end + def specifications_match? + mismatched_specifications_indexes.empty? + end + def es_preset ENV.fetch('ES_PRESET', 'single_node_cluster') end diff --git a/config/locales/en.yml b/config/locales/en.yml index f0e1f86c4e..63ef106d5c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -903,6 +903,8 @@ en: system_checks: database_schema_check: message_html: There are pending database migrations. Please run them to ensure the application behaves as expected + elasticsearch_analysis_index_mismatch: + message_html: Elasticsearch index analyzer settings are outdated. Please run tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: Elasticsearch cluster is unhealthy (red status), search features are unavailable elasticsearch_health_yellow: From 91db45b197377750a88c0ac236554451dc6b567d Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Apr 2025 12:35:21 +0200 Subject: [PATCH 039/349] Change account search to be more forgiving of spaces (#34455) --- app/chewy/accounts_index.rb | 16 ++++++++++++ app/services/account_search_service.rb | 36 ++++++++++++++++++++++---- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/app/chewy/accounts_index.rb b/app/chewy/accounts_index.rb index 59f2f991f2..796584e9c6 100644 --- a/app/chewy/accounts_index.rb +++ b/app/chewy/accounts_index.rb @@ -19,9 +19,16 @@ class AccountsIndex < Chewy::Index type: 'stemmer', language: 'possessive_english', }, + + word_joiner: { + type: 'shingle', + output_unigrams: true, + token_separator: '', + }, }, analyzer: { + # "The FOOING's bar" becomes "foo bar" natural: { tokenizer: 'standard', filter: %w( @@ -35,11 +42,20 @@ class AccountsIndex < Chewy::Index ), }, + # "FOO bar" becomes "foo bar" verbatim: { tokenizer: 'standard', filter: %w(lowercase asciifolding cjk_width), }, + # "Foo bar" becomes "foo bar foobar" + word_join_analyzer: { + type: 'custom', + tokenizer: 'standard', + filter: %w(lowercase asciifolding cjk_width word_joiner), + }, + + # "Foo bar" becomes "f fo foo b ba bar" edge_ngram: { tokenizer: 'edge_ngram', filter: %w(lowercase asciifolding cjk_width), diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb index dab5f748bf..5261040884 100644 --- a/app/services/account_search_service.rb +++ b/app/services/account_search_service.rb @@ -128,11 +128,37 @@ class AccountSearchService < BaseService def core_query { - multi_match: { - query: @query, - type: 'best_fields', - fields: %w(username^2 display_name^2 text text.*), - operator: 'and', + dis_max: { + queries: [ + { + match: { + username: { + query: @query, + analyzer: 'word_join_analyzer', + }, + }, + }, + + { + match: { + display_name: { + query: @query, + analyzer: 'word_join_analyzer', + }, + }, + }, + + { + multi_match: { + query: @query, + type: 'best_fields', + fields: %w(text text.*), + operator: 'and', + }, + }, + ], + + tie_breaker: 0.5, }, } end From d4944a24676e9b9e9fe419cb7661d9b2c0c9d77f Mon Sep 17 00:00:00 2001 From: Claire Date: Fri, 25 Apr 2025 13:24:57 +0200 Subject: [PATCH 040/349] Fix incorrect redirect in response to unauthenticated API requests in limited federation mode (#34549) --- app/controllers/api/base_controller.rb | 7 +++++++ app/controllers/application_controller.rb | 22 ++++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/app/controllers/api/base_controller.rb b/app/controllers/api/base_controller.rb index 0980e0ebbc..b10c2f5737 100644 --- a/app/controllers/api/base_controller.rb +++ b/app/controllers/api/base_controller.rb @@ -72,6 +72,13 @@ class Api::BaseController < ApplicationController end end + # Redefine `require_functional!` to properly output JSON instead of HTML redirects + def require_functional! + return if current_user.functional? + + require_user! + end + def render_empty render json: {}, status: 200 end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 1b071e8655..c11fd2a635 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -72,10 +72,24 @@ class ApplicationController < ActionController::Base def require_functional! return if current_user.functional? - if current_user.confirmed? - redirect_to edit_user_registration_path - else - redirect_to auth_setup_path + respond_to do |format| + format.any do + if current_user.confirmed? + redirect_to edit_user_registration_path + else + redirect_to auth_setup_path + end + end + + format.json do + if !current_user.confirmed? + render json: { error: 'Your login is missing a confirmed e-mail address' }, status: 403 + elsif !current_user.approved? + render json: { error: 'Your login is currently pending approval' }, status: 403 + elsif !current_user.functional? + render json: { error: 'Your login is currently disabled' }, status: 403 + end + end end end From 49b6a49c76caaa754c5a5e8d60203409eb2ced9f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Apr 2025 17:11:59 +0200 Subject: [PATCH 041/349] Change "Pin on profile" to "Feature on profile" for posts in web UI (#34492) --- app/javascript/mastodon/components/status.jsx | 9 +-------- app/javascript/mastodon/locales/en.json | 11 +++++------ 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index 1fe9b096e1..c45942dde4 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -403,14 +403,7 @@ class Status extends ImmutablePureComponent { const connectReply = nextInReplyToId && nextInReplyToId === status.get('id'); const matchedFilters = status.get('matched_filters'); - if (featured) { - prepend = ( -
-
- -
- ); - } else if (status.get('reblog', null) !== null && typeof status.get('reblog') === 'object') { + if (status.get('reblog', null) !== null && typeof status.get('reblog') === 'object') { const display_name_html = { __html: status.getIn(['account', 'display_name_html']) }; prepend = ( diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index d9a0c8eb03..6b4a0a12ab 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -168,7 +168,7 @@ "column.lists": "Lists", "column.mutes": "Muted users", "column.notifications": "Notifications", - "column.pins": "Pinned posts", + "column.pins": "Featured posts", "column.public": "Federated timeline", "column_back_button.label": "Back", "column_header.hide_settings": "Hide settings", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Open your profile", "keyboard_shortcuts.notifications": "Open notifications column", "keyboard_shortcuts.open_media": "Open media", - "keyboard_shortcuts.pinned": "Open pinned posts list", + "keyboard_shortcuts.pinned": "Open featured posts list", "keyboard_shortcuts.profile": "Open author's profile", "keyboard_shortcuts.reply": "Reply to post", "keyboard_shortcuts.requests": "Open follow requests list", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "Muted users", "navigation_bar.opened_in_classic_interface": "Posts, accounts, and other specific pages are opened by default in the classic web interface.", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Pinned posts", + "navigation_bar.pins": "Featured posts", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.search": "Search", @@ -857,8 +857,7 @@ "status.mute": "Mute @{name}", "status.mute_conversation": "Mute conversation", "status.open": "Expand this post", - "status.pin": "Pin on profile", - "status.pinned": "Pinned post", + "status.pin": "Feature on profile", "status.read_more": "Read more", "status.reblog": "Boost", "status.reblog_private": "Boost with original visibility", @@ -883,7 +882,7 @@ "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Preview not available", "status.unmute_conversation": "Unmute conversation", - "status.unpin": "Unpin from profile", + "status.unpin": "Don't feature on profile", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", "subscribed_languages.save": "Save changes", "subscribed_languages.target": "Change subscribed languages for {target}", From a97647158c79e1c9bca80f52bad57a657d79723b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 25 Apr 2025 17:12:05 +0200 Subject: [PATCH 042/349] Add REST API for featuring and unfeaturing a hashtag (#34489) Co-authored-by: Matt Jankowski Co-authored-by: Claire --- .../api/v1/featured_tags_controller.rb | 2 +- app/controllers/api/v1/tags_controller.rb | 13 +- .../settings/featured_tags_controller.rb | 2 +- app/models/featured_tag.rb | 24 ++-- app/presenters/tag_relationships_presenter.rb | 14 ++- app/serializers/rest/tag_serializer.rb | 9 ++ app/services/create_featured_tag_service.rb | 24 ++-- app/services/remove_featured_tag_service.rb | 19 ++- config/routes/api.rb | 2 + lib/mastodon/version.rb | 2 +- spec/models/featured_tag_spec.rb | 2 +- spec/requests/api/v1/featured_tags_spec.rb | 4 +- spec/requests/api/v1/tags_spec.rb | 112 ++++++++++++++++++ .../create_featured_tag_service_spec.rb | 6 +- .../remove_featured_tag_service_spec.rb | 10 +- 15 files changed, 195 insertions(+), 50 deletions(-) diff --git a/app/controllers/api/v1/featured_tags_controller.rb b/app/controllers/api/v1/featured_tags_controller.rb index 516046f009..15c5de67a2 100644 --- a/app/controllers/api/v1/featured_tags_controller.rb +++ b/app/controllers/api/v1/featured_tags_controller.rb @@ -18,7 +18,7 @@ class Api::V1::FeaturedTagsController < Api::BaseController end def destroy - RemoveFeaturedTagWorker.perform_async(current_account.id, @featured_tag.id) + RemoveFeaturedTagService.new.call(current_account, @featured_tag) render_empty end diff --git a/app/controllers/api/v1/tags_controller.rb b/app/controllers/api/v1/tags_controller.rb index 672535a018..67a4d8ef49 100644 --- a/app/controllers/api/v1/tags_controller.rb +++ b/app/controllers/api/v1/tags_controller.rb @@ -1,7 +1,8 @@ # frozen_string_literal: true class Api::V1::TagsController < Api::BaseController - before_action -> { doorkeeper_authorize! :follow, :write, :'write:follows' }, except: :show + before_action -> { doorkeeper_authorize! :follow, :write, :'write:follows' }, only: [:follow, :unfollow] + before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, only: [:feature, :unfeature] before_action :require_user!, except: :show before_action :set_or_create_tag @@ -23,6 +24,16 @@ class Api::V1::TagsController < Api::BaseController render json: @tag, serializer: REST::TagSerializer end + def feature + CreateFeaturedTagService.new.call(current_account, @tag) + render json: @tag, serializer: REST::TagSerializer + end + + def unfeature + RemoveFeaturedTagService.new.call(current_account, @tag) + render json: @tag, serializer: REST::TagSerializer + end + private def set_or_create_tag diff --git a/app/controllers/settings/featured_tags_controller.rb b/app/controllers/settings/featured_tags_controller.rb index 0f352e1913..d2fbd1f0f3 100644 --- a/app/controllers/settings/featured_tags_controller.rb +++ b/app/controllers/settings/featured_tags_controller.rb @@ -12,7 +12,7 @@ class Settings::FeaturedTagsController < Settings::BaseController end def create - @featured_tag = CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name], force: false) + @featured_tag = CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name], raise_error: false) if @featured_tag.valid? redirect_to settings_featured_tags_path diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb index dfc700649c..74fc72ba5c 100644 --- a/app/models/featured_tag.rb +++ b/app/models/featured_tag.rb @@ -18,17 +18,17 @@ class FeaturedTag < ApplicationRecord belongs_to :account, inverse_of: :featured_tags belongs_to :tag, inverse_of: :featured_tags, optional: true # Set after validation - validates :name, presence: true, format: { with: Tag::HASHTAG_NAME_RE }, on: :create + validates :name, presence: true, on: :create, if: -> { tag_id.nil? } + validates :name, format: { with: Tag::HASHTAG_NAME_RE }, on: :create, allow_blank: true + validates :tag_id, uniqueness: { scope: :account_id } - validate :validate_tag_uniqueness, on: :create validate :validate_featured_tags_limit, on: :create normalizes :name, with: ->(name) { name.strip.delete_prefix('#') } - before_create :set_tag - before_create :reset_data + before_validation :set_tag - scope :by_name, ->(name) { joins(:tag).where(tag: { name: HashtagNormalizer.new.normalize(name) }) } + before_create :reset_data LIMIT = 10 @@ -59,7 +59,11 @@ class FeaturedTag < ApplicationRecord private def set_tag - self.tag = Tag.find_or_create_by_names(name)&.first + if tag.nil? + self.tag = Tag.find_or_create_by_names(name)&.first + elsif tag&.new_record? + tag.save + end end def reset_data @@ -73,14 +77,6 @@ class FeaturedTag < ApplicationRecord errors.add(:base, I18n.t('featured_tags.errors.limit')) if account.featured_tags.count >= LIMIT end - def validate_tag_uniqueness - errors.add(:name, :taken) if tag_already_featured_for_account? - end - - def tag_already_featured_for_account? - FeaturedTag.by_name(name).exists?(account_id: account_id) - end - def visible_tagged_account_statuses account.statuses.distributable_visibility.tagged_with(tag) end diff --git a/app/presenters/tag_relationships_presenter.rb b/app/presenters/tag_relationships_presenter.rb index 52e24314be..922eb7a39b 100644 --- a/app/presenters/tag_relationships_presenter.rb +++ b/app/presenters/tag_relationships_presenter.rb @@ -1,13 +1,15 @@ # frozen_string_literal: true class TagRelationshipsPresenter - attr_reader :following_map + attr_reader :following_map, :featuring_map def initialize(tags, current_account_id = nil, **options) - @following_map = if current_account_id.nil? - {} - else - TagFollow.select(:tag_id).where(tag_id: tags.map(&:id), account_id: current_account_id).each_with_object({}) { |f, h| h[f.tag_id] = true }.merge(options[:following_map] || {}) - end + if current_account_id.nil? + @following_map = {} + @featuring_map = {} + else + @following_map = TagFollow.select(:tag_id).where(tag_id: tags.map(&:id), account_id: current_account_id).each_with_object({}) { |f, h| h[f.tag_id] = true }.merge(options[:following_map] || {}) + @featuring_map = FeaturedTag.select(:tag_id).where(tag_id: tags.map(&:id), account_id: current_account_id).each_with_object({}) { |f, h| h[f.tag_id] = true }.merge(options[:featuring_map] || {}) + end end end diff --git a/app/serializers/rest/tag_serializer.rb b/app/serializers/rest/tag_serializer.rb index a2bcb5fd1f..f41a1513db 100644 --- a/app/serializers/rest/tag_serializer.rb +++ b/app/serializers/rest/tag_serializer.rb @@ -6,6 +6,7 @@ class REST::TagSerializer < ActiveModel::Serializer attributes :id, :name, :url, :history attribute :following, if: :current_user? + attribute :featuring, if: :current_user? def id object.id.to_s @@ -27,6 +28,14 @@ class REST::TagSerializer < ActiveModel::Serializer end end + def featuring + if instance_options && instance_options[:relationships] + instance_options[:relationships].featuring_map[object.id] || false + else + FeaturedTag.exists?(tag_id: object.id, account_id: current_user.account_id) + end + end + def current_user? !current_user.nil? end diff --git a/app/services/create_featured_tag_service.rb b/app/services/create_featured_tag_service.rb index 3cc59156db..13d6ac0201 100644 --- a/app/services/create_featured_tag_service.rb +++ b/app/services/create_featured_tag_service.rb @@ -3,18 +3,24 @@ class CreateFeaturedTagService < BaseService include Payloadable - def call(account, name, force: true) + def call(account, name_or_tag, raise_error: true) + raise ArgumentError unless account.local? + @account = account - FeaturedTag.create!(account: account, name: name).tap do |featured_tag| - ActivityPub::AccountRawDistributionWorker.perform_async(build_json(featured_tag), account.id) if @account.local? - end - rescue ActiveRecord::RecordNotUnique, ActiveRecord::RecordInvalid => e - if force && e.is_a(ActiveRecord::RecordNotUnique) - FeaturedTag.by_name(name).find_by!(account: account) - else - account.featured_tags.new(name: name) + @featured_tag = begin + if name_or_tag.is_a?(Tag) + account.featured_tags.find_or_initialize_by(tag: name_or_tag) + else + account.featured_tags.find_or_initialize_by(name: name_or_tag) + end end + + create_method = raise_error ? :save! : :save + + ActivityPub::AccountRawDistributionWorker.perform_async(build_json(@featured_tag), @account.id) if @featured_tag.new_record? && @featured_tag.public_send(create_method) + + @featured_tag end private diff --git a/app/services/remove_featured_tag_service.rb b/app/services/remove_featured_tag_service.rb index 2aa70e8fc6..af8c5a64ee 100644 --- a/app/services/remove_featured_tag_service.rb +++ b/app/services/remove_featured_tag_service.rb @@ -3,11 +3,24 @@ class RemoveFeaturedTagService < BaseService include Payloadable - def call(account, featured_tag) + def call(account, featured_tag_or_tag) + raise ArgumentError unless account.local? + @account = account - featured_tag.destroy! - ActivityPub::AccountRawDistributionWorker.perform_async(build_json(featured_tag), account.id) if @account.local? + @featured_tag = begin + if featured_tag_or_tag.is_a?(FeaturedTag) + featured_tag_or_tag + elsif featured_tag_or_tag.is_a?(Tag) + FeaturedTag.find_by(account: account, tag: featured_tag_or_tag) + end + end + + return if @featured_tag.nil? + + @featured_tag.destroy! + + ActivityPub::AccountRawDistributionWorker.perform_async(build_json(@featured_tag), account.id) if @account.local? end private diff --git a/config/routes/api.rb b/config/routes/api.rb index 8fb8f5d0af..9c94467f01 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -216,6 +216,8 @@ namespace :api, format: false do member do post :follow post :unfollow + post :feature + post :unfeature end end diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb index 6a77163f7c..88e82a2b58 100644 --- a/lib/mastodon/version.rb +++ b/lib/mastodon/version.rb @@ -45,7 +45,7 @@ module Mastodon def api_versions { - mastodon: 5, + mastodon: 6, } end diff --git a/spec/models/featured_tag_spec.rb b/spec/models/featured_tag_spec.rb index 20059cfba4..1197776b02 100644 --- a/spec/models/featured_tag_spec.rb +++ b/spec/models/featured_tag_spec.rb @@ -17,7 +17,7 @@ RSpec.describe FeaturedTag do let(:account) { Fabricate :account } - it { is_expected.to_not allow_value('Test').for(:name) } + it { is_expected.to_not allow_value('Test').for(:name).against(:tag_id) } context 'when account has hit limit' do before { stub_const 'FeaturedTag::LIMIT', 1 } diff --git a/spec/requests/api/v1/featured_tags_spec.rb b/spec/requests/api/v1/featured_tags_spec.rb index b9c78cc11b..7a5f92cdfd 100644 --- a/spec/requests/api/v1/featured_tags_spec.rb +++ b/spec/requests/api/v1/featured_tags_spec.rb @@ -127,10 +127,10 @@ RSpec.describe 'FeaturedTags' do FeaturedTag.create(name: params[:name], account: user.account) end - it 'returns http unprocessable entity' do + it 'returns http success' do post '/api/v1/featured_tags', headers: headers, params: params - expect(response).to have_http_status(422) + expect(response).to have_http_status(200) expect(response.content_type) .to start_with('application/json') end diff --git a/spec/requests/api/v1/tags_spec.rb b/spec/requests/api/v1/tags_spec.rb index f6ff7c614f..5beda68db0 100644 --- a/spec/requests/api/v1/tags_spec.rb +++ b/spec/requests/api/v1/tags_spec.rb @@ -161,4 +161,116 @@ RSpec.describe 'Tags' do end end end + + describe 'POST /api/v1/tags/:id/feature' do + subject do + post "/api/v1/tags/#{name}/feature", headers: headers + end + + let!(:tag) { Fabricate(:tag) } + let(:name) { tag.name } + let(:scopes) { 'write:accounts' } + + it_behaves_like 'forbidden for wrong scope', 'read read:follows' + + context 'when the tag exists' do + it 'creates featured tag', :aggregate_failures do + subject + + expect(response).to have_http_status(:success) + expect(response.content_type) + .to start_with('application/json') + expect(FeaturedTag.where(tag: tag, account: user.account)).to exist + end + end + + context 'when the tag does not exist' do + let(:name) { 'hoge' } + + it 'creates a new tag with the specified name', :aggregate_failures do + subject + + expect(response).to have_http_status(200) + expect(response.content_type) + .to start_with('application/json') + expect(Tag.where(name: name)).to exist + expect(FeaturedTag.where(tag: Tag.find_by(name: name), account: user.account)).to exist + end + end + + context 'when the tag name is invalid' do + let(:name) { 'tag-name' } + + it 'returns http not found' do + subject + + expect(response).to have_http_status(404) + expect(response.content_type) + .to start_with('application/json') + end + end + + context 'when the Authorization header is missing' do + let(:headers) { {} } + let(:name) { 'unauthorized' } + + it 'returns http unauthorized' do + subject + + expect(response).to have_http_status(401) + expect(response.content_type) + .to start_with('application/json') + end + end + end + + describe 'POST #unfeature' do + subject do + post "/api/v1/tags/#{name}/unfeature", headers: headers + end + + let(:name) { tag.name } + let!(:tag) { Fabricate(:tag, name: 'foo') } + let(:scopes) { 'write:accounts' } + + before do + Fabricate(:featured_tag, account: user.account, tag: tag) + end + + it_behaves_like 'forbidden for wrong scope', 'read read:follows' + + it 'removes the featured tag', :aggregate_failures do + subject + + expect(response).to have_http_status(200) + expect(response.content_type) + .to start_with('application/json') + expect(FeaturedTag.where(tag: tag, account: user.account)).to_not exist + end + + context 'when the tag name is invalid' do + let(:name) { 'tag-name' } + + it 'returns http not found' do + subject + + expect(response).to have_http_status(404) + expect(response.content_type) + .to start_with('application/json') + end + end + + context 'when the Authorization header is missing' do + let(:headers) { {} } + let(:name) { 'unauthorized' } + + it 'returns http unauthorized' do + subject + + expect(response).to have_http_status(401) + expect(response.content_type) + .to start_with('application/json') + end + end + end end diff --git a/spec/services/create_featured_tag_service_spec.rb b/spec/services/create_featured_tag_service_spec.rb index f057bc8538..ce8f8a4c38 100644 --- a/spec/services/create_featured_tag_service_spec.rb +++ b/spec/services/create_featured_tag_service_spec.rb @@ -20,11 +20,9 @@ RSpec.describe CreateFeaturedTagService do context 'with a remote account' do let(:account) { Fabricate(:account, domain: 'host.example') } - it 'creates a new featured tag and does not distributes' do + it 'raises argument error' do expect { subject.call(account, tag) } - .to change(FeaturedTag, :count).by(1) - expect(ActivityPub::AccountRawDistributionWorker) - .to_not have_enqueued_sidekiq_job(any_args) + .to raise_error ArgumentError end end end diff --git a/spec/services/remove_featured_tag_service_spec.rb b/spec/services/remove_featured_tag_service_spec.rb index 2f0694bc65..18aa1a9762 100644 --- a/spec/services/remove_featured_tag_service_spec.rb +++ b/spec/services/remove_featured_tag_service_spec.rb @@ -23,13 +23,9 @@ RSpec.describe RemoveFeaturedTagService do context 'when called by a non local account' do let(:account) { Fabricate(:account, domain: 'host.example') } - it 'destroys the featured tag and does not send a distribution' do - subject.call(account, featured_tag) - - expect { featured_tag.reload } - .to raise_error(ActiveRecord::RecordNotFound) - expect(ActivityPub::AccountRawDistributionWorker) - .to_not have_enqueued_sidekiq_job(any_args) + it 'raises argument error' do + expect { subject.call(account, featured_tag) } + .to raise_error(ArgumentError) end end end From 2c268e47e7ad64829f147f91d0c81aa15e98598c Mon Sep 17 00:00:00 2001 From: KMY Date: Sat, 26 Apr 2025 07:09:30 +0900 Subject: [PATCH 043/349] Fix test --- app/models/concerns/user/has_settings.rb | 4 ++++ app/models/user_settings.rb | 2 ++ config/locales/simple_form.en.yml | 1 + 3 files changed, 7 insertions(+) diff --git a/app/models/concerns/user/has_settings.rb b/app/models/concerns/user/has_settings.rb index fdd4009e84..6c5e5d665d 100644 --- a/app/models/concerns/user/has_settings.rb +++ b/app/models/concerns/user/has_settings.rb @@ -243,6 +243,10 @@ module User::HasSettings settings['use_public_index'] end + def setting_reverse_search_quote + settings['reverse_search_quote'] + end + def setting_disallow_unlisted_public_searchability settings['disallow_unlisted_public_searchability'] end diff --git a/app/models/user_settings.rb b/app/models/user_settings.rb index 6d57e1a864..88c880cf5d 100644 --- a/app/models/user_settings.rb +++ b/app/models/user_settings.rb @@ -27,6 +27,7 @@ class UserSettings setting :default_searchability, default: :direct, in: %w(public private direct limited public_unlisted) setting :default_searchability_of_search, default: :public, in: %w(public private direct limited) setting :use_public_index, default: true + setting :reverse_search_quote, default: false setting :disallow_unlisted_public_searchability, default: false setting :public_post_to_unlisted, default: false setting :reject_public_unlisted_subscription, default: false @@ -75,6 +76,7 @@ class UserSettings setting :boost_menu, default: false setting :show_relationships, default: true setting :hide_emoji_reaction_unavailable_server, default: false + setting :hide_status_reference_unavailable_server, default: false setting :hide_favourite_menu, default: false setting :hide_emoji_reaction_count, default: false setting :show_avatar_on_filter, default: true diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index 43262b631a..1d6158fdf0 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -79,6 +79,7 @@ en: setting_public_post_to_unlisted: 未対応のサードパーティアプリからもローカル公開で投稿できますが、公開投稿はWeb以外できなくなります setting_reject_send_limited_to_suspects: This applies to "Mutual Only" posts. Circle posts will be delivered without exception. Some Misskey servers have independently supported limited posting, but this is a setting for those who are concerned about it, as mutual-only posting exposes some of the users you are mutual with to Misskey users! setting_reject_unlisted_subscription: Misskey and its forks can **subscribe and search** for "non-following" posts from accounts they do not follow. This differs from kmyblue's behavior. It delivers posts in the specified public range to such servers as "followers only". Please understand, however, that due to its structure, it is difficult to handle perfectly and will occasionally be delivered as non-subscribed. + setting_reverse_search_quote: Double-quotes will result in a search with a wider range of notation, which is the opposite of Mastodon's default behavior. setting_show_application: 投稿するのに使用したアプリが投稿の詳細ビューに表示されるようになります setting_stay_privacy: If you choose to enable this setting, please consider manually setting the visibility of the boost setting_stop_emoji_reaction_streaming: Helps to save communication capacity. From 89358f1750722d9d9f71d4de041212de6ec87666 Mon Sep 17 00:00:00 2001 From: KMY Date: Sat, 26 Apr 2025 07:20:23 +0900 Subject: [PATCH 044/349] Fix test: remove quote from `ProcessReferencesService` --- app/services/process_references_service.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/services/process_references_service.rb b/app/services/process_references_service.rb index 0862da081d..366ba0c990 100644 --- a/app/services/process_references_service.rb +++ b/app/services/process_references_service.rb @@ -170,8 +170,8 @@ class ProcessReferencesService < BaseService @referrable = StatusPolicy.new(@status.account, target_status).show? end - def quotable?(target_status) - target_status.account.allow_quote? && StatusPolicy.new(@status.account, target_status).quote? + def quotable?(_target_status) + true # TODO: quote end def add_references @@ -185,8 +185,8 @@ class ProcessReferencesService < BaseService next if status.blank? attribute_type = @added_items[status_id] - quote = quote_attribute?(attribute_type) - @added_objects << @status.reference_objects.new(target_status: status, attribute_type: attribute_type, quote: quote) + quote_attribute?(attribute_type) + @added_objects << @status.reference_objects.new(target_status: status, attribute_type: attribute_type) # TODO: quote # @status.update!(quote_of_id: status_id) if quote @@ -239,7 +239,7 @@ class ProcessReferencesService < BaseService quote = quote_attribute?(attribute_type) quote_change = ref.quote != quote - ref.update!(attribute_type: attribute_type, quote: quote) + ref.update!(attribute_type: attribute_type) next unless quote_change From 8f59b63176446ffa2659ff8c342fbcead2469d8c Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 26 Apr 2025 01:24:26 +0200 Subject: [PATCH 045/349] Change quote IDs to use snowflake IDs (#34551) --- ...250425134308_quote_ids_to_timestamp_ids.rb | 19 +++++++++++++++++++ db/schema.rb | 4 ++-- 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20250425134308_quote_ids_to_timestamp_ids.rb diff --git a/db/migrate/20250425134308_quote_ids_to_timestamp_ids.rb b/db/migrate/20250425134308_quote_ids_to_timestamp_ids.rb new file mode 100644 index 0000000000..0be0aaecd2 --- /dev/null +++ b/db/migrate/20250425134308_quote_ids_to_timestamp_ids.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class QuoteIdsToTimestampIds < ActiveRecord::Migration[8.0] + def up + # Set up the media_attachments.id column to use our timestamp-based IDs. + safety_assured do + execute("ALTER TABLE quotes ALTER COLUMN id SET DEFAULT timestamp_id('quotes')") + end + + # Make sure we have a sequence to use. + Mastodon::Snowflake.ensure_id_sequences_exist + end + + def down + execute('LOCK quotes') + execute("SELECT setval('quotes_id_seq', (SELECT MAX(id) FROM quotes))") + execute("ALTER TABLE quotes ALTER COLUMN id SET DEFAULT nextval('quotes_id_seq')") + end +end diff --git a/db/schema.rb b/db/schema.rb index 0cabf8997c..194ffc178f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.0].define(version: 2025_04_22_085303) do +ActiveRecord::Schema[8.0].define(version: 2025_04_25_134654) do # These are extensions that must be enabled in order to support this database enable_extension "pg_catalog.plpgsql" @@ -871,7 +871,7 @@ ActiveRecord::Schema[8.0].define(version: 2025_04_22_085303) do t.string "url" end - create_table "quotes", force: :cascade do |t| + create_table "quotes", id: :bigint, default: -> { "timestamp_id('quotes'::text)" }, force: :cascade do |t| t.bigint "account_id", null: false t.bigint "status_id", null: false t.bigint "quoted_status_id" From ae3b7dd28dd059ae9a0f506a6c43f9ecfad7520e Mon Sep 17 00:00:00 2001 From: Claire Date: Sat, 26 Apr 2025 01:28:09 +0200 Subject: [PATCH 046/349] Reject incoming `QuoteRequest` activities (#34480) --- app/helpers/context_helper.rb | 1 + app/lib/activitypub/activity.rb | 2 + app/lib/activitypub/activity/quote_request.rb | 30 +++++++++++ .../activitypub/quote_request_serializer.rb | 28 ++++++++++ .../reject_quote_request_serializer.rb | 19 +++++++ .../activity/quote_request_spec.rb | 51 +++++++++++++++++++ 6 files changed, 131 insertions(+) create mode 100644 app/lib/activitypub/activity/quote_request.rb create mode 100644 app/serializers/activitypub/quote_request_serializer.rb create mode 100644 app/serializers/activitypub/reject_quote_request_serializer.rb create mode 100644 spec/lib/activitypub/activity/quote_request_spec.rb diff --git a/app/helpers/context_helper.rb b/app/helpers/context_helper.rb index 18bb088b48..29e68aa396 100644 --- a/app/helpers/context_helper.rb +++ b/app/helpers/context_helper.rb @@ -25,6 +25,7 @@ module ContextHelper voters_count: { 'toot' => 'http://joinmastodon.org/ns#', 'votersCount' => 'toot:votersCount' }, suspended: { 'toot' => 'http://joinmastodon.org/ns#', 'suspended' => 'toot:suspended' }, attribution_domains: { 'toot' => 'http://joinmastodon.org/ns#', 'attributionDomains' => { '@id' => 'toot:attributionDomains', '@type' => '@id' } }, + quote_requests: { 'QuoteRequest' => 'https://w3id.org/fep/044f#QuoteRequest' }, }.freeze def full_context diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb index 0c98651d12..93b45e8018 100644 --- a/app/lib/activitypub/activity.rb +++ b/app/lib/activitypub/activity.rb @@ -57,6 +57,8 @@ class ActivityPub::Activity ActivityPub::Activity::Remove when 'Move' ActivityPub::Activity::Move + when 'QuoteRequest' + ActivityPub::Activity::QuoteRequest end end end diff --git a/app/lib/activitypub/activity/quote_request.rb b/app/lib/activitypub/activity/quote_request.rb new file mode 100644 index 0000000000..6c5d805159 --- /dev/null +++ b/app/lib/activitypub/activity/quote_request.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class ActivityPub::Activity::QuoteRequest < ActivityPub::Activity + include Payloadable + + def perform + return unless Mastodon::Feature.inbound_quotes_enabled? + return if non_matching_uri_hosts?(@account.uri, @json['id']) + + quoted_status = status_from_uri(object_uri) + return if quoted_status.nil? || !quoted_status.account.local? || !quoted_status.distributable? + + # For now, we don't support being quoted by external servers + reject_quote_request!(quoted_status) + end + + private + + def reject_quote_request!(quoted_status) + quote = Quote.new( + quoted_status: quoted_status, + quoted_account: quoted_status.account, + status: Status.new(account: @account, uri: @json['instrument']), + account: @account, + activity_uri: @json['id'] + ) + json = Oj.dump(serialize_payload(quote, ActivityPub::RejectQuoteRequestSerializer)) + ActivityPub::DeliveryWorker.perform_async(json, quoted_status.account_id, @account.inbox_url) + end +end diff --git a/app/serializers/activitypub/quote_request_serializer.rb b/app/serializers/activitypub/quote_request_serializer.rb new file mode 100644 index 0000000000..d68b3c2d87 --- /dev/null +++ b/app/serializers/activitypub/quote_request_serializer.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class ActivityPub::QuoteRequestSerializer < ActivityPub::Serializer + context_extensions :quote_requests + + attributes :id, :type, :actor, :instrument + attribute :virtual_object, key: :object + + def id + object.activity_uri || [ActivityPub::TagManager.instance.uri_for(object.target_account), '#quote_requests/', object.id].join + end + + def type + 'QuoteRequest' + end + + def actor + ActivityPub::TagManager.instance.uri_for(object.account) + end + + def virtual_object + ActivityPub::TagManager.instance.uri_for(object.quoted_status) + end + + def instrument + ActivityPub::TagManager.instance.uri_for(object.status) + end +end diff --git a/app/serializers/activitypub/reject_quote_request_serializer.rb b/app/serializers/activitypub/reject_quote_request_serializer.rb new file mode 100644 index 0000000000..791d8d730e --- /dev/null +++ b/app/serializers/activitypub/reject_quote_request_serializer.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class ActivityPub::RejectQuoteRequestSerializer < ActivityPub::Serializer + attributes :id, :type, :actor + + has_one :object, serializer: ActivityPub::QuoteRequestSerializer + + def id + [ActivityPub::TagManager.instance.uri_for(object.quoted_account), '#rejects/quote_requests/', object.id].join + end + + def type + 'Reject' + end + + def actor + ActivityPub::TagManager.instance.uri_for(object.quoted_account) + end +end diff --git a/spec/lib/activitypub/activity/quote_request_spec.rb b/spec/lib/activitypub/activity/quote_request_spec.rb new file mode 100644 index 0000000000..bda6388b12 --- /dev/null +++ b/spec/lib/activitypub/activity/quote_request_spec.rb @@ -0,0 +1,51 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe ActivityPub::Activity::QuoteRequest, feature: :inbound_quotes do + let(:sender) { Fabricate(:account, domain: 'example.com') } + let(:recipient) { Fabricate(:account) } + let(:quoted_post) { Fabricate(:status, account: recipient) } + let(:request_uri) { 'https://example.com/missing-ui' } + let(:quoted_uri) { ActivityPub::TagManager.instance.uri_for(quoted_post) } + + let(:json) do + { + '@context': [ + 'https://www.w3.org/ns/activitystreams', + { + QuoteRequest: 'https://w3id.org/fep/044f#QuoteRequest', + }, + ], + id: request_uri, + type: 'QuoteRequest', + actor: ActivityPub::TagManager.instance.uri_for(sender), + object: quoted_uri, + instrument: 'https://example.com/unknown-status', + }.with_indifferent_access + end + + describe '#perform' do + subject { described_class.new(json, sender) } + + context 'when trying to quote an unknown status' do + let(:quoted_uri) { 'https://example.com/statuses/1234' } + + it 'does not send anything' do + expect { subject.perform } + .to_not enqueue_sidekiq_job(ActivityPub::DeliveryWorker) + end + end + + context 'when trying to quote an unquotable local status' do + it 'sends a Reject activity' do + expect { subject.perform } + .to enqueue_sidekiq_job(ActivityPub::DeliveryWorker) + .with(satisfying do |body| + outgoing_json = Oj.load(body) + outgoing_json['type'] == 'Reject' && %w(type id actor object instrument).all? { |key| json[key] == outgoing_json['object'][key] } + end, recipient.id, sender.inbox_url) + end + end + end +end From c6b740ace28e5c6e4a21c475e182c7a37a8a0a71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?KMY=EF=BC=88=E9=9B=AA=E3=81=82=E3=81=99=E3=81=8B=EF=BC=89?= Date: Sat, 26 Apr 2025 08:49:32 +0900 Subject: [PATCH 047/349] Update chewy_config.rb --- app/lib/chewy_config.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/chewy_config.rb b/app/lib/chewy_config.rb index 9de69b5147..a01cc41597 100644 --- a/app/lib/chewy_config.rb +++ b/app/lib/chewy_config.rb @@ -8,7 +8,7 @@ class ChewyConfig class InvalidElasticSearchVersionError < Mastodon::Error; end - CONFIG_VERSION = 1 + CONFIG_VERSION = 2 def initialize custom_config_file = Rails.root.join('.elasticsearch.yml') From ffb4ca4231f5bb41de9c00cab97a50394bb5a87b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?KMY=EF=BC=88=E9=9B=AA=E3=81=82=E3=81=99=E3=81=8B=EF=BC=89?= Date: Sat, 26 Apr 2025 13:37:28 +0900 Subject: [PATCH 048/349] Update registrations_controller_spec.rb --- spec/controllers/auth/registrations_controller_spec.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/controllers/auth/registrations_controller_spec.rb b/spec/controllers/auth/registrations_controller_spec.rb index c58bff659c..daacbdf9b9 100644 --- a/spec/controllers/auth/registrations_controller_spec.rb +++ b/spec/controllers/auth/registrations_controller_spec.rb @@ -542,7 +542,6 @@ RSpec.describe Auth::RegistrationsController do it_behaves_like 'registration with time', 'only secondary time range is set', 0, 0, 9, 12, true end - it_behaves_like 'checks for enabled registrations', :create it_behaves_like 'registration mode based responses', :create end From 7696122cfc89e159b03405ee8f44d89194d921fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?KMY=EF=BC=88=E9=9B=AA=E3=81=82=E3=81=99=E3=81=8B=EF=BC=89?= Date: Sat, 26 Apr 2025 13:56:59 +0900 Subject: [PATCH 049/349] Update status.rb --- app/models/status.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/models/status.rb b/app/models/status.rb index 3bfaa78233..fd94245e8e 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -84,8 +84,6 @@ class Status < ApplicationRecord has_many :bookmarks, inverse_of: :status, dependent: :destroy has_many :reblogs, foreign_key: 'reblog_of_id', class_name: 'Status', inverse_of: :reblog, dependent: :destroy has_many :reblogged_by_accounts, through: :reblogs, class_name: 'Account', source: :account - has_many :quotes, foreign_key: 'quote_of_id', class_name: 'Status', inverse_of: :quote, dependent: nil - has_many :quoted_by_accounts, through: :quotes, class_name: 'Account', source: :account has_many :replies, foreign_key: 'in_reply_to_id', class_name: 'Status', inverse_of: :thread, dependent: nil has_many :mentions, dependent: :destroy, inverse_of: :status has_many :mentioned_accounts, through: :mentions, source: :account, class_name: 'Account' @@ -123,7 +121,6 @@ class Status < ApplicationRecord has_one :scheduled_expiration_status, inverse_of: :status, dependent: :destroy has_one :circle_status, inverse_of: :status, dependent: :destroy has_many :list_status, inverse_of: :status, dependent: :destroy - has_one :quote, inverse_of: :status, dependent: :destroy validates :uri, uniqueness: true, presence: true, unless: :local? validates :text, presence: true, unless: -> { with_media? || reblog? } From a20686f593d00ddc152562f301d06f365dad8c6e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 09:33:20 +0200 Subject: [PATCH 050/349] New Crowdin Translations (automated) (#34558) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/af.json | 4 - app/javascript/mastodon/locales/an.json | 6 - app/javascript/mastodon/locales/ar.json | 6 - app/javascript/mastodon/locales/ast.json | 6 - app/javascript/mastodon/locales/az.json | 1 - app/javascript/mastodon/locales/be.json | 6 - app/javascript/mastodon/locales/bg.json | 6 - app/javascript/mastodon/locales/bn.json | 6 - app/javascript/mastodon/locales/br.json | 6 - app/javascript/mastodon/locales/bs.json | 2 - app/javascript/mastodon/locales/ca.json | 11 +- app/javascript/mastodon/locales/ckb.json | 6 - app/javascript/mastodon/locales/co.json | 6 - app/javascript/mastodon/locales/cs.json | 11 +- app/javascript/mastodon/locales/cy.json | 11 +- app/javascript/mastodon/locales/da.json | 11 +- app/javascript/mastodon/locales/de.json | 15 ++- app/javascript/mastodon/locales/el.json | 6 - app/javascript/mastodon/locales/en-GB.json | 6 - app/javascript/mastodon/locales/eo.json | 8 +- app/javascript/mastodon/locales/es-AR.json | 13 +-- app/javascript/mastodon/locales/es-MX.json | 11 +- app/javascript/mastodon/locales/es.json | 11 +- app/javascript/mastodon/locales/et.json | 6 - app/javascript/mastodon/locales/eu.json | 6 - app/javascript/mastodon/locales/fa.json | 6 - app/javascript/mastodon/locales/fi.json | 19 +-- app/javascript/mastodon/locales/fil.json | 1 - app/javascript/mastodon/locales/fo.json | 11 +- app/javascript/mastodon/locales/fr-CA.json | 6 - app/javascript/mastodon/locales/fr.json | 6 - app/javascript/mastodon/locales/fy.json | 6 - app/javascript/mastodon/locales/ga.json | 30 ++++- app/javascript/mastodon/locales/gd.json | 6 - app/javascript/mastodon/locales/gl.json | 11 +- app/javascript/mastodon/locales/he.json | 13 +-- app/javascript/mastodon/locales/hi.json | 5 - app/javascript/mastodon/locales/hr.json | 6 - app/javascript/mastodon/locales/hu.json | 8 +- app/javascript/mastodon/locales/hy.json | 6 - app/javascript/mastodon/locales/ia.json | 6 - app/javascript/mastodon/locales/id.json | 6 - app/javascript/mastodon/locales/ie.json | 6 - app/javascript/mastodon/locales/ig.json | 2 - app/javascript/mastodon/locales/io.json | 6 - app/javascript/mastodon/locales/is.json | 11 +- app/javascript/mastodon/locales/it.json | 6 - app/javascript/mastodon/locales/ja.json | 6 - app/javascript/mastodon/locales/ka.json | 6 - app/javascript/mastodon/locales/kab.json | 6 - app/javascript/mastodon/locales/kk.json | 6 - app/javascript/mastodon/locales/kn.json | 4 - app/javascript/mastodon/locales/ko.json | 6 - app/javascript/mastodon/locales/ku.json | 7 +- app/javascript/mastodon/locales/kw.json | 6 - app/javascript/mastodon/locales/la.json | 2 - app/javascript/mastodon/locales/lad.json | 6 - app/javascript/mastodon/locales/lt.json | 19 ++- app/javascript/mastodon/locales/lv.json | 11 +- app/javascript/mastodon/locales/mk.json | 4 - app/javascript/mastodon/locales/ml.json | 5 - app/javascript/mastodon/locales/mr.json | 4 - app/javascript/mastodon/locales/ms.json | 6 - app/javascript/mastodon/locales/my.json | 6 - app/javascript/mastodon/locales/nan.json | 115 ++++++++++++++++++- app/javascript/mastodon/locales/ne.json | 1 - app/javascript/mastodon/locales/nl.json | 11 +- app/javascript/mastodon/locales/nn.json | 6 - app/javascript/mastodon/locales/no.json | 6 - app/javascript/mastodon/locales/oc.json | 6 - app/javascript/mastodon/locales/pa.json | 6 - app/javascript/mastodon/locales/pl.json | 6 - app/javascript/mastodon/locales/pt-BR.json | 6 - app/javascript/mastodon/locales/pt-PT.json | 6 - app/javascript/mastodon/locales/ro.json | 6 - app/javascript/mastodon/locales/ru.json | 29 +++-- app/javascript/mastodon/locales/ry.json | 1 - app/javascript/mastodon/locales/sa.json | 5 - app/javascript/mastodon/locales/sc.json | 6 - app/javascript/mastodon/locales/sco.json | 6 - app/javascript/mastodon/locales/si.json | 6 - app/javascript/mastodon/locales/sk.json | 6 - app/javascript/mastodon/locales/sl.json | 6 - app/javascript/mastodon/locales/sq.json | 11 +- app/javascript/mastodon/locales/sr-Latn.json | 6 - app/javascript/mastodon/locales/sr.json | 6 - app/javascript/mastodon/locales/sv.json | 6 - app/javascript/mastodon/locales/szl.json | 4 - app/javascript/mastodon/locales/ta.json | 6 - app/javascript/mastodon/locales/tai.json | 4 - app/javascript/mastodon/locales/te.json | 9 +- app/javascript/mastodon/locales/th.json | 6 - app/javascript/mastodon/locales/tok.json | 6 - app/javascript/mastodon/locales/tr.json | 11 +- app/javascript/mastodon/locales/tt.json | 4 - app/javascript/mastodon/locales/ug.json | 4 - app/javascript/mastodon/locales/uk.json | 6 - app/javascript/mastodon/locales/ur.json | 4 - app/javascript/mastodon/locales/uz.json | 3 - app/javascript/mastodon/locales/vi.json | 15 ++- app/javascript/mastodon/locales/zgh.json | 4 - app/javascript/mastodon/locales/zh-CN.json | 6 - app/javascript/mastodon/locales/zh-HK.json | 6 - app/javascript/mastodon/locales/zh-TW.json | 11 +- config/locales/activerecord.eo.yml | 2 + config/locales/ca.yml | 2 + config/locales/cs.yml | 2 + config/locales/da.yml | 2 + config/locales/de.yml | 8 +- config/locales/es-AR.yml | 2 + config/locales/es-MX.yml | 2 + config/locales/es.yml | 2 + config/locales/fi.yml | 2 + config/locales/fo.yml | 2 + config/locales/fy.yml | 44 +++++++ config/locales/ga.yml | 3 + config/locales/gl.yml | 2 + config/locales/he.yml | 2 + config/locales/hu.yml | 2 + config/locales/is.yml | 2 + config/locales/lt.yml | 2 + config/locales/lv.yml | 2 + config/locales/nl.yml | 2 + config/locales/simple_form.de.yml | 4 +- config/locales/simple_form.fy.yml | 10 ++ config/locales/sq.yml | 2 + config/locales/tr.yml | 2 + config/locales/uk.yml | 2 + config/locales/vi.yml | 2 + config/locales/zh-CN.yml | 1 + config/locales/zh-TW.yml | 2 + 131 files changed, 384 insertions(+), 586 deletions(-) diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 3c79106108..2d7b98dbbf 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -86,7 +86,6 @@ "column.lists": "Lyste", "column.mutes": "Uitgedoofte gebruikers", "column.notifications": "Kennisgewings", - "column.pins": "Vasgemaakte plasings", "column.public": "Gefedereerde tydlyn", "column_back_button.label": "Terug", "column_header.hide_settings": "Versteek instellings", @@ -196,7 +195,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "Vertoon kennisgewingkolom", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "Vertoon vasgemaakte plasings", "keyboard_shortcuts.profile": "Vertoon skrywersprofiel", "keyboard_shortcuts.reply": "Reageer op plasing", "keyboard_shortcuts.requests": "Sien volgversoeke", @@ -224,7 +222,6 @@ "navigation_bar.lists": "Lyste", "navigation_bar.logout": "Teken uit", "navigation_bar.personal": "Persoonlik", - "navigation_bar.pins": "Vasgemaakte plasings", "navigation_bar.preferences": "Voorkeure", "navigation_bar.public_timeline": "Gefedereerde tydlyn", "navigation_bar.search": "Soek", @@ -262,7 +259,6 @@ "status.copy": "Kopieer skakel na hierdie plasing", "status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}", "status.open": "Brei hierdie plasing uit", - "status.pinned": "Vasgemaakte plasing", "status.reblog": "Stuur aan", "status.reblog_private": "Stuur aan met oorspronklike sigbaarheid", "status.reblogged_by": "Aangestuur deur {name}", diff --git a/app/javascript/mastodon/locales/an.json b/app/javascript/mastodon/locales/an.json index c56de3f04b..14d400781a 100644 --- a/app/javascript/mastodon/locales/an.json +++ b/app/javascript/mastodon/locales/an.json @@ -96,7 +96,6 @@ "column.lists": "Listas", "column.mutes": "Usuarios silenciaus", "column.notifications": "Notificacions", - "column.pins": "Publicacions fixadas", "column.public": "Linia de tiempo federada", "column_back_button.label": "Dezaga", "column_header.hide_settings": "Amagar configuración", @@ -264,7 +263,6 @@ "keyboard_shortcuts.my_profile": "Ubrir lo tuyo perfil", "keyboard_shortcuts.notifications": "Ubrir la columna de notificacions", "keyboard_shortcuts.open_media": "Ubrir fichers multimedia", - "keyboard_shortcuts.pinned": "Ubrir la lista de publicacions destacadas", "keyboard_shortcuts.profile": "Ubrir lo perfil de l'autor", "keyboard_shortcuts.reply": "Responder publicación", "keyboard_shortcuts.requests": "Ubrir la lista de peticions de seguidores", @@ -303,7 +301,6 @@ "navigation_bar.logout": "Zarrar sesión", "navigation_bar.mutes": "Usuarios silenciaus", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Publicacions fixadas", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Linia de tiempo federada", "navigation_bar.search": "Buscar", @@ -452,8 +449,6 @@ "status.mute": "Silenciar @{name}", "status.mute_conversation": "Silenciar conversación", "status.open": "Expandir estau", - "status.pin": "Fixar", - "status.pinned": "Publicación fixada", "status.read_more": "Leyer mas", "status.reblog": "Retutar", "status.reblog_private": "Empentar con l'audiencia orichinal", @@ -474,7 +469,6 @@ "status.translate": "Traducir", "status.translated_from_with": "Traduciu de {lang} usando {provider}", "status.unmute_conversation": "Deixar de silenciar conversación", - "status.unpin": "Deixar de fixar", "subscribed_languages.lead": "Nomás los mensaches en os idiomas triaus amaneixerán en o suyo inicio y atras linias de tiempo dimpués d'o cambio. Tríe garra pa recibir mensaches en totz los idiomas.", "subscribed_languages.save": "Alzar cambios", "subscribed_languages.target": "Cambiar idiomas suscritos pa {target}", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index 209c3b492f..fcdd16c363 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -131,7 +131,6 @@ "column.lists": "القوائم", "column.mutes": "المُستَخدِمون المَكتومون", "column.notifications": "الإشعارات", - "column.pins": "المنشورات المُثَبَّتَة", "column.public": "الخيط الفيدرالي", "column_back_button.label": "العودة", "column_header.hide_settings": "إخفاء الإعدادات", @@ -395,7 +394,6 @@ "keyboard_shortcuts.my_profile": "لفتح ملفك التعريفي", "keyboard_shortcuts.notifications": "لفتح عمود الإشعارات", "keyboard_shortcuts.open_media": "لفتح الوسائط", - "keyboard_shortcuts.pinned": "لفتح قائمة المنشورات المثبتة", "keyboard_shortcuts.profile": "لفتح الملف التعريفي للناشر", "keyboard_shortcuts.reply": "للردّ", "keyboard_shortcuts.requests": "لفتح قائمة طلبات المتابعة", @@ -464,7 +462,6 @@ "navigation_bar.mutes": "الحسابات المكتومة", "navigation_bar.opened_in_classic_interface": "تُفتَح المنشورات والحسابات وغيرها من الصفحات الخاصة بشكل مبدئي على واجهة الويب التقليدية.", "navigation_bar.personal": "شخصي", - "navigation_bar.pins": "المنشورات المُثَبَّتَة", "navigation_bar.preferences": "التفضيلات", "navigation_bar.public_timeline": "الخيط الفيدرالي", "navigation_bar.search": "البحث", @@ -724,8 +721,6 @@ "status.mute": "أكتم @{name}", "status.mute_conversation": "كتم المحادثة", "status.open": "وسّع هذا المنشور", - "status.pin": "دبّسه على الصفحة التعريفية", - "status.pinned": "منشور مثبَّت", "status.read_more": "اقرأ المزيد", "status.reblog": "إعادة النشر", "status.reblog_private": "إعادة النشر إلى الجمهور الأصلي", @@ -749,7 +744,6 @@ "status.translated_from_with": "مترجم من {lang} باستخدام {provider}", "status.uncached_media_warning": "المعاينة غير متوفرة", "status.unmute_conversation": "فك الكتم عن المحادثة", - "status.unpin": "فك التدبيس من الصفحة التعريفية", "subscribed_languages.lead": "فقط المنشورات في اللغات المحددة ستظهر في خيطك الرئيسي وتسرد في الجداول الزمنية بعد تأكيد التغيير. لا تقم بأي خيار لتلقي المنشورات في جميع اللغات.", "subscribed_languages.save": "حفظ التغييرات", "subscribed_languages.target": "تغيير اللغات المشتركة لـ {target}", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index 674e93d108..825fe657f9 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -112,7 +112,6 @@ "column.lists": "Llistes", "column.mutes": "Perfiles colos avisos desactivaos", "column.notifications": "Avisos", - "column.pins": "Artículos fixaos", "column.public": "Llinia de tiempu federada", "column_back_button.label": "Atrás", "column_header.moveLeft_settings": "Mover la columna a la esquierda", @@ -309,7 +308,6 @@ "keyboard_shortcuts.my_profile": "Abrir el to perfil", "keyboard_shortcuts.notifications": "Abrir la columna d'avisos", "keyboard_shortcuts.open_media": "Abrir el conteníu mutimedia", - "keyboard_shortcuts.pinned": "Abrir la llista d'artículos fixaos", "keyboard_shortcuts.profile": "Abrir el perfil del autor/a", "keyboard_shortcuts.reply": "Responder a una publicación", "keyboard_shortcuts.requests": "Abrir la llista de solicitúes de siguimientu", @@ -359,7 +357,6 @@ "navigation_bar.mutes": "Perfiles colos avisos desactivaos", "navigation_bar.opened_in_classic_interface": "Los artículos, les cuentes y otres páxines específiques ábrense por defeutu na interfaz web clásica.", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Artículos fixaos", "navigation_bar.preferences": "Preferencies", "navigation_bar.public_timeline": "Llinia de tiempu federada", "navigation_bar.security": "Seguranza", @@ -529,8 +526,6 @@ "status.mute": "Desactivar los avisos de @{name}", "status.mute_conversation": "Desactivar los avisos de la conversación", "status.open": "Espander esta publicación", - "status.pin": "Fixar nel perfil", - "status.pinned": "Publicación fixada", "status.read_more": "Lleer más", "status.reblog": "Compartir", "status.reblogged_by": "{name} compartió", @@ -548,7 +543,6 @@ "status.translated_from_with": "Tradúxose del {lang} con {provider}", "status.uncached_media_warning": "La previsualización nun ta disponible", "status.unmute_conversation": "Activar los avisos de la conversación", - "status.unpin": "Lliberar del perfil", "subscribed_languages.save": "Guardar los cambeos", "tabs_bar.home": "Aniciu", "tabs_bar.notifications": "Avisos", diff --git a/app/javascript/mastodon/locales/az.json b/app/javascript/mastodon/locales/az.json index 1847fdf85b..c7463581cd 100644 --- a/app/javascript/mastodon/locales/az.json +++ b/app/javascript/mastodon/locales/az.json @@ -157,7 +157,6 @@ "column.lists": "Siyahılar", "column.mutes": "Səssizləşdirilmiş istifadəçilər", "column.notifications": "Bildirişlər", - "column.pins": "Bərkidilmiş paylaşımlar", "column.public": "Federasiya zaman qrafiki", "column_back_button.label": "Geriyə", "column_header.hide_settings": "Parametrləri gizlət", diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json index 96e8540456..d1a825fa28 100644 --- a/app/javascript/mastodon/locales/be.json +++ b/app/javascript/mastodon/locales/be.json @@ -151,7 +151,6 @@ "column.lists": "Спісы", "column.mutes": "Ігнараваныя карыстальнікі", "column.notifications": "Апавяшчэнні", - "column.pins": "Замацаваныя допісы", "column.public": "Інтэграваная стужка", "column_back_button.label": "Назад", "column_header.hide_settings": "Схаваць налады", @@ -440,7 +439,6 @@ "keyboard_shortcuts.my_profile": "Адкрыць ваш профіль", "keyboard_shortcuts.notifications": "Адкрыць слупок апавяшчэнняў", "keyboard_shortcuts.open_media": "Адкрыць медыя", - "keyboard_shortcuts.pinned": "Адкрыць спіс замацаваных допісаў", "keyboard_shortcuts.profile": "Адкрыць профіль аўтара", "keyboard_shortcuts.reply": "Адказаць на допіс", "keyboard_shortcuts.requests": "Адкрыць спіс запытаў на падпіску", @@ -505,7 +503,6 @@ "navigation_bar.mutes": "Ігнараваныя карыстальнікі", "navigation_bar.opened_in_classic_interface": "Допісы, уліковыя запісы і іншыя спецыфічныя старонкі па змоўчанні адчыняюцца ў класічным вэб-інтэрфейсе.", "navigation_bar.personal": "Асабістае", - "navigation_bar.pins": "Замацаваныя допісы", "navigation_bar.preferences": "Налады", "navigation_bar.public_timeline": "Глабальная стужка", "navigation_bar.search": "Пошук", @@ -782,8 +779,6 @@ "status.mute": "Ігнараваць @{name}", "status.mute_conversation": "Ігнараваць размову", "status.open": "Разгарнуць гэты допіс", - "status.pin": "Замацаваць у профілі", - "status.pinned": "Замацаваны допіс", "status.read_more": "Чытаць болей", "status.reblog": "Пашырыць", "status.reblog_private": "Пашырыць з першапачатковай бачнасцю", @@ -807,7 +802,6 @@ "status.translated_from_with": "Перакладзена з {lang} з дапамогай {provider}", "status.uncached_media_warning": "Перадпрагляд недаступны", "status.unmute_conversation": "Не ігнараваць размову", - "status.unpin": "Адмацаваць ад профілю", "subscribed_languages.lead": "Толькі допісы ў абраных мовах будуць паказвацца ў вашых стужках пасля змены. Не абірайце нічога, каб бачыць допісы на ўсіх мовах.", "subscribed_languages.save": "Захаваць змены", "subscribed_languages.target": "Змяніць мовы падпіскі для {target}", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 07c32d1b3a..43b1135f93 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -162,7 +162,6 @@ "column.lists": "Списъци", "column.mutes": "Заглушени потребители", "column.notifications": "Известия", - "column.pins": "Закачени публикации", "column.public": "Федеративна хронология", "column_back_button.label": "Назад", "column_header.hide_settings": "Скриване на настройките", @@ -465,7 +464,6 @@ "keyboard_shortcuts.my_profile": "Отваряне на профила ви", "keyboard_shortcuts.notifications": "Отваряне на колоната с известия", "keyboard_shortcuts.open_media": "Отваряне на мултимедията", - "keyboard_shortcuts.pinned": "Отваряне на списъка със закачени публикации", "keyboard_shortcuts.profile": "Отваряне на профила на автора", "keyboard_shortcuts.reply": "Отговаряне на публикация", "keyboard_shortcuts.requests": "Отваряне на списъка със заявки за последване", @@ -549,7 +547,6 @@ "navigation_bar.mutes": "Заглушени потребители", "navigation_bar.opened_in_classic_interface": "Публикации, акаунти и други особени страници се отварят по подразбиране в класическия мрежови интерфейс.", "navigation_bar.personal": "Лично", - "navigation_bar.pins": "Закачени публикации", "navigation_bar.preferences": "Предпочитания", "navigation_bar.public_timeline": "Федеративна хронология", "navigation_bar.search": "Търсене", @@ -845,8 +842,6 @@ "status.mute": "Заглушаване на @{name}", "status.mute_conversation": "Заглушаване на разговора", "status.open": "Разширяване на публикацията", - "status.pin": "Закачане в профила", - "status.pinned": "Закачена публикация", "status.read_more": "Още за четене", "status.reblog": "Подсилване", "status.reblog_private": "Подсилване с оригиналната видимост", @@ -871,7 +866,6 @@ "status.translated_from_with": "Преведено от {lang}, използвайки {provider}", "status.uncached_media_warning": "Онагледяването не е налично", "status.unmute_conversation": "Без заглушаването на разговора", - "status.unpin": "Разкачане от профила", "subscribed_languages.lead": "Публикации само на избрани езици ще се явяват в началото ви и в хронологичните списъци след промяната. Изберете \"нищо\", за да получавате публикации на всички езици.", "subscribed_languages.save": "Запазване на промените", "subscribed_languages.target": "Промяна на абонираните езици за {target}", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index bef579b95e..1c92458bed 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -112,7 +112,6 @@ "column.lists": "তালিকাগুলো", "column.mutes": "যাদের কার্যক্রম দেখা বন্ধ আছে", "column.notifications": "প্রজ্ঞাপনগুলো", - "column.pins": "পিন করা টুট", "column.public": "যুক্ত সময়রেখা", "column_back_button.label": "পেছনে", "column_header.hide_settings": "সেটিংগুলো সরান", @@ -258,7 +257,6 @@ "keyboard_shortcuts.my_profile": "আপনার নিজের পাতা দেখতে", "keyboard_shortcuts.notifications": "প্রজ্ঞাপনের কলাম খুলতে", "keyboard_shortcuts.open_media": "মিডিয়া খলার জন্য", - "keyboard_shortcuts.pinned": "পিন দেওয়া টুটের তালিকা খুলতে", "keyboard_shortcuts.profile": "লেখকের পাতা দেখতে", "keyboard_shortcuts.reply": "মতামত দিতে", "keyboard_shortcuts.requests": "অনুসরণ অনুরোধের তালিকা দেখতে", @@ -294,7 +292,6 @@ "navigation_bar.logout": "বাইরে যান", "navigation_bar.mutes": "যাদের কার্যক্রম দেখা বন্ধ আছে", "navigation_bar.personal": "নিজস্ব", - "navigation_bar.pins": "পিন দেওয়া টুট", "navigation_bar.preferences": "পছন্দসমূহ", "navigation_bar.public_timeline": "যুক্তবিশ্বের সময়রেখা", "navigation_bar.search": "অনুসন্ধান", @@ -389,8 +386,6 @@ "status.mute": "@{name}র কার্যক্রম সরিয়ে ফেলতে", "status.mute_conversation": "কথোপকথননের প্রজ্ঞাপন সরিয়ে ফেলতে", "status.open": "এটার সম্পূর্ণটা দেখতে", - "status.pin": "নিজের পাতায় এটা পিন করতে", - "status.pinned": "পিন করা টুট", "status.read_more": "আরো পড়ুন", "status.reblog": "সমর্থন দিতে", "status.reblog_private": "আপনার অনুসরণকারীদের কাছে এটার সমর্থন দেখাতে", @@ -408,7 +403,6 @@ "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "status.translate": "অনুবাদ", "status.unmute_conversation": "আলোচনার প্রজ্ঞাপন চালু করতে", - "status.unpin": "নিজের পাতা থেকে পিন করে রাখাটির পিন খুলতে", "tabs_bar.home": "বাড়ি", "tabs_bar.notifications": "প্রজ্ঞাপনগুলো", "time_remaining.days": "{number, plural, one {# day} other {# days}} বাকি আছে", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index 4c37c80fb9..8e93da5b82 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -124,7 +124,6 @@ "column.lists": "Listennoù", "column.mutes": "Implijer·ion·ezed kuzhet", "column.notifications": "Kemennoù", - "column.pins": "Embannadurioù spilhennet", "column.public": "Red-amzer kevredet", "column_back_button.label": "Distreiñ", "column_header.hide_settings": "Kuzhat an arventennoù", @@ -329,7 +328,6 @@ "keyboard_shortcuts.my_profile": "Digeriñ ho profil", "keyboard_shortcuts.notifications": "Digeriñ bann ar c'hemennoù", "keyboard_shortcuts.open_media": "Digeriñ ar media", - "keyboard_shortcuts.pinned": "Digeriñ listenn an toudoù spilhennet", "keyboard_shortcuts.profile": "Digeriñ profil an aozer.ez", "keyboard_shortcuts.reply": "Respont d'an toud", "keyboard_shortcuts.requests": "Digeriñ roll goulennoù heuliañ", @@ -378,7 +376,6 @@ "navigation_bar.logout": "Digennaskañ", "navigation_bar.mutes": "Implijer·ion·ezed kuzhet", "navigation_bar.personal": "Personel", - "navigation_bar.pins": "Toudoù spilhennet", "navigation_bar.preferences": "Gwellvezioù", "navigation_bar.public_timeline": "Red-amzer kevredet", "navigation_bar.search": "Klask", @@ -578,8 +575,6 @@ "status.mute": "Kuzhat @{name}", "status.mute_conversation": "Kuzhat ar gaozeadenn", "status.open": "Digeriñ ar c'hannad-mañ", - "status.pin": "Spilhennañ d'ar profil", - "status.pinned": "Toud spilhennet", "status.read_more": "Lenn muioc'h", "status.reblog": "Skignañ", "status.reblog_private": "Skignañ gant ar weledenn gentañ", @@ -601,7 +596,6 @@ "status.translated_from_with": "Troet diwar {lang} gant {provider}", "status.uncached_media_warning": "Rakwel n'eo ket da gaout", "status.unmute_conversation": "Diguzhat ar gaozeadenn", - "status.unpin": "Dispilhennañ eus ar profil", "subscribed_languages.save": "Enrollañ ar cheñchamantoù", "subscribed_languages.target": "Cheñch ar yezhoù koumanantet evit {target}", "tabs_bar.home": "Degemer", diff --git a/app/javascript/mastodon/locales/bs.json b/app/javascript/mastodon/locales/bs.json index 9fbed54565..16c90a74b5 100644 --- a/app/javascript/mastodon/locales/bs.json +++ b/app/javascript/mastodon/locales/bs.json @@ -2,7 +2,6 @@ "account.badges.bot": "Bot", "account.cancel_follow_request": "Withdraw follow request", "account_note.placeholder": "Click to add a note", - "column.pins": "Pinned post", "community.column_settings.media_only": "Media only", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", @@ -34,7 +33,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned posts list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index b923cbad29..26dd71b8ab 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -168,7 +168,7 @@ "column.lists": "Llistes", "column.mutes": "Usuaris silenciats", "column.notifications": "Notificacions", - "column.pins": "Tuts fixats", + "column.pins": "Publicacions destacades", "column.public": "Línia de temps federada", "column_back_button.label": "Enrere", "column_header.hide_settings": "Amaga la configuració", @@ -476,7 +476,7 @@ "keyboard_shortcuts.my_profile": "Obre el teu perfil", "keyboard_shortcuts.notifications": "Obre la columna de notificacions", "keyboard_shortcuts.open_media": "Obre mèdia", - "keyboard_shortcuts.pinned": "Obre la llista de tuts fixats", + "keyboard_shortcuts.pinned": "Obre la llista de publicacions destacades", "keyboard_shortcuts.profile": "Obre el perfil de l'autor", "keyboard_shortcuts.reply": "Respon al tut", "keyboard_shortcuts.requests": "Obre la llista de sol·licituds de seguiment", @@ -560,7 +560,7 @@ "navigation_bar.mutes": "Usuaris silenciats", "navigation_bar.opened_in_classic_interface": "Els tuts, comptes i altres pàgines especifiques s'obren per defecte en la interfície web clàssica.", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Tuts fixats", + "navigation_bar.pins": "Publicacions destacades", "navigation_bar.preferences": "Preferències", "navigation_bar.public_timeline": "Línia de temps federada", "navigation_bar.search": "Cerca", @@ -856,8 +856,7 @@ "status.mute": "Silencia @{name}", "status.mute_conversation": "Silencia la conversa", "status.open": "Amplia el tut", - "status.pin": "Fixa en el perfil", - "status.pinned": "Tut fixat", + "status.pin": "Destaca al perfil", "status.read_more": "Més informació", "status.reblog": "Impulsa", "status.reblog_private": "Impulsa amb la visibilitat original", @@ -882,7 +881,7 @@ "status.translated_from_with": "Traduït del {lang} fent servir {provider}", "status.uncached_media_warning": "Previsualització no disponible", "status.unmute_conversation": "Deixa de silenciar la conversa", - "status.unpin": "Desfixa del perfil", + "status.unpin": "No destaquis al perfil", "subscribed_languages.lead": "Només els tuts en les llengües seleccionades apareixeran en les teves línies de temps \"Inici\" i \"Llistes\" després del canvi. No en seleccionis cap per a rebre tuts en totes les llengües.", "subscribed_languages.save": "Desa els canvis", "subscribed_languages.target": "Canvia les llengües subscrites per a {target}", diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json index 5cca00ca96..d09c29e81c 100644 --- a/app/javascript/mastodon/locales/ckb.json +++ b/app/javascript/mastodon/locales/ckb.json @@ -112,7 +112,6 @@ "column.lists": "پێرست", "column.mutes": "بێدەنگکردنی بەکارهێنەران", "column.notifications": "ئاگادارییەکان", - "column.pins": "تووتسی چەسپاو", "column.public": "نووسراوەکانی هەمووشوێنێک", "column_back_button.label": "دواوە", "column_header.hide_settings": "شاردنەوەی ڕێکخستنەکان", @@ -308,7 +307,6 @@ "keyboard_shortcuts.my_profile": "بۆ کردنەوەی پرۆفایڵ", "keyboard_shortcuts.notifications": "بۆ کردنەوەی ستوونی ئاگانامەکان", "keyboard_shortcuts.open_media": "بۆ کردنەوەی میدیا", - "keyboard_shortcuts.pinned": "بۆ کردنەوەی لیستی توتەکانی چەسپێنراو", "keyboard_shortcuts.profile": "بۆ کردنەوەی پرۆفایڵی نووسەر", "keyboard_shortcuts.reply": "بۆ وەڵامدانەوە", "keyboard_shortcuts.requests": "بۆ کردنەوەی لیستی داواکاریەکانی بەدوادا", @@ -349,7 +347,6 @@ "navigation_bar.logout": "دەرچوون", "navigation_bar.mutes": "کپکردنی بەکارهێنەران", "navigation_bar.personal": "کەسی", - "navigation_bar.pins": "توتی چەسپاو", "navigation_bar.preferences": "پەسەندەکان", "navigation_bar.public_timeline": "نووسراوەکانی هەمووشوێنێک", "navigation_bar.search": "گەڕان", @@ -508,8 +505,6 @@ "status.mute": "@{name} بێدەنگ بکە", "status.mute_conversation": "بێدەنگی بکە", "status.open": "ئەم توتە فراوان بکە", - "status.pin": "لکاندن لەسەر پرۆفایل", - "status.pinned": "توتی چەسپکراو", "status.read_more": "زیاتر بخوێنەوە", "status.reblog": "بەهێزکردن", "status.reblog_private": "بەهێزکردن بۆ بینەرانی سەرەتایی", @@ -530,7 +525,6 @@ "status.translate": "وەریبگێرە", "status.translated_from_with": "لە {lang} وەرگێڕدراوە بە بەکارهێنانی {provider}", "status.unmute_conversation": "گفتوگۆی بێدەنگ", - "status.unpin": "لە سەرەوە لایبە", "subscribed_languages.lead": "تەنها پۆستەکان بە زمانە هەڵبژێردراوەکان لە ماڵەکەتدا دەردەکەون و هێڵەکانی کاتی لیستەکەت دوای گۆڕانکارییەکە. هیچیان هەڵبژێرە بۆ وەرگرتنی پۆست بە هەموو زمانەکان.", "subscribed_languages.save": "پاشکەوتی گۆڕانکاریەکان", "subscribed_languages.target": "گۆڕینی زمانە بەشداربووەکان بۆ {target}", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index 69137a3fd7..9b7c9910d9 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -53,7 +53,6 @@ "column.lists": "Liste", "column.mutes": "Utilizatori piattati", "column.notifications": "Nutificazione", - "column.pins": "Statuti puntarulati", "column.public": "Linea pubblica glubale", "column_back_button.label": "Ritornu", "column_header.hide_settings": "Piattà i parametri", @@ -178,7 +177,6 @@ "keyboard_shortcuts.my_profile": "per apre u vostru prufile", "keyboard_shortcuts.notifications": "per apre a culonna di nutificazione", "keyboard_shortcuts.open_media": "per apre i media", - "keyboard_shortcuts.pinned": "per apre a lista di statuti puntarulati", "keyboard_shortcuts.profile": "per apre u prufile di l'autore", "keyboard_shortcuts.reply": "risponde", "keyboard_shortcuts.requests": "per apre a lista di dumande d'abbunamentu", @@ -212,7 +210,6 @@ "navigation_bar.logout": "Scunnettassi", "navigation_bar.mutes": "Utilizatori piattati", "navigation_bar.personal": "Persunale", - "navigation_bar.pins": "Statuti puntarulati", "navigation_bar.preferences": "Preferenze", "navigation_bar.public_timeline": "Linea pubblica glubale", "navigation_bar.security": "Sicurità", @@ -296,8 +293,6 @@ "status.mute": "Piattà @{name}", "status.mute_conversation": "Piattà a cunversazione", "status.open": "Apre stu statutu", - "status.pin": "Puntarulà à u prufile", - "status.pinned": "Statutu puntarulatu", "status.read_more": "Leghje di più", "status.reblog": "Sparte", "status.reblog_private": "Sparte à l'audienza uriginale", @@ -314,7 +309,6 @@ "status.show_more_all": "Slibrà tuttu", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "status.unmute_conversation": "Ùn piattà più a cunversazione", - "status.unpin": "Spuntarulà da u prufile", "tabs_bar.home": "Accolta", "tabs_bar.notifications": "Nutificazione", "time_remaining.days": "{number, plural, one {# ghjornu ferma} other {# ghjorni fermanu}}", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index f5530acc64..0f7a28a7f7 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -168,7 +168,7 @@ "column.lists": "Seznamy", "column.mutes": "Skrytí uživatelé", "column.notifications": "Oznámení", - "column.pins": "Připnuté příspěvky", + "column.pins": "Zvýrazněné příspěvky", "column.public": "Federovaná časová osa", "column_back_button.label": "Zpět", "column_header.hide_settings": "Skrýt nastavení", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Otevřít váš profil", "keyboard_shortcuts.notifications": "Otevřít sloupec oznámení", "keyboard_shortcuts.open_media": "Otevřít média", - "keyboard_shortcuts.pinned": "Otevřít seznam připnutých příspěvků", + "keyboard_shortcuts.pinned": "Otevřít seznam zvýrazněných příspěvků", "keyboard_shortcuts.profile": "Otevřít autorův profil", "keyboard_shortcuts.reply": "Odpovědět na příspěvek", "keyboard_shortcuts.requests": "Otevřít seznam žádostí o sledování", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "Skrytí uživatelé", "navigation_bar.opened_in_classic_interface": "Příspěvky, účty a další specifické stránky jsou ve výchozím nastavení otevřeny v klasickém webovém rozhraní.", "navigation_bar.personal": "Osobní", - "navigation_bar.pins": "Připnuté příspěvky", + "navigation_bar.pins": "Zvýrazněné příspěvky", "navigation_bar.preferences": "Předvolby", "navigation_bar.public_timeline": "Federovaná časová osa", "navigation_bar.search": "Hledat", @@ -857,8 +857,7 @@ "status.mute": "Skrýt @{name}", "status.mute_conversation": "Skrýt konverzaci", "status.open": "Rozbalit tento příspěvek", - "status.pin": "Připnout na profil", - "status.pinned": "Připnutý příspěvek", + "status.pin": "Zvýraznit na profilu", "status.read_more": "Číst více", "status.reblog": "Boostnout", "status.reblog_private": "Boostnout s původní viditelností", @@ -883,7 +882,7 @@ "status.translated_from_with": "Přeloženo z {lang} pomocí {provider}", "status.uncached_media_warning": "Náhled není k dispozici", "status.unmute_conversation": "Zrušit skrytí konverzace", - "status.unpin": "Odepnout z profilu", + "status.unpin": "Nezvýrazňovat na profilu", "subscribed_languages.lead": "Ve vašem domovském kanálu a časových osách se po změně budou objevovat pouze příspěvky ve vybraných jazycích. Pro příjem příspěvků ve všech jazycích nevyberte žádný jazyk.", "subscribed_languages.save": "Uložit změny", "subscribed_languages.target": "Změnit odebírané jazyky na {target}", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index 207303b665..fcdca7da24 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -168,7 +168,7 @@ "column.lists": "Rhestrau", "column.mutes": "Defnyddwyr wedi'u tewi", "column.notifications": "Hysbysiadau", - "column.pins": "Postiadau wedi eu pinio", + "column.pins": "Postiadau nodwedd", "column.public": "Ffrwd y ffederasiwn", "column_back_button.label": "Nôl", "column_header.hide_settings": "Cuddio'r dewisiadau", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Agor eich proffil", "keyboard_shortcuts.notifications": "Agor colofn hysbysiadau", "keyboard_shortcuts.open_media": "Agor cyfryngau", - "keyboard_shortcuts.pinned": "Agor rhestr postiadau wedi'u pinio", + "keyboard_shortcuts.pinned": "Agor rhestr postiadau nodwedd", "keyboard_shortcuts.profile": "Agor proffil yr awdur", "keyboard_shortcuts.reply": "Ymateb i bostiad", "keyboard_shortcuts.requests": "Agor rhestr ceisiadau dilyn", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "Defnyddwyr wedi'u tewi", "navigation_bar.opened_in_classic_interface": "Mae postiadau, cyfrifon a thudalennau penodol eraill yn cael eu hagor fel rhagosodiad yn y rhyngwyneb gwe clasurol.", "navigation_bar.personal": "Personol", - "navigation_bar.pins": "Postiadau wedi eu pinio", + "navigation_bar.pins": "Postiadau nodwedd", "navigation_bar.preferences": "Dewisiadau", "navigation_bar.public_timeline": "Ffrwd y ffederasiwn", "navigation_bar.search": "Chwilio", @@ -857,8 +857,7 @@ "status.mute": "Anwybyddu @{name}", "status.mute_conversation": "Anwybyddu sgwrs", "status.open": "Ehangu'r post hwn", - "status.pin": "Pinio ar y proffil", - "status.pinned": "Postiad wedi'i binio", + "status.pin": "Dangos ar y proffil", "status.read_more": "Darllen rhagor", "status.reblog": "Hybu", "status.reblog_private": "Hybu i'r gynulleidfa wreiddiol", @@ -883,7 +882,7 @@ "status.translated_from_with": "Cyfieithwyd o {lang} gan ddefnyddio {provider}", "status.uncached_media_warning": "Dim rhagolwg ar gael", "status.unmute_conversation": "Dad-dewi sgwrs", - "status.unpin": "Dadbinio o'r proffil", + "status.unpin": "Peidio a'i ddangos ar fy mhroffil", "subscribed_languages.lead": "Dim ond postiadau mewn ieithoedd penodol fydd yn ymddangos yn eich ffrydiau cartref a rhestr ar ôl y newid. Dewiswch ddim byd i dderbyn postiadau ym mhob iaith.", "subscribed_languages.save": "Cadw'r newidiadau", "subscribed_languages.target": "Newid ieithoedd tanysgrifio {target}", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 1306e3c27b..578722a035 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -168,7 +168,7 @@ "column.lists": "Lister", "column.mutes": "Skjulte brugere", "column.notifications": "Notifikationer", - "column.pins": "Fastgjorte indlæg", + "column.pins": "Fremhævede indlæg", "column.public": "Fælles tidslinje", "column_back_button.label": "Tilbage", "column_header.hide_settings": "Skjul indstillinger", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Åbn din profil", "keyboard_shortcuts.notifications": "for at åbne notifikationskolonnen", "keyboard_shortcuts.open_media": "Åbn medier", - "keyboard_shortcuts.pinned": "Åbn liste over fastgjorte indlæg", + "keyboard_shortcuts.pinned": "Åbn liste over fremhævede indlæg", "keyboard_shortcuts.profile": "Åbn forfatters profil", "keyboard_shortcuts.reply": "Besvar indlægget", "keyboard_shortcuts.requests": "Åbn liste over følgeanmodninger", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "Skjulte brugere", "navigation_bar.opened_in_classic_interface": "Indlæg, konti og visse andre sider åbnes som standard i den klassiske webgrænseflade.", "navigation_bar.personal": "Personlig", - "navigation_bar.pins": "Fastgjorte indlæg", + "navigation_bar.pins": "Fremhævede indlæg", "navigation_bar.preferences": "Præferencer", "navigation_bar.public_timeline": "Fælles tidslinje", "navigation_bar.search": "Søg", @@ -857,8 +857,7 @@ "status.mute": "Skjul @{name}", "status.mute_conversation": "Skjul samtale", "status.open": "Udvid dette indlæg", - "status.pin": "Fastgør til profil", - "status.pinned": "Fastgjort indlæg", + "status.pin": "Fremhæv på profil", "status.read_more": "Læs mere", "status.reblog": "Fremhæv", "status.reblog_private": "Fremhæv med oprindelig synlighed", @@ -883,7 +882,7 @@ "status.translated_from_with": "Oversat fra {lang} ved brug af {provider}", "status.uncached_media_warning": "Ingen forhåndsvisning", "status.unmute_conversation": "Genaktivér samtale", - "status.unpin": "Frigør fra profil", + "status.unpin": "Fremhæv ikke på profil", "subscribed_languages.lead": "Kun indlæg på udvalgte sprog vil fremgå på dine hjemme- og listetidslinjer efter ændringen. Vælg ingen for at modtage indlæg på alle sprog.", "subscribed_languages.save": "Gem ændringer", "subscribed_languages.target": "Skift abonnementssprog for {target}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index e6eb25ec2d..f754513149 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -27,7 +27,7 @@ "account.domain_blocking": "Domain blockiert", "account.edit_profile": "Profil bearbeiten", "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", - "account.endorse": "Im Profil empfehlen", + "account.endorse": "Im Profil vorstellen", "account.featured": "Vorgestellt", "account.featured.hashtags": "Hashtags", "account.featured.posts": "Beiträge", @@ -74,7 +74,7 @@ "account.unblock_domain": "Blockierung von {domain} aufheben", "account.unblock_domain_short": "Entsperren", "account.unblock_short": "Blockierung aufheben", - "account.unendorse": "Im Profil nicht mehr empfehlen", + "account.unendorse": "Im Profil nicht mehr vorstellen", "account.unfollow": "Entfolgen", "account.unmute": "Stummschaltung von @{name} aufheben", "account.unmute_notifications_short": "Stummschaltung der Benachrichtigungen aufheben", @@ -168,7 +168,7 @@ "column.lists": "Listen", "column.mutes": "Stummgeschaltete Profile", "column.notifications": "Benachrichtigungen", - "column.pins": "Angeheftete Beiträge", + "column.pins": "Vorgestellte Beiträge", "column.public": "Föderierte Timeline", "column_back_button.label": "Zurück", "column_header.hide_settings": "Einstellungen ausblenden", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Eigenes Profil aufrufen", "keyboard_shortcuts.notifications": "Benachrichtigungen aufrufen", "keyboard_shortcuts.open_media": "Medieninhalt öffnen", - "keyboard_shortcuts.pinned": "Liste angehefteter Beiträge öffnen", + "keyboard_shortcuts.pinned": "Liste vorgestellter Beiträge öffnen", "keyboard_shortcuts.profile": "Profil aufrufen", "keyboard_shortcuts.reply": "Auf Beitrag antworten", "keyboard_shortcuts.requests": "Liste der Follower-Anfragen aufrufen", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "Stummgeschaltete Profile", "navigation_bar.opened_in_classic_interface": "Beiträge, Konten und andere bestimmte Seiten werden standardmäßig im klassischen Webinterface geöffnet.", "navigation_bar.personal": "Persönlich", - "navigation_bar.pins": "Angeheftete Beiträge", + "navigation_bar.pins": "Vorgestellte Beiträge", "navigation_bar.preferences": "Einstellungen", "navigation_bar.public_timeline": "Föderierte Timeline", "navigation_bar.search": "Suche", @@ -857,8 +857,7 @@ "status.mute": "@{name} stummschalten", "status.mute_conversation": "Unterhaltung stummschalten", "status.open": "Beitrag öffnen", - "status.pin": "Im Profil anheften", - "status.pinned": "Angehefteter Beitrag", + "status.pin": "Im Profil vorstellen", "status.read_more": "Gesamten Beitrag anschauen", "status.reblog": "Teilen", "status.reblog_private": "Mit der ursprünglichen Zielgruppe teilen", @@ -883,7 +882,7 @@ "status.translated_from_with": "Aus {lang} mittels {provider} übersetzt", "status.uncached_media_warning": "Vorschau nicht verfügbar", "status.unmute_conversation": "Stummschaltung der Unterhaltung aufheben", - "status.unpin": "Vom Profil lösen", + "status.unpin": "Im Profil nicht mehr vorstellen", "subscribed_languages.lead": "Nach der Änderung werden nur noch Beiträge in den ausgewählten Sprachen in den Timelines deiner Startseite und deiner Listen angezeigt. Wähle keine Sprache aus, um alle Beiträge zu sehen.", "subscribed_languages.save": "Änderungen speichern", "subscribed_languages.target": "Abonnierte Sprachen für {target} ändern", diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index a319e378b2..441e15622e 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -161,7 +161,6 @@ "column.lists": "Λίστες", "column.mutes": "Αποσιωπημένοι χρήστες", "column.notifications": "Ειδοποιήσεις", - "column.pins": "Καρφιτσωμένα τουτ", "column.public": "Ομοσπονδιακή ροή", "column_back_button.label": "Πίσω", "column_header.hide_settings": "Απόκρυψη ρυθμίσεων", @@ -464,7 +463,6 @@ "keyboard_shortcuts.my_profile": "Άνοιγμα του προφίλ σου", "keyboard_shortcuts.notifications": "Άνοιγμα στήλης ειδοποιήσεων", "keyboard_shortcuts.open_media": "Άνοιγμα πολυμέσων", - "keyboard_shortcuts.pinned": "Άνοιγμα λίστας καρφιτσωμένων αναρτήσεων", "keyboard_shortcuts.profile": "Άνοιγμα προφίλ συγγραφέα", "keyboard_shortcuts.reply": "Απάντηση στην ανάρτηση", "keyboard_shortcuts.requests": "Άνοιγμα λίστας αιτημάτων ακολούθησης", @@ -548,7 +546,6 @@ "navigation_bar.mutes": "Αποσιωπημένοι χρήστες", "navigation_bar.opened_in_classic_interface": "Δημοσιεύσεις, λογαριασμοί και άλλες συγκεκριμένες σελίδες ανοίγονται από προεπιλογή στην κλασική διεπαφή ιστού.", "navigation_bar.personal": "Προσωπικά", - "navigation_bar.pins": "Καρφιτσωμένες αναρτήσεις", "navigation_bar.preferences": "Προτιμήσεις", "navigation_bar.public_timeline": "Ροή συναλλαγών", "navigation_bar.search": "Αναζήτηση", @@ -844,8 +841,6 @@ "status.mute": "Σίγαση σε @{name}", "status.mute_conversation": "Σίγαση συνομιλίας", "status.open": "Επέκταση ανάρτησης", - "status.pin": "Καρφίτσωσε στο προφίλ", - "status.pinned": "Καρφιτσωμένη ανάρτηση", "status.read_more": "Διάβασε περισότερα", "status.reblog": "Ενίσχυση", "status.reblog_private": "Ενίσχυση με αρχική ορατότητα", @@ -870,7 +865,6 @@ "status.translated_from_with": "Μεταφράστηκε από {lang} χρησιμοποιώντας {provider}", "status.uncached_media_warning": "Μη διαθέσιμη προεπισκόπηση", "status.unmute_conversation": "Αναίρεση σίγασης συνομιλίας", - "status.unpin": "Ξεκαρφίτσωσε από το προφίλ", "subscribed_languages.lead": "Μόνο αναρτήσεις σε επιλεγμένες γλώσσες θα εμφανίζονται στην αρχική σου και θα παραθέτονται χρονοδιαγράμματα μετά την αλλαγή. Επέλεξε καμία για να λαμβάνεις αναρτήσεις σε όλες τις γλώσσες.", "subscribed_languages.save": "Αποθήκευση αλλαγών", "subscribed_languages.target": "Αλλαγή εγγεγραμμένων γλωσσών για {target}", diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json index e127b7b67f..89bd2d3f1a 100644 --- a/app/javascript/mastodon/locales/en-GB.json +++ b/app/javascript/mastodon/locales/en-GB.json @@ -157,7 +157,6 @@ "column.lists": "Lists", "column.mutes": "Muted users", "column.notifications": "Notifications", - "column.pins": "Pinned posts", "column.public": "Federated timeline", "column_back_button.label": "Back", "column_header.hide_settings": "Hide settings", @@ -457,7 +456,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "Open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned posts list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", @@ -541,7 +539,6 @@ "navigation_bar.mutes": "Muted users", "navigation_bar.opened_in_classic_interface": "Posts, accounts, and other specific pages are opened by default in the classic web interface.", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Pinned posts", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federated timeline", "navigation_bar.search": "Search", @@ -837,8 +834,6 @@ "status.mute": "Mute @{name}", "status.mute_conversation": "Mute conversation", "status.open": "Expand this post", - "status.pin": "Pin on profile", - "status.pinned": "Pinned post", "status.read_more": "Read more", "status.reblog": "Boost", "status.reblog_private": "Boost with original visibility", @@ -863,7 +858,6 @@ "status.translated_from_with": "Translated from {lang} using {provider}", "status.uncached_media_warning": "Preview not available", "status.unmute_conversation": "Unmute conversation", - "status.unpin": "Unpin from profile", "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.", "subscribed_languages.save": "Save changes", "subscribed_languages.target": "Change subscribed languages for {target}", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index 5cb1118e10..e45e55bbd9 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -26,7 +26,7 @@ "account.disable_notifications": "Ĉesu sciigi min kiam @{name} afiŝas", "account.edit_profile": "Redakti la profilon", "account.enable_notifications": "Sciigu min kiam @{name} afiŝos", - "account.endorse": "Prezenti ĉe via profilo", + "account.endorse": "Montri en profilo", "account.featured.hashtags": "Kradvortoj", "account.featured.posts": "Afiŝoj", "account.featured_tags.last_status_at": "Lasta afîŝo je {date}", @@ -162,7 +162,6 @@ "column.lists": "Listoj", "column.mutes": "Silentigitaj uzantoj", "column.notifications": "Sciigoj", - "column.pins": "Alpinglitaj afiŝoj", "column.public": "Fratara templinio", "column_back_button.label": "Reveni", "column_header.hide_settings": "Kaŝi la agordojn", @@ -462,7 +461,6 @@ "keyboard_shortcuts.my_profile": "Malfermu vian profilon", "keyboard_shortcuts.notifications": "Malfermu la sciigajn kolumnon", "keyboard_shortcuts.open_media": "Malfermi vidaŭdaĵon", - "keyboard_shortcuts.pinned": "Malfermu alpinglitajn afiŝojn-liston", "keyboard_shortcuts.profile": "Malfermu la profilon de aŭtoroprofilo", "keyboard_shortcuts.reply": "Respondu al afiŝo", "keyboard_shortcuts.requests": "Malfermi la liston de petoj por sekvado", @@ -546,7 +544,6 @@ "navigation_bar.mutes": "Silentigitaj uzantoj", "navigation_bar.opened_in_classic_interface": "Afiŝoj, kontoj, kaj aliaj specifaj paĝoj kiuj estas malfermititaj defaulta en la klasika reta interfaco.", "navigation_bar.personal": "Persone", - "navigation_bar.pins": "Alpinglitaj afiŝoj", "navigation_bar.preferences": "Preferoj", "navigation_bar.public_timeline": "Fratara templinio", "navigation_bar.search": "Serĉi", @@ -842,8 +839,6 @@ "status.mute": "Silentigi @{name}", "status.mute_conversation": "Silentigi konversacion", "status.open": "Pligrandigu ĉi tiun afiŝon", - "status.pin": "Alpingli al la profilo", - "status.pinned": "Alpinglita afiŝo", "status.read_more": "Legi pli", "status.reblog": "Diskonigi", "status.reblog_private": "Diskonigi kun la sama videbleco", @@ -868,7 +863,6 @@ "status.translated_from_with": "Tradukita el {lang} per {provider}", "status.uncached_media_warning": "Antaŭrigardo ne disponebla", "status.unmute_conversation": "Malsilentigi la konversacion", - "status.unpin": "Depingli de profilo", "subscribed_languages.lead": "Nur afiŝoj en elektitaj lingvoj aperos en viaj hejma kaj lista templinioj post la ŝanĝo. Elektu nenion por ricevi afiŝojn en ĉiuj lingvoj.", "subscribed_languages.save": "Konservi ŝanĝojn", "subscribed_languages.target": "Ŝanĝu abonitajn lingvojn por {target}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index 17960e5dc0..e39c064dd8 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -24,7 +24,7 @@ "account.copy": "Copiar enlace al perfil", "account.direct": "Mención privada a @{name}", "account.disable_notifications": "Dejar de notificarme cuando @{name} envíe mensajes", - "account.domain_blocking": "Bloqueando dominio", + "account.domain_blocking": "Dominio bloqueado", "account.edit_profile": "Editar perfil", "account.enable_notifications": "Notificarme cuando @{name} envíe mensajes", "account.endorse": "Destacar en el perfil", @@ -168,7 +168,7 @@ "column.lists": "Listas", "column.mutes": "Usuarios silenciados", "column.notifications": "Notificaciones", - "column.pins": "Mensajes fijados", + "column.pins": "Mensajes destacados", "column.public": "Línea temporal federada", "column_back_button.label": "Volver", "column_header.hide_settings": "Ocultar configuración", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Abrir tu perfil", "keyboard_shortcuts.notifications": "Abrir columna de notificaciones", "keyboard_shortcuts.open_media": "Abrir archivos de medios", - "keyboard_shortcuts.pinned": "Abrir lista de mensajes fijados", + "keyboard_shortcuts.pinned": "Abrir lista de mensajes destacados", "keyboard_shortcuts.profile": "Abrir perfil del autor", "keyboard_shortcuts.reply": "Responder al mensaje", "keyboard_shortcuts.requests": "Abrir lista de solicitudes de seguimiento", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "Usuarios silenciados", "navigation_bar.opened_in_classic_interface": "Los mensajes, las cuentas y otras páginas específicas se abren predeterminadamente en la interface web clásica.", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Mensajes fijados", + "navigation_bar.pins": "Mensajes destacados", "navigation_bar.preferences": "Configuración", "navigation_bar.public_timeline": "Línea temporal federada", "navigation_bar.search": "Buscar", @@ -857,8 +857,7 @@ "status.mute": "Silenciar a @{name}", "status.mute_conversation": "Silenciar conversación", "status.open": "Expandir este mensaje", - "status.pin": "Fijar en el perfil", - "status.pinned": "Mensaje fijado", + "status.pin": "Destacar en el perfil", "status.read_more": "Leé más", "status.reblog": "Adherir", "status.reblog_private": "Adherir a la audiencia original", @@ -883,7 +882,7 @@ "status.translated_from_with": "Traducido desde el {lang} vía {provider}", "status.uncached_media_warning": "Previsualización no disponible", "status.unmute_conversation": "Dejar de silenciar conversación", - "status.unpin": "Dejar de fijar", + "status.unpin": "No destacar en el perfil", "subscribed_languages.lead": "Después del cambio, sólo los mensajes en los idiomas seleccionados aparecerán en tu línea temporal Principal y en las líneas de tiempo de lista. No seleccionés ningún idioma para poder recibir mensajes en todos los idiomas.", "subscribed_languages.save": "Guardar cambios", "subscribed_languages.target": "Cambiar idiomas suscritos para {target}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index c25e948df8..7b9a992a7f 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -168,7 +168,7 @@ "column.lists": "Listas", "column.mutes": "Usuarios silenciados", "column.notifications": "Notificaciones", - "column.pins": "Publicaciones fijadas", + "column.pins": "Publicaciones destacadas", "column.public": "Línea de tiempo federada", "column_back_button.label": "Atrás", "column_header.hide_settings": "Ocultar configuración", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Abrir tu perfil", "keyboard_shortcuts.notifications": "Abrir la columna de notificaciones", "keyboard_shortcuts.open_media": "Abrir multimedia", - "keyboard_shortcuts.pinned": "Abrir la lista de publicaciones fijadas", + "keyboard_shortcuts.pinned": "Abrir lista de publicaciones destacadas", "keyboard_shortcuts.profile": "Abrir perfil del autor", "keyboard_shortcuts.reply": "Responder a la publicación", "keyboard_shortcuts.requests": "Abrir lista de solicitudes de seguimiento", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "Usuarios silenciados", "navigation_bar.opened_in_classic_interface": "Publicaciones, cuentas y otras páginas específicas se abren por defecto en la interfaz web clásica.", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Publicaciones fijadas", + "navigation_bar.pins": "Publicaciones destacadas", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Historia federada", "navigation_bar.search": "Buscar", @@ -857,8 +857,7 @@ "status.mute": "Silenciar @{name}", "status.mute_conversation": "Silenciar conversación", "status.open": "Expandir estado", - "status.pin": "Fijar", - "status.pinned": "Publicación fijada", + "status.pin": "Destacar en el perfil", "status.read_more": "Leer más", "status.reblog": "Impulsar", "status.reblog_private": "Implusar a la audiencia original", @@ -883,7 +882,7 @@ "status.translated_from_with": "Traducido del {lang} usando {provider}", "status.uncached_media_warning": "Vista previa no disponible", "status.unmute_conversation": "Dejar de silenciar conversación", - "status.unpin": "Dejar de fijar", + "status.unpin": "No destacar en el perfil", "subscribed_languages.lead": "Solo las publicaciones en los idiomas seleccionados aparecerán en tu inicio y enlistará las líneas de tiempo después del cambio. Selecciona ninguno para recibir publicaciones en todos los idiomas.", "subscribed_languages.save": "Guardar cambios", "subscribed_languages.target": "Cambiar idiomas suscritos para {target}", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 66145380c8..83798e6cf3 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -168,7 +168,7 @@ "column.lists": "Listas", "column.mutes": "Usuarios silenciados", "column.notifications": "Notificaciones", - "column.pins": "Publicaciones fijadas", + "column.pins": "Publicaciones destacadas", "column.public": "Cronología federada", "column_back_button.label": "Atrás", "column_header.hide_settings": "Ocultar configuración", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Abrir tu perfil", "keyboard_shortcuts.notifications": "Abrir columna de notificaciones", "keyboard_shortcuts.open_media": "Abrir multimedia", - "keyboard_shortcuts.pinned": "Abrir la lista de publicaciones destacadas", + "keyboard_shortcuts.pinned": "Abrir lista de publicaciones destacadas", "keyboard_shortcuts.profile": "Abrir perfil del autor", "keyboard_shortcuts.reply": "Responder a una publicación", "keyboard_shortcuts.requests": "Abrir lista de solicitudes de seguimiento", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "Usuarios silenciados", "navigation_bar.opened_in_classic_interface": "Publicaciones, cuentas y otras páginas específicas se abren por defecto en la interfaz web clásica.", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Publicaciones fijadas", + "navigation_bar.pins": "Publicaciones destacadas", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Cronología federada", "navigation_bar.search": "Buscar", @@ -857,8 +857,7 @@ "status.mute": "Silenciar @{name}", "status.mute_conversation": "Silenciar conversación", "status.open": "Expandir publicación", - "status.pin": "Fijar", - "status.pinned": "Publicación fijada", + "status.pin": "Destacar en el perfil", "status.read_more": "Leer más", "status.reblog": "Impulsar", "status.reblog_private": "Impulsar a la audiencia original", @@ -883,7 +882,7 @@ "status.translated_from_with": "Traducido de {lang} usando {provider}", "status.uncached_media_warning": "Vista previa no disponible", "status.unmute_conversation": "Dejar de silenciar conversación", - "status.unpin": "Dejar de fijar", + "status.unpin": "No destacar en el perfil", "subscribed_languages.lead": "Sólo los mensajes en los idiomas seleccionados aparecerán en su inicio y otras líneas de tiempo después del cambio. Seleccione ninguno para recibir mensajes en todos los idiomas.", "subscribed_languages.save": "Guardar cambios", "subscribed_languages.target": "Cambiar idiomas suscritos para {target}", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index bb38b1330c..41248f5a1e 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -157,7 +157,6 @@ "column.lists": "Loetelud", "column.mutes": "Vaigistatud kasutajad", "column.notifications": "Teated", - "column.pins": "Kinnitatud postitused", "column.public": "Föderatiivne ajajoon", "column_back_button.label": "Tagasi", "column_header.hide_settings": "Peida sätted", @@ -457,7 +456,6 @@ "keyboard_shortcuts.my_profile": "Ava oma profiil", "keyboard_shortcuts.notifications": "Ava teadete veerg", "keyboard_shortcuts.open_media": "Ava meedia", - "keyboard_shortcuts.pinned": "Ava kinnitatud postituste loetelu", "keyboard_shortcuts.profile": "Ava autori profiil", "keyboard_shortcuts.reply": "Vasta postitusele", "keyboard_shortcuts.requests": "Ava jälgimistaotluste loetelu", @@ -541,7 +539,6 @@ "navigation_bar.mutes": "Vaigistatud kasutajad", "navigation_bar.opened_in_classic_interface": "Postitused, kontod ja teised spetsiaalsed lehed avatakse vaikimisi klassikalises veebiliideses.", "navigation_bar.personal": "Isiklik", - "navigation_bar.pins": "Kinnitatud postitused", "navigation_bar.preferences": "Eelistused", "navigation_bar.public_timeline": "Föderatiivne ajajoon", "navigation_bar.search": "Otsing", @@ -832,8 +829,6 @@ "status.mute": "Vaigista @{name}", "status.mute_conversation": "Vaigista vestlus", "status.open": "Laienda postitus", - "status.pin": "Kinnita profiilile", - "status.pinned": "Kinnitatud postitus", "status.read_more": "Loe veel", "status.reblog": "Jaga", "status.reblog_private": "Jaga algse nähtavusega", @@ -857,7 +852,6 @@ "status.translated_from_with": "Tõlgitud {lang} keelest kasutades teenust {provider}", "status.uncached_media_warning": "Eelvaade pole saadaval", "status.unmute_conversation": "Ära vaigista vestlust", - "status.unpin": "Eemalda profiilile kinnitus", "subscribed_languages.lead": "Pärast muudatust näed koduvaates ja loetelude ajajoontel postitusi valitud keeltes. Ära vali midagi, kui tahad näha postitusi kõikides keeltes.", "subscribed_languages.save": "Salvesta muudatused", "subscribed_languages.target": "Muuda tellitud keeli {target} jaoks", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 736c19d51d..03faf65ec8 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -147,7 +147,6 @@ "column.lists": "Zerrendak", "column.mutes": "Mutututako erabiltzaileak", "column.notifications": "Jakinarazpenak", - "column.pins": "Finkatutako bidalketak", "column.public": "Federatutako denbora-lerroa", "column_back_button.label": "Atzera", "column_header.hide_settings": "Ezkutatu ezarpenak", @@ -432,7 +431,6 @@ "keyboard_shortcuts.my_profile": "zure profila irekitzeko", "keyboard_shortcuts.notifications": "jakinarazpenen zutabea irekitzeko", "keyboard_shortcuts.open_media": "Ireki edukia", - "keyboard_shortcuts.pinned": "Ireki finkatutako bidalketen zerrenda", "keyboard_shortcuts.profile": "egilearen profila irekitzeko", "keyboard_shortcuts.reply": "Erantzun bidalketari", "keyboard_shortcuts.requests": "Jarraitzeko eskaeren zerrenda irekia", @@ -499,7 +497,6 @@ "navigation_bar.mutes": "Mutututako erabiltzaileak", "navigation_bar.opened_in_classic_interface": "Argitalpenak, kontuak eta beste orri jakin batzuk lehenespenez irekitzen dira web-interfaze klasikoan.", "navigation_bar.personal": "Pertsonala", - "navigation_bar.pins": "Finkatutako bidalketak", "navigation_bar.preferences": "Hobespenak", "navigation_bar.public_timeline": "Federatutako denbora-lerroa", "navigation_bar.search": "Bilatu", @@ -781,8 +778,6 @@ "status.mute": "Mututu @{name}", "status.mute_conversation": "Mututu elkarrizketa", "status.open": "Hedatu bidalketa hau", - "status.pin": "Finkatu profilean", - "status.pinned": "Finkatutako bidalketa", "status.read_more": "Irakurri gehiago", "status.reblog": "Bultzada", "status.reblog_private": "Bultzada jatorrizko hartzaileei", @@ -806,7 +801,6 @@ "status.translated_from_with": "Itzuli {lang}(e)tik {provider} erabiliz", "status.uncached_media_warning": "Aurrebista ez dago erabilgarri", "status.unmute_conversation": "Desmututu elkarrizketa", - "status.unpin": "Desfinkatu profiletik", "subscribed_languages.lead": "Hautatutako hizkuntzetako bidalketak soilik agertuko dira zure denbora-lerroetan aldaketaren ondoren. Ez baduzu bat ere aukeratzen hizkuntza guztietako bidalketak jasoko dituzu.", "subscribed_languages.save": "Gorde aldaketak", "subscribed_languages.target": "Aldatu {target}(e)n harpidetutako hizkuntzak", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index 498c0a1694..08f08c030b 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -168,7 +168,6 @@ "column.lists": "سیاهه‌ها", "column.mutes": "کاربران خموش", "column.notifications": "آگاهی‌ها", - "column.pins": "فرسته‌های سنجاق شده", "column.public": "خط زمانی همگانی", "column_back_button.label": "بازگشت", "column_header.hide_settings": "نهفتن تنظیمات", @@ -477,7 +476,6 @@ "keyboard_shortcuts.my_profile": "گشودن نمایه‌تان", "keyboard_shortcuts.notifications": "گشودن ستون آگاهی‌ها", "keyboard_shortcuts.open_media": "گشودن رسانه", - "keyboard_shortcuts.pinned": "گشودن سیاههٔ فرسته‌های سنجاق شده", "keyboard_shortcuts.profile": "گشودن نمایهٔ نویسنده", "keyboard_shortcuts.reply": "پاسخ به فرسته", "keyboard_shortcuts.requests": "گشودن سیاههٔ درخواست‌های پی‌گیری", @@ -561,7 +559,6 @@ "navigation_bar.mutes": "کاربران خموشانده", "navigation_bar.opened_in_classic_interface": "فرسته‌ها، حساب‌ها و دیگر صفحه‌های خاص به طور پیش‌گزیده در میانای وب کلاسیک گشوده می‌شوند.", "navigation_bar.personal": "شخصی", - "navigation_bar.pins": "فرسته‌های سنجاق شده", "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "خط زمانی همگانی", "navigation_bar.search": "جست‌وجو", @@ -857,8 +854,6 @@ "status.mute": "خموشاندن ‎@{name}", "status.mute_conversation": "خموشاندن گفت‌وگو", "status.open": "گسترش این فرسته", - "status.pin": "سنجاق به نمایه", - "status.pinned": "فرستهٔ سنجاق شده", "status.read_more": "بیشتر بخوانید", "status.reblog": "تقویت", "status.reblog_private": "تقویت برای مخاطبان نخستین", @@ -883,7 +878,6 @@ "status.translated_from_with": "ترجمه از {lang} با {provider}", "status.uncached_media_warning": "پیش‌نمایش موجود نیست", "status.unmute_conversation": "رفع خموشی گفت‌وگو", - "status.unpin": "برداشتن سنجاق از نمایه", "subscribed_languages.lead": "پس از تغییر، تنها فرسته‌های به زبان‌های گزیده روی خانه و خط‌زمانی‌های سیاهه ظاهر خواهند شد. برای دریافت فرسته‌ها به تمامی زبان‌ها، هیچ‌کدام را برنگزینید.", "subscribed_languages.save": "ذخیرهٔ تغییرات", "subscribed_languages.target": "تغییر زبان‌های مشترک شده برای {target}", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 8fde91043e..ef4cbfbbb0 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -27,7 +27,8 @@ "account.domain_blocking": "Verkkotunnus estetty", "account.edit_profile": "Muokkaa profiilia", "account.enable_notifications": "Ilmoita minulle, kun @{name} julkaisee", - "account.endorse": "Suosittele profiilissasi", + "account.endorse": "Suosittele profiilissa", + "account.featured": "Suositellut", "account.featured.hashtags": "Aihetunnisteet", "account.featured.posts": "Julkaisut", "account.featured_tags.last_status_at": "Viimeisin julkaisu {date}", @@ -73,7 +74,7 @@ "account.unblock_domain": "Kumoa verkkotunnuksen {domain} esto", "account.unblock_domain_short": "Kumoa esto", "account.unblock_short": "Kumoa esto", - "account.unendorse": "Kumoa suosittelu profiilissasi", + "account.unendorse": "Kumoa suosittelu profiilissa", "account.unfollow": "Älä seuraa", "account.unmute": "Poista käyttäjän @{name} mykistys", "account.unmute_notifications_short": "Poista ilmoitusten mykistys", @@ -167,7 +168,7 @@ "column.lists": "Listat", "column.mutes": "Mykistetyt käyttäjät", "column.notifications": "Ilmoitukset", - "column.pins": "Kiinnitetyt julkaisut", + "column.pins": "Suositellut julkaisut", "column.public": "Yleinen aikajana", "column_back_button.label": "Takaisin", "column_header.hide_settings": "Piilota asetukset", @@ -303,6 +304,9 @@ "emoji_button.search_results": "Hakutulokset", "emoji_button.symbols": "Symbolit", "emoji_button.travel": "Matkailu ja paikat", + "empty_column.account_featured.me": "Et suosittele vielä mitään. Tiesitkö, että voit suositella profiilissasi julkaisujasi, eniten käyttämiäsi aihetunnisteita ja jopa ystäviesi tilejä?", + "empty_column.account_featured.other": "{acct} ei suosittele vielä mitään. Tiesitkö, että voit suositella profiilissasi julkaisujasi, eniten käyttämiäsi aihetunnisteita ja jopa ystäviesi tilejä?", + "empty_column.account_featured_other.unknown": "Tämä tili ei suosittele vielä mitään.", "empty_column.account_hides_collections": "Käyttäjä on päättänyt pitää nämä tiedot yksityisinä", "empty_column.account_suspended": "Tili jäädytetty", "empty_column.account_timeline": "Ei viestejä täällä.", @@ -473,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Avaa profiilisi", "keyboard_shortcuts.notifications": "Avaa ilmoitussarake", "keyboard_shortcuts.open_media": "Avaa media", - "keyboard_shortcuts.pinned": "Avaa kiinnitettyjen julkaisujen luettelo", + "keyboard_shortcuts.pinned": "Avaa suositeltujen julkaisujen luettelo", "keyboard_shortcuts.profile": "Avaa tekijän profiili", "keyboard_shortcuts.reply": "Vastaa julkaisuun", "keyboard_shortcuts.requests": "Avaa seurantapyyntöjen luettelo", @@ -557,7 +561,7 @@ "navigation_bar.mutes": "Mykistetyt käyttäjät", "navigation_bar.opened_in_classic_interface": "Julkaisut, profiilit ja tietyt muut sivut avautuvat oletuksena perinteiseen selainkäyttöliittymään.", "navigation_bar.personal": "Henkilökohtaiset", - "navigation_bar.pins": "Kiinnitetyt julkaisut", + "navigation_bar.pins": "Suositellut julkaisut", "navigation_bar.preferences": "Asetukset", "navigation_bar.public_timeline": "Yleinen aikajana", "navigation_bar.search": "Haku", @@ -853,8 +857,7 @@ "status.mute": "Mykistä @{name}", "status.mute_conversation": "Mykistä keskustelu", "status.open": "Laajenna julkaisu", - "status.pin": "Kiinnitä profiiliin", - "status.pinned": "Kiinnitetty julkaisu", + "status.pin": "Suosittele profiilissa", "status.read_more": "Näytä enemmän", "status.reblog": "Tehosta", "status.reblog_private": "Tehosta alkuperäiselle yleisölle", @@ -879,7 +882,7 @@ "status.translated_from_with": "Käännetty kielestä {lang} käyttäen palvelua {provider}", "status.uncached_media_warning": "Esikatselu ei ole käytettävissä", "status.unmute_conversation": "Kumoa keskustelun mykistys", - "status.unpin": "Irrota profiilista", + "status.unpin": "Kumoa suosittelu profiilissa", "subscribed_languages.lead": "Vain valituilla kielillä kirjoitetut julkaisut näkyvät koti- ja lista-aikajanoillasi muutoksen jälkeen. Älä valitse mitään, jos haluat nähdä julkaisuja kaikilla kielillä.", "subscribed_languages.save": "Tallenna muutokset", "subscribed_languages.target": "Vaihda tilattuja kieliä käyttäjältä {target}", diff --git a/app/javascript/mastodon/locales/fil.json b/app/javascript/mastodon/locales/fil.json index 2752b6f539..5cfde6d16f 100644 --- a/app/javascript/mastodon/locales/fil.json +++ b/app/javascript/mastodon/locales/fil.json @@ -98,7 +98,6 @@ "column.lists": "Mga listahan", "column.mutes": "Mga pinatahimik na tagagamit", "column.notifications": "Mga abiso", - "column.pins": "Mga nakapaskil na post", "column.public": "Pinagsamang timeline", "column_back_button.label": "Bumalik", "column_header.hide_settings": "I-tago ang mga setting", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 6ca467199c..4bf2e68691 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -168,7 +168,7 @@ "column.lists": "Listar", "column.mutes": "Sløktir brúkarar", "column.notifications": "Fráboðanir", - "column.pins": "Festir postar", + "column.pins": "Postar, ið eru tiknir fram", "column.public": "Felags tíðarlinja", "column_back_button.label": "Aftur", "column_header.hide_settings": "Fjal stillingar", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Lat vanga tín upp", "keyboard_shortcuts.notifications": "Lat fráboðanarteig upp", "keyboard_shortcuts.open_media": "Lat miðlar upp", - "keyboard_shortcuts.pinned": "Lat lista yvir festar postar upp", + "keyboard_shortcuts.pinned": "Lat listan við postum, ið eru tiknir fram, upp", "keyboard_shortcuts.profile": "Lat vangan hjá høvundinum upp", "keyboard_shortcuts.reply": "Svara posti", "keyboard_shortcuts.requests": "Lat lista við fylgjaraumbønum upp", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "Doyvdir brúkarar", "navigation_bar.opened_in_classic_interface": "Postar, kontur og aðrar serstakar síður verða - um ikki annað er ásett - latnar upp í klassiska vev-markamótinum.", "navigation_bar.personal": "Persónligt", - "navigation_bar.pins": "Festir postar", + "navigation_bar.pins": "Postar, ið eru tiknir fram", "navigation_bar.preferences": "Stillingar", "navigation_bar.public_timeline": "Felags tíðarlinja", "navigation_bar.search": "Leita", @@ -857,8 +857,7 @@ "status.mute": "Doyv @{name}", "status.mute_conversation": "Doyv samrøðu", "status.open": "Víðka henda postin", - "status.pin": "Ger fastan í vangan", - "status.pinned": "Festur postur", + "status.pin": "Vís á vanga", "status.read_more": "Les meira", "status.reblog": "Stimbra", "status.reblog_private": "Stimbra við upprunasýni", @@ -883,7 +882,7 @@ "status.translated_from_with": "Umsett frá {lang} við {provider}", "status.uncached_media_warning": "Undanvísing ikki tøk", "status.unmute_conversation": "Strika doyving av samrøðu", - "status.unpin": "Loys frá vanga", + "status.unpin": "Vís ikki á vanga", "subscribed_languages.lead": "Eftir broytingina fara einans postar á valdum málum at síggjast á tíni heimarás og á tínum listatíðarlinjum. Vel ongi fyri at fáa postar á øllum málum.", "subscribed_languages.save": "Goym broytingar", "subscribed_languages.target": "Broyt haldaramál fyri {target}", diff --git a/app/javascript/mastodon/locales/fr-CA.json b/app/javascript/mastodon/locales/fr-CA.json index 94c96a1b03..cc66e58411 100644 --- a/app/javascript/mastodon/locales/fr-CA.json +++ b/app/javascript/mastodon/locales/fr-CA.json @@ -161,7 +161,6 @@ "column.lists": "Listes", "column.mutes": "Comptes masqués", "column.notifications": "Notifications", - "column.pins": "Publications épinglés", "column.public": "Fil global", "column_back_button.label": "Retour", "column_header.hide_settings": "Cacher les paramètres", @@ -461,7 +460,6 @@ "keyboard_shortcuts.my_profile": "Ouvrir votre profil", "keyboard_shortcuts.notifications": "Ouvrir la colonne de notifications", "keyboard_shortcuts.open_media": "Ouvrir média", - "keyboard_shortcuts.pinned": "Ouvrir la liste de publications épinglés", "keyboard_shortcuts.profile": "Ouvrir le profil de l’auteur·rice", "keyboard_shortcuts.reply": "Répondre au message", "keyboard_shortcuts.requests": "Ouvrir la liste de demandes d’abonnement", @@ -545,7 +543,6 @@ "navigation_bar.mutes": "Utilisateurs masqués", "navigation_bar.opened_in_classic_interface": "Les messages, les comptes et les pages spécifiques sont ouvertes dans l’interface classique.", "navigation_bar.personal": "Personnel", - "navigation_bar.pins": "Publications épinglés", "navigation_bar.preferences": "Préférences", "navigation_bar.public_timeline": "Fil global", "navigation_bar.search": "Rechercher", @@ -841,8 +838,6 @@ "status.mute": "Masquer @{name}", "status.mute_conversation": "Masquer la conversation", "status.open": "Afficher la publication entière", - "status.pin": "Épingler sur profil", - "status.pinned": "Message épinglé", "status.read_more": "En savoir plus", "status.reblog": "Booster", "status.reblog_private": "Booster avec visibilité originale", @@ -867,7 +862,6 @@ "status.translated_from_with": "Traduit de {lang} avec {provider}", "status.uncached_media_warning": "Aperçu non disponible", "status.unmute_conversation": "Ne plus masquer cette conversation", - "status.unpin": "Désépingler du profil", "subscribed_languages.lead": "Seules des publications dans les langues sélectionnées apparaîtront sur vos fil d'accueil et de liste(s) après le changement. N'en sélectionnez aucune pour recevoir des publications dans toutes les langues.", "subscribed_languages.save": "Enregistrer les modifications", "subscribed_languages.target": "Changer les langues abonnées pour {target}", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 4e1f987292..8219c4e155 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -161,7 +161,6 @@ "column.lists": "Listes", "column.mutes": "Comptes masqués", "column.notifications": "Notifications", - "column.pins": "Messages épinglés", "column.public": "Fil fédéré", "column_back_button.label": "Retour", "column_header.hide_settings": "Cacher les paramètres", @@ -461,7 +460,6 @@ "keyboard_shortcuts.my_profile": "Ouvrir votre profil", "keyboard_shortcuts.notifications": "Ouvrir la colonne de notifications", "keyboard_shortcuts.open_media": "Ouvrir le média", - "keyboard_shortcuts.pinned": "Ouvrir la liste des messages épinglés", "keyboard_shortcuts.profile": "Ouvrir le profil de l’auteur·rice", "keyboard_shortcuts.reply": "Répondre au message", "keyboard_shortcuts.requests": "Ouvrir la liste de demandes d’abonnement", @@ -545,7 +543,6 @@ "navigation_bar.mutes": "Comptes masqués", "navigation_bar.opened_in_classic_interface": "Les messages, les comptes et les pages spécifiques sont ouvertes dans l’interface classique.", "navigation_bar.personal": "Personnel", - "navigation_bar.pins": "Messages épinglés", "navigation_bar.preferences": "Préférences", "navigation_bar.public_timeline": "Fil fédéré", "navigation_bar.search": "Rechercher", @@ -841,8 +838,6 @@ "status.mute": "Masquer @{name}", "status.mute_conversation": "Masquer la conversation", "status.open": "Afficher le message entier", - "status.pin": "Épingler sur le profil", - "status.pinned": "Message épinglé", "status.read_more": "En savoir plus", "status.reblog": "Partager", "status.reblog_private": "Partager à l’audience originale", @@ -867,7 +862,6 @@ "status.translated_from_with": "Traduit de {lang} en utilisant {provider}", "status.uncached_media_warning": "Prévisualisation non disponible", "status.unmute_conversation": "Ne plus masquer la conversation", - "status.unpin": "Retirer du profil", "subscribed_languages.lead": "Seuls les messages dans les langues sélectionnées apparaîtront sur votre fil principal et vos listes de fils après le changement. Sélectionnez aucune pour recevoir les messages dans toutes les langues.", "subscribed_languages.save": "Enregistrer les modifications", "subscribed_languages.target": "Changer les langues abonnées pour {target}", diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json index a52e0f934e..238622b501 100644 --- a/app/javascript/mastodon/locales/fy.json +++ b/app/javascript/mastodon/locales/fy.json @@ -168,7 +168,6 @@ "column.lists": "Listen", "column.mutes": "Negearre brûkers", "column.notifications": "Meldingen", - "column.pins": "Fêstsette berjochten", "column.public": "Globale tiidline", "column_back_button.label": "Tebek", "column_header.hide_settings": "Ynstellingen ferstopje", @@ -477,7 +476,6 @@ "keyboard_shortcuts.my_profile": "Jo profyl iepenje", "keyboard_shortcuts.notifications": "Meldingen toane", "keyboard_shortcuts.open_media": "Media iepenje", - "keyboard_shortcuts.pinned": "Fêstsette berjochten toane", "keyboard_shortcuts.profile": "Skriuwersprofyl iepenje", "keyboard_shortcuts.reply": "Berjocht beäntwurdzje", "keyboard_shortcuts.requests": "Folchfersiken toane", @@ -561,7 +559,6 @@ "navigation_bar.mutes": "Negearre brûkers", "navigation_bar.opened_in_classic_interface": "Berjochten, accounts en oare spesifike siden, wurde standert iepene yn de klassike webinterface.", "navigation_bar.personal": "Persoanlik", - "navigation_bar.pins": "Fêstsette berjochten", "navigation_bar.preferences": "Ynstellingen", "navigation_bar.public_timeline": "Globale tiidline", "navigation_bar.search": "Sykje", @@ -857,8 +854,6 @@ "status.mute": "@{name} negearje", "status.mute_conversation": "Petear negearje", "status.open": "Dit berjocht útklappe", - "status.pin": "Op profylside fêstsette", - "status.pinned": "Fêstset berjocht", "status.read_more": "Mear ynfo", "status.reblog": "Booste", "status.reblog_private": "Boost nei oarspronklike ûntfangers", @@ -883,7 +878,6 @@ "status.translated_from_with": "Fan {lang} út oersetten mei {provider}", "status.uncached_media_warning": "Foarfertoaning net beskikber", "status.unmute_conversation": "Petear net mear negearje", - "status.unpin": "Fan profylside losmeitsje", "subscribed_languages.lead": "Nei de wiziging wurde allinnich berjochten fan selektearre talen op jo starttiidline en yn listen werjaan.", "subscribed_languages.save": "Wizigingen bewarje", "subscribed_languages.target": "Toande talen foar {target} wizigje", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index da6412a4fd..f4258bda01 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -19,13 +19,18 @@ "account.block_domain": "Bac ainm fearainn {domain}", "account.block_short": "Bloc", "account.blocked": "Bactha", + "account.blocking": "Ag Blocáil", "account.cancel_follow_request": "Éirigh as iarratas leanta", "account.copy": "Cóipeáil nasc chuig an bpróifíl", "account.direct": "Luaigh @{name} go príobháideach", "account.disable_notifications": "Éirigh as ag cuir mé in eol nuair bpostálann @{name}", + "account.domain_blocking": "Fearann a bhlocáil", "account.edit_profile": "Cuir an phróifíl in eagar", "account.enable_notifications": "Cuir mé in eol nuair bpostálann @{name}", "account.endorse": "Cuir ar an phróifíl mar ghné", + "account.featured": "Faoi thrácht", + "account.featured.hashtags": "Haischlibeanna", + "account.featured.posts": "Poist", "account.featured_tags.last_status_at": "Postáil is déanaí ar {date}", "account.featured_tags.last_status_never": "Gan aon phoist", "account.follow": "Lean", @@ -36,6 +41,7 @@ "account.following": "Ag leanúint", "account.following_counter": "{count, plural, one {{counter} ag leanúint} other {{counter} ag leanúint}}", "account.follows.empty": "Ní leanann an t-úsáideoir seo aon duine go fóill.", + "account.follows_you": "Leanann tú", "account.go_to_profile": "Téigh go dtí próifíl", "account.hide_reblogs": "Folaigh moltaí ó @{name}", "account.in_memoriam": "Cuimhneachán.", @@ -50,13 +56,17 @@ "account.mute_notifications_short": "Balbhaigh fógraí", "account.mute_short": "Balbhaigh", "account.muted": "Balbhaithe", + "account.muting": "Ag balbhaigh", + "account.mutual": "Leanann sibh a chéile", "account.no_bio": "Níor tugadh tuairisc.", "account.open_original_page": "Oscail an leathanach bunaidh", "account.posts": "Postálacha", "account.posts_with_replies": "Postálacha agus freagraí", + "account.remove_from_followers": "Bain {name} de na leantóirí", "account.report": "Tuairiscigh @{name}", "account.requested": "Ag fanacht le ceadú. Cliceáil chun an iarratas leanúnaí a chealú", "account.requested_follow": "D'iarr {name} ort do chuntas a leanúint", + "account.requests_to_follow_you": "Iarratais chun tú a leanúint", "account.share": "Roinn próifíl @{name}", "account.show_reblogs": "Taispeáin moltaí ó @{name}", "account.statuses_counter": "{count, plural, one {{counter} post} other {{counter} poist}}", @@ -158,7 +168,7 @@ "column.lists": "Liostaí", "column.mutes": "Úsáideoirí balbhaithe", "column.notifications": "Fógraí", - "column.pins": "Postálacha pionnáilte", + "column.pins": "Poist le feiceáil", "column.public": "Amlíne cónaidhmithe", "column_back_button.label": "Ar ais", "column_header.hide_settings": "Folaigh socruithe", @@ -224,6 +234,9 @@ "confirmations.redraft.confirm": "Scrios ⁊ athdhréachtaigh", "confirmations.redraft.message": "An bhfuil tú cinnte gur mhaith leat an postáil seo a scriosadh agus é a athdhréachtú? Caillfear ceanáin agus treisithe, agus dílleachtaí freagraí ar an mbunphostála.", "confirmations.redraft.title": "Scrios & athdhréachtú postáil?", + "confirmations.remove_from_followers.confirm": "Bain leantóir", + "confirmations.remove_from_followers.message": "Scoirfidh {name} de bheith ag leanúint leat. An bhfuil tú cinnte gur mian leat leanúint ar aghaidh?", + "confirmations.remove_from_followers.title": "Bain an leantóir?", "confirmations.reply.confirm": "Freagair", "confirmations.reply.message": "Scriosfaidh freagra láithreach an teachtaireacht atá a chumadh anois agat. An bhfuil tú cinnte gur mhaith leat leanúint leat?", "confirmations.reply.title": "Forscríobh postáil?", @@ -291,6 +304,9 @@ "emoji_button.search_results": "Torthaí cuardaigh", "emoji_button.symbols": "Comharthaí", "emoji_button.travel": "Taisteal ⁊ Áiteanna", + "empty_column.account_featured.me": "Níl aon rud curtha i láthair agat go fóill. An raibh a fhios agat gur féidir leat do phoist, na hashtags is mó a úsáideann tú, agus fiú cuntais do chairde a chur i láthair ar do phróifíl?", + "empty_column.account_featured.other": "Níl aon rud feicthe ag {acct} go fóill. An raibh a fhios agat gur féidir leat do phoist, na haischlibeanna is mó a úsáideann tú, agus fiú cuntais do chairde a chur ar do phróifíl?", + "empty_column.account_featured_other.unknown": "Níl aon rud le feiceáil sa chuntas seo go fóill.", "empty_column.account_hides_collections": "Roghnaigh an t-úsáideoir seo gan an fhaisnéis seo a chur ar fáil", "empty_column.account_suspended": "Cuntas ar fionraí", "empty_column.account_timeline": "Níl postálacha ar bith anseo!", @@ -375,6 +391,8 @@ "generic.saved": "Sábháilte", "getting_started.heading": "Ag tosú amach", "hashtag.admin_moderation": "Oscail comhéadan modhnóireachta le haghaidh #{name}", + "hashtag.browse": "Brabhsáil poist i #{hashtag}", + "hashtag.browse_from_account": "Brabhsáil poist ó @{name} i #{hashtag}", "hashtag.column_header.tag_mode.all": "agus {additional}", "hashtag.column_header.tag_mode.any": "nó {additional}", "hashtag.column_header.tag_mode.none": "gan {additional}", @@ -388,6 +406,7 @@ "hashtag.counter_by_uses": "{count, plural, one {{counter} post} two {{counter} post} few {{counter} post} many {{counter} post} other {{counter} poist}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} post inniu} other {{counter} poist inniu}} inniu", "hashtag.follow": "Lean haischlib", + "hashtag.mute": "Balbhaigh #{hashtag}", "hashtag.unfollow": "Ná lean haischlib", "hashtags.and_other": "agus {count, plural, one {} two {# níos} few {# níos} many {# níos} other {# níos}}", "hints.profiles.followers_may_be_missing": "Seans go bhfuil leantóirí don phróifíl seo in easnamh.", @@ -458,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Oscail do phróifíl", "keyboard_shortcuts.notifications": "Oscail colún fógraí", "keyboard_shortcuts.open_media": "Oscail meáin", - "keyboard_shortcuts.pinned": "Oscail liosta postálacha pinn", + "keyboard_shortcuts.pinned": "Oscail liosta na bpostálacha le feiceáil", "keyboard_shortcuts.profile": "Oscail próifíl an t-údar", "keyboard_shortcuts.reply": "Freagair ar phostáil", "keyboard_shortcuts.requests": "Oscail liosta iarratas leanúnaí", @@ -542,7 +561,7 @@ "navigation_bar.mutes": "Úsáideoirí balbhaithe", "navigation_bar.opened_in_classic_interface": "Osclaítear poist, cuntais agus leathanaigh shonracha eile de réir réamhshocraithe sa chomhéadan gréasáin clasaiceach.", "navigation_bar.personal": "Pearsanta", - "navigation_bar.pins": "Postálacha pionnáilte", + "navigation_bar.pins": "Poist le feiceáil", "navigation_bar.preferences": "Sainroghanna pearsanta", "navigation_bar.public_timeline": "Amlíne cónaidhmithe", "navigation_bar.search": "Cuardaigh", @@ -838,8 +857,7 @@ "status.mute": "Balbhaigh @{name}", "status.mute_conversation": "Balbhaigh comhrá", "status.open": "Leathnaigh an post seo", - "status.pin": "Pionnáil ar do phróifíl", - "status.pinned": "Postáil pionnáilte", + "status.pin": "Gné ar phróifíl", "status.read_more": "Léan a thuilleadh", "status.reblog": "Treisiú", "status.reblog_private": "Mol le léargas bunúsach", @@ -864,7 +882,7 @@ "status.translated_from_with": "D'Aistrigh ón {lang} ag úsáid {provider}", "status.uncached_media_warning": "Níl an réamhamharc ar fáil", "status.unmute_conversation": "Díbhalbhaigh comhrá", - "status.unpin": "Díphionnáil de do phróifíl", + "status.unpin": "Ná cuir le feiceáil ar phróifíl", "subscribed_languages.lead": "Ní bheidh ach postálacha i dteangacha roghnaithe le feiceáil ar do bhaile agus liostaí amlínte tar éis an athraithe. Roghnaigh ceann ar bith chun postálacha a fháil i ngach teanga.", "subscribed_languages.save": "Sábháil athruithe", "subscribed_languages.target": "Athraigh teangacha suibscríofa le haghaidh {target}", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 4949e179ab..6238397762 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -145,7 +145,6 @@ "column.lists": "Liostaichean", "column.mutes": "Cleachdaichean mùchte", "column.notifications": "Brathan", - "column.pins": "Postaichean prìnichte", "column.public": "Loidhne-ama cho-naisgte", "column_back_button.label": "Air ais", "column_header.hide_settings": "Falaich na roghainnean", @@ -421,7 +420,6 @@ "keyboard_shortcuts.my_profile": "Fosgail a’ phròifil agad", "keyboard_shortcuts.notifications": "Fosgail colbh nam brathan", "keyboard_shortcuts.open_media": "Fosgail meadhan", - "keyboard_shortcuts.pinned": "Fosgail liosta nam postaichean prìnichte", "keyboard_shortcuts.profile": "Fosgail pròifil an ùghdair", "keyboard_shortcuts.reply": "Freagair do phost", "keyboard_shortcuts.requests": "Fosgail liosta nan iarrtasan leantainn", @@ -483,7 +481,6 @@ "navigation_bar.mutes": "Cleachdaichean mùchte", "navigation_bar.opened_in_classic_interface": "Thèid postaichean, cunntasan ’s duilleagan sònraichte eile fhosgladh san eadar-aghaidh-lìn chlasaigeach a ghnàth.", "navigation_bar.personal": "Pearsanta", - "navigation_bar.pins": "Postaichean prìnichte", "navigation_bar.preferences": "Roghainnean", "navigation_bar.public_timeline": "Loidhne-ama cho-naisgte", "navigation_bar.search": "Lorg", @@ -767,8 +764,6 @@ "status.mute": "Mùch @{name}", "status.mute_conversation": "Mùch an còmhradh", "status.open": "Leudaich am post seo", - "status.pin": "Prìnich ris a’ phròifil", - "status.pinned": "Post prìnichte", "status.read_more": "Leugh an còrr", "status.reblog": "Brosnaich", "status.reblog_private": "Brosnaich leis an t-so-fhaicsinneachd tùsail", @@ -792,7 +787,6 @@ "status.translated_from_with": "Air eadar-theangachadh o {lang} le {provider}", "status.uncached_media_warning": "Chan eil ro-shealladh ri fhaighinn", "status.unmute_conversation": "Dì-mhùch an còmhradh", - "status.unpin": "Dì-phrìnich on phròifil", "subscribed_languages.lead": "Cha nochd ach na postaichean sna cànanan a thagh thu air loidhnichean-ama na dachaigh ’s nan liostaichean às dèidh an atharrachaidh seo. Na tagh gin ma tha thu airson na postaichean uile fhaighinn ge b’ e dè an cànan.", "subscribed_languages.save": "Sàbhail na h-atharraichean", "subscribed_languages.target": "Atharraich fo-sgrìobhadh nan cànan airson {target}", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 3ab093f796..e963a711f9 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -168,7 +168,7 @@ "column.lists": "Listaxes", "column.mutes": "Usuarias acaladas", "column.notifications": "Notificacións", - "column.pins": "Publicacións fixadas", + "column.pins": "Publicacións destacadas", "column.public": "Cronoloxía federada", "column_back_button.label": "Volver", "column_header.hide_settings": "Agochar axustes", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Para abrir o teu perfil", "keyboard_shortcuts.notifications": "Para abrir a columna das notificacións", "keyboard_shortcuts.open_media": "Para abrir o contido multimedia", - "keyboard_shortcuts.pinned": "Para abrir a listaxe das publicacións fixadas", + "keyboard_shortcuts.pinned": "Abrir lista das publicacións destacadas", "keyboard_shortcuts.profile": "Para abrir o perfil da autora", "keyboard_shortcuts.reply": "Para responder", "keyboard_shortcuts.requests": "Para abrir a listaxe das peticións de seguimento", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "Usuarias silenciadas", "navigation_bar.opened_in_classic_interface": "Publicacións, contas e outras páxinas dedicadas ábrense por defecto na interface web clásica.", "navigation_bar.personal": "Persoal", - "navigation_bar.pins": "Publicacións fixadas", + "navigation_bar.pins": "Publicacións destacadas", "navigation_bar.preferences": "Preferencias", "navigation_bar.public_timeline": "Cronoloxía federada", "navigation_bar.search": "Buscar", @@ -857,8 +857,7 @@ "status.mute": "Silenciar @{name}", "status.mute_conversation": "Silenciar conversa", "status.open": "Estender esta publicación", - "status.pin": "Fixar no perfil", - "status.pinned": "Publicación fixada", + "status.pin": "Destacar no perfil", "status.read_more": "Ler máis", "status.reblog": "Promover", "status.reblog_private": "Compartir coa audiencia orixinal", @@ -883,7 +882,7 @@ "status.translated_from_with": "Traducido do {lang} usando {provider}", "status.uncached_media_warning": "A vista previa non está dispoñíble", "status.unmute_conversation": "Deixar de silenciar conversa", - "status.unpin": "Non fixar no perfil", + "status.unpin": "Non destacar no perfil", "subscribed_languages.lead": "Ao facer cambios só as publicacións nos idiomas seleccionados aparecerán nas túas cronoloxías. Non elixas ningún para poder ver publicacións en tódolos idiomas.", "subscribed_languages.save": "Gardar cambios", "subscribed_languages.target": "Cambiar a subscrición a idiomas para {target}", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 6c814614dc..67e384f6da 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -18,7 +18,7 @@ "account.block": "חסמי את @{name}", "account.block_domain": "חסמו את קהילת {domain}", "account.block_short": "לחסום", - "account.blocked": "לחסום", + "account.blocked": "חסום", "account.blocking": "רשימת החשבונות החסומים", "account.cancel_follow_request": "משיכת בקשת מעקב", "account.copy": "להעתיק קישור לפרופיל", @@ -168,7 +168,7 @@ "column.lists": "רשימות", "column.mutes": "משתמשים בהשתקה", "column.notifications": "התראות", - "column.pins": "חיצרוצים נעוצים", + "column.pins": "הודעות מובלטות", "column.public": "פיד כללי (כל השרתים)", "column_back_button.label": "בחזרה", "column_header.hide_settings": "הסתרת הגדרות", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "פתיחת הפרופיל שלך", "keyboard_shortcuts.notifications": "פתיחת טור התראות", "keyboard_shortcuts.open_media": "פתיחת מדיה", - "keyboard_shortcuts.pinned": "פתיחת הודעה נעוצות", + "keyboard_shortcuts.pinned": "פתיחת רשימת הודעות מובלטות", "keyboard_shortcuts.profile": "פתח את פרופיל המשתמש", "keyboard_shortcuts.reply": "תגובה להודעה", "keyboard_shortcuts.requests": "פתיחת רשימת בקשות מעקב", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "משתמשים בהשתקה", "navigation_bar.opened_in_classic_interface": "הודעות, חשבונות ושאר עמודי רשת יפתחו כברירת מחדל בדפדפן רשת קלאסי.", "navigation_bar.personal": "אישי", - "navigation_bar.pins": "הודעות נעוצות", + "navigation_bar.pins": "הודעות מובלטות", "navigation_bar.preferences": "העדפות", "navigation_bar.public_timeline": "פיד כללי (כל השרתים)", "navigation_bar.search": "חיפוש", @@ -857,8 +857,7 @@ "status.mute": "להשתיק את @{name}", "status.mute_conversation": "השתקת שיחה", "status.open": "הרחבת הודעה זו", - "status.pin": "הצמדה לפרופיל שלי", - "status.pinned": "חצרוץ נעוץ", + "status.pin": "מובלט בפרופיל", "status.read_more": "לקרוא עוד", "status.reblog": "הדהוד", "status.reblog_private": "להדהד ברמת הנראות המקורית", @@ -883,7 +882,7 @@ "status.translated_from_with": "לתרגם משפה {lang} באמצעות {provider}", "status.uncached_media_warning": "תצוגה מקדימה אינה זמינה", "status.unmute_conversation": "הסרת השתקת שיחה", - "status.unpin": "לשחרר מקיבוע באודות", + "status.unpin": "לא להבליט בפרופיל", "subscribed_languages.lead": "רק חצרוצים בשפות הנבחרות יופיעו בפיד הבית וברשימות שלך אחרי השינוי. נקו את כל הבחירות כדי לראות את כל השפות.", "subscribed_languages.save": "שמירת שינויים", "subscribed_languages.target": "שינוי רישום שפה עבור {target}", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index 17bb3205a2..0c568f0bd6 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -120,7 +120,6 @@ "column.lists": "सूचियाँ", "column.mutes": "म्यूट किये हुए यूजर", "column.notifications": "नोटिफिकेशन्स", - "column.pins": "पिनड टूट्स", "column.public": "फ़ेडरेटेड टाइम्लाइन", "column_back_button.label": "पीछे जाए", "column_header.hide_settings": "सेटिंग्स छुपाए", @@ -320,7 +319,6 @@ "keyboard_shortcuts.my_profile": "आपकी प्रोफाइल खोलने के लिए", "keyboard_shortcuts.notifications": "नोटिफिकेशन कॉलम खोलने के लिए", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "पिनड टूट्स की लिस्ट खोलने के लिए", "keyboard_shortcuts.profile": "लेखक की प्रोफाइल खोलने के लिए", "keyboard_shortcuts.reply": "जवाब के लिए", "keyboard_shortcuts.requests": "फॉलो रिक्वेस्ट लिस्ट खोलने के लिए", @@ -360,7 +358,6 @@ "navigation_bar.logout": "बाहर जाए", "navigation_bar.mutes": "शांत किए गए सभ्य", "navigation_bar.personal": "निजी", - "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "पसंदे", "navigation_bar.search": "ढूंढें", "navigation_bar.security": "सुरक्षा", @@ -462,8 +459,6 @@ "status.mute": "@{name} म्यूट करें", "status.mute_conversation": "इस वार्तालाप को म्यूट करें", "status.open": "Expand this status", - "status.pin": "प्रोफ़ाइल पर पिन करें", - "status.pinned": "Pinned toot", "status.read_more": "और पढ़ें", "status.reblog": "बूस्ट", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index 392731d381..0d1df18df5 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -106,7 +106,6 @@ "column.lists": "Liste", "column.mutes": "Utišani korisnici", "column.notifications": "Obavijesti", - "column.pins": "Prikvačeni tootovi", "column.public": "Federalna vremenska crta", "column_back_button.label": "Natrag", "column_header.hide_settings": "Sakrij postavke", @@ -271,7 +270,6 @@ "keyboard_shortcuts.my_profile": "za otvaranje Vašeg profila", "keyboard_shortcuts.notifications": "za otvaranje stupca s obavijestima", "keyboard_shortcuts.open_media": "za otvaranje medijskog sadržaja", - "keyboard_shortcuts.pinned": "za otvaranje liste prikvačenih tootova", "keyboard_shortcuts.profile": "za otvaranje autorovog profila", "keyboard_shortcuts.reply": "za odgovaranje", "keyboard_shortcuts.requests": "za otvaranje liste zahtjeva za praćenje", @@ -309,7 +307,6 @@ "navigation_bar.logout": "Odjavi se", "navigation_bar.mutes": "Utišani korisnici", "navigation_bar.personal": "Osobno", - "navigation_bar.pins": "Prikvačeni tootovi", "navigation_bar.preferences": "Postavke", "navigation_bar.public_timeline": "Federalna vremenska crta", "navigation_bar.search": "Traži", @@ -432,8 +429,6 @@ "status.mute": "Utišaj @{name}", "status.mute_conversation": "Utišaj razgovor", "status.open": "Proširi ovaj toot", - "status.pin": "Prikvači na profil", - "status.pinned": "Pinned toot", "status.read_more": "Pročitajte više", "status.reblog": "Boostaj", "status.reblog_private": "Boostaj s izvornom vidljivošću", @@ -453,7 +448,6 @@ "status.translated_from_with": "Prevedno s {lang} koristeći {provider}", "status.uncached_media_warning": "Pregled nije dostupan", "status.unmute_conversation": "Poništi utišavanje razgovora", - "status.unpin": "Otkvači s profila", "subscribed_languages.save": "Spremi promjene", "tabs_bar.home": "Početna", "tabs_bar.notifications": "Obavijesti", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 7bf8930871..3bbddd7560 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -168,7 +168,7 @@ "column.lists": "Listák", "column.mutes": "Némított felhasználók", "column.notifications": "Értesítések", - "column.pins": "Kitűzött bejegyzések", + "column.pins": "Kiemelt bejegyzések", "column.public": "Föderációs idővonal", "column_back_button.label": "Vissza", "column_header.hide_settings": "Beállítások elrejtése", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Saját profil megnyitása", "keyboard_shortcuts.notifications": "Értesítések oszlop megnyitása", "keyboard_shortcuts.open_media": "Média megnyitása", - "keyboard_shortcuts.pinned": "Kitűzött bejegyzések listájának megnyitása", + "keyboard_shortcuts.pinned": "Kiemelt bejegyzések listájának megnyitása", "keyboard_shortcuts.profile": "Szerző profiljának megnyitása", "keyboard_shortcuts.reply": "Válasz bejegyzésre", "keyboard_shortcuts.requests": "Követési kérések listájának megnyitása", @@ -561,7 +561,6 @@ "navigation_bar.mutes": "Némított felhasználók", "navigation_bar.opened_in_classic_interface": "A bejegyzések, fiókok és más speciális oldalak alapértelmezés szerint a klasszikus webes felületen nyílnak meg.", "navigation_bar.personal": "Személyes", - "navigation_bar.pins": "Kitűzött bejegyzések", "navigation_bar.preferences": "Beállítások", "navigation_bar.public_timeline": "Föderációs idővonal", "navigation_bar.search": "Keresés", @@ -857,8 +856,6 @@ "status.mute": "@{name} némítása", "status.mute_conversation": "Beszélgetés némítása", "status.open": "Bejegyzés kibontása", - "status.pin": "Kitűzés a profilodra", - "status.pinned": "Kitűzött bejegyzés", "status.read_more": "Bővebben", "status.reblog": "Megtolás", "status.reblog_private": "Megtolás az eredeti közönségnek", @@ -883,7 +880,6 @@ "status.translated_from_with": "{lang} nyelvről fordítva {provider} szolgáltatással", "status.uncached_media_warning": "Előnézet nem érhető el", "status.unmute_conversation": "Beszélgetés némításának feloldása", - "status.unpin": "Kitűzés eltávolítása a profilodról", "subscribed_languages.lead": "A változtatás után csak a kiválasztott nyelvű bejegyzések fognak megjelenni a kezdőlapon és az idővonalakon. Ha egy sincs kiválasztva, akkor minden nyelven megjelennek a bejegyzések.", "subscribed_languages.save": "Változások mentése", "subscribed_languages.target": "Feliratkozott nyelvek módosítása {target} esetében", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index 2b159899fe..73c309245e 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -87,7 +87,6 @@ "column.lists": "Ցանկեր", "column.mutes": "Լռեցրած օգտատէրեր", "column.notifications": "Ծանուցումներ", - "column.pins": "Ամրացուած գրառում", "column.public": "Դաշնային հոսք", "column_back_button.label": "Ետ", "column_header.hide_settings": "Թաքցնել կարգաւորումները", @@ -251,7 +250,6 @@ "keyboard_shortcuts.my_profile": "սեփական էջին անցնելու համար", "keyboard_shortcuts.notifications": "ծանուցումների սիւնակը բացելու համար", "keyboard_shortcuts.open_media": "ցուցադրել մեդիան", - "keyboard_shortcuts.pinned": "Բացել ամրացուած գրառումների ցանկը", "keyboard_shortcuts.profile": "հեղինակի անձնական էջը բացելու համար", "keyboard_shortcuts.reply": "պատասխանելու համար", "keyboard_shortcuts.requests": "հետեւելու հայցերի ցանկը դիտելու համար", @@ -290,7 +288,6 @@ "navigation_bar.logout": "Դուրս գալ", "navigation_bar.mutes": "Լռեցրած օգտատէրեր", "navigation_bar.personal": "Անձնական", - "navigation_bar.pins": "Ամրացուած գրառումներ", "navigation_bar.preferences": "Նախապատուութիւններ", "navigation_bar.public_timeline": "Դաշնային հոսք", "navigation_bar.search": "Որոնել", @@ -423,8 +420,6 @@ "status.mute": "Լռեցնել @{name}֊ին", "status.mute_conversation": "Լռեցնել խօսակցութիւնը", "status.open": "Ընդարձակել այս գրառումը", - "status.pin": "Ամրացնել անձնական էջում", - "status.pinned": "Ամրացուած գրառում", "status.read_more": "Կարդալ աւելին", "status.reblog": "Տարածել", "status.reblog_private": "Տարածել սեփական լսարանին", @@ -444,7 +439,6 @@ "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "status.translate": "Թարգմանել", "status.unmute_conversation": "Ապալռեցնել խօսակցութիւնը", - "status.unpin": "Հանել անձնական էջից", "subscribed_languages.save": "Պահպանել փոփոխութիւնները", "tabs_bar.home": "Հիմնական", "tabs_bar.notifications": "Ծանուցումներ", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index f8bdcf033b..138dc713d4 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -157,7 +157,6 @@ "column.lists": "Listas", "column.mutes": "Usatores silentiate", "column.notifications": "Notificationes", - "column.pins": "Messages fixate", "column.public": "Chronologia federate", "column_back_button.label": "Retro", "column_header.hide_settings": "Celar le parametros", @@ -457,7 +456,6 @@ "keyboard_shortcuts.my_profile": "Aperir tu profilo", "keyboard_shortcuts.notifications": "Aperir columna de notificationes", "keyboard_shortcuts.open_media": "Aperir multimedia", - "keyboard_shortcuts.pinned": "Aperir le lista de messages fixate", "keyboard_shortcuts.profile": "Aperir le profilo del autor", "keyboard_shortcuts.reply": "Responder al message", "keyboard_shortcuts.requests": "Aperir le lista de requestas de sequimento", @@ -541,7 +539,6 @@ "navigation_bar.mutes": "Usatores silentiate", "navigation_bar.opened_in_classic_interface": "Messages, contos e altere paginas specific es aperite per predefinition in le interfacie web classic.", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Messages fixate", "navigation_bar.preferences": "Preferentias", "navigation_bar.public_timeline": "Chronologia federate", "navigation_bar.search": "Cercar", @@ -837,8 +834,6 @@ "status.mute": "Silentiar @{name}", "status.mute_conversation": "Silentiar conversation", "status.open": "Expander iste message", - "status.pin": "Fixar sur profilo", - "status.pinned": "Message fixate", "status.read_more": "Leger plus", "status.reblog": "Impulsar", "status.reblog_private": "Impulsar con visibilitate original", @@ -863,7 +858,6 @@ "status.translated_from_with": "Traducite de {lang} usante {provider}", "status.uncached_media_warning": "Previsualisation non disponibile", "status.unmute_conversation": "Non plus silentiar conversation", - "status.unpin": "Disfixar del profilo", "subscribed_languages.lead": "Solmente le messages in le linguas seligite apparera in tu chronologias de initio e de listas post le cambiamento. Selige necun pro reciper messages in tote le linguas.", "subscribed_languages.save": "Salvar le cambiamentos", "subscribed_languages.target": "Cambiar le linguas subscribite pro {target}", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index ff44e4ab96..0da046c22d 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -131,7 +131,6 @@ "column.lists": "List", "column.mutes": "Pengguna yang dibisukan", "column.notifications": "Notifikasi", - "column.pins": "Kiriman tersemat", "column.public": "Linimasa gabungan", "column_back_button.label": "Kembali", "column_header.hide_settings": "Sembunyikan pengaturan", @@ -365,7 +364,6 @@ "keyboard_shortcuts.my_profile": "Buka profil Anda", "keyboard_shortcuts.notifications": "buka kolom notifikasi", "keyboard_shortcuts.open_media": "membuka media", - "keyboard_shortcuts.pinned": "buka daftar toot tersemat", "keyboard_shortcuts.profile": "buka profil pencipta", "keyboard_shortcuts.reply": "balas", "keyboard_shortcuts.requests": "buka daftar permintaan ikuti", @@ -409,7 +407,6 @@ "navigation_bar.logout": "Keluar", "navigation_bar.mutes": "Pengguna dibisukan", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Toot tersemat", "navigation_bar.preferences": "Pengaturan", "navigation_bar.public_timeline": "Linimasa gabungan", "navigation_bar.search": "Cari", @@ -559,8 +556,6 @@ "status.mute": "Bisukan @{name}", "status.mute_conversation": "Bisukan percakapan", "status.open": "Tampilkan kiriman ini", - "status.pin": "Sematkan di profil", - "status.pinned": "Kiriman tersemat", "status.read_more": "Baca lebih banyak", "status.reblog": "Boost", "status.reblog_private": "Boost dengan visibilitas asli", @@ -581,7 +576,6 @@ "status.translate": "Terjemahkan", "status.translated_from_with": "Diterjemahkan dari {lang} menggunakan {provider}", "status.unmute_conversation": "Bunyikan percakapan", - "status.unpin": "Hapus sematan dari profil", "subscribed_languages.lead": "Hanya kiriman dalam bahasa yang dipilih akan muncul di linimasa beranda dan daftar setelah perubahan. Pilih tidak ada untuk menerima kiriman dalam semua bahasa.", "subscribed_languages.save": "Simpan perubahan", "subscribed_languages.target": "Ubah langganan bahasa untuk {target}", diff --git a/app/javascript/mastodon/locales/ie.json b/app/javascript/mastodon/locales/ie.json index fee3eb681b..6cd43bdc7c 100644 --- a/app/javascript/mastodon/locales/ie.json +++ b/app/javascript/mastodon/locales/ie.json @@ -120,7 +120,6 @@ "column.lists": "Listes", "column.mutes": "Silentiat usatores", "column.notifications": "Notificationes", - "column.pins": "Pinglat postas", "column.public": "Federat témpor-linea", "column_back_button.label": "Retornar", "column_header.hide_settings": "Celar parametres", @@ -361,7 +360,6 @@ "keyboard_shortcuts.my_profile": "Aperter tui profil", "keyboard_shortcuts.notifications": "Aperter li columne de notificationes", "keyboard_shortcuts.open_media": "Aperter medie", - "keyboard_shortcuts.pinned": "Aperter li liste de pinglat postas", "keyboard_shortcuts.profile": "Aperter profil del autor", "keyboard_shortcuts.reply": "Responder al posta", "keyboard_shortcuts.requests": "Aperter liste de seque-petitiones", @@ -416,7 +414,6 @@ "navigation_bar.mutes": "Silentiat usatores", "navigation_bar.opened_in_classic_interface": "Postas, contos e altri specific págines es customalmen apertet in li classic web-interfacie.", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Pinglat postas", "navigation_bar.preferences": "Preferenties", "navigation_bar.public_timeline": "Federat témpor-linea", "navigation_bar.search": "Sercha", @@ -647,8 +644,6 @@ "status.mute": "Silentiar @{name}", "status.mute_conversation": "Silentiar conversation", "status.open": "Expander ti-ci posta", - "status.pin": "Pinglar sur profil", - "status.pinned": "Pinglat posta", "status.read_more": "Leer plu", "status.reblog": "Boostar", "status.reblog_private": "Boostar con li original visibilitá", @@ -671,7 +666,6 @@ "status.translated_from_with": "Traductet de {lang} per {provider}", "status.uncached_media_warning": "Previse ne disponibil", "status.unmute_conversation": "Dessilentiar conversation", - "status.unpin": "Despinglar de profil", "subscribed_languages.lead": "Solmen postas in selectet lingues va aparir in tui hemal e listal témpor-lineas pos li change. Selecte null por reciver postas in omni lingues.", "subscribed_languages.save": "Conservar changes", "subscribed_languages.target": "Changear abonnat lingues por {target}", diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json index 07110813f9..6e902bcf4b 100644 --- a/app/javascript/mastodon/locales/ig.json +++ b/app/javascript/mastodon/locales/ig.json @@ -25,7 +25,6 @@ "column.home": "Be", "column.lists": "Ndepụta", "column.notifications": "Nziọkwà", - "column.pins": "Pinned post", "column_header.pin": "Gbado na profaịlụ gị", "column_header.show_settings": "Gosi mwube", "column_subheading.settings": "Mwube", @@ -93,7 +92,6 @@ "keyboard_shortcuts.my_profile": "Mepe profaịlụ gị", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned posts list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index 22b9614569..84c5d7a6b0 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -157,7 +157,6 @@ "column.lists": "Listi", "column.mutes": "Celita uzeri", "column.notifications": "Savigi", - "column.pins": "Adpinglita afishi", "column.public": "Federata tempolineo", "column_back_button.label": "Retro", "column_header.hide_settings": "Celez ajusti", @@ -457,7 +456,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "Desklozar audvidaji", - "keyboard_shortcuts.pinned": "Desklozar listo di adpinglita afishi", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", @@ -541,7 +539,6 @@ "navigation_bar.mutes": "Celita uzeri", "navigation_bar.opened_in_classic_interface": "Posti, konti e altra pagini specifika apertesas en la retovidilo klasika.", "navigation_bar.personal": "Personala", - "navigation_bar.pins": "Adpinglita afishi", "navigation_bar.preferences": "Preferi", "navigation_bar.public_timeline": "Federata tempolineo", "navigation_bar.search": "Serchez", @@ -837,8 +834,6 @@ "status.mute": "Silencigez @{name}", "status.mute_conversation": "Silencigez konverso", "status.open": "Detaligar ca mesajo", - "status.pin": "Pinglagez che profilo", - "status.pinned": "Adpinglita afisho", "status.read_more": "Lektez plu", "status.reblog": "Repetez", "status.reblog_private": "Repetez kun originala videbleso", @@ -863,7 +858,6 @@ "status.translated_from_with": "Tradukita de {lang} per {provider}", "status.uncached_media_warning": "Previdajo nedisponebla", "status.unmute_conversation": "Desilencigez konverso", - "status.unpin": "Depinglagez de profilo", "subscribed_languages.lead": "Nur posti en selektita lingui aparos en vua hemo e listotempolineo pos chanjo. Selektez nulo por ganar posti en omna lingui.", "subscribed_languages.save": "Sparez chanji", "subscribed_languages.target": "Chanjez abonita lingui por {target}", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 21b8ad3df0..a75200d8fa 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -168,7 +168,7 @@ "column.lists": "Listar", "column.mutes": "Þaggaðir notendur", "column.notifications": "Tilkynningar", - "column.pins": "Festar færslur", + "column.pins": "Færslur með aukið vægi", "column.public": "Sameiginleg tímalína", "column_back_button.label": "Til baka", "column_header.hide_settings": "Fela stillingar", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Opna notandasniðið þitt", "keyboard_shortcuts.notifications": "Opna tilkynningadálk", "keyboard_shortcuts.open_media": "Opna margmiðlunargögn", - "keyboard_shortcuts.pinned": "Opna lista yfir festar færslur", + "keyboard_shortcuts.pinned": "Opna lista með færslum með aukið vægi", "keyboard_shortcuts.profile": "Opna notandasnið höfundar", "keyboard_shortcuts.reply": "Svara færslu", "keyboard_shortcuts.requests": "Opna lista yfir fylgjendabeiðnir", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "Þaggaðir notendur", "navigation_bar.opened_in_classic_interface": "Færslur, notendaaðgangar og aðrar sérhæfðar síður eru sjálfgefið opnaðar í klassíska vefviðmótinu.", "navigation_bar.personal": "Einka", - "navigation_bar.pins": "Festar færslur", + "navigation_bar.pins": "Færslur með aukið vægi", "navigation_bar.preferences": "Kjörstillingar", "navigation_bar.public_timeline": "Sameiginleg tímalína", "navigation_bar.search": "Leita", @@ -857,8 +857,7 @@ "status.mute": "Þagga niður í @{name}", "status.mute_conversation": "Þagga niður í samtali", "status.open": "Opna þessa færslu", - "status.pin": "Festa á notandasnið", - "status.pinned": "Fest færsla", + "status.pin": "Birta á notandasniði", "status.read_more": "Lesa meira", "status.reblog": "Endurbirting", "status.reblog_private": "Endurbirta til upphaflegra lesenda", @@ -883,7 +882,7 @@ "status.translated_from_with": "Þýtt úr {lang} með {provider}", "status.uncached_media_warning": "Forskoðun ekki tiltæk", "status.unmute_conversation": "Hætta að þagga niður í samtali", - "status.unpin": "Losa af notandasniði", + "status.unpin": "Ekki birta á notandasniði", "subscribed_languages.lead": "Einungis færslur á völdum tungumálum munu birtast á upphafssíðu og tímalínum þínum eftir þessa breytingu. Veldu ekkert til að sjá færslur á öllum tungumálum.", "subscribed_languages.save": "Vista breytingar", "subscribed_languages.target": "Breyta tungumálum í áskrift fyrir {target}", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index 9dbcb02972..019a282219 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -168,7 +168,6 @@ "column.lists": "Liste", "column.mutes": "Utenti silenziati", "column.notifications": "Notifiche", - "column.pins": "Post fissati", "column.public": "Timeline federata", "column_back_button.label": "Indietro", "column_header.hide_settings": "Nascondi impostazioni", @@ -477,7 +476,6 @@ "keyboard_shortcuts.my_profile": "Apre il tuo profilo", "keyboard_shortcuts.notifications": "Apre la colonna delle notifiche", "keyboard_shortcuts.open_media": "Apre i multimedia", - "keyboard_shortcuts.pinned": "Apre l'elenco dei post fissati", "keyboard_shortcuts.profile": "Apre il profilo dell'autore", "keyboard_shortcuts.reply": "Risponde al post", "keyboard_shortcuts.requests": "Apre l'elenco delle richieste di seguirti", @@ -561,7 +559,6 @@ "navigation_bar.mutes": "Utenti silenziati", "navigation_bar.opened_in_classic_interface": "Post, account e altre pagine specifiche sono aperti per impostazione predefinita nella classica interfaccia web.", "navigation_bar.personal": "Personale", - "navigation_bar.pins": "Post fissati", "navigation_bar.preferences": "Preferenze", "navigation_bar.public_timeline": "Cronologia federata", "navigation_bar.search": "Cerca", @@ -857,8 +854,6 @@ "status.mute": "Silenzia @{name}", "status.mute_conversation": "Silenzia conversazione", "status.open": "Espandi questo post", - "status.pin": "Fissa in cima sul profilo", - "status.pinned": "Post fissato", "status.read_more": "Leggi di più", "status.reblog": "Reblog", "status.reblog_private": "Reblog con visibilità originale", @@ -883,7 +878,6 @@ "status.translated_from_with": "Tradotto da {lang} utilizzando {provider}", "status.uncached_media_warning": "Anteprima non disponibile", "status.unmute_conversation": "Annulla silenziamento conversazione", - "status.unpin": "Non fissare sul profilo", "subscribed_languages.lead": "Solo i post nelle lingue selezionate appariranno sulla tua home e nelle cronologie dopo la modifica. Seleziona nessuno per ricevere i post in tutte le lingue.", "subscribed_languages.save": "Salva le modifiche", "subscribed_languages.target": "Modifica le lingue in cui sei iscritto per {target}", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index 0623878fe7..9e11806e64 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -168,7 +168,6 @@ "column.lists": "リスト", "column.mutes": "ミュートしたユーザー", "column.notifications": "通知", - "column.pins": "固定された投稿", "column.public": "連合タイムライン", "column_back_button.label": "戻る", "column_header.hide_settings": "設定を隠す", @@ -477,7 +476,6 @@ "keyboard_shortcuts.my_profile": "自分のプロフィールを開く", "keyboard_shortcuts.notifications": "通知カラムを開く", "keyboard_shortcuts.open_media": "メディアを開く", - "keyboard_shortcuts.pinned": "固定した投稿のリストを開く", "keyboard_shortcuts.profile": "プロフィールを開く", "keyboard_shortcuts.reply": "返信", "keyboard_shortcuts.requests": "フォローリクエストのリストを開く", @@ -561,7 +559,6 @@ "navigation_bar.mutes": "ミュートしたユーザー", "navigation_bar.opened_in_classic_interface": "投稿やプロフィールを直接開いた場合は一時的に標準UIで表示されます。", "navigation_bar.personal": "個人用", - "navigation_bar.pins": "固定した投稿", "navigation_bar.preferences": "ユーザー設定", "navigation_bar.public_timeline": "連合タイムライン", "navigation_bar.search": "検索", @@ -857,8 +854,6 @@ "status.mute": "@{name}さんをミュート", "status.mute_conversation": "会話をミュート", "status.open": "詳細を表示", - "status.pin": "プロフィールに固定表示", - "status.pinned": "固定された投稿", "status.read_more": "もっと見る", "status.reblog": "ブースト", "status.reblog_private": "ブースト", @@ -883,7 +878,6 @@ "status.translated_from_with": "{provider}を使って{lang}から翻訳", "status.uncached_media_warning": "プレビューは使用できません", "status.unmute_conversation": "会話のミュートを解除", - "status.unpin": "プロフィールへの固定を解除", "subscribed_languages.lead": "選択した言語の投稿だけがホームとリストのタイムラインに表示されます。全ての言語の投稿を受け取る場合は全てのチェックを外して下さい。", "subscribed_languages.save": "変更を保存", "subscribed_languages.target": "{target}さんの購読言語を変更します", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 6957f82be7..010fa905e5 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -45,7 +45,6 @@ "column.lists": "სიები", "column.mutes": "გაჩუმებული მომხმარებლები", "column.notifications": "შეტყობინებები", - "column.pins": "აპინული ტუტები", "column.public": "ფედერალური თაიმლაინი", "column_back_button.label": "უკან", "column_header.hide_settings": "პარამეტრების დამალვა", @@ -126,7 +125,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned toots list", "keyboard_shortcuts.profile": "ავტორის პროფილის გასახსნელად", "keyboard_shortcuts.reply": "პასუხისთვის", "keyboard_shortcuts.requests": "to open follow requests list", @@ -154,7 +152,6 @@ "navigation_bar.logout": "გასვლა", "navigation_bar.mutes": "გაჩუმებული მომხმარებლები", "navigation_bar.personal": "პირადი", - "navigation_bar.pins": "აპინული ტუტები", "navigation_bar.preferences": "პრეფერენსიები", "navigation_bar.public_timeline": "ფედერალური თაიმლაინი", "navigation_bar.security": "უსაფრთხოება", @@ -204,8 +201,6 @@ "status.mute": "გააჩუმე @{name}", "status.mute_conversation": "გააჩუმე საუბარი", "status.open": "ამ სტატუსის გაფართოება", - "status.pin": "აპინე პროფილზე", - "status.pinned": "აპინული ტუტი", "status.reblog": "ბუსტი", "status.reblog_private": "დაიბუსტოს საწყის აუდიტორიაზე", "status.reblogged_by": "{name} დაიბუსტა", @@ -220,7 +215,6 @@ "status.show_more_all": "აჩვენე მეტი ყველაზე", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "status.unmute_conversation": "საუბარზე გაჩუმების მოშორება", - "status.unpin": "პროფილიდან პინის მოშორება", "tabs_bar.home": "საწყისი", "tabs_bar.notifications": "შეტყობინებები", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 17020454c4..3757fdabaf 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -119,7 +119,6 @@ "column.lists": "Tibdarin", "column.mutes": "Imiḍanen yettwasgugmen", "column.notifications": "Ilɣa", - "column.pins": "Tisuffaɣ yettwasenṭḍen", "column.public": "Tasuddemt tamatut", "column_back_button.label": "Tuɣalin", "column_header.hide_settings": "Ffer iɣewwaṛen", @@ -340,7 +339,6 @@ "keyboard_shortcuts.my_profile": "akken ad d-teldiḍ amaɣnu-ik", "keyboard_shortcuts.notifications": "Ad d-yeldi ajgu n yilɣa", "keyboard_shortcuts.open_media": "i tiɣwalin yeldin", - "keyboard_shortcuts.pinned": "akken ad teldiḍ tabdart n tjewwiqin yettwasentḍen", "keyboard_shortcuts.profile": "akken ad d-teldiḍ amaɣnu n umeskar", "keyboard_shortcuts.reply": "i tririt", "keyboard_shortcuts.requests": "akken ad d-teldiḍ tabdert n yisuturen n teḍfeṛt", @@ -410,7 +408,6 @@ "navigation_bar.mutes": "Iseqdacen yettwasusmen", "navigation_bar.opened_in_classic_interface": "Tisuffaɣ, imiḍanen akked isebtar-nniḍen igejdanen ldin-d s wudem amezwer deg ugrudem web aklasiki.", "navigation_bar.personal": "Udmawan", - "navigation_bar.pins": "Tisuffaɣ yettwasenṭḍen", "navigation_bar.preferences": "Imenyafen", "navigation_bar.public_timeline": "Tasuddemt tazayezt tamatut", "navigation_bar.search": "Nadi", @@ -620,8 +617,6 @@ "status.mute": "Sussem @{name}", "status.mute_conversation": "Sgugem adiwenni", "status.open": "Semɣeṛ tasuffeɣt-ayi", - "status.pin": "Senteḍ-itt deg umaɣnu", - "status.pinned": "Tisuffaɣ yettwasentḍen", "status.read_more": "Issin ugar", "status.reblog": "Bḍu", "status.reblogged_by": "Yebḍa-tt {name}", @@ -644,7 +639,6 @@ "status.translated_from_with": "Yettwasuqel seg {lang} s {provider}", "status.uncached_media_warning": "Ulac taskant", "status.unmute_conversation": "Kkes asgugem n udiwenni", - "status.unpin": "Kkes asenteḍ seg umaɣnu", "subscribed_languages.save": "Sekles ibeddilen", "tabs_bar.home": "Agejdan", "tabs_bar.notifications": "Ilɣa", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index db996eac66..7f9beac5e4 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -71,7 +71,6 @@ "column.lists": "Тізімдер", "column.mutes": "Үнсіз қолданушылар", "column.notifications": "Ескертпелер", - "column.pins": "Жабыстырылған жазбалар", "column.public": "Жаһандық желі", "column_back_button.label": "Артқа", "column_header.hide_settings": "Баптауларды жасыр", @@ -191,7 +190,6 @@ "keyboard_shortcuts.my_profile": "профиліңізді ашу", "keyboard_shortcuts.notifications": "ескертпелер бағанын ашу", "keyboard_shortcuts.open_media": "медианы ашу үшін", - "keyboard_shortcuts.pinned": "жабыстырылған жазбаларды көру", "keyboard_shortcuts.profile": "автор профилін қарау", "keyboard_shortcuts.reply": "жауап жазу", "keyboard_shortcuts.requests": "жазылу сұранымдарын қарау", @@ -222,7 +220,6 @@ "navigation_bar.logout": "Шығу", "navigation_bar.mutes": "Үнсіз қолданушылар", "navigation_bar.personal": "Жеке", - "navigation_bar.pins": "Жабыстырылғандар", "navigation_bar.preferences": "Басымдықтар", "navigation_bar.public_timeline": "Жаһандық желі", "navigation_bar.security": "Қауіпсіздік", @@ -294,8 +291,6 @@ "status.mute": "Үнсіз @{name}", "status.mute_conversation": "Пікірталасты үнсіз қылу", "status.open": "Жазбаны ашу", - "status.pin": "Профильде жабыстыру", - "status.pinned": "Жабыстырылған жазба", "status.read_more": "Әрі қарай", "status.reblog": "Бөлісу", "status.reblog_private": "Негізгі аудиторияға бөлісу", @@ -312,7 +307,6 @@ "status.show_more_all": "Бәрін толығымен", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "status.unmute_conversation": "Пікірталасты үнсіз қылмау", - "status.unpin": "Профильден алып тастау", "tabs_bar.home": "Басты бет", "tabs_bar.notifications": "Ескертпелер", "time_remaining.days": "{number, plural, one {# күн} other {# күн}}", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index 5ab8c374f8..673e55a74f 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -19,7 +19,6 @@ "alert.unexpected.title": "ಅಯ್ಯೋ!", "bundle_column_error.retry": "ಮರಳಿ ಪ್ರಯತ್ನಿಸಿ", "column.domain_blocks": "Hidden domains", - "column.pins": "Pinned toot", "community.column_settings.media_only": "Media only", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", @@ -53,7 +52,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned toots list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", @@ -67,7 +65,6 @@ "keyboard_shortcuts.up": "to move up in the list", "navigation_bar.compose": "Compose new toot", "navigation_bar.domain_blocks": "Hidden domains", - "navigation_bar.pins": "Pinned toots", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.reblog": "{name} boosted your status", "notifications.column_settings.status": "New toots:", @@ -82,7 +79,6 @@ "status.copy": "Copy link to status", "status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}", "status.open": "Expand this status", - "status.pinned": "Pinned toot", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 94e561cb28..e3de24fe82 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -168,7 +168,6 @@ "column.lists": "리스트", "column.mutes": "뮤트한 사용자", "column.notifications": "알림", - "column.pins": "고정된 게시물", "column.public": "연합 타임라인", "column_back_button.label": "돌아가기", "column_header.hide_settings": "설정 숨기기", @@ -477,7 +476,6 @@ "keyboard_shortcuts.my_profile": "내 프로필 열기", "keyboard_shortcuts.notifications": "알림 컬럼 열기", "keyboard_shortcuts.open_media": "미디어 열기", - "keyboard_shortcuts.pinned": "고정 게시물 리스트 열기", "keyboard_shortcuts.profile": "작성자의 프로필 열기", "keyboard_shortcuts.reply": "게시물에 답장", "keyboard_shortcuts.requests": "팔로우 요청 리스트 열기", @@ -561,7 +559,6 @@ "navigation_bar.mutes": "뮤트한 사용자", "navigation_bar.opened_in_classic_interface": "게시물, 계정, 기타 특정 페이지들은 기본적으로 기존 웹 인터페이스로 열리게 됩니다.", "navigation_bar.personal": "개인용", - "navigation_bar.pins": "고정된 게시물", "navigation_bar.preferences": "환경설정", "navigation_bar.public_timeline": "연합 타임라인", "navigation_bar.search": "검색", @@ -857,8 +854,6 @@ "status.mute": "@{name} 뮤트", "status.mute_conversation": "이 대화를 뮤트", "status.open": "상세 정보 표시", - "status.pin": "고정", - "status.pinned": "고정된 게시물", "status.read_more": "더 보기", "status.reblog": "부스트", "status.reblog_private": "원래의 수신자들에게 부스트", @@ -883,7 +878,6 @@ "status.translated_from_with": "{provider}에 의해 {lang}에서 번역됨", "status.uncached_media_warning": "미리보기를 사용할 수 없습니다", "status.unmute_conversation": "이 대화의 뮤트 해제하기", - "status.unpin": "고정 해제", "subscribed_languages.lead": "변경 후에는 선택한 언어들로 작성된 게시물들만 홈 타임라인과 리스트 타임라인에 나타나게 됩니다. 아무 것도 선택하지 않으면 모든 언어로 작성된 게시물을 받아봅니다.", "subscribed_languages.save": "변경사항 저장", "subscribed_languages.target": "{target}에 대한 구독 언어 변경", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index e69a273f9f..60913b6601 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -37,6 +37,7 @@ "account.following": "Dişopîne", "account.following_counter": "{count, plural, one {{counter} dişopîne} other {{counter} dişopîne}}", "account.follows.empty": "Ev bikarhêner hin kesekî heya niha neşopandiye.", + "account.follows_you": "Te dişopîne", "account.go_to_profile": "Biçe bo profîlê", "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre", "account.in_memoriam": "Di bîranînê de.", @@ -125,7 +126,6 @@ "column.lists": "Lîste", "column.mutes": "Bikarhênerên bêdengkirî", "column.notifications": "Agahdarî", - "column.pins": "Şandiya derzîkirî", "column.public": "Demnameya giştî", "column_back_button.label": "Vegere", "column_header.hide_settings": "Sazkariyan veşêre", @@ -311,7 +311,6 @@ "keyboard_shortcuts.my_profile": "Profîla xwe veke", "keyboard_shortcuts.notifications": "Stûnê agahdariyan veke", "keyboard_shortcuts.open_media": "Medya veke", - "keyboard_shortcuts.pinned": "Şandiyên derzîkirî veke", "keyboard_shortcuts.profile": "Profîla nivîskaran veke", "keyboard_shortcuts.reply": "Bersivê bide şandiyê", "keyboard_shortcuts.requests": "Lîsteya daxwazên şopandinê veke", @@ -353,7 +352,6 @@ "navigation_bar.logout": "Derkeve", "navigation_bar.mutes": "Bikarhênerên bêdengkirî", "navigation_bar.personal": "Kesanî", - "navigation_bar.pins": "Şandiya derzîkirî", "navigation_bar.preferences": "Sazkarî", "navigation_bar.public_timeline": "Demnameya giştî", "navigation_bar.search": "Bigere", @@ -517,8 +515,6 @@ "status.mute": "@{name} bêdeng bike", "status.mute_conversation": "Axaftinê bêdeng bike", "status.open": "Vê şandiyê berferh bike", - "status.pin": "Li ser profîlê derzî bike", - "status.pinned": "Şandiya derzîkirî", "status.read_more": "Bêtir bixwîne", "status.reblog": "Bilind bike", "status.reblog_private": "Bi dîtina resen bilind bike", @@ -539,7 +535,6 @@ "status.translate": "Wergerîne", "status.translated_from_with": "Ji {lang} hate wergerandin bi riya {provider}", "status.unmute_conversation": "Axaftinê bêdeng neke", - "status.unpin": "Şandiya derzîkirî ji profîlê rake", "subscribed_languages.lead": "Tenê şandiyên bi zimanên hilbijartî wê di rojev û demnameya te de wê xuya bibe û piştî guhertinê. Ji bo wergirtina şandiyan di hemû zimanan de ne yek hilbijêre.", "subscribed_languages.save": "Guhertinan tomar bike", "subscribed_languages.target": "Zimanên beşdarbûyî biguherîne ji bo {target}", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index 6c3556af45..7460aacde1 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -53,7 +53,6 @@ "column.lists": "Rolyow", "column.mutes": "Devnydhyoryon tawhes", "column.notifications": "Gwarnyansow", - "column.pins": "Postow fastys", "column.public": "Amserlin geffrysys", "column_back_button.label": "War-gamm", "column_header.hide_settings": "Kudha dewisyow", @@ -177,7 +176,6 @@ "keyboard_shortcuts.my_profile": "Ygeri agas profil", "keyboard_shortcuts.notifications": "Ygeri koloven gwarnyansow", "keyboard_shortcuts.open_media": "Ygeri myski", - "keyboard_shortcuts.pinned": "Ygeri rol a bostow fastys", "keyboard_shortcuts.profile": "Ygeri profil an awtour", "keyboard_shortcuts.reply": "Gorthebi orth post", "keyboard_shortcuts.requests": "Ygeri rol govynnow holya", @@ -211,7 +209,6 @@ "navigation_bar.logout": "Digelmi", "navigation_bar.mutes": "Devnydhyoryon tawhes", "navigation_bar.personal": "Menebel", - "navigation_bar.pins": "Postow fastys", "navigation_bar.preferences": "Erviransow", "navigation_bar.public_timeline": "Amserlin geffrysys", "navigation_bar.security": "Diogeledh", @@ -294,8 +291,6 @@ "status.mute": "Tawhe @{name}", "status.mute_conversation": "Tawhe kesklapp", "status.open": "Efani'n post ma", - "status.pin": "Fastya yn profil", - "status.pinned": "Postow fastys", "status.read_more": "Redya moy", "status.reblog": "Kenertha", "status.reblog_private": "Kenertha gans gweladewder derowel", @@ -312,7 +307,6 @@ "status.show_more_all": "Diskwedhes moy rag puptra", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "status.unmute_conversation": "Antawhe kesklapp", - "status.unpin": "Anfastya a brofil", "tabs_bar.home": "Tre", "tabs_bar.notifications": "Gwarnyansow", "time_remaining.days": "{number, plural, one {# jydh} other {# a jydhyow}} gesys", diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json index a13e1d1961..992093a2c5 100644 --- a/app/javascript/mastodon/locales/la.json +++ b/app/javascript/mastodon/locales/la.json @@ -45,7 +45,6 @@ "column.bookmarks": "Signa paginales", "column.home": "Domi", "column.lists": "Catalogi", - "column.pins": "Pinned post", "community.column_settings.media_only": "Media only", "compose.language.change": "Mutare linguam", "compose.language.search": "Quaerere linguas...", @@ -126,7 +125,6 @@ "keyboard_shortcuts.my_profile": "Aperī prōfilum tuum", "keyboard_shortcuts.notifications": "Aperī columnam nūntiātiōnum", "keyboard_shortcuts.open_media": "Aperi media", - "keyboard_shortcuts.pinned": "Aperī indicem nūntiōrum affixōrum", "keyboard_shortcuts.profile": "Aperi auctoris profile", "keyboard_shortcuts.reply": "Respondere ad contributum", "keyboard_shortcuts.requests": "Aperī indicem petītiōnum sequendī", diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json index 3dde637adc..3502351d3f 100644 --- a/app/javascript/mastodon/locales/lad.json +++ b/app/javascript/mastodon/locales/lad.json @@ -150,7 +150,6 @@ "column.lists": "Listas", "column.mutes": "Utilizadores silensiados", "column.notifications": "Avizos", - "column.pins": "Publikasyones fiksadas", "column.public": "Linya federada", "column_back_button.label": "Atras", "column_header.hide_settings": "Eskonde opsyones", @@ -414,7 +413,6 @@ "keyboard_shortcuts.my_profile": "Avre tu profil", "keyboard_shortcuts.notifications": "Avre kolumna de avizos", "keyboard_shortcuts.open_media": "Avre multimedia", - "keyboard_shortcuts.pinned": "Avre lista de publikasyones fiksadas", "keyboard_shortcuts.profile": "Avre profil del autor", "keyboard_shortcuts.reply": "Arisponde a publikasyon", "keyboard_shortcuts.requests": "Avre lista de solisitudes de suivantes", @@ -479,7 +477,6 @@ "navigation_bar.mutes": "Utilizadores silensiados", "navigation_bar.opened_in_classic_interface": "Publikasyones, kuentos i otras pajinas espesifikas se avren kon preferensyas predeterminadas en la enterfaz web klasika.", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Publikasyones fiksadas", "navigation_bar.preferences": "Preferensyas", "navigation_bar.public_timeline": "Linya federada", "navigation_bar.search": "Bushka", @@ -733,8 +730,6 @@ "status.mute": "Silensia a @{name}", "status.mute_conversation": "Silensia konversasyon", "status.open": "Espande publikasyon", - "status.pin": "Fiksa en profil", - "status.pinned": "Publikasyon fiksada", "status.read_more": "Melda mas", "status.reblog": "Repartaja", "status.reblog_private": "Repartaja kon vizibilita orijinala", @@ -757,7 +752,6 @@ "status.translated_from_with": "Trezladado dizde {lang} kon {provider}", "status.uncached_media_warning": "Vista previa no desponivle", "status.unmute_conversation": "Desilensia konversasyon", - "status.unpin": "Defiksar del profil", "subscribed_languages.lead": "Solo publikasyones en linguas eskojidas se amostraran en tus linya de tiempo prinsipala i listas dempues del trokamiento. Eskoje dinguna para risivir publikasyones en todas las linguas.", "subscribed_languages.save": "Guadra trokamientos", "subscribed_languages.target": "Troka linguas abonadas para {target}", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 74ad1eb020..3bacf65765 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -26,6 +26,9 @@ "account.edit_profile": "Redaguoti profilį", "account.enable_notifications": "Pranešti man, kai @{name} paskelbia", "account.endorse": "Rodyti profilyje", + "account.featured": "Rodomi", + "account.featured.hashtags": "Saitažodžiai", + "account.featured.posts": "Įrašai", "account.featured_tags.last_status_at": "Paskutinis įrašas {date}", "account.featured_tags.last_status_never": "Nėra įrašų", "account.follow": "Sekti", @@ -54,6 +57,7 @@ "account.open_original_page": "Atidaryti originalų puslapį", "account.posts": "Įrašai", "account.posts_with_replies": "Įrašai ir atsakymai", + "account.remove_from_followers": "Šalinti {name} iš sekėjų", "account.report": "Pranešti apie @{name}", "account.requested": "Laukiama patvirtinimo. Spustelėk, kad atšauktum sekimo prašymą", "account.requested_follow": "{name} paprašė tave sekti", @@ -62,6 +66,7 @@ "account.statuses_counter": "{count, plural, one {{counter} įrašas} few {{counter} įrašai} many {{counter} įrašo} other {{counter} įrašų}}", "account.unblock": "Atblokuoti @{name}", "account.unblock_domain": "Atblokuoti serverį {domain}", + "account.unblock_domain_short": "Atblokuoti", "account.unblock_short": "Atblokuoti", "account.unendorse": "Nerodyti profilyje", "account.unfollow": "Nebesekti", @@ -157,7 +162,7 @@ "column.lists": "Sąrašai", "column.mutes": "Nutildyti naudotojai", "column.notifications": "Pranešimai", - "column.pins": "Prisegti įrašai", + "column.pins": "Rodomi įrašai", "column.public": "Federacinė laiko skalė", "column_back_button.label": "Atgal", "column_header.hide_settings": "Slėpti nustatymus", @@ -223,6 +228,9 @@ "confirmations.redraft.confirm": "Ištrinti ir iš naujo parengti", "confirmations.redraft.message": "Ar tikrai nori ištrinti šį įrašą ir parengti jį iš naujo? Bus prarasti mėgstami ir pasidalinimai, o atsakymai į originalų įrašą bus panaikinti.", "confirmations.redraft.title": "Ištrinti ir iš naujo parengti įrašą?", + "confirmations.remove_from_followers.confirm": "Šalinti sekėją", + "confirmations.remove_from_followers.message": "{name} nustos jus sekti. Ar tikrai norite tęsti?", + "confirmations.remove_from_followers.title": "Šalinti sekėją?", "confirmations.reply.confirm": "Atsakyti", "confirmations.reply.message": "Atsakant dabar, bus perrašyta šiuo metu kuriama žinutė. Ar tikrai nori tęsti?", "confirmations.reply.title": "Perrašyti įrašą?", @@ -453,7 +461,7 @@ "keyboard_shortcuts.my_profile": "Atidaryti savo profilį", "keyboard_shortcuts.notifications": "Atidaryti pranešimų stulpelį", "keyboard_shortcuts.open_media": "Atidaryti mediją", - "keyboard_shortcuts.pinned": "Atidaryti prisegtų įrašų sąrašą", + "keyboard_shortcuts.pinned": "Atverti rodomų įrašų sąrašą", "keyboard_shortcuts.profile": "Atidaryti autoriaus (-ės) profilį", "keyboard_shortcuts.reply": "Atsakyti į įrašą", "keyboard_shortcuts.requests": "Atidaryti sekimo prašymų sąrašą", @@ -537,7 +545,7 @@ "navigation_bar.mutes": "Nutildyti naudotojai", "navigation_bar.opened_in_classic_interface": "Įrašai, paskyros ir kiti konkretūs puslapiai pagal numatytuosius nustatymus atidaromi klasikinėje žiniatinklio sąsajoje.", "navigation_bar.personal": "Asmeninis", - "navigation_bar.pins": "Prisegti įrašai", + "navigation_bar.pins": "Rodomi įrašai", "navigation_bar.preferences": "Nuostatos", "navigation_bar.public_timeline": "Federacinė laiko skalė", "navigation_bar.search": "Ieškoti", @@ -823,8 +831,7 @@ "status.mute": "Nutildyti @{name}", "status.mute_conversation": "Nutildyti pokalbį", "status.open": "Išplėsti šį įrašą", - "status.pin": "Prisegti prie profilio", - "status.pinned": "Prisegtas įrašas", + "status.pin": "Rodyti profilyje", "status.read_more": "Skaityti daugiau", "status.reblog": "Pakelti", "status.reblog_private": "Pakelti su originaliu matomumu", @@ -848,7 +855,7 @@ "status.translated_from_with": "Išversta iš {lang} naudojant {provider}.", "status.uncached_media_warning": "Peržiūra nepasiekiama.", "status.unmute_conversation": "Atšaukti pokalbio nutildymą", - "status.unpin": "Atsegti iš profilio", + "status.unpin": "Nerodyti profilyje", "subscribed_languages.lead": "Po pakeitimo tavo pagrindinėje ir sąrašo laiko skalėje bus rodomi tik įrašai pasirinktomis kalbomis. Jei nori gauti įrašus visomis kalbomis, pasirink nė vieno.", "subscribed_languages.save": "Išsaugoti pakeitimus", "subscribed_languages.target": "Keisti prenumeruojamas kalbas {target}", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index cc008e06a1..8625eaa4e7 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -158,7 +158,7 @@ "column.lists": "Saraksti", "column.mutes": "Apklusinātie lietotāji", "column.notifications": "Paziņojumi", - "column.pins": "Piespraustie ziņojumi", + "column.pins": "Piedāvātās ziņas", "column.public": "Apvienotā laika līnija", "column_back_button.label": "Atpakaļ", "column_header.hide_settings": "Paslēpt iestatījumus", @@ -425,7 +425,7 @@ "keyboard_shortcuts.my_profile": "Atvērt savu profilu", "keyboard_shortcuts.notifications": "Atvērt paziņojumu kolonnu", "keyboard_shortcuts.open_media": "Atvērt multividi", - "keyboard_shortcuts.pinned": "Atvērt piesprausto ierakstu sarakstu", + "keyboard_shortcuts.pinned": "Atvērt piedāvāto ziņu sarakstu", "keyboard_shortcuts.profile": "Atvērt autora profilu", "keyboard_shortcuts.reply": "Atbildēt", "keyboard_shortcuts.requests": "Atvērt sekošanas pieprasījumu sarakstu", @@ -486,7 +486,7 @@ "navigation_bar.mutes": "Apklusinātie lietotāji", "navigation_bar.opened_in_classic_interface": "Ieraksti, konti un citas noteiktas lapas pēc noklusējuma tiek atvērtas klasiskajā tīmekļa saskarnē.", "navigation_bar.personal": "Personīgie", - "navigation_bar.pins": "Piespraustie ieraksti", + "navigation_bar.pins": "Piedāvātās ziņas", "navigation_bar.preferences": "Iestatījumi", "navigation_bar.public_timeline": "Apvienotā laika līnija", "navigation_bar.search": "Meklēt", @@ -722,8 +722,7 @@ "status.mute": "Apklusināt @{name}", "status.mute_conversation": "Apklusināt sarunu", "status.open": "Izvērst šo ierakstu", - "status.pin": "Piespraust profilam", - "status.pinned": "Piesprausts ieraksts", + "status.pin": "Piedāvāt profilā", "status.read_more": "Lasīt vairāk", "status.reblog": "Pastiprināt", "status.reblog_private": "Pastiprināt ar sākotnējo redzamību", @@ -746,7 +745,7 @@ "status.translated_from_with": "Tulkots no {lang} izmantojot {provider}", "status.uncached_media_warning": "Priekšskatījums nav pieejams", "status.unmute_conversation": "Noņemt sarunas apklusinājumu", - "status.unpin": "Noņemt profila piespraudumu", + "status.unpin": "Nepiedāvāt profilā", "subscribed_languages.lead": "Pēc izmaiņu veikšanas Tavā mājas un sarakstu laika līnijā tiks rādīti tikai ieraksti atlasītajās valodās. Neatlasīt nevienu, lai saņemtu ierakstus visās valodās.", "subscribed_languages.save": "Saglabāt izmaiņas", "subscribed_languages.target": "Mainīt abonētās valodas priekš {target}", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index 0c55e39cfc..334e30ae4a 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -57,7 +57,6 @@ "column.lists": "Листа", "column.mutes": "Заќутени корисници", "column.notifications": "Известувања", - "column.pins": "Pinned toot", "column.public": "Федеративен времеплов", "column_back_button.label": "Назад", "column_header.hide_settings": "Скриј подесувања", @@ -148,7 +147,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned toots list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "одговори", "keyboard_shortcuts.requests": "to open follow requests list", @@ -169,7 +167,6 @@ "navigation_bar.logout": "Одјави се", "navigation_bar.mutes": "Заќутени корисници", "navigation_bar.personal": "Лично", - "navigation_bar.pins": "Pinned toots", "navigation_bar.public_timeline": "Федеративен времеплов", "navigation_bar.security": "Безбедност", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", @@ -216,7 +213,6 @@ "status.copy": "Copy link to status", "status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}", "status.open": "Expand this status", - "status.pinned": "Pinned toot", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "tabs_bar.home": "Дома", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index db857850b5..647decc965 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -93,7 +93,6 @@ "column.lists": "പട്ടികകൾ", "column.mutes": "നിശബ്ദമാക്കപ്പെട്ട ഉപയോക്താക്കൾ", "column.notifications": "അറിയിപ്പുകൾ", - "column.pins": "ഉറപ്പിച്ചു നിറുത്തിയിരിക്കുന്ന ടൂട്ടുകൾ", "column.public": "സംയുക്തമായ സമയരേഖ", "column_back_button.label": "പുറകിലേക്ക്", "column_header.hide_settings": "ക്രമീകരണങ്ങൾ മറയ്ക്കുക", @@ -249,7 +248,6 @@ "keyboard_shortcuts.my_profile": "നിങ്ങളുടെ പ്രൊഫൈൽ തുറക്കാൻ", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "മീഡിയ തുറക്കാൻ", - "keyboard_shortcuts.pinned": "to open pinned toots list", "keyboard_shortcuts.profile": "രചയിതാവിന്റെ പ്രൊഫൈൽ തുറക്കുന്നതിന്", "keyboard_shortcuts.reply": "മറുപടി അയക്കാൻ", "keyboard_shortcuts.requests": "to open follow requests list", @@ -283,7 +281,6 @@ "navigation_bar.logout": "ലോഗൗട്ട്", "navigation_bar.mutes": "നിശബ്ദമാക്കപ്പെട്ട ഉപയോക്താക്കൾ", "navigation_bar.personal": "സ്വകാര്യ", - "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "ക്രമീകരണങ്ങൾ", "navigation_bar.search": "തിരയുക", "navigation_bar.security": "സുരക്ഷ", @@ -373,8 +370,6 @@ "status.more": "കൂടുതൽ", "status.mute": "@{name}-നെ നിശ്ശബ്ദമാക്കുക", "status.open": "Expand this status", - "status.pin": "പ്രൊഫൈലിൽ പിൻ ചെയ്യൂ", - "status.pinned": "Pinned toot", "status.read_more": "കൂടുതൽ വായിക്കുക", "status.reblog": "ബൂസ്റ്റ്", "status.reblogged_by": "{name} ബൂസ്റ്റ് ചെയ്തു", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 7d98142887..7a09eea9e7 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -81,7 +81,6 @@ "column.lists": "याद्या", "column.mutes": "नि: शब्द खातेधारक", "column.notifications": "सूचना", - "column.pins": "Pinned toot", "column_back_button.label": "मागे", "column_header.hide_settings": "सेटिंग लपवा", "column_header.moveLeft_settings": "स्तंभ डावीकडे सरकवा", @@ -148,7 +147,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned toots list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", @@ -173,7 +171,6 @@ "load_pending": "{count, plural, one {# new item} other {# new items}}", "navigation_bar.compose": "Compose new toot", "navigation_bar.domain_blocks": "Hidden domains", - "navigation_bar.pins": "Pinned toots", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.reblog": "{name} boosted your status", "notifications.column_settings.push": "सूचना", @@ -201,7 +198,6 @@ "status.copy": "Copy link to status", "status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}", "status.open": "Expand this status", - "status.pinned": "Pinned toot", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 825c9590e9..992ca30093 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -158,7 +158,6 @@ "column.lists": "Senarai", "column.mutes": "Pengguna teredam", "column.notifications": "Pemberitahuan", - "column.pins": "Hantaran disemat", "column.public": "Garis masa bersekutu", "column_back_button.label": "Kembali", "column_header.hide_settings": "Sembunyikan tetapan", @@ -408,7 +407,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "Buka senarai hantaran tersemat", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "Buka senarai permintaan ikutan", @@ -457,7 +455,6 @@ "navigation_bar.mutes": "Pengguna teredam", "navigation_bar.opened_in_classic_interface": "Kiriman, akaun dan halaman tertentu yang lain dibuka secara lalai di antara muka web klasik.", "navigation_bar.personal": "Peribadi", - "navigation_bar.pins": "Hantaran disemat", "navigation_bar.preferences": "Keutamaan", "navigation_bar.public_timeline": "Garis masa bersekutu", "navigation_bar.search": "Cari", @@ -655,8 +652,6 @@ "status.mute": "Redamkan @{name}", "status.mute_conversation": "Redamkan perbualan", "status.open": "Kembangkan hantaran ini", - "status.pin": "Semat di profil", - "status.pinned": "Hantaran disemat", "status.read_more": "Baca lagi", "status.reblog": "Galakkan", "status.reblog_private": "Galakkan dengan ketampakan asal", @@ -680,7 +675,6 @@ "status.translated_from_with": "Diterjemah daripada {lang} dengan {provider}", "status.uncached_media_warning": "Pratonton tidak tersedia", "status.unmute_conversation": "Nyahredamkan perbualan", - "status.unpin": "Nyahsemat daripada profil", "subscribed_languages.lead": "Hanya hantaran dalam bahasa-bahasa terpilih akan dipaparkan pada garis masa rumah dan senarai selepas perubahan. Pilih tiada untuk menerima hantaran dalam semua bahasa.", "subscribed_languages.save": "Simpan perubahan", "subscribed_languages.target": "Tukar bahasa-bahasa dilanggan untuk {target}", diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json index fa488abdd7..5e65945ef4 100644 --- a/app/javascript/mastodon/locales/my.json +++ b/app/javascript/mastodon/locales/my.json @@ -111,7 +111,6 @@ "column.lists": "စာရင်းများ", "column.mutes": "မပေါ်အောင်ပိတ်ထားသောအသုံးပြုသူများ", "column.notifications": "အသိပေးချက်များ", - "column.pins": "Pinned post", "column.public": "အားလုံးဖတ်နိုင်သောအချိန်ဇယား", "column_back_button.label": "နောက်သို့", "column_header.hide_settings": "ဆက်တင်များကို ဖျောက်ပါ။", @@ -307,7 +306,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned posts list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", @@ -353,7 +351,6 @@ "navigation_bar.mutes": "အသုံးပြုသူများကို ပိတ်ထားပါ", "navigation_bar.opened_in_classic_interface": "ပို့စ်များ၊ အကောင့်များနှင့် အခြားသီးခြားစာမျက်နှာများကို classic ဝဘ်အင်တာဖေ့စ်တွင် ဖွင့်ထားသည်။", "navigation_bar.personal": "ကိုယ်ရေးကိုယ်တာ", - "navigation_bar.pins": "ပင်တွဲထားသောပို့စ်များ", "navigation_bar.preferences": "စိတ်ကြိုက်သတ်မှတ်ချက်များ", "navigation_bar.public_timeline": "ဖက်ဒီစာမျက်နှာ", "navigation_bar.search": "ရှာရန်", @@ -542,8 +539,6 @@ "status.mute": "@{name} ကို ပိတ်ထားရန်", "status.mute_conversation": "စကားဝိုင်းကို ပိတ်ထားရန်", "status.open": "ပို့စ်ကိုချဲ့ထွင်မည်", - "status.pin": "ပရိုဖိုင်တွင် ပင်ထားပါ", - "status.pinned": "ပင်တွဲထားသောပို့စ်", "status.read_more": "ပိုမိုဖတ်ရှုရန်", "status.reblog": "Boost", "status.reblog_private": "မူရင်းပုံစံဖြင့် Boost လုပ်ပါ", @@ -565,7 +560,6 @@ "status.translated_from_with": "{provider} ကို အသုံးပြု၍ {lang} မှ ဘာသာပြန်ထားသည်", "status.uncached_media_warning": "အစမ်းကြည့်ရှုခြင်း မရနိုင်ပါ", "status.unmute_conversation": "စကားဝိုင်းကို ပိတ်ထားရန်", - "status.unpin": "ပရိုဖိုင်မှ ပင်ဖြုတ်ပါ။", "subscribed_languages.lead": "ပြောင်းလဲပြီးနောက် ရွေးချယ်ထားသော ဘာသာစကားများ၏ ပို့စ်များကိုသာ သင့် ပင်မစာမျက်နှာနှင့် စာရင်းစာမျက်နှာတွင်သာ ပေါ်လာမည်ဖြစ်ပါသည်။ ဘာသာစကားအားလုံး၏ ပို့စ်များအား ကြည့်ရှုလိုပါက အပြောင်းအလဲမပြုလုပ်ပါနှင့်။", "subscribed_languages.save": "ပြောင်းလဲမှုများကို သိမ်းဆည်းပါ", "subscribed_languages.target": "{target} အတွက် စာရင်းသွင်းထားသော ဘာသာစကားများကို ပြောင်းပါ", diff --git a/app/javascript/mastodon/locales/nan.json b/app/javascript/mastodon/locales/nan.json index 85db030290..3352edf37a 100644 --- a/app/javascript/mastodon/locales/nan.json +++ b/app/javascript/mastodon/locales/nan.json @@ -168,7 +168,7 @@ "column.lists": "列單", "column.mutes": "消音ê用者", "column.notifications": "通知", - "column.pins": "釘起來ê PO文", + "column.pins": "特色ê PO文", "column.public": "聯邦ê時間線", "column_back_button.label": "頂頁", "column_header.hide_settings": "Khàm掉設定", @@ -304,6 +304,9 @@ "emoji_button.search_results": "Tshiau-tshuē ê結果", "emoji_button.symbols": "符號", "emoji_button.travel": "旅行kap地點", + "empty_column.account_featured.me": "Lí iáu無任何ê特色內容。Lí kám知影lí ē當kā lí ê PO文、tsia̍p-tsia̍p用ê hashtag,甚至是朋友ê口座揀做特色ê內容,khǹg佇lí ê個人資料內底?", + "empty_column.account_featured.other": "{acct} iáu無任何ê特色內容。Lí kám知影lí ē當kā lí ê PO文、tsia̍p-tsia̍p用ê hashtag,甚至是朋友ê口座揀做特色ê內容,khǹg佇lí ê個人資料內底?", + "empty_column.account_featured_other.unknown": "Tsit ê口座iáu無任何ê特色內容。", "empty_column.account_hides_collections": "Tsit位用者選擇無愛公開tsit ê資訊", "empty_column.account_suspended": "口座已經受停止", "empty_column.account_timeline": "Tsia無PO文!", @@ -474,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Phah開lí ê個人資料", "keyboard_shortcuts.notifications": "Phah開通知欄", "keyboard_shortcuts.open_media": "Phah開媒體", - "keyboard_shortcuts.pinned": "Phah開釘起來ê PO文列單", + "keyboard_shortcuts.pinned": "拍開特色ê PO文ê列單", "keyboard_shortcuts.profile": "Phah開作者ê個人資料", "keyboard_shortcuts.reply": "回應PO文", "keyboard_shortcuts.requests": "Phah開跟tuè請求ê列單", @@ -558,7 +561,7 @@ "navigation_bar.mutes": "消音ê用者", "navigation_bar.opened_in_classic_interface": "PO文、口座kap其他指定ê頁面,預設ē佇經典ê網頁界面內phah開。", "navigation_bar.personal": "個人", - "navigation_bar.pins": "釘起來ê PO文", + "navigation_bar.pins": "特色ê PO文", "navigation_bar.preferences": "偏愛ê設定", "navigation_bar.public_timeline": "聯邦ê時間線", "navigation_bar.search": "Tshiau-tshuē", @@ -593,11 +596,58 @@ "notification.moderation_warning.action_disable": "Lí ê口座hōo lâng停止使用ah。", "notification.moderation_warning.action_mark_statuses_as_sensitive": "Lí ê一寡PO文,hōo lâng標做敏感ê內容。", "notification.moderation_warning.action_none": "Lí ê口座有收著審核ê警告。", + "notification.moderation_warning.action_sensitive": "Tuì tsit-má開始,lí êPO文ē標做敏感ê內容。", + "notification.moderation_warning.action_silence": "Lí ê口座hōo lâng限制ah。", + "notification.moderation_warning.action_suspend": "Lí ê口座已經受停權。", + "notification.own_poll": "Lí ê投票結束ah", + "notification.poll": "Lí bat投ê投票結束ah", + "notification.reblog": "{name} 轉送lí ê PO文", + "notification.reblog.name_and_others_with_link": "{name} kap{count, plural, other {另外 # ê lâng}}轉送lí ê PO文", + "notification.relationships_severance_event": "Kap {name} ê結連無去", + "notification.relationships_severance_event.account_suspension": "{from} ê管理員kā {target} 停權ah,意思是lí bē koh再接受tuì in 來ê更新,á是hām in互動。", + "notification.relationships_severance_event.domain_block": "{from} ê 管理員kā {target} 封鎖ah,包含 {followersCount} 位跟tuè lí ê lâng,kap {followingCount, plural, other {#}} 位lí跟tuè ê口座。", + "notification.relationships_severance_event.learn_more": "看詳細", + "notification.relationships_severance_event.user_domain_block": "Lí已經kā {target} 封鎖ah,ē suá走 {followersCount} 位跟tuè lí ê lâng,kap {followingCount, plural, other {#}} 位lí跟tuè ê口座。", + "notification.status": "{name} tú-á PO", + "notification.update": "{name}有編輯PO文", + "notification_requests.accept": "接受", + "notification_requests.accept_multiple": "{count, plural, other {接受 # ê請求……}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, other {接受請求}}", + "notification_requests.confirm_accept_multiple.message": "Lí teh-beh接受 {count, plural, other {# ê 通知ê請求}}。Lí kám確定beh繼續?", + "notification_requests.confirm_accept_multiple.title": "接受通知ê請求?", + "notification_requests.confirm_dismiss_multiple.button": "{count, plural, other {忽略請求}}", + "notification_requests.confirm_dismiss_multiple.message": "Lí teh-beh忽略 {count, plural, other {# ê 通知ê請求}}。Lí bē當koh容易the̍h著{count, plural, other {tsiah-ê}} 通知。Lí kám確定beh繼續?", + "notification_requests.confirm_dismiss_multiple.title": "忽略通知ê請求?", + "notification_requests.dismiss": "忽略", + "notification_requests.dismiss_multiple": "{count, plural, other {忽略 # ê請求……}}", "notification_requests.edit_selection": "編輯", "notification_requests.exit_selection": "做好ah", + "notification_requests.explainer_for_limited_account": "因為管理員限制tsit ê口座,tuì tsit ê口座來ê通知已經hōo過濾ah。", + "notification_requests.explainer_for_limited_remote_account": "因為管理員限制tsit ê口座á是伊ê服侍器,tuì tsit ê口座來ê通知已經hōo過濾ah。", + "notification_requests.maximize": "上大化", + "notification_requests.minimize_banner": "上細化受過濾ê通知ê條á", + "notification_requests.notifications_from": "Tuì {name} 來ê通知", + "notification_requests.title": "受過濾ê通知", + "notification_requests.view": "看通知", + "notifications.clear": "清掉通知", + "notifications.clear_confirmation": "Lí kám確定beh永永清掉lí所有ê通知?", + "notifications.clear_title": "清掉通知?", "notifications.column_settings.admin.report": "新ê檢舉:", "notifications.column_settings.admin.sign_up": "新註冊ê口座:", "notifications.column_settings.alert": "桌面ê通知", + "notifications.column_settings.favourite": "收藏:", + "notifications.column_settings.filter_bar.advanced": "顯示逐ê類別", + "notifications.column_settings.filter_bar.category": "快速ê過濾器", + "notifications.column_settings.follow": "新ê跟tuè者:", + "notifications.column_settings.follow_request": "新ê跟tuè請求:", + "notifications.column_settings.group": "群組", + "notifications.column_settings.mention": "提起:", + "notifications.column_settings.poll": "投票ê結果:", + "notifications.column_settings.push": "Sak通知", + "notifications.column_settings.reblog": "轉送:", + "notifications.column_settings.show": "佇欄內底顯示", + "notifications.column_settings.sound": "播放聲音", + "notifications.column_settings.status": "新ê PO文:", "notifications.column_settings.unread_notifications.category": "Iáu bē讀ê通知", "notifications.column_settings.unread_notifications.highlight": "強調iáu bē讀ê通知", "notifications.column_settings.update": "編輯:", @@ -613,6 +663,65 @@ "notifications.mark_as_read": "Kā ta̍k條通知lóng標做有讀", "notifications.permission_denied": "因為khah早有拒絕瀏覽器權限ê請求,桌面通知bē當用。", "notifications.permission_denied_alert": "桌面通知bē當phah開來用,因為khah早瀏覽器ê權限受拒絕", + "notifications.permission_required": "因為需要ê權限iáu無提供,桌面通知bē當用。", + "notifications.policy.accept": "接受", + "notifications.policy.accept_hint": "佇通知內底顯示", + "notifications.policy.drop": "忽略", + "notifications.policy.drop_hint": "送去虛空,bē koh看見", + "notifications.policy.filter": "過濾器", + "notifications.policy.filter_hint": "送kàu受過濾ê通知ê收件kheh-á", + "notifications.policy.filter_limited_accounts_title": "受管制ê口座", + "notifications.policy.filter_new_accounts_title": "新ê口座", + "notifications_permission_banner.title": "逐ê著看", + "onboarding.follows.back": "轉去", + "onboarding.follows.done": "做好ah", + "onboarding.follows.search": "Tshiau-tshuē", + "onboarding.profile.display_name": "顯示ê名", + "onboarding.profile.display_name_hint": "Lí ê全名á是別號……", + "onboarding.profile.note": "個人紹介", + "onboarding.profile.note_hint": "Lí ē當 @mention 別lâng á是用 #hashtag……", + "onboarding.profile.save_and_continue": "儲存了後繼續", + "onboarding.profile.title": "個人資料ê設定", + "poll.closed": "關ah", + "poll.refresh": "Koh更新", + "poll.reveal": "看結果", + "poll.total_people": "{count, plural, other {# ê人}}", + "poll.total_votes": "{count, plural, other {# 張票}}", + "poll.vote": "投票", + "poll.voted": "Lí kā tse投票ah", + "poll.votes": "{votes, plural, other {# 張票}}", + "poll_button.add_poll": "加投票", + "poll_button.remove_poll": "Thâi掉投票", + "privacy.change": "改變PO文公開ê範圍", + "privacy.direct.long": "逐位tsit篇PO文所提起ê", + "privacy.direct.short": "私人ê提起", + "privacy.private.long": "Kan-ta hōo跟tuè lí ê看", + "privacy.private.short": "跟tuè lí ê", + "privacy.public.long": "逐ê lâng(無論佇Mastodon以內á是以外)", + "privacy.public.short": "公開ê", + "refresh": "Koh更新", + "regeneration_indicator.please_stand_by": "請sió等leh。", + "regeneration_indicator.preparing_your_home_feed": "Leh準備lí ê厝ê時間線……", + "relative_time.days": "{number} kang進前", + "relative_time.full.days": "{number, plural, other {# kang}}進前", + "relative_time.full.hours": "{number, plural, other {# 點鐘}}進前", + "relative_time.full.just_now": "頭tú-á", + "relative_time.full.minutes": "{number, plural, other {# 分鐘}}進前", + "relative_time.full.seconds": "{number, plural, other {# 秒}}進前", + "relative_time.hours": "{number}點鐘前", + "report.next": "繼續", + "report.placeholder": "其他ê註釋", + "report.reasons.dislike": "我無kah意", + "report.reasons.dislike_description": "Tse是lí無愛看ê", + "report.reasons.legal": "Tse無合法", + "report.reasons.legal_description": "Lí相信伊違反lí ê國,á是服侍器所tiàm ê國ê法律", + "report.reasons.other": "其他原因", + "report.reasons.other_description": "Tsit ê問題bē當歸tī其他ê類別", + "report.reasons.spam": "Tse是pùn-sò訊息", + "report.reasons.spam_description": "Pháinn意ê連結、假互動,á是重複ê回應", + "report.reasons.violation": "伊違反服侍器ê規定", + "report.reasons.violation_description": "Lí明知伊違反特定ê規定", + "report.rules.subtitle": "請揀所有符合ê選項", "search_popout.language_code": "ISO語言代碼", "status.translated_from_with": "用 {provider} 翻譯 {lang}" } diff --git a/app/javascript/mastodon/locales/ne.json b/app/javascript/mastodon/locales/ne.json index 3cc33e95ca..e93bd0912f 100644 --- a/app/javascript/mastodon/locales/ne.json +++ b/app/javascript/mastodon/locales/ne.json @@ -96,7 +96,6 @@ "column.lists": "सूचीहरू", "column.mutes": "म्यूट गरिएका प्रयोगकर्ताहरू", "column.notifications": "सूचनाहरू", - "column.pins": "पिन गरिएका पोस्टहरू", "column_header.hide_settings": "सेटिङ्हरू लुकाउनुहोस्", "column_header.pin": "पिन गर्नुहोस्", "column_header.unpin": "अनपिन गर्नुहोस्", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 96674518d9..0491e5ceba 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -168,7 +168,7 @@ "column.lists": "Lijsten", "column.mutes": "Genegeerde gebruikers", "column.notifications": "Meldingen", - "column.pins": "Vastgezette berichten", + "column.pins": "Uitgelichte berichten", "column.public": "Globale tijdlijn", "column_back_button.label": "Terug", "column_header.hide_settings": "Instellingen verbergen", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Jouw profiel tonen", "keyboard_shortcuts.notifications": "Meldingen tonen", "keyboard_shortcuts.open_media": "Media openen", - "keyboard_shortcuts.pinned": "Jouw vastgemaakte berichten tonen", + "keyboard_shortcuts.pinned": "Lijst met uitgelichte berichten openen", "keyboard_shortcuts.profile": "Gebruikersprofiel auteur openen", "keyboard_shortcuts.reply": "Reageren", "keyboard_shortcuts.requests": "Jouw volgverzoeken tonen", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "Genegeerde gebruikers", "navigation_bar.opened_in_classic_interface": "Berichten, accounts en andere specifieke pagina’s, worden standaard geopend in de klassieke webinterface.", "navigation_bar.personal": "Persoonlijk", - "navigation_bar.pins": "Vastgemaakte berichten", + "navigation_bar.pins": "Uitgelichte berichten", "navigation_bar.preferences": "Instellingen", "navigation_bar.public_timeline": "Globale tijdlijn", "navigation_bar.search": "Zoeken", @@ -857,8 +857,7 @@ "status.mute": "@{name} negeren", "status.mute_conversation": "Gesprek negeren", "status.open": "Volledig bericht tonen", - "status.pin": "Aan profielpagina vastmaken", - "status.pinned": "Vastgemaakt bericht", + "status.pin": "Uitlichten op profiel", "status.read_more": "Meer lezen", "status.reblog": "Boosten", "status.reblog_private": "Boost naar oorspronkelijke ontvangers", @@ -883,7 +882,7 @@ "status.translated_from_with": "Vertaald vanuit het {lang} met behulp van {provider}", "status.uncached_media_warning": "Voorvertoning niet beschikbaar", "status.unmute_conversation": "Gesprek niet langer negeren", - "status.unpin": "Van profielpagina losmaken", + "status.unpin": "Niet uitlichten op profiel", "subscribed_languages.lead": "Na de wijziging worden alleen berichten van geselecteerde talen op jouw starttijdlijn en in lijsten weergegeven.", "subscribed_languages.save": "Wijzigingen opslaan", "subscribed_languages.target": "Getoonde talen voor {target} wijzigen", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 9a3ad4295e..3f23243802 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -168,7 +168,6 @@ "column.lists": "Lister", "column.mutes": "Målbundne brukarar", "column.notifications": "Varsel", - "column.pins": "Festa tut", "column.public": "Samla tidsline", "column_back_button.label": "Attende", "column_header.hide_settings": "Gøym innstillingane", @@ -477,7 +476,6 @@ "keyboard_shortcuts.my_profile": "Opne profilen din", "keyboard_shortcuts.notifications": "Opne varselkolonna", "keyboard_shortcuts.open_media": "Opne media", - "keyboard_shortcuts.pinned": "Opne lista over festa tut", "keyboard_shortcuts.profile": "Opne forfattaren sin profil", "keyboard_shortcuts.reply": "Svar på innlegg", "keyboard_shortcuts.requests": "Opne lista med fylgjeførespurnader", @@ -561,7 +559,6 @@ "navigation_bar.mutes": "Målbundne brukarar", "navigation_bar.opened_in_classic_interface": "Innlegg, kontoar, og enkelte andre sider blir opna som standard i det klassiske webgrensesnittet.", "navigation_bar.personal": "Personleg", - "navigation_bar.pins": "Festa tut", "navigation_bar.preferences": "Innstillingar", "navigation_bar.public_timeline": "Føderert tidsline", "navigation_bar.search": "Søk", @@ -857,8 +854,6 @@ "status.mute": "Demp @{name}", "status.mute_conversation": "Demp samtale", "status.open": "Utvid denne statusen", - "status.pin": "Fest på profil", - "status.pinned": "Festa tut", "status.read_more": "Les meir", "status.reblog": "Framhev", "status.reblog_private": "Framhev til dei originale mottakarane", @@ -883,7 +878,6 @@ "status.translated_from_with": "Omsett frå {lang} ved bruk av {provider}", "status.uncached_media_warning": "Førehandsvisning er ikkje tilgjengeleg", "status.unmute_conversation": "Opphev demping av samtalen", - "status.unpin": "Løys frå profil", "subscribed_languages.lead": "Kun innlegg på valde språk vil bli dukke opp i heimestraumen din og i listene dine etter denne endringa. For å motta innlegg på alle språk, la vere å velje nokon.", "subscribed_languages.save": "Lagre endringar", "subscribed_languages.target": "Endre abonnerte språk for {target}", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 2df9216b1a..8064fd1906 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -151,7 +151,6 @@ "column.lists": "Lister", "column.mutes": "Dempede brukere", "column.notifications": "Varsler", - "column.pins": "Festede innlegg", "column.public": "Felles tidslinje", "column_back_button.label": "Tilbake", "column_header.hide_settings": "Skjul innstillinger", @@ -427,7 +426,6 @@ "keyboard_shortcuts.my_profile": "Åpne profilen din", "keyboard_shortcuts.notifications": "Åpne varslingskolonnen", "keyboard_shortcuts.open_media": "Åpne media", - "keyboard_shortcuts.pinned": "Åpne listen over festede innlegg", "keyboard_shortcuts.profile": "Åpne forfatterens profil", "keyboard_shortcuts.reply": "Svar på innlegg", "keyboard_shortcuts.requests": "Åpne listen over følgeforespørsler", @@ -495,7 +493,6 @@ "navigation_bar.mutes": "Dempede brukere", "navigation_bar.opened_in_classic_interface": "Innlegg, kontoer og andre spesifikke sider åpnes som standard i det klassiske webgrensesnittet.", "navigation_bar.personal": "Personlig", - "navigation_bar.pins": "Festede innlegg", "navigation_bar.preferences": "Innstillinger", "navigation_bar.public_timeline": "Felles tidslinje", "navigation_bar.search": "Søk", @@ -732,8 +729,6 @@ "status.mute": "Demp @{name}", "status.mute_conversation": "Demp samtale", "status.open": "Utvid dette innlegget", - "status.pin": "Fest på profilen", - "status.pinned": "Festet innlegg", "status.read_more": "Les mer", "status.reblog": "Fremhev", "status.reblog_private": "Fremhev til det opprinnelige publikummet", @@ -755,7 +750,6 @@ "status.translated_from_with": "Oversatt fra {lang} ved å bruke {provider}", "status.uncached_media_warning": "Forhåndsvisning er ikke tilgjengelig", "status.unmute_conversation": "Ikke demp samtale", - "status.unpin": "Angre festing på profilen", "subscribed_languages.lead": "Bare innlegg på valgte språk vil dukke opp i dine hjem- og liste-tidslinjer etter endringen. Velg ingen for å motta innlegg på alle språk.", "subscribed_languages.save": "Lagre endringer", "subscribed_languages.target": "Endre abonnerte språk for {target}", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 01c7f4838b..3f3d4c3e14 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -108,7 +108,6 @@ "column.lists": "Listas", "column.mutes": "Personas rescondudas", "column.notifications": "Notificacions", - "column.pins": "Tuts penjats", "column.public": "Flux public global", "column_back_button.label": "Tornar", "column_header.hide_settings": "Amagar los paramètres", @@ -291,7 +290,6 @@ "keyboard_shortcuts.my_profile": "dobrir vòstre perfil", "keyboard_shortcuts.notifications": "dobrir la colomna de notificacions", "keyboard_shortcuts.open_media": "dobrir lo mèdia", - "keyboard_shortcuts.pinned": "dobrir la lista dels tuts penjats", "keyboard_shortcuts.profile": "dobrir lo perfil de l’autor", "keyboard_shortcuts.reply": "respondre", "keyboard_shortcuts.requests": "dorbir la lista de demanda d’abonament", @@ -335,7 +333,6 @@ "navigation_bar.logout": "Desconnexion", "navigation_bar.mutes": "Personas rescondudas", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Tuts penjats", "navigation_bar.preferences": "Preferéncias", "navigation_bar.public_timeline": "Flux public global", "navigation_bar.search": "Recercar", @@ -493,8 +490,6 @@ "status.mute": "Rescondre @{name}", "status.mute_conversation": "Rescondre la conversacion", "status.open": "Desplegar aqueste estatut", - "status.pin": "Penjar al perfil", - "status.pinned": "Tut penjat", "status.read_more": "Ne legir mai", "status.reblog": "Partejar", "status.reblog_private": "Partejar a l’audiéncia d’origina", @@ -516,7 +511,6 @@ "status.translated_from_with": "Traduch del {lang} amb {provider}", "status.uncached_media_warning": "Apercebut indisponible", "status.unmute_conversation": "Tornar mostrar la conversacion", - "status.unpin": "Tirar del perfil", "subscribed_languages.lead": "Sonque las publicacions dins las lengas seleccionadas apreissaràn dins vòstre acuèlh e linha cronologica aprèp aqueste cambiament. Seleccionatz pas res per recebre las publicacions en quina lenga que siá.", "subscribed_languages.save": "Salvar los cambiaments", "subscribed_languages.target": "Lengas d’abonaments cambiadas per {target}", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 9d8b2c46ba..23a38806b2 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -99,7 +99,6 @@ "column.lists": "ਸੂਚੀਆਂ", "column.mutes": "ਮੌਨ ਕੀਤੇ ਵਰਤੋਂਕਾਰ", "column.notifications": "ਸੂਚਨਾਵਾਂ", - "column.pins": "ਟੰਗੀਆਂ ਪੋਸਟਾਂ", "column_back_button.label": "ਪਿੱਛੇ", "column_header.hide_settings": "ਸੈਟਿੰਗਾਂ ਨੂੰ ਲੁਕਾਓ", "column_header.moveLeft_settings": "ਕਾਲਮ ਨੂੰ ਖੱਬੇ ਪਾਸੇ ਭੇਜੋ", @@ -293,7 +292,6 @@ "keyboard_shortcuts.my_profile": "ਆਪਣੇ ਪਰੋਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹੋ", "keyboard_shortcuts.notifications": "ਨੋਟੀਫਿਕੇਸ਼ਨ ਕਾਲਮ ਖੋਲ੍ਹੋ", "keyboard_shortcuts.open_media": "ਮੀਡੀਏ ਨੂੰ ਖੋਲ੍ਹੋ", - "keyboard_shortcuts.pinned": "ਪਿੰਨ ਕੀਤੀਆਂ ਪੋਸਟਾਂ ਦੀ ਸੂਚੀ ਨੂੰ ਖੋਲ੍ਹੋ", "keyboard_shortcuts.profile": "ਲੇਖਕ ਦਾ ਪਰੋਫਾਈਲ ਖੋਲ੍ਹੋ", "keyboard_shortcuts.reply": "ਪੋਸਟ ਨੂੰ ਜਵਾਬ ਦਿਓ", "keyboard_shortcuts.requests": "ਫ਼ਾਲੋ ਦੀਆਂ ਬੇਨਤੀਆਂ ਦੀ ਸੂਚੀ ਨੂੰ ਖੋਲ੍ਹੋ", @@ -358,7 +356,6 @@ "navigation_bar.logout": "ਲਾਗ ਆਉਟ", "navigation_bar.mutes": "ਮੌਨ ਕੀਤੇ ਵਰਤੋਂਕਾਰ", "navigation_bar.personal": "ਨਿੱਜੀ", - "navigation_bar.pins": "ਟੰਗੀਆਂ ਪੋਸਟਾਂ", "navigation_bar.preferences": "ਪਸੰਦਾਂ", "navigation_bar.search": "ਖੋਜੋ", "navigation_bar.security": "ਸੁਰੱਖਿਆ", @@ -528,8 +525,6 @@ "status.mute": "@{name} ਨੂੰ ਮੌਨ ਕਰੋ", "status.mute_conversation": "ਗੱਲਬਾਤ ਨੂੰ ਮੌਨ ਕਰੋ", "status.open": "ਇਹ ਪੋਸਟ ਨੂੰ ਫੈਲਾਓ", - "status.pin": "ਪਰੋਫਾਈਲ ਉੱਤੇ ਟੰਗੋ", - "status.pinned": "ਟੰਗੀ ਹੋਈ ਪੋਸਟ", "status.read_more": "ਹੋਰ ਪੜ੍ਹੋ", "status.reblog": "ਵਧਾਓ", "status.reblogged_by": "{name} ਨੇ ਬੂਸਟ ਕੀਤਾ", @@ -551,7 +546,6 @@ "status.translate": "ਉਲੱਥਾ ਕਰੋ", "status.translated_from_with": "{provider} ਵਰਤ ਕੇ {lang} ਤੋਂ ਅਨੁਵਾਦ ਕੀਤਾ", "status.uncached_media_warning": "ਝਲਕ ਮੌਜੂਦ ਨਹੀਂ ਹੈ", - "status.unpin": "ਪਰੋਫਾਈਲ ਤੋਂ ਲਾਹੋ", "subscribed_languages.save": "ਤਬਦੀਲੀਆਂ ਸੰਭਾਲੋ", "tabs_bar.home": "ਘਰ", "tabs_bar.notifications": "ਸੂਚਨਾਵਾਂ", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 828879d048..3422099390 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -157,7 +157,6 @@ "column.lists": "Listy", "column.mutes": "Wyciszeni", "column.notifications": "Powiadomienia", - "column.pins": "Przypięte wpisy", "column.public": "Globalna oś czasu", "column_back_button.label": "Wróć", "column_header.hide_settings": "Ukryj ustawienia", @@ -457,7 +456,6 @@ "keyboard_shortcuts.my_profile": "Otwórz swój profil", "keyboard_shortcuts.notifications": "Otwórz kolumnę powiadomień", "keyboard_shortcuts.open_media": "Otwórz multimedia", - "keyboard_shortcuts.pinned": "Otwórz listę przypiętych wpisów", "keyboard_shortcuts.profile": "Otwórz profil", "keyboard_shortcuts.reply": "Skomentuj", "keyboard_shortcuts.requests": "Otwórz listę próśb o obserwowanie", @@ -541,7 +539,6 @@ "navigation_bar.mutes": "Wyciszeni", "navigation_bar.opened_in_classic_interface": "Wpisy, konta i inne określone strony są domyślnie otwierane w widoku klasycznym.", "navigation_bar.personal": "Osobiste", - "navigation_bar.pins": "Przypięte wpisy", "navigation_bar.preferences": "Ustawienia", "navigation_bar.public_timeline": "Globalna oś czasu", "navigation_bar.search": "Szukaj", @@ -837,8 +834,6 @@ "status.mute": "Wycisz @{name}", "status.mute_conversation": "Wycisz konwersację", "status.open": "Rozszerz ten wpis", - "status.pin": "Przypnij do profilu", - "status.pinned": "Przypięty wpis", "status.read_more": "Czytaj dalej", "status.reblog": "Podbij", "status.reblog_private": "Podbij dla odbiorców oryginalnego wpisu", @@ -863,7 +858,6 @@ "status.translated_from_with": "Przetłumaczono z {lang} przy użyciu {provider}", "status.uncached_media_warning": "Podgląd jest niedostępny", "status.unmute_conversation": "Cofnij wyciszenie konwersacji", - "status.unpin": "Odepnij z profilu", "subscribed_languages.lead": "Tylko posty w wybranych językach pojawią się na Twojej osi czasu po zmianie. Nie wybieraj żadnego języka aby otrzymywać posty we wszystkich językach.", "subscribed_languages.save": "Zapisz zmiany", "subscribed_languages.target": "Zmień subskrybowane języki dla {target}", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index 2010e3e74d..a9622fb76a 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -158,7 +158,6 @@ "column.lists": "Listas", "column.mutes": "Usuários silenciados", "column.notifications": "Notificações", - "column.pins": "Toots fixados", "column.public": "Linha global", "column_back_button.label": "Voltar", "column_header.hide_settings": "Ocultar configurações", @@ -458,7 +457,6 @@ "keyboard_shortcuts.my_profile": "abrir seu perfil", "keyboard_shortcuts.notifications": "abrir notificações", "keyboard_shortcuts.open_media": "abrir mídia", - "keyboard_shortcuts.pinned": "abrir toots fixados", "keyboard_shortcuts.profile": "abrir perfil do usuário", "keyboard_shortcuts.reply": "responder toot", "keyboard_shortcuts.requests": "abrir seguidores pendentes", @@ -542,7 +540,6 @@ "navigation_bar.mutes": "Usuários silenciados", "navigation_bar.opened_in_classic_interface": "Publicações, contas e outras páginas específicas são abertas por padrão na interface 'web' clássica.", "navigation_bar.personal": "Pessoal", - "navigation_bar.pins": "Toots fixados", "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Linha global", "navigation_bar.search": "Buscar", @@ -838,8 +835,6 @@ "status.mute": "Silenciar @{name}", "status.mute_conversation": "Silenciar conversa", "status.open": "Abrir toot", - "status.pin": "Fixar", - "status.pinned": "Toot fixado", "status.read_more": "Ler mais", "status.reblog": "Dar boost", "status.reblog_private": "Dar boost para o mesmo público", @@ -864,7 +859,6 @@ "status.translated_from_with": "Traduzido do {lang} usando {provider}", "status.uncached_media_warning": "Pré-visualização não disponível", "status.unmute_conversation": "Dessilenciar conversa", - "status.unpin": "Desafixar", "subscribed_languages.lead": "Apenas publicações nos idiomas selecionados aparecerão na sua página inicial e outras linhas do tempo após a mudança. Selecione nenhum para receber publicações em todos os idiomas.", "subscribed_languages.save": "Salvar alterações", "subscribed_languages.target": "Alterar idiomas inscritos para {target}", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 55ac026cd4..374037ff8a 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -158,7 +158,6 @@ "column.lists": "Listas", "column.mutes": "Utilizadores ocultados", "column.notifications": "Notificações", - "column.pins": "Publicações afixadas", "column.public": "Cronologia federada", "column_back_button.label": "Voltar", "column_header.hide_settings": "Ocultar configurações", @@ -458,7 +457,6 @@ "keyboard_shortcuts.my_profile": "abrir o teu perfil", "keyboard_shortcuts.notifications": "abrir a coluna das notificações", "keyboard_shortcuts.open_media": "abrir multimédia", - "keyboard_shortcuts.pinned": "abrir lista de publicações fixadas", "keyboard_shortcuts.profile": "abrir o perfil do autor", "keyboard_shortcuts.reply": "responder à publicação", "keyboard_shortcuts.requests": "abrir a lista dos pedidos de seguidor", @@ -542,7 +540,6 @@ "navigation_bar.mutes": "Utilizadores ocultados", "navigation_bar.opened_in_classic_interface": "Por norma, publicações, contas e outras páginas específicas são abertas na interface web clássica.", "navigation_bar.personal": "Pessoal", - "navigation_bar.pins": "Publicações fixadas", "navigation_bar.preferences": "Preferências", "navigation_bar.public_timeline": "Cronologia federada", "navigation_bar.search": "Pesquisar", @@ -838,8 +835,6 @@ "status.mute": "Ocultar @{name}", "status.mute_conversation": "Ocultar conversa", "status.open": "Expandir esta publicação", - "status.pin": "Afixar no perfil", - "status.pinned": "Publicação afixada", "status.read_more": "Ler mais", "status.reblog": "Impulsionar", "status.reblog_private": "Impulsionar com a visibilidade original", @@ -864,7 +859,6 @@ "status.translated_from_with": "Traduzido do {lang} usando {provider}", "status.uncached_media_warning": "Pré-visualização não disponível", "status.unmute_conversation": "Desocultar esta conversa", - "status.unpin": "Desafixar do perfil", "subscribed_languages.lead": "Após a alteração, apenas as publicações nos idiomas selecionados aparecerão na cronologia da tua página inicial e das tuas listas. Não seleciones nenhum idioma para receberes publicações em todos os idiomas.", "subscribed_languages.save": "Guardar alterações", "subscribed_languages.target": "Alterar idiomas subscritos para {target}", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index ca18af81fa..4d39220038 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -130,7 +130,6 @@ "column.lists": "Liste", "column.mutes": "Utilizatori ignorați", "column.notifications": "Notificări", - "column.pins": "Postări fixate", "column.public": "Cronologie globală", "column_back_button.label": "Înapoi", "column_header.hide_settings": "Ascunde setările", @@ -327,7 +326,6 @@ "keyboard_shortcuts.my_profile": "Afișează propriul profil", "keyboard_shortcuts.notifications": "Deschide coloana cu notificări", "keyboard_shortcuts.open_media": "Deschide media", - "keyboard_shortcuts.pinned": "Deschide lista postărilor fixate", "keyboard_shortcuts.profile": "Afișează profilul autorului", "keyboard_shortcuts.reply": "Răspunde la postare", "keyboard_shortcuts.requests": "Deschide lista de cereri de abonare", @@ -370,7 +368,6 @@ "navigation_bar.mutes": "Utilizatori ignorați", "navigation_bar.opened_in_classic_interface": "Postările, conturile și alte pagini specifice sunt deschise implicit în interfața web clasică.", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Postări fixate", "navigation_bar.preferences": "Preferințe", "navigation_bar.public_timeline": "Cronologie globală", "navigation_bar.search": "Caută", @@ -540,8 +537,6 @@ "status.mute": "Ignoră pe @{name}", "status.mute_conversation": "Ignoră conversația", "status.open": "Extinde această stare", - "status.pin": "Fixează pe profil", - "status.pinned": "Postare fixată", "status.read_more": "Citește mai mult", "status.reblog": "Impuls", "status.reblog_private": "Impulsionează către audiența originală", @@ -563,7 +558,6 @@ "status.translated_from_with": "Tradus din {lang} folosind serviciile {provider}", "status.uncached_media_warning": "Previzualizarea nu este disponibilă", "status.unmute_conversation": "Repornește conversația", - "status.unpin": "Eliberează din profil", "subscribed_languages.lead": "Doar postări în limbile selectate vor apărea în cronologia ta principală după ce efectuezi modificarea. Alege „niciuna” pentru a primi postări în orice limbă.", "subscribed_languages.save": "Salvează modificările", "subscribed_languages.target": "Modifică limbile abonate pentru {target}", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index eaa3bcec64..e9741cbfa1 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -314,22 +314,22 @@ "empty_column.blocks": "Вы ещё никого не заблокировали.", "empty_column.bookmarked_statuses": "У вас пока нет закладок. Когда вы добавляете пост в закладки, он появляется здесь.", "empty_column.community": "Локальная лента пуста. Напишите что-нибудь, чтобы разогреть народ!", - "empty_column.direct": "У вас пока нет личных сообщений. Как только вы отправите или получите сообщение, оно появится здесь.", + "empty_column.direct": "Вы ещё не упоминали кого-либо и сами не были ни разу упомянуты лично. Все личные упоминания будут показаны здесь.", "empty_column.domain_blocks": "Заблокированных доменов пока нет.", - "empty_column.explore_statuses": "Нет актуального. Проверьте позже!", - "empty_column.favourited_statuses": "Вы не добавили ни один пост в «Избранное». Как только вы это сделаете, он появится здесь.", - "empty_column.favourites": "Никто ещё не добавил этот пост в «Избранное». Как только кто-то это сделает, это отобразится здесь.", + "empty_column.explore_statuses": "Сейчас нет популярных постов. Проверьте позже!", + "empty_column.favourited_statuses": "Вы ещё не добавили ни один пост в избранное. Все добавленные вами в избранное посты будут показаны здесь.", + "empty_column.favourites": "Никто ещё не добавил этот пост в избранное. Все пользователи, добавившие этот пост в избранное, будут показаны здесь.", "empty_column.follow_requests": "Вам ещё не приходили запросы на подписку. Все новые запросы будут показаны здесь.", - "empty_column.followed_tags": "Вы еще не подписались ни на один хэштег. Когда вы это сделаете, они появятся здесь.", - "empty_column.hashtag": "С этим хэштегом пока ещё ничего не публиковали.", - "empty_column.home": "Ваша лента совсем пуста! Подписывайтесь на других, чтобы заполнить её.", - "empty_column.list": "В этом списке пока ничего нет. Когда пользователи в списке публикуют новые посты, они появляются здесь.", - "empty_column.mutes": "Вы ещё никого не добавляли в список игнорируемых.", + "empty_column.followed_tags": "Вы ещё не подписались ни на один хэштег. Все хэштеги, на которые вы подписаны, будут показаны здесь.", + "empty_column.hashtag": "С этим хэштегом пока ещё никто ничего не опубликовал.", + "empty_column.home": "Ваша домашняя лента совсем пуста! Подпишитесь на кого-нибудь, чтобы заполнить её.", + "empty_column.list": "В этом списке пока ничего нет. Все новые посты, опубликованные пользователями в списке, будут появляться здесь.", + "empty_column.mutes": "Вы пока что никого не игнорируете.", "empty_column.notification_requests": "Здесь ничего нет! Когда вы получите новые уведомления, они здесь появятся согласно вашим настройкам.", "empty_column.notifications": "У вас пока нет уведомлений. Взаимодействуйте с другими, чтобы завести разговор.", "empty_column.public": "Здесь ничего нет! Опубликуйте что-нибудь или подпишитесь на пользователей с других серверов, чтобы заполнить ленту", - "error.unexpected_crash.explanation": "Из-за несовместимого браузера или ошибки в нашем коде, эта страница не может быть корректно отображена.", - "error.unexpected_crash.explanation_addons": "Эта страница не может быть корректно отображена. Скорее всего, эта ошибка вызвана расширением браузера или инструментом автоматического перевода.", + "error.unexpected_crash.explanation": "Из-за несовместимого браузера или ошибки в нашем коде эта страница не может быть корректно отображена.", + "error.unexpected_crash.explanation_addons": "Эта страница не может быть корректно отображена. Скорее всего, ошибка вызвана расширением браузера или инструментом автоматического перевода.", "error.unexpected_crash.next_steps": "Попробуйте обновить страницу. Если проблема не исчезает, используйте Mastodon из-под другого браузера или приложения.", "error.unexpected_crash.next_steps_addons": "Попробуйте их отключить и перезагрузить страницу. Если это не поможет, вы по-прежнему сможете войти в Mastodon через другой браузер или приложение.", "errors.unexpected_crash.copy_stacktrace": "Скопировать диагностическую информацию", @@ -364,7 +364,7 @@ "follow_request.authorize": "Авторизовать", "follow_request.reject": "Отказать", "follow_requests.unlocked_explanation": "Хотя ваша учетная запись не закрыта, команда {domain} подумала, что вы захотите просмотреть запросы от этих учетных записей вручную.", - "follow_suggestions.curated_suggestion": "Выбор администрации", + "follow_suggestions.curated_suggestion": "Выбор команды сервера", "follow_suggestions.dismiss": "Больше не показывать", "follow_suggestions.featured_longer": "Отобранные командой {domain} вручную", "follow_suggestions.friends_of_friends_longer": "Популярно среди людей, на которых вы подписаны", @@ -857,8 +857,7 @@ "status.mute": "Игнорировать @{name}", "status.mute_conversation": "Игнорировать обсуждение", "status.open": "Открыть пост", - "status.pin": "Закрепить в профиле", - "status.pinned": "Закреплённый пост", + "status.pin": "Рекомендовать в профиле", "status.read_more": "Ещё", "status.reblog": "Продвинуть", "status.reblog_private": "Продвинуть для своей аудитории", @@ -883,7 +882,7 @@ "status.translated_from_with": "Переведено с {lang} с помощью {provider}", "status.uncached_media_warning": "Предварительный просмотр недоступен", "status.unmute_conversation": "Не игнорировать обсуждение", - "status.unpin": "Открепить от профиля", + "status.unpin": "Не рекомендовать в профиле", "subscribed_languages.lead": "Посты лишь на выбранных языках будут появляться в вашей домашней ленте и в списках после изменения. Снимите выбор, чтобы получать посты на всех языках.", "subscribed_languages.save": "Сохранить изменения", "subscribed_languages.target": "Изменить языки подписки для {target}", diff --git a/app/javascript/mastodon/locales/ry.json b/app/javascript/mastodon/locales/ry.json index 79f6093e53..88ce339184 100644 --- a/app/javascript/mastodon/locales/ry.json +++ b/app/javascript/mastodon/locales/ry.json @@ -111,7 +111,6 @@ "column.lists": "Исписы", "column.mutes": "Стишені хосновачі", "column.notifications": "Убвіщеня", - "column.pins": "Закріплені публикації", "column_back_button.label": "Назад", "column_header.hide_settings": "Спрятати штімованя", "column_header.moveLeft_settings": "Посунути колонку до ліва", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index c32a0d57cf..a9e2ea4783 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -99,7 +99,6 @@ "column.lists": "सूचयः", "column.mutes": "निःशब्दाः भोक्तारः", "column.notifications": "सूचनाः", - "column.pins": "कीलितपत्राणि", "column.public": "सङ्घीयसमयतालिका", "column_back_button.label": "पूर्वम्", "column_header.hide_settings": "विन्यासाः छाद्यन्ताम्", @@ -275,7 +274,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "कीलितपत्राणां सूचिमुद्घाटय", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "पत्राय प्रतिवादय", "keyboard_shortcuts.requests": "to open follow requests list", @@ -316,7 +314,6 @@ "navigation_bar.logout": "निष्क्रमणं कुरु", "navigation_bar.mutes": "निःशब्दा भोक्तारः", "navigation_bar.personal": "व्यक्तिगतम्", - "navigation_bar.pins": "कीलितपत्राणि", "navigation_bar.preferences": "अधिकरुचयः", "navigation_bar.public_timeline": "सङ्घीयसमयतालिका", "navigation_bar.search": "अन्विच्छ", @@ -465,8 +462,6 @@ "status.mute": "निःशब्दम् @{name}", "status.mute_conversation": "वार्तालापं मूकीकुरु", "status.open": "पत्रमिदं विस्तारय", - "status.pin": "प्रोफैलि कीलीकुरु", - "status.pinned": "कीलितपत्रम्", "status.read_more": "अधिकं पठ्यताम्", "status.reblog": "बुस्त्", "status.reblogs.empty": "न केनापि पत्रमिदं बुस्त्कृतम्। यदा कोऽपि करोति, तानि इह दृश्यन्ते।", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index c28c7f4f8d..0b057fdfb6 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -126,7 +126,6 @@ "column.lists": "Listas", "column.mutes": "Persones a sa muda", "column.notifications": "Notìficas", - "column.pins": "Publicatziones apicadas", "column.public": "Lìnia de tempus federada", "column_back_button.label": "A coa", "column_header.hide_settings": "Cua is cunfiguratziones", @@ -362,7 +361,6 @@ "keyboard_shortcuts.my_profile": "Aberi su profilu tuo", "keyboard_shortcuts.notifications": "Aberi sa colunna de notificatziones", "keyboard_shortcuts.open_media": "Aberi is elementos multimediales", - "keyboard_shortcuts.pinned": "Aberi sa lista de publicatziones apicadas", "keyboard_shortcuts.profile": "Aberi su profilu de s'autore", "keyboard_shortcuts.reply": "Risponde a sa publicatzioe", "keyboard_shortcuts.requests": "Aberi sa lista de rechestas de sighiduras", @@ -419,7 +417,6 @@ "navigation_bar.mutes": "Persones a sa muda", "navigation_bar.opened_in_classic_interface": "Publicatziones, contos e àteras pàginas ispetzìficas sunt abertas in manera predefinida in s'interfache web clàssica.", "navigation_bar.personal": "Informatziones personales", - "navigation_bar.pins": "Publicatziones apicadas", "navigation_bar.preferences": "Preferèntzias", "navigation_bar.public_timeline": "Lìnia de tempus federada", "navigation_bar.search": "Chirca", @@ -641,8 +638,6 @@ "status.mute": "Pone a @{name} a sa muda", "status.mute_conversation": "Pone s'arresonada a sa muda", "status.open": "Ismànnia custa publicatzione", - "status.pin": "Apica in su profilu", - "status.pinned": "Publicatzione apicada", "status.read_more": "Leghe·nde àteru", "status.reblog": "Cumpartzi", "status.reblog_private": "Cumpartzi cun is utentes originales", @@ -659,7 +654,6 @@ "status.show_more_all": "Ammustra·nde prus pro totus", "status.title.with_attachments": "{user} at publicadu {attachmentCount, plural, one {un'alligongiadu} other {{attachmentCount} alligongiados}}", "status.unmute_conversation": "Torra a ativare s'arresonada", - "status.unpin": "Boga dae pitzu de su profilu", "subscribed_languages.save": "Sarva is modìficas", "tabs_bar.home": "Printzipale", "tabs_bar.notifications": "Notìficas", diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json index ac037c1464..b2aea2a7b1 100644 --- a/app/javascript/mastodon/locales/sco.json +++ b/app/javascript/mastodon/locales/sco.json @@ -100,7 +100,6 @@ "column.lists": "Lists", "column.mutes": "Wheesht uisers", "column.notifications": "Notes", - "column.pins": "Preenit posts", "column.public": "Federatit timeline", "column_back_button.label": "Back", "column_header.hide_settings": "Hide settins", @@ -269,7 +268,6 @@ "keyboard_shortcuts.my_profile": "Open yer profile", "keyboard_shortcuts.notifications": "Open notes column", "keyboard_shortcuts.open_media": "Open media", - "keyboard_shortcuts.pinned": "Open preenit posts list", "keyboard_shortcuts.profile": "Open author's profile", "keyboard_shortcuts.reply": "Reply tae post", "keyboard_shortcuts.requests": "Open follae requests list", @@ -308,7 +306,6 @@ "navigation_bar.logout": "Logoot", "navigation_bar.mutes": "Wheesht uisers", "navigation_bar.personal": "Personal", - "navigation_bar.pins": "Preenit posts", "navigation_bar.preferences": "Preferences", "navigation_bar.public_timeline": "Federatit timeline", "navigation_bar.search": "Seirch", @@ -455,8 +452,6 @@ "status.mute": "Wheesht @{name}", "status.mute_conversation": "Wheesht conversation", "status.open": "Expand this post", - "status.pin": "Preen tae profile", - "status.pinned": "Preenit post", "status.read_more": "Read mair", "status.reblog": "Heeze", "status.reblog_private": "Heeze wi original visibility", @@ -477,7 +472,6 @@ "status.translate": "Owerset", "status.translated_from_with": "Owerset fae {lang} uisin {provider}", "status.unmute_conversation": "Unwheesht conversation", - "status.unpin": "Unpreen fae profile", "subscribed_languages.lead": "Ainly posts in the leids ye pick wull shaw on yer hame an list timelines efter the chynge. Pick naen fir tae get posts in aw leids.", "subscribed_languages.save": "Save chynges", "subscribed_languages.target": "Chynge subscribed leids fir {target}", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index ef41d3c7dc..ee9fa92612 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -78,7 +78,6 @@ "column.lists": "ලැයිස්තු", "column.mutes": "නිහඬ කළ අය", "column.notifications": "දැනුම්දීම්", - "column.pins": "ඇමිණූ ලිපි", "column.public": "ඒකාබද්ධ කාලරේඛාව", "column_back_button.label": "ආපසු", "column_header.hide_settings": "සැකසුම් සඟවන්න", @@ -232,7 +231,6 @@ "keyboard_shortcuts.my_profile": "ඔබගේ පැතිකඩ අරින්න", "keyboard_shortcuts.notifications": "දැනුම්දීම් තීරුව විවෘත කිරීමට", "keyboard_shortcuts.open_media": "මාධ්‍ය අරින්න", - "keyboard_shortcuts.pinned": "ඇමිණූ ලිපි ලැයිස්තුව අරින්න", "keyboard_shortcuts.profile": "කතෘගේ පැතිකඩ අරින්න", "keyboard_shortcuts.reply": "පිළිතුරු දීමට", "keyboard_shortcuts.spoilers": "CW ක්‍ෂේත්‍රය පෙන්වන්න/සඟවන්න", @@ -264,7 +262,6 @@ "navigation_bar.logout": "නික්මෙන්න", "navigation_bar.mutes": "නිහඬ කළ අය", "navigation_bar.personal": "පුද්ගලික", - "navigation_bar.pins": "ඇමිණූ ලිපි", "navigation_bar.preferences": "අභිප්‍රේත", "navigation_bar.public_timeline": "ඒකාබද්ධ කාලරේඛාව", "navigation_bar.search": "සොයන්න", @@ -402,8 +399,6 @@ "status.mute": "@{name} නිහඬව", "status.mute_conversation": "සංවාදය නිහඬව", "status.open": "මෙම ලිපිය විහිදන්න", - "status.pin": "පැතිකඩට අමුණන්න", - "status.pinned": "ඇමිණූ ලිපියකි", "status.read_more": "තව කියවන්න", "status.remove_bookmark": "පොත්යොමුව ඉවතලන්න", "status.reply": "පිළිතුරු", @@ -417,7 +412,6 @@ "status.translated_from_with": "{provider} මගින් {lang} භාෂාවෙන් පරිවර්තනය කර ඇත", "status.uncached_media_warning": "පෙරදසුන නැත", "status.unmute_conversation": "සංවාදය නොනිහඬ", - "status.unpin": "පැතිකඩෙන් ගළවන්න", "subscribed_languages.save": "වෙනස්කම් සුරකින්න", "tabs_bar.home": "මුල් පිටුව", "tabs_bar.notifications": "දැනුම්දීම්", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 0a61462efb..354b2da9bd 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -146,7 +146,6 @@ "column.lists": "Zoznamy", "column.mutes": "Stíšené účty", "column.notifications": "Upozornenia", - "column.pins": "Pripnuté príspevky", "column.public": "Federovaná časová os", "column_back_button.label": "Späť", "column_header.hide_settings": "Skryť nastavenia", @@ -425,7 +424,6 @@ "keyboard_shortcuts.my_profile": "Otvoriť svoj profil", "keyboard_shortcuts.notifications": "Otvoriť panel upozornení", "keyboard_shortcuts.open_media": "Otvoriť médiá", - "keyboard_shortcuts.pinned": "Otvoriť zoznam pripnutých príspevkov", "keyboard_shortcuts.profile": "Otvoriť autorov profil", "keyboard_shortcuts.reply": "Odpovedať na príspevok", "keyboard_shortcuts.requests": "Otvoriť zoznam žiadostí o sledovanie", @@ -507,7 +505,6 @@ "navigation_bar.mutes": "Stíšené účty", "navigation_bar.opened_in_classic_interface": "Príspevky, účty a iné špeciálne stránky sú predvolene otvárané v klasickom webovom rozhraní.", "navigation_bar.personal": "Osobné", - "navigation_bar.pins": "Pripnuté príspevky", "navigation_bar.preferences": "Nastavenia", "navigation_bar.public_timeline": "Federovaná časová os", "navigation_bar.search": "Hľadať", @@ -770,8 +767,6 @@ "status.mute": "Stíšiť @{name}", "status.mute_conversation": "Stíšiť konverzáciu", "status.open": "Rozbaliť príspevok", - "status.pin": "Pripnúť na profil", - "status.pinned": "Pripnutý príspevok", "status.read_more": "Čítaj ďalej", "status.reblog": "Zdieľať", "status.reblog_private": "Zdieľať pôvodnému publiku", @@ -795,7 +790,6 @@ "status.translated_from_with": "Preložené z {lang} pomocou {provider}", "status.uncached_media_warning": "Náhľad nie je k dispozícii", "status.unmute_conversation": "Zrušiť stíšenie konverzácie", - "status.unpin": "Odopnúť z profilu", "subscribed_languages.lead": "Po zmene sa na vašej domovskej stránke a časovej osi zoznamu zobrazia iba príspevky vo vybraných jazykoch. Ak chcete dostávať príspevky vo všetkých jazykoch, vyberte možnosť žiadne.", "subscribed_languages.save": "Uložiť zmeny", "subscribed_languages.target": "Zmeniť prihlásené jazyky pre {target}", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 547a910cf3..08a6d8c028 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -157,7 +157,6 @@ "column.lists": "Seznami", "column.mutes": "Utišani uporabniki", "column.notifications": "Obvestila", - "column.pins": "Pripete objave", "column.public": "Združena časovnica", "column_back_button.label": "Nazaj", "column_header.hide_settings": "Skrij nastavitve", @@ -457,7 +456,6 @@ "keyboard_shortcuts.my_profile": "Odprite svoj profil", "keyboard_shortcuts.notifications": "Odpri stolpec z obvestili", "keyboard_shortcuts.open_media": "Odpri predstavnost", - "keyboard_shortcuts.pinned": "Odpri seznam pripetih objav", "keyboard_shortcuts.profile": "Odpri avtorjev profil", "keyboard_shortcuts.reply": "Odgovori na objavo", "keyboard_shortcuts.requests": "Odpri seznam s prošnjami za sledenje", @@ -541,7 +539,6 @@ "navigation_bar.mutes": "Utišani uporabniki", "navigation_bar.opened_in_classic_interface": "Objave, računi in druge specifične strani se privzeto odprejo v klasičnem spletnem vmesniku.", "navigation_bar.personal": "Osebno", - "navigation_bar.pins": "Pripete objave", "navigation_bar.preferences": "Nastavitve", "navigation_bar.public_timeline": "Združena časovnica", "navigation_bar.search": "Iskanje", @@ -837,8 +834,6 @@ "status.mute": "Utišaj @{name}", "status.mute_conversation": "Utišaj pogovor", "status.open": "Razširi to objavo", - "status.pin": "Pripni na profil", - "status.pinned": "Pripeta objava", "status.read_more": "Preberi več", "status.reblog": "Izpostavi", "status.reblog_private": "Izpostavi z izvirno vidljivostjo", @@ -863,7 +858,6 @@ "status.translated_from_with": "Prevedeno iz {lang} s pomočjo {provider}", "status.uncached_media_warning": "Predogled ni na voljo", "status.unmute_conversation": "Odtišaj pogovor", - "status.unpin": "Odpni iz profila", "subscribed_languages.lead": "Po spremembi bodo na vaši domači in seznamski časovnici prikazane objave samo v izbranih jezikih. Izberite brez, da boste prejemali objave v vseh jezikih.", "subscribed_languages.save": "Shrani spremembe", "subscribed_languages.target": "Spremeni naročene jezike za {target}", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index d94d2fd658..bd6dab149b 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -163,7 +163,7 @@ "column.lists": "Lista", "column.mutes": "Përdorues të heshtuar", "column.notifications": "Njoftime", - "column.pins": "Mesazhe të fiksuar", + "column.pins": "Postime të zgjedhur", "column.public": "Rrjedhë kohore e të federuarave", "column_back_button.label": "Mbrapsht", "column_header.hide_settings": "Fshihi rregullimet", @@ -472,7 +472,7 @@ "keyboard_shortcuts.my_profile": "Për hapjen e profilit tuaj", "keyboard_shortcuts.notifications": "Për hapje shtylle njoftimesh", "keyboard_shortcuts.open_media": "Për hapje mediash", - "keyboard_shortcuts.pinned": "Për hapje liste mesazhesh të fiksuar", + "keyboard_shortcuts.pinned": "Hapni listë postimesh të zgjedhur", "keyboard_shortcuts.profile": "Për hapje të profilit të autorit", "keyboard_shortcuts.reply": "Për t’iu përgjigjur një postimi", "keyboard_shortcuts.requests": "Për hapje liste kërkesash për ndjekje", @@ -556,7 +556,7 @@ "navigation_bar.mutes": "Përdorues të heshtuar", "navigation_bar.opened_in_classic_interface": "Postime, llogari dhe të tjera faqe specifike, si parazgjedhje, hapen në ndërfaqe klasike web.", "navigation_bar.personal": "Personale", - "navigation_bar.pins": "Mesazhe të fiksuar", + "navigation_bar.pins": "Postime të zgjedhur", "navigation_bar.preferences": "Parapëlqime", "navigation_bar.public_timeline": "Rrjedhë kohore të federuarash", "navigation_bar.search": "Kërkoni", @@ -852,8 +852,7 @@ "status.mute": "Heshtoni @{name}", "status.mute_conversation": "Heshtoje bisedën", "status.open": "Zgjeroje këtë mesazh", - "status.pin": "Fiksoje në profil", - "status.pinned": "Mesazh i fiksuar", + "status.pin": "Pasqyrojeni në profil", "status.read_more": "Lexoni më tepër", "status.reblog": "Përforcojeni", "status.reblog_private": "Përforcim për publikun origjinal", @@ -878,7 +877,7 @@ "status.translated_from_with": "Përkthyer nga {lang} duke përdorur {provider}", "status.uncached_media_warning": "S’ka paraparje", "status.unmute_conversation": "Ktheji zërin bisedës", - "status.unpin": "Shfiksoje nga profili", + "status.unpin": "Mos e përfshi në profil", "subscribed_languages.lead": "Pas ndryshimit, te kreu juaj dhe te rrjedha kohore liste do të shfaqen vetëm postime në gjuhët e përzgjedhura. Që të merrni postime në krejt gjuhë, mos përzgjidhni gjë.", "subscribed_languages.save": "Ruaji ndryshimet", "subscribed_languages.target": "Ndryshoni gjuhë pajtimesh për {target}", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index 06aac93189..d50d407253 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -123,7 +123,6 @@ "column.lists": "Liste", "column.mutes": "Ignorisani korisnici", "column.notifications": "Obaveštenja", - "column.pins": "Zakačene objave", "column.public": "Združena vremenska linija", "column_back_button.label": "Nazad", "column_header.hide_settings": "Sakrij podešavanja", @@ -364,7 +363,6 @@ "keyboard_shortcuts.my_profile": "Otvorite svoj profil", "keyboard_shortcuts.notifications": "Otvori kolonu obaveštenja", "keyboard_shortcuts.open_media": "Otvori multimediju", - "keyboard_shortcuts.pinned": "Otvori listu zakačenih objava", "keyboard_shortcuts.profile": "Otvori profil autora", "keyboard_shortcuts.reply": "Odgovori na objavu", "keyboard_shortcuts.requests": "Otvori listu zahteva za praćenje", @@ -421,7 +419,6 @@ "navigation_bar.mutes": "Ignorisani korisnici", "navigation_bar.opened_in_classic_interface": "Objave, nalozi i druge specifične stranice se podrazumevano otvaraju u klasičnom veb okruženju.", "navigation_bar.personal": "Lično", - "navigation_bar.pins": "Zakačene objave", "navigation_bar.preferences": "Podešavanja", "navigation_bar.public_timeline": "Združena vremenska linija", "navigation_bar.search": "Pretraga", @@ -655,8 +652,6 @@ "status.mute": "Ignoriši @{name}", "status.mute_conversation": "Ignoriši razgovor", "status.open": "Proširi ovu objavu", - "status.pin": "Zakači na profil", - "status.pinned": "Zakačene objave", "status.read_more": "Pročitajte više", "status.reblog": "Podrži", "status.reblog_private": "Podrži sa originalnom vidljivošću", @@ -679,7 +674,6 @@ "status.translated_from_with": "Prevedeno sa {lang} koristeći {provider}", "status.uncached_media_warning": "Pregled nije dostupan", "status.unmute_conversation": "Ne ignoriši razgovor", - "status.unpin": "Otkači sa profila", "subscribed_languages.lead": "Samo objave na označenim jezicima će se pojavljivati na početnoj liniji i na listama posle ove izmene. Kada nijedan jezik nije izabran, primaćete objave na svim jezicima.", "subscribed_languages.save": "Sačuvaj izmene", "subscribed_languages.target": "Promeni jezike na koje je {target} prijavljen", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index ba972db844..f1a3442abe 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -123,7 +123,6 @@ "column.lists": "Листе", "column.mutes": "Игнорисани корисници", "column.notifications": "Обавештења", - "column.pins": "Закачене објаве", "column.public": "Здружена временска линија", "column_back_button.label": "Назад", "column_header.hide_settings": "Сакриј подешавања", @@ -364,7 +363,6 @@ "keyboard_shortcuts.my_profile": "Отворите свој профил", "keyboard_shortcuts.notifications": "Отвори колону обавештења", "keyboard_shortcuts.open_media": "Отвори мултимедију", - "keyboard_shortcuts.pinned": "Отвори листу закачених објава", "keyboard_shortcuts.profile": "Отвори профил аутора", "keyboard_shortcuts.reply": "Одговори на објаву", "keyboard_shortcuts.requests": "Отвори листу захтева за праћење", @@ -421,7 +419,6 @@ "navigation_bar.mutes": "Игнорисани корисници", "navigation_bar.opened_in_classic_interface": "Објаве, налози и друге специфичне странице се подразумевано отварају у класичном веб окружењу.", "navigation_bar.personal": "Лично", - "navigation_bar.pins": "Закачене објаве", "navigation_bar.preferences": "Подешавања", "navigation_bar.public_timeline": "Здружена временска линија", "navigation_bar.search": "Претрага", @@ -655,8 +652,6 @@ "status.mute": "Игнориши @{name}", "status.mute_conversation": "Игнориши разговор", "status.open": "Прошири ову објаву", - "status.pin": "Закачи на профил", - "status.pinned": "Закачене објаве", "status.read_more": "Прочитајте више", "status.reblog": "Подржи", "status.reblog_private": "Подржи са оригиналном видљивошћу", @@ -679,7 +674,6 @@ "status.translated_from_with": "Преведено са {lang} користећи {provider}", "status.uncached_media_warning": "Преглед није доступан", "status.unmute_conversation": "Не игнориши разговор", - "status.unpin": "Откачи са профила", "subscribed_languages.lead": "Само објаве на означеним језицима ће се појављивати на почетној линији и на листама после ове измене. Када ниједан језик није изабран, примаћете објаве на свим језицима.", "subscribed_languages.save": "Сачувај измене", "subscribed_languages.target": "Промени језике на које је {target} пријављен", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 6af287e6cc..6a64df26a1 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -158,7 +158,6 @@ "column.lists": "Listor", "column.mutes": "Tystade användare", "column.notifications": "Notifikationer", - "column.pins": "Fästa inlägg", "column.public": "Global tidslinje", "column_back_button.label": "Tillbaka", "column_header.hide_settings": "Dölj inställningar", @@ -458,7 +457,6 @@ "keyboard_shortcuts.my_profile": "Öppna din profil", "keyboard_shortcuts.notifications": "Öppna meddelanden", "keyboard_shortcuts.open_media": "Öppna media", - "keyboard_shortcuts.pinned": "Öppna listan över fästa inlägg", "keyboard_shortcuts.profile": "Öppna författarens profil", "keyboard_shortcuts.reply": "Svara på inlägg", "keyboard_shortcuts.requests": "Öppna följförfrågningar", @@ -542,7 +540,6 @@ "navigation_bar.mutes": "Tystade användare", "navigation_bar.opened_in_classic_interface": "Inlägg, konton och andra specifika sidor öppnas som standard i det klassiska webbgränssnittet.", "navigation_bar.personal": "Personligt", - "navigation_bar.pins": "Fästa inlägg", "navigation_bar.preferences": "Inställningar", "navigation_bar.public_timeline": "Federerad tidslinje", "navigation_bar.search": "Sök", @@ -838,8 +835,6 @@ "status.mute": "Tysta @{name}", "status.mute_conversation": "Tysta konversation", "status.open": "Utvidga detta inlägg", - "status.pin": "Fäst i profil", - "status.pinned": "Fästa inlägg", "status.read_more": "Läs mer", "status.reblog": "Boosta", "status.reblog_private": "Boosta med ursprunglig synlighet", @@ -864,7 +859,6 @@ "status.translated_from_with": "Översatt från {lang} med {provider}", "status.uncached_media_warning": "Förhandsvisning inte tillgänglig", "status.unmute_conversation": "Öppna konversation", - "status.unpin": "Ångra fäst i profil", "subscribed_languages.lead": "Endast inlägg på valda språk kommer att visas på dina hem- och listflöden efter ändringen. Välj ingenting för att se inlägg på alla språk.", "subscribed_languages.save": "Spara ändringar", "subscribed_languages.target": "Ändra språkprenumerationer för {target}", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 5250e12a8b..a609d39d28 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -21,7 +21,6 @@ "account.posts_with_replies": "Toots and replies", "account.requested": "Awaiting approval", "account_note.placeholder": "Click to add a note", - "column.pins": "Pinned toot", "community.column_settings.media_only": "Media only", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", @@ -54,7 +53,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned toots list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", @@ -68,7 +66,6 @@ "keyboard_shortcuts.up": "to move up in the list", "navigation_bar.compose": "Compose new toot", "navigation_bar.domain_blocks": "Hidden domains", - "navigation_bar.pins": "Pinned toots", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.reblog": "{name} boosted your status", "notifications.column_settings.status": "New toots:", @@ -83,7 +80,6 @@ "status.copy": "Copy link to status", "status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}", "status.open": "Expand this status", - "status.pinned": "Pinned toot", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 29446835f6..781d7af79d 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -88,7 +88,6 @@ "column.lists": "பட்டியல்கள்", "column.mutes": "மௌனத் தடை செய்யப்பட்ட பயனர்கள்", "column.notifications": "அறிவிப்புகள்", - "column.pins": "பொருத்தப்பட்ட டூட்டுகள்", "column.public": "ஆலமரத்தில் நிகழ்பவை", "column_back_button.label": "பின்செல்", "column_header.hide_settings": "அமைப்புகளை மறை", @@ -222,7 +221,6 @@ "keyboard_shortcuts.my_profile": "உங்கள் சுயவிவரத்தை திறக்க", "keyboard_shortcuts.notifications": "அறிவிப்பு நெடுவரிசையைத் திறக்க", "keyboard_shortcuts.open_media": "படத்தைத் திறக்க‌", - "keyboard_shortcuts.pinned": "திறக்க பொருத்தப்பட்டன toots பட்டியல்", "keyboard_shortcuts.profile": "ஆசிரியரின் சுயவிவரத்தைத் திறக்க", "keyboard_shortcuts.reply": "பதிலளிக்க", "keyboard_shortcuts.requests": "கோரிக்கைகள் பட்டியலைத் திறக்க", @@ -253,7 +251,6 @@ "navigation_bar.logout": "விடு பதிகை", "navigation_bar.mutes": "முடக்கப்பட்ட பயனர்கள்", "navigation_bar.personal": "தனிப்பட்டவை", - "navigation_bar.pins": "பொருத்தப்பட்டன toots", "navigation_bar.preferences": "விருப்பங்கள்", "navigation_bar.public_timeline": "கூட்டாட்சி காலக்கெடு", "navigation_bar.security": "பத்திரம்", @@ -325,8 +322,6 @@ "status.mute": "ஊமையான @{name}", "status.mute_conversation": "ஒலிதடு உரையாடல்", "status.open": "இந்த நிலையை விரிவாக்கு", - "status.pin": "சுயவிவரத்தில் முள்", - "status.pinned": "பொருத்தப்பட்டன toot", "status.read_more": "மேலும் வாசிக்க", "status.reblog": "மதிப்பை உயர்த்து", "status.reblog_private": "Boost அசல் பார்வையாளர்களுக்கு", @@ -343,7 +338,6 @@ "status.show_more_all": "அனைவருக்கும் மேலும் காட்டு", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "status.unmute_conversation": "ஊமையாக உரையாடல் இல்லை", - "status.unpin": "சுயவிவரத்திலிருந்து நீக்கவும்", "tabs_bar.home": "முகப்பு", "tabs_bar.notifications": "அறிவிப்புகள்", "time_remaining.days": "{number, plural, one {# day} மற்ற {# days}} left", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 1e7548e378..bccb8db918 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -10,7 +10,6 @@ "account.posts_with_replies": "Huah-siann kah huê-ìng", "account.requested": "Tán-thāi phue-tsún", "account_note.placeholder": "Tiám tsi̍t-ē ka-thiam pī-tsù", - "column.pins": "Tah thâu-tsîng ê huah-siann", "community.column_settings.media_only": "Kan-na muî-thé", "compose_form.encryption_warning": "Tī Mastodon tah huah-siann m̄-sī tuan-tuì-tuan ka-pì ê. M̄-thang tī Mastodon hun-hióng jīm-hô bín-kám ê tsū-sìn.", "compose_form.hashtag_warning": "Tsit-ê huah-siann in-uī m̄-sī kong-khai ê, sóo-í buē tī jīm-hô tsú-tê piau-tshiam hián-sī. Kan-na kong-khai ê huah-siann ē-tàng hōo tsú-tê piau-tshiam tshâ-tshuē.", @@ -43,7 +42,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "Khui muî-thé", - "keyboard_shortcuts.pinned": "to open pinned toots list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", @@ -57,7 +55,6 @@ "keyboard_shortcuts.up": "to move up in the list", "navigation_bar.compose": "Compose new toot", "navigation_bar.domain_blocks": "Hidden domains", - "navigation_bar.pins": "Pinned toots", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.reblog": "{name} boosted your status", "notifications.column_settings.status": "New toots:", @@ -72,7 +69,6 @@ "status.copy": "Copy link to status", "status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}", "status.open": "Expand this status", - "status.pinned": "Pinned toot", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index 4d50b6cb14..2069415dc0 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -1,4 +1,5 @@ { + "about.domain_blocks.suspended.title": "నిషేధించబడింది", "account.add_or_remove_from_list": "జాబితాల నుండి చేర్చు లేదా తీసివేయి", "account.badges.bot": "బాట్", "account.block": "@{name} ను బ్లాక్ చేయి", @@ -7,11 +8,13 @@ "account.cancel_follow_request": "Withdraw follow request", "account.edit_profile": "ప్రొఫైల్ని సవరించండి", "account.endorse": "ప్రొఫైల్లో చూపించు", + "account.featured.hashtags": "హ్యాష్‌ట్యాగ్‌లు", "account.follow": "అనుసరించు", "account.followers": "అనుచరులు", "account.followers.empty": "ఈ వినియోగదారుడిని ఇంకా ఎవరూ అనుసరించడంలేదు.", "account.follows.empty": "ఈ వినియోగదారి ఇంకా ఎవరినీ అనుసరించడంలేదు.", "account.hide_reblogs": "@{name} నుంచి బూస్ట్ లను దాచిపెట్టు", + "account.joined_short": "చేరారు", "account.link_verified_on": "ఈ లంకె యొక్క యాజమాన్యం {date}న పరీక్షించబడింది", "account.locked_info": "ఈ ఖాతా యొక్క గోప్యత స్థితి లాక్ చేయబడి వుంది. ఈ ఖాతాను ఎవరు అనుసరించవచ్చో యజమానే నిర్ణయం తీసుకుంటారు.", "account.media": "మీడియా", @@ -44,7 +47,6 @@ "column.lists": "జాబితాలు", "column.mutes": "మ్యూట్ చేయబడిన వినియోగదారులు", "column.notifications": "ప్రకటనలు", - "column.pins": "Pinned toot", "column.public": "సమాఖ్య కాలక్రమం", "column_back_button.label": "వెనక్కి", "column_header.hide_settings": "అమర్పులను దాచిపెట్టు", @@ -138,7 +140,6 @@ "keyboard_shortcuts.my_profile": "మీ ప్రొఫైల్ను తెరవడానికి", "keyboard_shortcuts.notifications": "నోటిఫికేషన్ల నిలువు వరుసను తెరవడానికి", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "అతికించబడిన టూట్ల జాబితాను తెరవడానికి", "keyboard_shortcuts.profile": "రచయిత ప్రొఫైల్ ను తెరవాలంటే", "keyboard_shortcuts.reply": "ప్రత్యుత్తరం ఇవ్వడానికి", "keyboard_shortcuts.requests": "ఫాలో రిక్వెస్ట్ల జాబితాను తెరవడానికి", @@ -166,7 +167,6 @@ "navigation_bar.logout": "లాగ్ అవుట్ చేయండి", "navigation_bar.mutes": "మ్యూట్ చేయబడిన వినియోగదారులు", "navigation_bar.personal": "వ్యక్తిగతం", - "navigation_bar.pins": "అతికించిన టూట్లు", "navigation_bar.preferences": "ప్రాధాన్యతలు", "navigation_bar.public_timeline": "సమాఖ్య కాలక్రమం", "navigation_bar.security": "భద్రత", @@ -225,8 +225,6 @@ "status.mute": "@{name}ను మ్యూట్ చెయ్యి", "status.mute_conversation": "సంభాషణను మ్యూట్ చెయ్యి", "status.open": "ఈ స్టేటస్ ను విస్తరించు", - "status.pin": "ప్రొఫైల్లో అతికించు", - "status.pinned": "అతికించిన టూట్", "status.read_more": "ఇంకా చదవండి", "status.reblog": "బూస్ట్", "status.reblog_private": "అసలు ప్రేక్షకులకు బూస్ట్ చేయి", @@ -242,7 +240,6 @@ "status.show_more_all": "అన్నిటికీ ఇంకా చూపించు", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "status.unmute_conversation": "సంభాషణను అన్మ్యూట్ చేయి", - "status.unpin": "ప్రొఫైల్ నుండి పీకివేయు", "tabs_bar.home": "హోమ్", "tabs_bar.notifications": "ప్రకటనలు", "time_remaining.moments": "కొన్ని క్షణాలు మాత్రమే మిగిలి ఉన్నాయి", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index a3143c26f0..26dad1a595 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -156,7 +156,6 @@ "column.lists": "รายการ", "column.mutes": "ผู้ใช้ที่ซ่อนอยู่", "column.notifications": "การแจ้งเตือน", - "column.pins": "โพสต์ที่ปักหมุด", "column.public": "เส้นเวลาที่ติดต่อกับภายนอก", "column_back_button.label": "ย้อนกลับ", "column_header.hide_settings": "ซ่อนการตั้งค่า", @@ -450,7 +449,6 @@ "keyboard_shortcuts.my_profile": "เปิดโปรไฟล์ของคุณ", "keyboard_shortcuts.notifications": "เปิดคอลัมน์การแจ้งเตือน", "keyboard_shortcuts.open_media": "เปิดสื่อ", - "keyboard_shortcuts.pinned": "เปิดรายการโพสต์ที่ปักหมุด", "keyboard_shortcuts.profile": "เปิดโปรไฟล์ของผู้สร้าง", "keyboard_shortcuts.reply": "ตอบกลับโพสต์", "keyboard_shortcuts.requests": "เปิดรายการคำขอติดตาม", @@ -534,7 +532,6 @@ "navigation_bar.mutes": "ผู้ใช้ที่ซ่อนอยู่", "navigation_bar.opened_in_classic_interface": "จะเปิดโพสต์, บัญชี และหน้าที่เฉพาะเจาะจงอื่น ๆ เป็นค่าเริ่มต้นในส่วนติดต่อเว็บแบบคลาสสิก", "navigation_bar.personal": "ส่วนบุคคล", - "navigation_bar.pins": "โพสต์ที่ปักหมุด", "navigation_bar.preferences": "การกำหนดลักษณะ", "navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก", "navigation_bar.search": "ค้นหา", @@ -828,8 +825,6 @@ "status.mute": "ซ่อน @{name}", "status.mute_conversation": "ซ่อนการสนทนา", "status.open": "ขยายโพสต์นี้", - "status.pin": "ปักหมุดในโปรไฟล์", - "status.pinned": "โพสต์ที่ปักหมุด", "status.read_more": "อ่านเพิ่มเติม", "status.reblog": "ดัน", "status.reblog_private": "ดันด้วยการมองเห็นดั้งเดิม", @@ -854,7 +849,6 @@ "status.translated_from_with": "แปลจาก {lang} โดยใช้ {provider}", "status.uncached_media_warning": "ตัวอย่างไม่พร้อมใช้งาน", "status.unmute_conversation": "เลิกซ่อนการสนทนา", - "status.unpin": "ถอนหมุดจากโปรไฟล์", "subscribed_languages.lead": "เฉพาะโพสต์ในภาษาที่เลือกเท่านั้นที่จะปรากฏในเส้นเวลาหน้าแรกและรายการหลังจากการเปลี่ยนแปลง เลือก ไม่มี เพื่อรับโพสต์ในภาษาทั้งหมด", "subscribed_languages.save": "บันทึกการเปลี่ยนแปลง", "subscribed_languages.target": "เปลี่ยนภาษาที่บอกรับสำหรับ {target}", diff --git a/app/javascript/mastodon/locales/tok.json b/app/javascript/mastodon/locales/tok.json index 81a2c9bbbc..52b8a3e6c1 100644 --- a/app/javascript/mastodon/locales/tok.json +++ b/app/javascript/mastodon/locales/tok.json @@ -155,7 +155,6 @@ "column.lists": "kulupu lipu", "column.mutes": "jan len", "column.notifications": "mu pi sona sin", - "column.pins": "toki sewi", "column.public": "toki pi ma poka ale", "column_back_button.label": "o tawa monsi", "column_header.hide_settings": "o len e lawa", @@ -354,7 +353,6 @@ "keyboard_shortcuts.muted": "o lukin e lipu sina pi jan len", "keyboard_shortcuts.my_profile": "o lukin e lipu sina", "keyboard_shortcuts.open_media": "o lukin e sitelen", - "keyboard_shortcuts.pinned": "o lukin pi lipu sina pi toki sewi", "keyboard_shortcuts.toggle_sensitivity": "o ante e ken lukin", "keyboard_shortcuts.toot": "o toki", "keyboard_shortcuts.up": "o tawa sewi lon lipu", @@ -385,7 +383,6 @@ "navigation_bar.filters": "nimi len", "navigation_bar.lists": "kulupu lipu", "navigation_bar.mutes": "sina wile ala kute e jan ni", - "navigation_bar.pins": "toki sewi", "navigation_bar.preferences": "wile sina", "navigation_bar.search": "o alasa", "notification.admin.report": "jan {name} li toki e jan {target} tawa lawa", @@ -474,8 +471,6 @@ "status.more": "kin", "status.mute": "o len e @{name}", "status.mute_conversation": "o kute ala e ijo pi toki ni", - "status.pin": "o sewi lon lipu sina", - "status.pinned": "toki sewi", "status.reblog": "o wawa", "status.reblogged_by": "jan {name} li wawa", "status.reblogs.empty": "jan ala li wawa e toki ni. jan li wawa la, nimi ona li sitelen lon ni.", @@ -487,7 +482,6 @@ "status.translated_from_with": "toki li ante tan {lang} kepeken {provider}", "status.uncached_media_warning": "lukin lili li weka", "status.unmute_conversation": "o ken kute e ijo pi toki ni", - "status.unpin": "o sewi ala lon lipu sina", "subscribed_languages.save": "o awen e ante", "tabs_bar.home": "lipu open", "trends.trending_now": "jan mute li toki", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index ae181ef109..e5d1b1a6ba 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -168,7 +168,7 @@ "column.lists": "Listeler", "column.mutes": "Sessize alınmış kullanıcılar", "column.notifications": "Bildirimler", - "column.pins": "Sabitlenmiş gönderiler", + "column.pins": "Öne çıkan gönderiler", "column.public": "Federe ağ akışı", "column_back_button.label": "Geri", "column_header.hide_settings": "Ayarları gizle", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "Profilinizi açmak için", "keyboard_shortcuts.notifications": "Bildirimler sütununu açmak için", "keyboard_shortcuts.open_media": "Medyayı açmak için", - "keyboard_shortcuts.pinned": "Sabitlenmiş gönderilerin listesini aç", + "keyboard_shortcuts.pinned": "Öne çıkan gönderilerin listesini aç", "keyboard_shortcuts.profile": "Yazanın profilini açmak için", "keyboard_shortcuts.reply": "gönderiyi yanıtla", "keyboard_shortcuts.requests": "Takip istekleri listesini açmak için", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "Sessize alınmış kullanıcılar", "navigation_bar.opened_in_classic_interface": "Gönderiler, hesaplar ve diğer belirli sayfalar klasik web arayüzünde varsayılan olarak açılıyorlar.", "navigation_bar.personal": "Kişisel", - "navigation_bar.pins": "Sabitlenmiş gönderiler", + "navigation_bar.pins": "Öne çıkan gönderiler", "navigation_bar.preferences": "Tercihler", "navigation_bar.public_timeline": "Federe ağ akışı", "navigation_bar.search": "Arama", @@ -857,8 +857,7 @@ "status.mute": "@{name} kişisini sessize al", "status.mute_conversation": "Sohbeti sessize al", "status.open": "Bu gönderiyi genişlet", - "status.pin": "Profile sabitle", - "status.pinned": "Sabitlenmiş gönderi", + "status.pin": "Profilimde öne çıkar", "status.read_more": "Devamını okuyun", "status.reblog": "Yeniden paylaş", "status.reblog_private": "Özgün görünürlük ile yeniden paylaş", @@ -883,7 +882,7 @@ "status.translated_from_with": "{provider} kullanılarak {lang} dilinden çevrildi", "status.uncached_media_warning": "Ön izleme mevcut değil", "status.unmute_conversation": "Sohbet sesini aç", - "status.unpin": "Profilden sabitlemeyi kaldır", + "status.unpin": "Profilimde öne çıkarma", "subscribed_languages.lead": "Değişiklikten sonra ana akışınızda sadece seçili dillerdeki gönderiler görüntülenecek ve zaman akışları listelenecektir. Tüm dillerde gönderiler için hiçbirini seçin.", "subscribed_languages.save": "Değişiklikleri kaydet", "subscribed_languages.target": "{target} abone olduğu dilleri değiştir", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index 39abff4503..9fdce062ce 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -109,7 +109,6 @@ "column.lists": "Исемлекләр", "column.mutes": "Тавышсыз кулланучылар", "column.notifications": "Искәртүләр", - "column.pins": "Pinned toot", "column.public": "Глобаль вакыт сызыгы", "column_back_button.label": "Артка", "column_header.hide_settings": "Көйләүләрне яшерү", @@ -259,7 +258,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned toots list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", @@ -292,7 +290,6 @@ "navigation_bar.lists": "Исемлекләр", "navigation_bar.logout": "Чыгу", "navigation_bar.personal": "Шәхси", - "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "Caylaw", "navigation_bar.search": "Эзләү", "navigation_bar.security": "Хәвефсезлек", @@ -389,7 +386,6 @@ "status.mention": "@{name} Искә алу", "status.more": "Күбрәк", "status.open": "Expand this status", - "status.pinned": "Pinned toot", "status.read_more": "Күбрәк уку", "status.reblog": "Уртаклашу", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index e550d7e678..6cf592ed2a 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -10,7 +10,6 @@ "account.report": "@{name} نى پاش قىل", "account.requested": "Awaiting approval", "account_note.placeholder": "چېكىلسە ئىزاھات قوشىدۇ", - "column.pins": "چوققىلانغان يازما", "community.column_settings.media_only": "ۋاسىتەلا", "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.", "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.", @@ -53,7 +52,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned toots list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", @@ -67,7 +65,6 @@ "keyboard_shortcuts.up": "to move up in the list", "navigation_bar.compose": "Compose new toot", "navigation_bar.domain_blocks": "Hidden domains", - "navigation_bar.pins": "Pinned toots", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.reblog": "{name} boosted your status", "notifications.column_settings.status": "New toots:", @@ -82,7 +79,6 @@ "status.copy": "Copy link to status", "status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}", "status.open": "Expand this status", - "status.pinned": "Pinned toot", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 6abdaee2bc..e97f9dc918 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -162,7 +162,6 @@ "column.lists": "Списки", "column.mutes": "Приховані користувачі", "column.notifications": "Сповіщення", - "column.pins": "Закріплені дописи", "column.public": "Глобальна стрічка", "column_back_button.label": "Назад", "column_header.hide_settings": "Приховати налаштування", @@ -466,7 +465,6 @@ "keyboard_shortcuts.my_profile": "Відкрити ваш профіль", "keyboard_shortcuts.notifications": "Відкрити колонку сповіщень", "keyboard_shortcuts.open_media": "Відкрити медіа", - "keyboard_shortcuts.pinned": "Відкрити список закріплених дописів", "keyboard_shortcuts.profile": "Відкрити профіль автора", "keyboard_shortcuts.reply": "Відповісти", "keyboard_shortcuts.requests": "Відкрити список охочих підписатися", @@ -550,7 +548,6 @@ "navigation_bar.mutes": "Приховані користувачі", "navigation_bar.opened_in_classic_interface": "Дописи, облікові записи та інші специфічні сторінки усталено відкриваються в класичному вебінтерфейсі.", "navigation_bar.personal": "Особисте", - "navigation_bar.pins": "Закріплені дописи", "navigation_bar.preferences": "Налаштування", "navigation_bar.public_timeline": "Глобальна стрічка", "navigation_bar.search": "Пошук", @@ -846,8 +843,6 @@ "status.mute": "Приховати @{name}", "status.mute_conversation": "Ігнорувати розмову", "status.open": "Розгорнути допис", - "status.pin": "Закріпити у профілі", - "status.pinned": "Закріплений допис", "status.read_more": "Дізнатися більше", "status.reblog": "Поширити", "status.reblog_private": "Поширити для початкової аудиторії", @@ -872,7 +867,6 @@ "status.translated_from_with": "Перекладено з {lang} за допомогою {provider}", "status.uncached_media_warning": "Попередній перегляд недоступний", "status.unmute_conversation": "Не ігнорувати розмову", - "status.unpin": "Відкріпити від профілю", "subscribed_languages.lead": "Лише дописи вибраними мовами з'являтимуться на вашій домівці та у списку стрічок після змін. Виберіть «none», щоб отримувати повідомлення всіма мовами.", "subscribed_languages.save": "Зберегти зміни", "subscribed_languages.target": "Змінити підписані мови для {target}", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index 706541ffb9..218169a0c9 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -87,7 +87,6 @@ "column.lists": "فہرستیں", "column.mutes": "خاموش کردہ صارفین", "column.notifications": "اطلاعات", - "column.pins": "چسپاں ٹوٹ", "column.public": "مجموعی زمانی جدول", "column_back_button.label": "واپس", "column_header.hide_settings": "ترتیبات کو چھپائیں", @@ -196,7 +195,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned toots list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "to reply", "keyboard_shortcuts.requests": "to open follow requests list", @@ -221,7 +219,6 @@ "navigation_bar.logout": "لاگ آؤٹ", "navigation_bar.mutes": "خاموش کردہ صارفین", "navigation_bar.personal": "ذاتی", - "navigation_bar.pins": "Pinned toots", "navigation_bar.preferences": "ترجیحات", "navigation_bar.public_timeline": "وفاقی ٹائم لائن", "navigation_bar.security": "سیکورٹی", @@ -246,7 +243,6 @@ "status.copy": "Copy link to status", "status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}", "status.open": "Expand this status", - "status.pinned": "Pinned toot", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}", "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}", diff --git a/app/javascript/mastodon/locales/uz.json b/app/javascript/mastodon/locales/uz.json index 92673f9044..305364fcaf 100644 --- a/app/javascript/mastodon/locales/uz.json +++ b/app/javascript/mastodon/locales/uz.json @@ -96,7 +96,6 @@ "column.lists": "Ro‘yxat", "column.mutes": "Ovozsiz foydalanuvchilar", "column.notifications": "Bildirishnomalar", - "column.pins": "Belgilangan post", "column.public": "Federatsiyalangan vaqt jadvali", "column_back_button.label": "Orqaga", "column_header.hide_settings": "Sozlamalarni yashirish", @@ -263,7 +262,6 @@ "keyboard_shortcuts.my_profile": "Profilingizni ochish", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "Mediani ochish", - "keyboard_shortcuts.pinned": "Qattiqlangan postlar roʻyxatini oching", "keyboard_shortcuts.profile": "Muallif profilini ochish", "keyboard_shortcuts.reply": "Postga javob berish", "keyboard_shortcuts.requests": "Kuzatuv soʻrovlari roʻyxatini ochish", @@ -298,7 +296,6 @@ "navigation_bar.logout": "Chiqish", "navigation_bar.mutes": "Ovozsiz foydalanuvchilar", "navigation_bar.personal": "Shaxsiy", - "navigation_bar.pins": "Belgilangan postlar", "navigation_bar.preferences": "Sozlamalar", "navigation_bar.public_timeline": "Federatsiyalangan vaqt jadvali", "navigation_bar.search": "Izlash", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index fe00abcea2..4db19386d2 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -133,7 +133,7 @@ "block_modal.you_wont_see_mentions": "Bạn sẽ không nhìn thấy tút có nhắc đến họ.", "boost_modal.combo": "Nhấn {combo} để bỏ qua bước này", "boost_modal.reblog": "Đăng lại?", - "boost_modal.undo_reblog": "Hủy đăng lại?", + "boost_modal.undo_reblog": "Bỏ đăng lại?", "bundle_column_error.copy_stacktrace": "Sao chép báo lỗi", "bundle_column_error.error.body": "Không thể hiện trang này. Đây có thể là một lỗi trong mã lập trình của chúng tôi, hoặc là vấn đề tương thích của trình duyệt.", "bundle_column_error.error.title": "Ôi không!", @@ -168,7 +168,7 @@ "column.lists": "Danh sách", "column.mutes": "Người đã ẩn", "column.notifications": "Thông báo", - "column.pins": "Tút ghim", + "column.pins": "Tút nổi bật", "column.public": "Liên hợp", "column_back_button.label": "Quay lại", "column_header.hide_settings": "Ẩn bộ lọc", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "mở hồ sơ của bạn", "keyboard_shortcuts.notifications": "mở thông báo", "keyboard_shortcuts.open_media": "mở ảnh hoặc video", - "keyboard_shortcuts.pinned": "mở những tút đã ghim", + "keyboard_shortcuts.pinned": "mở tút nổi bật", "keyboard_shortcuts.profile": "mở trang của người đăng tút", "keyboard_shortcuts.reply": "trả lời", "keyboard_shortcuts.requests": "mở danh sách yêu cầu theo dõi", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "Người đã ẩn", "navigation_bar.opened_in_classic_interface": "Tút, tài khoản và các trang cụ thể khác được mở theo mặc định trong giao diện web cổ điển.", "navigation_bar.personal": "Cá nhân", - "navigation_bar.pins": "Tút ghim", + "navigation_bar.pins": "Tút nổi bật", "navigation_bar.preferences": "Cài đặt", "navigation_bar.public_timeline": "Liên hợp", "navigation_bar.search": "Tìm kiếm", @@ -831,7 +831,7 @@ "status.admin_status": "Mở tút này trong giao diện quản trị", "status.block": "Chặn @{name}", "status.bookmark": "Lưu", - "status.cancel_reblog_private": "Hủy đăng lại", + "status.cancel_reblog_private": "Bỏ đăng lại", "status.cannot_reblog": "Không thể đăng lại tút này", "status.continued_thread": "Tiếp tục chủ đề", "status.copy": "Sao chép URL", @@ -857,8 +857,7 @@ "status.mute": "Ẩn @{name}", "status.mute_conversation": "Không quan tâm nữa", "status.open": "Đọc tút", - "status.pin": "Ghim lên hồ sơ", - "status.pinned": "Tút đã ghim", + "status.pin": "Nêu bật trên hồ sơ", "status.read_more": "Đọc tiếp", "status.reblog": "Đăng lại", "status.reblog_private": "Đăng lại (Riêng tư)", @@ -883,7 +882,7 @@ "status.translated_from_with": "Dịch từ {lang} bằng {provider}", "status.uncached_media_warning": "Không bản xem trước", "status.unmute_conversation": "Quan tâm", - "status.unpin": "Bỏ ghim trên hồ sơ", + "status.unpin": "Bỏ nêu bật trên hồ sơ", "subscribed_languages.lead": "Chỉ các tút đăng bằng các ngôn ngữ đã chọn mới được xuất hiện trên bảng tin của bạn. Không chọn gì cả để đọc tút đăng bằng mọi ngôn ngữ.", "subscribed_languages.save": "Lưu thay đổi", "subscribed_languages.target": "Đổi ngôn ngữ mong muốn cho {target}", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index 48f5f51626..7c3f65562d 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -25,7 +25,6 @@ "column.home": "ⴰⵙⵏⵓⴱⴳ", "column.lists": "ⵜⵉⵍⴳⴰⵎⵉⵏ", "column.notifications": "ⵜⵉⵏⵖⵎⵉⵙⵉⵏ", - "column.pins": "Pinned toot", "column_back_button.label": "ⴰⵖⵓⵍ", "column_header.hide_settings": "ⵙⵏⵜⵍ ⵜⵉⵙⵖⴰⵍ", "column_header.pin": "ⵖⵏⵙ", @@ -91,7 +90,6 @@ "keyboard_shortcuts.my_profile": "to open your profile", "keyboard_shortcuts.notifications": "to open notifications column", "keyboard_shortcuts.open_media": "to open media", - "keyboard_shortcuts.pinned": "to open pinned toots list", "keyboard_shortcuts.profile": "to open author's profile", "keyboard_shortcuts.reply": "ⵉ ⵓⵔⴰⵔⵉ", "keyboard_shortcuts.requests": "to open follow requests list", @@ -113,7 +111,6 @@ "navigation_bar.follow_requests": "ⵜⵓⵜⵔⴰⵡⵉⵏ ⵏ ⵓⴹⴼⴰⵕ", "navigation_bar.lists": "ⵜⵉⵍⴳⴰⵎⵉⵏ", "navigation_bar.logout": "ⴼⴼⵖ", - "navigation_bar.pins": "Pinned toots", "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.follow": "ⵉⴹⴼⴼⴰⵔ ⴽ {name}", "notification.reblog": "{name} boosted your status", @@ -155,7 +152,6 @@ "status.mute": "ⵥⵥⵉⵥⵏ @{name}", "status.mute_conversation": "ⵥⵥⵉⵥⵏ ⴰⵎⵙⴰⵡⴰⵍ", "status.open": "Expand this status", - "status.pinned": "Pinned toot", "status.read_more": "ⵖⵔ ⵓⴳⴳⴰⵔ", "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.", "status.reply": "ⵔⴰⵔ", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index 772ff04a61..bd910b1e7b 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -167,7 +167,6 @@ "column.lists": "列表", "column.mutes": "已隐藏的用户", "column.notifications": "通知", - "column.pins": "置顶嘟文", "column.public": "跨站公共时间线", "column_back_button.label": "返回", "column_header.hide_settings": "隐藏设置", @@ -470,7 +469,6 @@ "keyboard_shortcuts.my_profile": "打开你的个人资料", "keyboard_shortcuts.notifications": "打开通知栏", "keyboard_shortcuts.open_media": "打开媒体", - "keyboard_shortcuts.pinned": "打开置顶嘟文列表", "keyboard_shortcuts.profile": "打开作者的个人资料", "keyboard_shortcuts.reply": "回复嘟文", "keyboard_shortcuts.requests": "打开关注请求列表", @@ -554,7 +552,6 @@ "navigation_bar.mutes": "已隐藏的用户", "navigation_bar.opened_in_classic_interface": "嘟文页、个人资料与其他某些页面默认在经典网页界面中打开。", "navigation_bar.personal": "个人", - "navigation_bar.pins": "置顶嘟文", "navigation_bar.preferences": "偏好设置", "navigation_bar.public_timeline": "跨站时间线", "navigation_bar.search": "搜索", @@ -850,8 +847,6 @@ "status.mute": "隐藏 @{name}", "status.mute_conversation": "关闭此对话的通知", "status.open": "展开嘟文", - "status.pin": "在个人资料页面置顶", - "status.pinned": "置顶嘟文", "status.read_more": "查看更多", "status.reblog": "转嘟", "status.reblog_private": "以相同可见性转嘟", @@ -876,7 +871,6 @@ "status.translated_from_with": "由 {provider} 翻译自 {lang}", "status.uncached_media_warning": "预览不可用", "status.unmute_conversation": "恢复此对话的通知提醒", - "status.unpin": "在个人资料页面取消置顶", "subscribed_languages.lead": "更改此选择后,只有选定语言的嘟文才会出现在你的主页和列表时间线上。选择「无」将显示所有语言的嘟文。", "subscribed_languages.save": "保存更改", "subscribed_languages.target": "更改 {target} 的订阅语言", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index 745f7a4689..d09e4b6b21 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -125,7 +125,6 @@ "column.lists": "列表", "column.mutes": "靜音名單", "column.notifications": "通知", - "column.pins": "置頂文章", "column.public": "跨站時間軸", "column_back_button.label": "返回", "column_header.hide_settings": "隱藏設定", @@ -376,7 +375,6 @@ "keyboard_shortcuts.my_profile": "開啟個人資料頁面", "keyboard_shortcuts.notifications": "開啟通知欄", "keyboard_shortcuts.open_media": "開啟媒體", - "keyboard_shortcuts.pinned": "開啟釘選的文章清單", "keyboard_shortcuts.profile": "開啟作者的個人資料頁面", "keyboard_shortcuts.reply": "回覆", "keyboard_shortcuts.requests": "開啟關注請求名單", @@ -433,7 +431,6 @@ "navigation_bar.mutes": "靜音名單", "navigation_bar.opened_in_classic_interface": "帖文、帳號及其他特定頁面將預設在經典網頁介面中打開。", "navigation_bar.personal": "個人", - "navigation_bar.pins": "置頂文章", "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "跨站時間軸", "navigation_bar.search": "搜尋", @@ -665,8 +662,6 @@ "status.mute": "把 @{name} 靜音", "status.mute_conversation": "靜音對話", "status.open": "展開文章", - "status.pin": "置頂到資料頁", - "status.pinned": "置頂文章", "status.read_more": "閱讀更多", "status.reblog": "轉推", "status.reblog_private": "轉推到原讀者", @@ -689,7 +684,6 @@ "status.translated_from_with": "使用 {provider} 翻譯 {lang}", "status.uncached_media_warning": "無法預覽", "status.unmute_conversation": "對話解除靜音", - "status.unpin": "解除置頂", "subscribed_languages.lead": "更改後,只有所選語言的帖文會出現在你的主頁和列表時間軸上。選擇「無」以接收所有語言的帖文。", "subscribed_languages.save": "儲存變更", "subscribed_languages.target": "變更 {target} 的訂閱語言", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 9145cab2eb..372ffadae3 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -168,7 +168,7 @@ "column.lists": "列表", "column.mutes": "已靜音的使用者", "column.notifications": "推播通知", - "column.pins": "釘選的嘟文", + "column.pins": "精選嘟文", "column.public": "聯邦時間軸", "column_back_button.label": "上一頁", "column_header.hide_settings": "隱藏設定", @@ -477,7 +477,7 @@ "keyboard_shortcuts.my_profile": "開啟個人檔案頁面", "keyboard_shortcuts.notifications": "開啟通知欄", "keyboard_shortcuts.open_media": "開啟媒體", - "keyboard_shortcuts.pinned": "開啟釘選的嘟文列表", + "keyboard_shortcuts.pinned": "開啟精選嘟文列表", "keyboard_shortcuts.profile": "開啟作者的個人檔案頁面", "keyboard_shortcuts.reply": "回應嘟文", "keyboard_shortcuts.requests": "開啟跟隨請求列表", @@ -561,7 +561,7 @@ "navigation_bar.mutes": "已靜音的使用者", "navigation_bar.opened_in_classic_interface": "預設於經典網頁介面中開啟嘟文、帳號與其他特定頁面。", "navigation_bar.personal": "個人", - "navigation_bar.pins": "釘選的嘟文", + "navigation_bar.pins": "精選嘟文", "navigation_bar.preferences": "偏好設定", "navigation_bar.public_timeline": "聯邦時間軸", "navigation_bar.search": "搜尋", @@ -857,8 +857,7 @@ "status.mute": "靜音 @{name}", "status.mute_conversation": "靜音對話", "status.open": "展開此嘟文", - "status.pin": "釘選至個人檔案頁面", - "status.pinned": "釘選嘟文", + "status.pin": "於個人檔案推薦", "status.read_more": "閱讀更多", "status.reblog": "轉嘟", "status.reblog_private": "依照原嘟可見性轉嘟", @@ -883,7 +882,7 @@ "status.translated_from_with": "透過 {provider} 翻譯 {lang}", "status.uncached_media_warning": "無法預覽", "status.unmute_conversation": "解除此對話的靜音", - "status.unpin": "自個人檔案頁面取消釘選", + "status.unpin": "取消於個人檔案推薦", "subscribed_languages.lead": "僅選定語言的嘟文才會出現於您的首頁上,並於變更後列出時間軸。選取「無」以接收所有語言的嘟文。", "subscribed_languages.save": "儲存變更", "subscribed_languages.target": "變更 {target} 的訂閱語言", diff --git a/config/locales/activerecord.eo.yml b/config/locales/activerecord.eo.yml index 57012564be..96b7ee89fd 100644 --- a/config/locales/activerecord.eo.yml +++ b/config/locales/activerecord.eo.yml @@ -55,6 +55,8 @@ eo: too_soon: estas tro frue, devas esti pli malfrue ol %{date} user: attributes: + date_of_birth: + below_limit: estas sub la aĝlimidato email: blocked: uzas nepermesitan retpoŝtan provizanton unreachable: ŝajne ne ekzistas diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 9b4ee45d92..652505f3ad 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -903,6 +903,8 @@ ca: system_checks: database_schema_check: message_html: Hi ha pendents migracions de la base de dades. Executeu-les per a assegurar que l'aplicació es comporta com s'espera + elasticsearch_analysis_index_mismatch: + message_html: La configuració de l'índex de l'analitzador d'Elasticsearch està desactualizada. Executa tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: El cluster de Elasticsearch no es saludable (estat vermell), les funcions de cerca no estan disponibles elasticsearch_health_yellow: diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 37cd0b3bf6..bb9f187254 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -931,6 +931,8 @@ cs: system_checks: database_schema_check: message_html: Na spuštění čekají databázové migrace. Nechte je prosím proběhnout pro zajištění očekávaného chování aplikace + elasticsearch_analysis_index_mismatch: + message_html: Nastavení analyzátoru Elasticsearch indexu je zastaralé. Prosím spusťte tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: Elasticsearch cluster je nezdravý (červený stav), vyhledávací funkce jsou nedostupné elasticsearch_health_yellow: diff --git a/config/locales/da.yml b/config/locales/da.yml index 63a414811e..db83d2a64b 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -903,6 +903,8 @@ da: system_checks: database_schema_check: message_html: Databasemigreringer afventer. Kør dem for at sikre den forventede adfærd fra applikationen + elasticsearch_analysis_index_mismatch: + message_html: Elasticsearch-indeksanalyseringsindstillinger er forældede. Kør tootctl search deploy --only=%{value} elasticsearch_health_red: message_html: Elasticsearch-klynge er syg (rød status), søgefunktioner er utilgængelige elasticsearch_health_yellow: diff --git a/config/locales/de.yml b/config/locales/de.yml index 08496b9044..4a9fdd5cfb 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -844,7 +844,7 @@ de: destroyed_msg: Upload erfolgreich gelöscht! software_updates: critical_update: Kritisch — bitte zügig aktualisieren - description: Es wird empfohlen, deine Mastodon-Installation auf dem aktuellen Stand zu halten, um von den neuesten Fehlerbehebungen und Funktionen zu profitieren. Darüber hinaus ist es wichtig, Mastodon zeitnah zu aktualisieren, um Sicherheitslücken zu schließen. Aus diesen Gründen prüft Mastodon alle 30 Minuten auf Updates und du wirst entsprechend deiner Einstellungen per E-Mail informiert. + description: Es wird empfohlen, deine Mastodon-Installation auf dem aktuellen Stand zu halten, um von den neuesten Fehlerkorrekturen und Funktionen zu profitieren. Darüber hinaus ist es wichtig, Mastodon zeitnah zu aktualisieren, um Sicherheitslücken zu schließen. Aus diesen Gründen prüft Mastodon alle 30 Minuten auf Updates und du wirst deinen Einstellungen entsprechend per E-Mail informiert. documentation_link: Mehr erfahren release_notes: Versionshinweise title: Verfügbare Updates @@ -852,7 +852,7 @@ de: types: major: Hauptversion minor: Nebenversion - patch: Revision — Fehlerbehebungen und einfach zu implementierende Änderungen + patch: Revision — Fehlerkorrekturen und einfach zu implementierende Änderungen version: Version statuses: account: Autor*in @@ -900,6 +900,8 @@ de: system_checks: database_schema_check: message_html: Es gibt ausstehende Datenbankmigrationen. Bitte führe sie aus, um sicherzustellen, dass sich die Anwendung wie erwartet verhält + elasticsearch_analysis_index_mismatch: + message_html: 'Die Einstellungen für die Indexanalyse von Elasticsearch sind veraltet. Bitte führe diesen Code aus: tootctl search deploy --only-mapping --only=%{value}' elasticsearch_health_red: message_html: Elasticsearch-Cluster ist fehlerhaft (roter Status) – Suchfunktionen sind nicht verfügbar elasticsearch_health_yellow: @@ -932,7 +934,7 @@ de: message_html: Ein kritisches Mastodon-Update ist verfügbar – bitte aktualisiere so schnell wie möglich. software_version_patch_check: action: Verfügbare Updates ansehen - message_html: Ein Mastodon-Update für Fehlerbehebungen ist verfügbar. + message_html: Ein Mastodon-Update für Fehlerkorrekturen ist verfügbar. upload_check_privacy_error: action: Für weitere Informationen hier klicken message_html: "Die Konfiguration deines Servers ist fehlerhaft. Die Privatsphäre deiner Benutzer*innen ist gefährdet." diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index ab3d307fd8..18767dc0db 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -903,6 +903,8 @@ es-AR: system_checks: database_schema_check: message_html: Hay migraciones pendientes de la base de datos. Por favor, ejecutalas para asegurarte de que la aplicación funciona según lo esperado + elasticsearch_analysis_index_mismatch: + message_html: La configuración del analizador de índices Elasticsearch está desactualizada. Por favor, ejecutá tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: El estado del clúster de Elasticsearch no es saludable (estado rojo), las funciones de búsqueda no están disponibles elasticsearch_health_yellow: diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 3032b663a1..160f26e365 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -903,6 +903,8 @@ es-MX: system_checks: database_schema_check: message_html: Hay migraciones pendientes de la base de datos. Por favor, ejecútalas para asegurarte de que la aplicación funciona como debería + elasticsearch_analysis_index_mismatch: + message_html: La configuración del analizador de índices de Elasticsearch no está actualizada. Por favor, ejecute tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: Clúster de Elasticsearch no es saludable (estado rojo), las funciones de búsqueda no están disponibles elasticsearch_health_yellow: diff --git a/config/locales/es.yml b/config/locales/es.yml index 9e0feb9d18..85f6088822 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -903,6 +903,8 @@ es: system_checks: database_schema_check: message_html: Hay migraciones pendientes de la base de datos. Por favor, ejecútalas para asegurarte de que la aplicación funciona como debería + elasticsearch_analysis_index_mismatch: + message_html: La configuración del analizador de índices de Elasticsearch no está actualizada. Por favor, ejecute tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: El estado del clúster de Elasticsearch no es saludable (estado rojo), las funciones de búsqueda no están disponibles elasticsearch_health_yellow: diff --git a/config/locales/fi.yml b/config/locales/fi.yml index f8d9840d70..595ea02759 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -894,6 +894,8 @@ fi: system_checks: database_schema_check: message_html: Tietokannan siirto on vireillä. Suorita ne varmistaaksesi, että sovellus toimii odotetulla tavalla + elasticsearch_analysis_index_mismatch: + message_html: Elasticsearch-indeksin analysaattoriasetukset ovat vanhentuneet. Suorita tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: Elasticsearch-klusteri on vikatilassa (punainen tila), joten hakuominaisuudet eivät ole käytettävissä elasticsearch_health_yellow: diff --git a/config/locales/fo.yml b/config/locales/fo.yml index 8e611c346d..4bb4327949 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -903,6 +903,8 @@ fo: system_checks: database_schema_check: message_html: Dátugrunnaflytingar bíða. Vinarliga koyr flytingarnar fyri at tryggja at skipanin skikkar sær sum hon skal + elasticsearch_analysis_index_mismatch: + message_html: Elasticsearch indeks greiningar-stillingar eru avoldaðar. Vinarliga koyr tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: Elasticsearch cluster er ósunt (reyð støða), leitimøguleikar eru ikki tøkir elasticsearch_health_yellow: diff --git a/config/locales/fy.yml b/config/locales/fy.yml index 119d08be2d..791b8ae455 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -309,6 +309,7 @@ fy: title: Auditlogboek unavailable_instance: "(domeinnamme net beskikber)" announcements: + back: Tebek nei meidielingen destroyed_msg: Fuortsmiten fan meidieling slagge! edit: title: Meidieling bewurkje @@ -317,6 +318,10 @@ fy: new: create: Meidieling oanmeitsje title: Nije meidieling + preview: + disclaimer: Omdat brûkers harren net foar dizze e-mailberjochten ôfmelde kinne, moatte e-mailmeldingen beheind wurde ta wichtige oankundigingen, lykas it lekken fan brûkersgegevens of meldingen oer it sluten fan dizze server. + explanation_html: 'It e-mailberjocht wurdt ferstjoerd nei %{display_count} brûkers. De folgjende tekst sil yn it e-mailberjocht opnommen wurde:' + title: Foarbyld fan meidieling publish: Publisearje published_msg: Publisearjen fan meidieling slagge! scheduled_for: Ynpland foar %{time} @@ -475,6 +480,36 @@ fy: new: title: Domeinblokkaden ymportearje no_file: Gjin bestân selektearre + fasp: + debug: + callbacks: + created_at: Oanmakke op + delete: Fuortsmite + ip: IP-adres + request_body: Kearntekst opfreegje + title: Callbacks debugge + providers: + active: Aktyf + base_url: Basis-URL + callback: Callback + delete: Fuortsmite + edit: Provider bewurkje + finish_registration: Registraasje foltôgje + name: Namme + providers: Providers + public_key_fingerprint: Fingerôfdruk fan publike kaai + registration_requested: Registraasje oanfrege + registrations: + confirm: Befêstigje + description: Jo hawwe in registraasje ûntfongen fan in FASP. Wegerje dizze as jo dit net oanfrege hawwe. Hawwe jo dit wol oanfrege, fergelykje dan soarchfuldich de namme en de fingerôfdruk fan de kaai eardat jo de registraasje befêstigje. + reject: Wegerje + title: FASP-registraasje befêstigje + save: Bewarje + select_capabilities: Mooglikheden selektearje + sign_in: Oanmelde + status: Status + title: Fediverse Auxiliary Service Providers + title: FASP follow_recommendations: description_html: "Dizze oanrekommandearre accounts helpe nije brûkers fluch ynteressante ynhâldte finen. Wannear’t in brûker net mei oare brûkers genôch ynteraksje hân hat om personalisearre oanrekommandaasjes te krijen, wurde yn stee dêrfan dizze accounts oanrekommandearre. Dizze accounts wurde deistich opnij berekkene mei help fan accounts mei it heechste tal resinte ynteraksjes en it heechste tal lokale folgers yn in bepaalde taal." language: Foar taal @@ -868,6 +903,8 @@ fy: system_checks: database_schema_check: message_html: Der binne database migraasjes yn ôfwachting. Jo moatte dizze útfiere om der foar te soargjen dat de applikaasje wurkjen bliuwt sa as it heard + elasticsearch_analysis_index_mismatch: + message_html: Elasticsearch-yndeksanalysearynstellingen binne ferâldere. Fier tootctl search deploy --only-mapping --only=%{value} út elasticsearch_health_red: message_html: Elasticsearch-cluster is net sûn (reade status), sykfunksjes binne net beskikber elasticsearch_health_yellow: @@ -939,6 +976,7 @@ fy: chance_to_review_html: "De generearre gebrûksbetingsten wurde net automatysk publisearre. Jo krije gelegenheid om de resultaten te besjen. Folje de nedige gegevens yn om troch te gean." explanation_html: It sjabloan foar de gebrûksbetingsten is útslutend bedoeld foar ynformative doeleinen en mei net opfette wurde as juridysk advys oer hokker ûnderwerp dan ek. Freegje in eigen juridysk adviseur oer jo situaasje en foar spesifike juridyske fragen. title: Gebrûksbetingsten ynstelle + going_live_on_html: Aktueel mei yngong fan %{date} history: Skiednis live: Aktueel no_history: Der binne noch gjin bewarre wizigingen fan de gebrûksbetingsten. @@ -1904,6 +1942,10 @@ fy: recovery_instructions_html: Wannear’t jo ea de tagong ta jo telefoan ferlieze, kinne jo mei help fan ien fan de werstelkoaden hjirûnder opnij tagong krije ta jo account. Soargje derfoar dat jo de werstelkoaden op in feilich plak bewarje. Jo kinne se bygelyks ôfdrukke en se tegearre mei oare wichtige dokuminten bewarje. webauthn: Befeiligingskaaien user_mailer: + announcement_published: + description: 'De behearders fan %{domain} dogge in meidieling:' + subject: Service-oankundiging + title: Service-oankundiging %{domain} appeal_approved: action: Accountynstellingen explanation: It beswier tsjin in troch in moderator fêststelde skeining fan jo op %{strike_date}, yntsjinne op %{appeal_date}, is goedkard. De earder fêststelde skeining is hjirby net langer jildich. @@ -1936,6 +1978,8 @@ fy: terms_of_service_changed: agreement: Troch %{domain} brûke te bliuwen, geane jo akkoard mei dizze betingsten. As jo it net iens binne mei de bywurke betingsten, kinne jo jo oerienkomst mei %{domain} op elk winske momint beëinigje troch jo account fuort te smiten. changelog: 'Yn ien eachopslach betsjut dizze update foar jo:' + description: 'Jo ûntfange dit berjocht, omdat wy inkelde wizigingen oanbringe yn ús gebrûksbetingsten by %{domain}. Dizze oanpassingen wurde fan krêft op %{date}. Wy riede jo oan om de bywurke betingsten hjir folslein te besjen:' + description_html: Jo ûntfange dit e-mailberjocht, omdat wy inkelde wizigingen oanbringe yn ús gebrûksbetingsten by %{domain}. Dizze oanpassingen wurde fan krêft op %{date}. Wy riede jo oan om de bywurke betingsten hjir folslein te besjen. sign_off: It %{domain}-team subject: Aktualisaasje fan ús tsjinstbetingsten subtitle: De gebrûksbetingsten fan %{domain} wizigje diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 58d02fc6a9..d27f531c7e 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -328,6 +328,7 @@ ga: create: Cruthaigh fógra title: Fógra nua preview: + disclaimer: Ós rud é nach féidir le húsáideoirí rogha an diúltaithe a dhéanamh dóibh, ba cheart fógraí ríomhphoist a theorannú do fhógraí tábhachtacha amhail fógraí maidir le sárú sonraí pearsanta nó dúnadh freastalaí. explanation_html: 'Seolfar an ríomhphost chuig %{display_count} úsáideoir. Beidh an téacs seo a leanas san áireamh sa ríomhphost:' title: Fógra réamhamhairc na fógraíochta publish: Foilsigh @@ -944,6 +945,8 @@ ga: system_checks: database_schema_check: message_html: Tá aistrithe bunachar sonraí ar feitheamh. Rith iad le do thoil chun a chinntiú go n-iompraíonn an t-iarratas mar a bhíothas ag súil leis + elasticsearch_analysis_index_mismatch: + message_html: Tá socruithe anailíseora innéacs Elasticsearch as dáta. Rith tootctl search deploy --only-mapping --only=%{value}le do thoil elasticsearch_health_red: message_html: Tá braisle Elasticsearch míshláintiúil (stádas dearg), níl gnéithe cuardaigh ar fáil elasticsearch_health_yellow: diff --git a/config/locales/gl.yml b/config/locales/gl.yml index ed51799e8a..371a60eb58 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -903,6 +903,8 @@ gl: system_checks: database_schema_check: message_html: Existen migracións pendentes na base de datos. Bota man desta tarefa para facer que a aplicación funcione como se agarda dela + elasticsearch_analysis_index_mismatch: + message_html: Os axustes do analizador do índice Elasticsearch están obsoletos. Por favor executa tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: O grupo Elasticsearch non está ben (en vermello), as ferramentas de busca non están dispoñibles elasticsearch_health_yellow: diff --git a/config/locales/he.yml b/config/locales/he.yml index 457569d05a..3690010b95 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -931,6 +931,8 @@ he: system_checks: database_schema_check: message_html: נדרשות הגירות מבני נתונים. אנא הריצו אותן כדי להבטיח שהיישום מתנהג כצפוי + elasticsearch_analysis_index_mismatch: + message_html: מאפייני בוחן האינדקס של Elasticsearch אינם עדכניים. יש להריץ tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: אשכול שירותי חיפוש Elasticsearch אינו זמין כעת (מצב אדום), אפשרויות חיפוש אינן זמינות כרגע elasticsearch_health_yellow: diff --git a/config/locales/hu.yml b/config/locales/hu.yml index ef5d8d97e6..dfd6a597d4 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -903,6 +903,8 @@ hu: system_checks: database_schema_check: message_html: Vannak esedékes adatbázis migrációink. Kérlek, futtasd őket, hogy biztosítsd, hogy az alkalmazás megfelelően működjön + elasticsearch_analysis_index_mismatch: + message_html: Az Elasticsearch indexelemző beállításai elavultak. Futtasd a tootctl search deploy --only-mapping --only=%{value} parancsot. elasticsearch_health_red: message_html: Az Elasticsearch klaszter egészségtelen (piros állapotú), a keresési funkciók nem érhetők el elasticsearch_health_yellow: diff --git a/config/locales/is.yml b/config/locales/is.yml index 0516fa4eb8..17dc450776 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -905,6 +905,8 @@ is: system_checks: database_schema_check: message_html: Það eru fyrirliggjandi yfirfærslur á gagnagrunnum. Keyrðu þær til að tryggja að forritið hegði sér eins og skyldi + elasticsearch_analysis_index_mismatch: + message_html: Stillingar á Elasticsearch efnisskráningargreingu eru úreltar. Þú skalt endilega keyra tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: Elasticsearch-klasinn er ekki í góðu standi (rauð staða), leitareiginleikar eru ekki tiltækir elasticsearch_health_yellow: diff --git a/config/locales/lt.yml b/config/locales/lt.yml index f0da6d5f15..a8d30cf873 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -619,6 +619,8 @@ lt: system_checks: database_schema_check: message_html: Laukiama duomenų bazės perkėlimo. Paleisk juos, kad įsitikintum, jog programa veikia taip, kaip tikimasi. + elasticsearch_analysis_index_mismatch: + message_html: "„Elasticsearch“ indekso analizatoriaus nustatymai pasenę. Vykdykite tootctl search deploy --only-mapping --only=%{value}." elasticsearch_health_yellow: message_html: Elasticsearch klasteris yra nesveikas (geltona būsena), galbūt norėsi išsiaiškinti priežastį elasticsearch_preset: diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 345b11116f..924b7bf607 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -909,6 +909,8 @@ lv: system_checks: database_schema_check: message_html: Ir nepabeigtas datubāzes migrācijas. Lūgums palaist tās, lai nodrošinātu, ka lietotne darbojas, kā paredzēts + elasticsearch_analysis_index_mismatch: + message_html: 'Elasticsearch indeksa analizatora iestatījumi ir novecojuši. Lūdzu, izpildiet šo komandu: tootctl search deploy --only-mapping --only=%{value}' elasticsearch_health_red: message_html: Elasticsearch klasteris ir neveselīgs (sarkans statuss), meklēšanas līdzekļi nav pieejami elasticsearch_health_yellow: diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 5acd93ca13..7bbb2cfaf7 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -903,6 +903,8 @@ nl: system_checks: database_schema_check: message_html: Niet alle databasemigraties zijn voltooid. Je moet deze uitvoeren om er voor te zorgen dat de applicatie blijft werken zoals het hoort + elasticsearch_analysis_index_mismatch: + message_html: Elasticsearch index analyser instellingen zijn verouderd. Voer tootctl zoek deploy --only-mapping --only=%{value} uit elasticsearch_health_red: message_html: Elasticsearch-cluster is ongezond (rode status), zoekfuncties zijn niet beschikbaar elasticsearch_health_yellow: diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 342a1dbe1c..16a6be5c3a 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -4,7 +4,7 @@ de: hints: account: attribution_domains: Eine Domain pro Zeile. Dadurch können falsche Zuschreibungen unterbunden werden. - discoverable: Deine öffentlichen Beiträge und dein Profil können in verschiedenen Bereichen auf Mastodon angezeigt oder empfohlen werden und dein Profil kann anderen vorgeschlagen werden. + discoverable: Deine öffentlichen Beiträge und dein Profil können in verschiedenen Bereichen auf Mastodon vorgestellt oder empfohlen werden, ebenso kann dein Profil anderen vorgeschlagen werden. display_name: Dein richtiger Name oder dein Fantasiename. fields: Deine Website, Pronomen, dein Alter – alles, was du möchtest. indexable: Deine öffentlichen Beiträge können in den Suchergebnissen auf Mastodon erscheinen. Profile, die bereits mit deinen Beiträgen interagiert haben, können deine Beiträge immer auffinden. @@ -326,7 +326,7 @@ de: critical: Nur über kritische Updates informieren label: Eine neue Mastodon-Version ist verfügbar none: Nie über Updates informieren (nicht empfohlen) - patch: Über Fehlerbehebungen informieren + patch: Über Fehlerkorrekturen informieren trending_tag: Neuer Trend erfordert eine Überprüfung rule: hint: Zusätzliche Informationen diff --git a/config/locales/simple_form.fy.yml b/config/locales/simple_form.fy.yml index 4e82179ab9..66d034d99d 100644 --- a/config/locales/simple_form.fy.yml +++ b/config/locales/simple_form.fy.yml @@ -75,6 +75,7 @@ fy: filters: action: Kies hokker aksjes útfierd wurde moatte, wannear’t in berjocht oerienkomt mei it filter actions: + blur: Media ferstopje efter in warskôging, sûnder de tekst sels te ferstopjen hide: Ferstopje de filtere ynhâld folslein, as oft it net bestiet warn: Ferstopje de filtere ynhâld efter in warskôging, mei de titel fan it filter as warskôgingstekst form_admin_settings: @@ -88,6 +89,7 @@ fy: favicon: WEBP, PNG, GIF of JPG. Ferfangt de standert Mastodon-favicon mei in oanpast piktogram. mascot: Oerskriuwt de yllustraasje yn de avansearre webomjouwing. media_cache_retention_period: Mediabestannen fan berjochten fan eksterne brûkers wurde op jo server yn de buffer bewarre. Wannear ynsteld op in positive wearde, wurde media fuortsmiten nei it opjûne oantal dagen. As de mediagegevens opfrege wurde neidat se fuortsmiten binne, wurde se opnij download wannear de orizjinele ynhâld noch hieltyd beskikber is. Fanwegen beheiningen op hoe faak keppelingsfoarbylden websites fan tredden rieplachtsje, wurdt oanrekommandearre om dizze wearde yn te stellen op op syn minste 14 dagen. Oars wurde keppelingsfoarbylden net op oanfraach bywurke. + min_age: Brûkers krije wylst harren registraasje de fraach om harren bertedatum te befêstigjen peers_api_enabled: In list mei domeinnammen, dêr’t dizze server yn fediverse kontakt hân mei hat. Hjir wurdt gjin data dield, oft jo mei in bepaalde server federearrest, mar alinnich, dat jo server dat wit. Dit wurdt foar tsjinsten brûkt, dy’t statistiken oer federaasje yn algemiene sin sammelet. profile_directory: De brûkersgids befettet in list fan alle brûkers dy¥t derfoar keazen hawwe om ûntdekt wurde te kinnen. require_invite_text: Meitsje it ynfoljen fan ‘Wêrom wolle jo jo hjir registrearje?’ ferplicht yn stee fan opsjoneel, wannear’t registraasjes hânmjittich goedkard wurde moatte @@ -132,14 +134,21 @@ fy: name: Jo kinne elk wurd mei in haadletter begjinne, om sa bygelyks de tekst mear lêsber te meitsjen terms_of_service: changelog: Kin strukturearre wurde mei Markdown-syntaksis. + effective_date: In reedlike perioade kin fariearje fan 10 oant 30 dagen fan de datum ôf wêrop jo jo brûkers op de hichte stelle. text: Kin strukturearre wurde mei Markdown-syntaksis. terms_of_service_generator: admin_email: Juridyske meidielingen binne û.o. tsjinoantekeningen, rjochterlike befelen, ferwiderfersiken en fersiken om wetshanthaving. + arbitration_address: Kin itselde wêze as boppesteande strjitteof ‘N/A’ by gebrûk fan e-mail. + arbitration_website: Kin in webformulier wêze, of ‘N/A’ as e-mail brûkt wurdt. + choice_of_law: Stêd, regio, grûngebiet of steat dêr’t de ynterne materiële wetten fan tapassing binne op alle oanspraken. dmca_address: 'Brûk foar behearders yn de FS: it adres dat registrearre is yn de DMCA Designated Agent Directory. Op fersyk is der in postbuslist beskikber. Brûk it DMCA Designated Agent Post Office Box Waiver Request om it Copyright Office te e-mailen en te beskriuwen dat jo in thúsbasearre ynhâldsmoderator binne dy’t wraak of fergelding frezet foar jo dieden en in postbus brûke moat om jo húsadres út it publike domein te hâlden.' + dmca_email: Kin itselde e-mailadres wêze as ‘E-mailadres foar juridyske berjochten’ hjirboppe. domain: In unike identifikaasje fan de online tsjinst dy’t ferliend wurdt. jurisdiction: Fermeld it lân wêr’t de persoan wennet dy’t de rekkeningen betellet. As it in bedriuw of in oare entiteit is, fermeld it lân wêr’t it opnommen is en de stêd, regio, grûngebiet of steat, foar safier fan tapassing. + min_age: Mei net leger wêze as de minimale fereaske leeftiid neffens de wetten fan jo jurisdiksje. user: chosen_languages: Allinnich berjochten yn de selektearre talen wurde op de iepenbiere tiidline toand + date_of_birth: Wy moatte derfoar soargje dat jo op syn minst %{age} binne om Mastodon te brûken. Dit wurdt net bewarre. role: De rol bepaalt hokker rjochten in brûker hat. user_role: color: Kleur dy’t brûkt wurdt foar de rol yn de UI, as RGB yn heksadesimaal formaat @@ -230,6 +239,7 @@ fy: setting_display_media_show_all: Alles toane setting_expand_spoilers: Berjochten mei ynhâldswarskôgingen altyd útklappe setting_hide_network: Jo folgers en wa’t jo folget ferstopje + setting_missing_alt_text_modal: Befêstigingsfinster toane foar it pleatsen fan media sûnder alt-tekst setting_reduce_motion: Stadigere animaasjes setting_system_font_ui: Standertlettertype fan jo systeem brûke setting_system_scrollbars_ui: Standert skowbalke fan jo systeem brûke diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 01884c10e9..1c414edbed 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -896,6 +896,8 @@ sq: system_checks: database_schema_check: message_html: Ka migrime bazash të dhënash pezull. Ju lutemi, kryejini, për të qenë të sigurt se aplikacioni sillet siç priteet + elasticsearch_analysis_index_mismatch: + message_html: Rregulliemt për analizues treguesi Elasticsearch janë të vjetruara. Ju lutemi, ekzekutoni tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: Grupi juaj i instancave Elasticsearch s’është i shëndetshëm (gjendje e verdhë), s’mund të përdoren veçoritë e kërkimit elasticsearch_health_yellow: diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 751e6ae22f..ed16e490e0 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -903,6 +903,8 @@ tr: system_checks: database_schema_check: message_html: Beklemede olan veritabanı güncellemeleri mevcut. Uygulamanın beklenildiği gibi çalışması için lütfen onları çalıştırın + elasticsearch_analysis_index_mismatch: + message_html: Elasticsearch indeks çözümleyici ayarları artık güncel değil. Lütfen tootctl search deploy --only-mapping --only=%{value} komutunu çalıştırın elasticsearch_health_red: message_html: Elasticsearch kümesi sağlıksız (kırmızı durum), arama özellikleri mevcut değil elasticsearch_health_yellow: diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 0256773d32..34a9613181 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -901,6 +901,8 @@ uk: system_checks: database_schema_check: message_html: Існують відкладені перенесення бази даних. Запустіть їх, щоб забезпечити очікувану роботу програми + elasticsearch_analysis_index_mismatch: + message_html: Налаштування індексу Elasticsearch застарілі. Будь ласка, запустіть tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: Кластер Elasticsearch нездоровий (червоний статус), функції пошуку недоступні elasticsearch_health_yellow: diff --git a/config/locales/vi.yml b/config/locales/vi.yml index a255973a10..9294ac2e6d 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -889,6 +889,8 @@ vi: system_checks: database_schema_check: message_html: Có cơ sở dữ liệu đang chờ xử lý. Xin khởi động nó để ứng dụng có thể hoạt động một cách ổn định nhất + elasticsearch_analysis_index_mismatch: + message_html: Chuẩn đoán chỉ mục Elasticsearch đã lỗi thời. Hãy chạy tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: Cụm Elaticsearch không tốt (trạng thái đỏ), tính năng tìm kiếm không khả dụng elasticsearch_health_yellow: diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index ec02a126a9..aae4785790 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -490,6 +490,7 @@ zh-CN: name: 名称 providers: 提供商 public_key_fingerprint: 公钥指纹 + registration_requested: 已申请注册 registrations: confirm: 确认 reject: 拒绝 diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index fae08b3216..8281ae8dc1 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -891,6 +891,8 @@ zh-TW: system_checks: database_schema_check: message_html: 發現尚待處理的資料庫遷移 (database migration)。請執行它們以確保應用程式如期運行。 + elasticsearch_analysis_index_mismatch: + message_html: Elasticsearch 索引分析器設定 (index analyzer) 已過期。請執行 tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: Elasticsearch 叢集健康狀態異常 (紅色),無法提供搜尋功能 elasticsearch_health_yellow: From 3032d9d0ddaeddc858af2a685e77702738c4f172 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 09:33:51 +0200 Subject: [PATCH 051/349] chore(deps): update dependency shoulda-matchers to v6.5.0 (#34556) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4eb975c6c0..6960270127 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -807,7 +807,7 @@ GEM rubyzip (>= 1.2.2, < 3.0) websocket (~> 1.0) semantic_range (3.1.0) - shoulda-matchers (6.4.0) + shoulda-matchers (6.5.0) activesupport (>= 5.2.0) sidekiq (6.5.12) connection_pool (>= 2.2.5, < 3) From 1a1f3f037d471570465d42c44c47fd330a8ef0b6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 09:34:18 +0200 Subject: [PATCH 052/349] fix(deps): update dependency pg to v8.15.6 (#34555) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index c099cc427f..9293da3a00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13307,12 +13307,12 @@ __metadata: languageName: node linkType: hard -"pg-pool@npm:^3.9.5": - version: 3.9.5 - resolution: "pg-pool@npm:3.9.5" +"pg-pool@npm:^3.9.6": + version: 3.9.6 + resolution: "pg-pool@npm:3.9.6" peerDependencies: pg: ">=8.0" - checksum: 10c0/ebb36b6a1fd753213263a2e0e73d06ffe9fc93907deceae484c7fe4b464f6e9c41a578eb096b4b6012beec94a5d6e0e47728dfc4425e06d283744aa7432365a4 + checksum: 10c0/458d50a4e7260977f076472d40d0796fa8b513af7e3ce1bf65557e10724e9c13653661c883f6650dff92d0a1a5ff4e7a001a8262b786c1ad4cfbd35c3354353e languageName: node linkType: hard @@ -13352,12 +13352,12 @@ __metadata: linkType: hard "pg@npm:^8.5.0": - version: 8.15.5 - resolution: "pg@npm:8.15.5" + version: 8.15.6 + resolution: "pg@npm:8.15.6" dependencies: pg-cloudflare: "npm:^1.2.5" pg-connection-string: "npm:^2.8.5" - pg-pool: "npm:^3.9.5" + pg-pool: "npm:^3.9.6" pg-protocol: "npm:^1.9.5" pg-types: "npm:^2.1.0" pgpass: "npm:1.x" @@ -13369,7 +13369,7 @@ __metadata: peerDependenciesMeta: pg-native: optional: true - checksum: 10c0/4c118cd9bec37c8880b4489b9acbd10cf1eaa86a0a9024de2dac83f4ce5adedecc4cab54b66fa3bcb204aab7297c08d03617ae15499538939692b48651cc52d1 + checksum: 10c0/d4dc81020ebd137b6cf6228e43c643067acb8240079a07f7b9a7e97be0f33ad4d8c6f2a3f5b512ad87180e3d48e651fbd72885aa807ab58a715da8f3efea0fab languageName: node linkType: hard From 9ed6a14d4507dcad8366f704bbe86a0d42d333ac Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 28 Apr 2025 10:48:27 +0200 Subject: [PATCH 053/349] Add support for ingesting quote policies (#34479) --- app/lib/activitypub/activity/create.rb | 8 +- app/lib/activitypub/parser/status_parser.rb | 36 ++++++ app/models/status.rb | 8 ++ .../process_status_update_service.rb | 8 +- ...9_add_quote_approval_policy_to_statuses.rb | 7 ++ db/schema.rb | 3 +- .../activitypub/parser/status_parser_spec.rb | 115 +++++++++++++++++- 7 files changed, 181 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20250428095029_add_quote_approval_policy_to_statuses.rb diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 23afda32cd..1710fc80b4 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -83,7 +83,12 @@ class ActivityPub::Activity::Create < ActivityPub::Activity end def process_status_params - @status_parser = ActivityPub::Parser::StatusParser.new(@json, followers_collection: @account.followers_url, object: @object) + @status_parser = ActivityPub::Parser::StatusParser.new( + @json, + followers_collection: @account.followers_url, + actor_uri: ActivityPub::TagManager.instance.uri_for(@account), + object: @object + ) attachment_ids = process_attachments.take(Status::MEDIA_ATTACHMENTS_LIMIT).map(&:id) @@ -105,6 +110,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity media_attachment_ids: attachment_ids, ordered_media_attachment_ids: attachment_ids, poll: process_poll, + quote_approval_policy: @status_parser.quote_policy, } end diff --git a/app/lib/activitypub/parser/status_parser.rb b/app/lib/activitypub/parser/status_parser.rb index c13ed49635..f66cd4aab0 100644 --- a/app/lib/activitypub/parser/status_parser.rb +++ b/app/lib/activitypub/parser/status_parser.rb @@ -8,6 +8,7 @@ class ActivityPub::Parser::StatusParser # @param [Hash] json # @param [Hash] options # @option options [String] :followers_collection + # @option options [String] :actor_uri # @option options [Hash] :object def initialize(json, **options) @json = json @@ -101,6 +102,18 @@ class ActivityPub::Parser::StatusParser @object.dig(:shares, :totalItems) end + def quote_policy + flags = 0 + policy = @object.dig('interactionPolicy', 'canQuote') + return flags if policy.blank? + + flags |= quote_subpolicy(policy['automaticApproval']) + flags <<= 16 + flags |= quote_subpolicy(policy['manualApproval']) + + flags + end + def quote_uri %w(quote _misskey_quote quoteUrl quoteUri).filter_map do |key| value_or_id(as_array(@object[key]).first) @@ -113,6 +126,29 @@ class ActivityPub::Parser::StatusParser private + def quote_subpolicy(subpolicy) + flags = 0 + + allowed_actors = as_array(subpolicy) + allowed_actors.uniq! + + flags |= Status::QUOTE_APPROVAL_POLICY_FLAGS[:public] if allowed_actors.delete('as:Public') || allowed_actors.delete('Public') || allowed_actors.delete('https://www.w3.org/ns/activitystreams#Public') + flags |= Status::QUOTE_APPROVAL_POLICY_FLAGS[:followers] if allowed_actors.delete(@options[:followers_collection]) + # TODO: we don't actually store that collection URI + # flags |= Status::QUOTE_APPROVAL_POLICY_FLAGS[:followed] + + # Remove the special-meaning actor URI + allowed_actors.delete(@options[:actor_uri]) + + # Tagged users are always allowed, so remove them + allowed_actors -= as_array(@object['tag']).filter_map { |tag| tag['href'] if equals_or_includes?(tag['type'], 'Mention') } + + # Any unrecognized actor is marked as unknown + flags |= Status::QUOTE_APPROVAL_POLICY_FLAGS[:unknown] unless allowed_actors.empty? + + flags + end + def raw_language_code if content_language_map? @object['contentMap'].keys.first diff --git a/app/models/status.rb b/app/models/status.rb index f9afdcca8b..5e89fc3531 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -28,6 +28,7 @@ # trendable :boolean # ordered_media_attachment_ids :bigint(8) is an Array # fetched_replies_at :datetime +# quote_approval_policy :integer default(0), not null # class Status < ApplicationRecord @@ -44,6 +45,13 @@ class Status < ApplicationRecord MEDIA_ATTACHMENTS_LIMIT = 4 + QUOTE_APPROVAL_POLICY_FLAGS = { + unknown: (1 << 0), + public: (1 << 1), + followers: (1 << 2), + followed: (1 << 3), + }.freeze + rate_limit by: :account, family: :statuses self.discard_column = :deleted_at diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb index 6a1066a05d..e02cc0914b 100644 --- a/app/services/activitypub/process_status_update_service.rb +++ b/app/services/activitypub/process_status_update_service.rb @@ -10,7 +10,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService @activity_json = activity_json @json = object_json - @status_parser = ActivityPub::Parser::StatusParser.new(@json) + @status_parser = ActivityPub::Parser::StatusParser.new(@json, followers_collection: status.account.followers_url, actor_uri: ActivityPub::TagManager.instance.uri_for(status.account)) @uri = @status_parser.uri @status = status @account = status.account @@ -41,6 +41,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService Status.transaction do record_previous_edit! update_media_attachments! + update_interaction_policies! update_poll! update_immediate_attributes! update_metadata! @@ -62,12 +63,17 @@ class ActivityPub::ProcessStatusUpdateService < BaseService def handle_implicit_update! with_redis_lock("create:#{@uri}") do + update_interaction_policies! update_poll!(allow_significant_changes: false) queue_poll_notifications! update_counts! end end + def update_interaction_policies! + @status.quote_approval_policy = @status_parser.quote_policy + end + def update_media_attachments! previous_media_attachments = @status.media_attachments.to_a previous_media_attachments_ids = @status.ordered_media_attachment_ids || previous_media_attachments.map(&:id) diff --git a/db/migrate/20250428095029_add_quote_approval_policy_to_statuses.rb b/db/migrate/20250428095029_add_quote_approval_policy_to_statuses.rb new file mode 100644 index 0000000000..5fbf82f02c --- /dev/null +++ b/db/migrate/20250428095029_add_quote_approval_policy_to_statuses.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddQuoteApprovalPolicyToStatuses < ActiveRecord::Migration[8.0] + def change + add_column :statuses, :quote_approval_policy, :integer, null: false, default: 0 + end +end diff --git a/db/schema.rb b/db/schema.rb index 194ffc178f..db1687ba99 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.0].define(version: 2025_04_25_134654) do +ActiveRecord::Schema[8.0].define(version: 2025_04_28_095029) do # These are extensions that must be enabled in order to support this database enable_extension "pg_catalog.plpgsql" @@ -1086,6 +1086,7 @@ ActiveRecord::Schema[8.0].define(version: 2025_04_25_134654) do t.boolean "trendable" t.bigint "ordered_media_attachment_ids", array: true t.datetime "fetched_replies_at" + t.integer "quote_approval_policy", default: 0, null: false t.index ["account_id", "id", "visibility", "updated_at"], name: "index_statuses_20190820", order: { id: :desc }, where: "(deleted_at IS NULL)" t.index ["account_id"], name: "index_statuses_on_account_id" t.index ["deleted_at"], name: "index_statuses_on_deleted_at", where: "(deleted_at IS NOT NULL)" diff --git a/spec/lib/activitypub/parser/status_parser_spec.rb b/spec/lib/activitypub/parser/status_parser_spec.rb index 5d9f008db1..dddeae31e0 100644 --- a/spec/lib/activitypub/parser/status_parser_spec.rb +++ b/spec/lib/activitypub/parser/status_parser_spec.rb @@ -7,10 +7,11 @@ RSpec.describe ActivityPub::Parser::StatusParser do let(:sender) { Fabricate(:account, followers_url: 'http://example.com/followers', domain: 'example.com', uri: 'https://example.com/actor') } let(:follower) { Fabricate(:account, username: 'bob') } + let(:context) { 'https://www.w3.org/ns/activitystreams' } let(:json) do { - '@context': 'https://www.w3.org/ns/activitystreams', + '@context': context, id: [ActivityPub::TagManager.instance.uri_for(sender), '#foo'].join, type: 'Create', actor: ActivityPub::TagManager.instance.uri_for(sender), @@ -47,4 +48,116 @@ RSpec.describe ActivityPub::Parser::StatusParser do language: :en ) end + + describe '#quote_policy' do + subject do + described_class + .new( + json, + actor_uri: ActivityPub::TagManager.instance.uri_for(sender), + followers_collection: sender.followers_url + ).quote_policy + end + + let(:context) do + [ + 'https://www.w3.org/ns/activitystreams', + { + gts: 'https://gotosocial.org/ns#', + interactionPolicy: { + '@id': 'gts:interactionPolicy', + '@type': '@id', + }, + canQuote: { + '@id': 'gts:canQuote', + '@type': '@id', + }, + automaticApproval: { + '@id': 'gts:automaticApproval', + '@type': '@id', + }, + manualApproval: { + '@id': 'gts:manualApproval', + '@type': '@id', + }, + }, + ] + end + + context 'when nobody is allowed to quote' do + let(:object_json) do + { + id: [ActivityPub::TagManager.instance.uri_for(sender), 'post1'].join('/'), + type: 'Note', + to: [ + 'https://www.w3.org/ns/activitystreams#Public', + ActivityPub::TagManager.instance.uri_for(follower), + ], + interactionPolicy: { + canQuote: { + automaticApproval: ActivityPub::TagManager.instance.uri_for(sender), + }, + }, + content: 'bleh', + published: 1.hour.ago.utc.iso8601, + updated: 1.hour.ago.utc.iso8601, + } + end + + it 'returns a policy not allowing anyone to quote' do + expect(subject).to eq 0 + end + end + + context 'when everybody is allowed to quote' do + let(:object_json) do + { + id: [ActivityPub::TagManager.instance.uri_for(sender), 'post1'].join('/'), + type: 'Note', + to: [ + 'https://www.w3.org/ns/activitystreams#Public', + ActivityPub::TagManager.instance.uri_for(follower), + ], + interactionPolicy: { + canQuote: { + automaticApproval: 'https://www.w3.org/ns/activitystreams#Public', + }, + }, + content: 'bleh', + published: 1.hour.ago.utc.iso8601, + updated: 1.hour.ago.utc.iso8601, + } + end + + it 'returns a policy not allowing anyone to quote' do + expect(subject).to eq(Status::QUOTE_APPROVAL_POLICY_FLAGS[:public] << 16) + end + end + + context 'when everybody is allowed to quote but only followers are automatically approved' do + let(:object_json) do + { + id: [ActivityPub::TagManager.instance.uri_for(sender), 'post1'].join('/'), + type: 'Note', + to: [ + 'https://www.w3.org/ns/activitystreams#Public', + ActivityPub::TagManager.instance.uri_for(follower), + ], + interactionPolicy: { + canQuote: { + automaticApproval: sender.followers_url, + manualApproval: 'https://www.w3.org/ns/activitystreams#Public', + }, + }, + content: 'bleh', + published: 1.hour.ago.utc.iso8601, + updated: 1.hour.ago.utc.iso8601, + } + end + + it 'returns a policy allowing everyone including followers' do + expect(subject).to eq Status::QUOTE_APPROVAL_POLICY_FLAGS[:public] | (Status::QUOTE_APPROVAL_POLICY_FLAGS[:followers] << 16) + end + end + end end From 17e4345eb2a9e63876afcc225afbdf7fd6ca057f Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 28 Apr 2025 12:07:22 +0200 Subject: [PATCH 054/349] Add `quoted_status` attribute to `PostStatusService` for local testing (#34553) --- app/services/post_status_service.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb index 765c80723e..ac4b535ea9 100644 --- a/app/services/post_status_service.rb +++ b/app/services/post_status_service.rb @@ -18,6 +18,7 @@ class PostStatusService < BaseService # @param [Hash] options # @option [String] :text Message # @option [Status] :thread Optional status to reply to + # @option [Status] :quoted_status Optional status to quote # @option [Boolean] :sensitive # @option [String] :visibility # @option [String] :spoiler_text @@ -35,6 +36,7 @@ class PostStatusService < BaseService @options = options @text = @options[:text] || '' @in_reply_to = @options[:thread] + @quoted_status = @options[:quoted_status] @antispam = Antispam.new @@ -78,6 +80,7 @@ class PostStatusService < BaseService @status = @account.statuses.new(status_attributes) process_mentions_service.call(@status, save_records: false) safeguard_mentions!(@status) + attach_quote!(@status) @antispam.local_preflight_check!(@status) # The following transaction block is needed to wrap the UPDATEs to @@ -87,6 +90,21 @@ class PostStatusService < BaseService end end + def attach_quote!(status) + return if @quoted_status.nil? + + # NOTE: for now this is only for convenience in testing, as we don't support the request flow nor serialize quotes in ActivityPub + # we only support incoming quotes so far + + status.quote = Quote.new(quoted_status: @quoted_status) + status.quote.accept! if @status.account == @quoted_status.account || @quoted_status.active_mentions.exists?(mentions: { account_id: status.account_id }) + + # TODO: the following has yet to be implemented: + # - handle approval of local users (requires the interactionPolicy PR) + # - produce a QuoteAuthorization for quotes of local users + # - send a QuoteRequest for quotes of remote users + end + def safeguard_mentions!(status) return if @options[:allowed_mentions].nil? @@ -223,6 +241,7 @@ class PostStatusService < BaseService @options.dup.tap do |options_hash| options_hash[:in_reply_to_id] = options_hash.delete(:thread)&.id options_hash[:application_id] = options_hash.delete(:application)&.id + options_hash[:quoted_status_id] = options_hash.delete(:quoted_status)&.id options_hash[:scheduled_at] = nil options_hash[:idempotency] = nil options_hash[:with_rate_limit] = false From 926c67c64821debfd1eced6b8859ea48891fa9c0 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 28 Apr 2025 13:43:42 +0200 Subject: [PATCH 055/349] Refactor `` to TypeScript (#34559) --- .../mastodon/components/dropdown_menu.tsx | 43 ++++-------- .../compose/components/privacy_dropdown.jsx | 3 - .../containers/privacy_dropdown_container.js | 10 --- .../features/ui/components/actions_modal.jsx | 48 -------------- .../features/ui/components/actions_modal.tsx | 65 +++++++++++++++++++ .../features/ui/components/modal_root.jsx | 2 +- .../mastodon/models/dropdown_menu.ts | 26 ++++++++ .../styles/mastodon/components.scss | 65 +++++++------------ 8 files changed, 127 insertions(+), 135 deletions(-) delete mode 100644 app/javascript/mastodon/features/ui/components/actions_modal.jsx create mode 100644 app/javascript/mastodon/features/ui/components/actions_modal.tsx diff --git a/app/javascript/mastodon/components/dropdown_menu.tsx b/app/javascript/mastodon/components/dropdown_menu.tsx index 886d517fa9..c2fb93940c 100644 --- a/app/javascript/mastodon/components/dropdown_menu.tsx +++ b/app/javascript/mastodon/components/dropdown_menu.tsx @@ -26,11 +26,12 @@ import { import { openModal, closeModal } from 'mastodon/actions/modal'; import { CircularProgress } from 'mastodon/components/circular_progress'; import { isUserTouching } from 'mastodon/is_mobile'; -import type { - MenuItem, - ActionMenuItem, - ExternalLinkMenuItem, +import { + isMenuItem, + isActionItem, + isExternalLinkItem, } from 'mastodon/models/dropdown_menu'; +import type { MenuItem } from 'mastodon/models/dropdown_menu'; import { useAppDispatch, useAppSelector } from 'mastodon/store'; import type { IconProp } from './icon'; @@ -38,30 +39,6 @@ import { IconButton } from './icon_button'; let id = 0; -const isMenuItem = (item: unknown): item is MenuItem => { - if (item === null) { - return true; - } - - return typeof item === 'object' && 'text' in item; -}; - -const isActionItem = (item: unknown): item is ActionMenuItem => { - if (!item || !isMenuItem(item)) { - return false; - } - - return 'action' in item; -}; - -const isExternalLinkItem = (item: unknown): item is ExternalLinkMenuItem => { - if (!item || !isMenuItem(item)) { - return false; - } - - return 'href' in item; -}; - type RenderItemFn = ( item: Item, index: number, @@ -354,6 +331,9 @@ export const Dropdown = ({ const open = currentId === openDropdownId; const activeElement = useRef(null); const targetRef = useRef(null); + const prefetchAccountId = status + ? status.getIn(['account', 'id']) + : undefined; const handleClose = useCallback(() => { if (activeElement.current) { @@ -402,8 +382,8 @@ export const Dropdown = ({ } else { onOpen?.(); - if (status) { - dispatch(fetchRelationships([status.getIn(['account', 'id'])])); + if (prefetchAccountId) { + dispatch(fetchRelationships([prefetchAccountId])); } if (isUserTouching()) { @@ -411,7 +391,6 @@ export const Dropdown = ({ openModal({ modalType: 'ACTIONS', modalProps: { - status, actions: items, onClick: handleItemClick, }, @@ -431,11 +410,11 @@ export const Dropdown = ({ [ dispatch, currentId, + prefetchAccountId, scrollKey, onOpen, handleItemClick, open, - status, items, handleClose, ], diff --git a/app/javascript/mastodon/features/compose/components/privacy_dropdown.jsx b/app/javascript/mastodon/features/compose/components/privacy_dropdown.jsx index f474aecf28..15df5ab729 100644 --- a/app/javascript/mastodon/features/compose/components/privacy_dropdown.jsx +++ b/app/javascript/mastodon/features/compose/components/privacy_dropdown.jsx @@ -30,9 +30,6 @@ const messages = defineMessages({ class PrivacyDropdown extends PureComponent { static propTypes = { - isUserTouching: PropTypes.func, - onModalOpen: PropTypes.func, - onModalClose: PropTypes.func, value: PropTypes.string.isRequired, onChange: PropTypes.func.isRequired, noDirect: PropTypes.bool, diff --git a/app/javascript/mastodon/features/compose/containers/privacy_dropdown_container.js b/app/javascript/mastodon/features/compose/containers/privacy_dropdown_container.js index 6d26abf4f6..6d3eef13aa 100644 --- a/app/javascript/mastodon/features/compose/containers/privacy_dropdown_container.js +++ b/app/javascript/mastodon/features/compose/containers/privacy_dropdown_container.js @@ -15,16 +15,6 @@ const mapDispatchToProps = dispatch => ({ dispatch(changeComposeVisibility(value)); }, - isUserTouching, - onModalOpen: props => dispatch(openModal({ - modalType: 'ACTIONS', - modalProps: props, - })), - onModalClose: () => dispatch(closeModal({ - modalType: undefined, - ignoreFocus: false, - })), - }); export default connect(mapStateToProps, mapDispatchToProps)(PrivacyDropdown); diff --git a/app/javascript/mastodon/features/ui/components/actions_modal.jsx b/app/javascript/mastodon/features/ui/components/actions_modal.jsx deleted file mode 100644 index 851f828b4e..0000000000 --- a/app/javascript/mastodon/features/ui/components/actions_modal.jsx +++ /dev/null @@ -1,48 +0,0 @@ -import PropTypes from 'prop-types'; - -import classNames from 'classnames'; - -import ImmutablePropTypes from 'react-immutable-proptypes'; -import ImmutablePureComponent from 'react-immutable-pure-component'; - -import { IconButton } from '../../../components/icon_button'; - -export default class ActionsModal extends ImmutablePureComponent { - - static propTypes = { - status: ImmutablePropTypes.map, - actions: PropTypes.array, - onClick: PropTypes.func, - }; - - renderAction = (action, i) => { - if (action === null) { - return
  • ; - } - - const { icon = null, iconComponent = null, text, meta = null, active = false, href = '#' } = action; - - return ( -
  • - - {icon && } -
    -
    {text}
    -
    {meta}
    -
    -
    -
  • - ); - }; - - render () { - return ( -
    -
      - {this.props.actions.map(this.renderAction)} -
    -
    - ); - } - -} diff --git a/app/javascript/mastodon/features/ui/components/actions_modal.tsx b/app/javascript/mastodon/features/ui/components/actions_modal.tsx new file mode 100644 index 0000000000..da42b86392 --- /dev/null +++ b/app/javascript/mastodon/features/ui/components/actions_modal.tsx @@ -0,0 +1,65 @@ +import classNames from 'classnames'; +import { Link } from 'react-router-dom'; + +import type { MenuItem } from 'mastodon/models/dropdown_menu'; +import { + isActionItem, + isExternalLinkItem, +} from 'mastodon/models/dropdown_menu'; + +export const ActionsModal: React.FC<{ + actions: MenuItem[]; + onClick: React.MouseEventHandler; +}> = ({ actions, onClick }) => ( +
    +
      + {actions.map((option, i: number) => { + if (option === null) { + return
    • ; + } + + const { text, dangerous } = option; + + let element: React.ReactElement; + + if (isActionItem(option)) { + element = ( + + ); + } else if (isExternalLinkItem(option)) { + element = ( + + {text} + + ); + } else { + element = ( + + {text} + + ); + } + + return ( +
    • + {element} +
    • + ); + })} +
    +
    +); diff --git a/app/javascript/mastodon/features/ui/components/modal_root.jsx b/app/javascript/mastodon/features/ui/components/modal_root.jsx index 74fe59f322..ff13375177 100644 --- a/app/javascript/mastodon/features/ui/components/modal_root.jsx +++ b/app/javascript/mastodon/features/ui/components/modal_root.jsx @@ -24,7 +24,7 @@ import { getScrollbarWidth } from 'mastodon/utils/scrollbar'; import BundleContainer from '../containers/bundle_container'; -import ActionsModal from './actions_modal'; +import { ActionsModal } from './actions_modal'; import AudioModal from './audio_modal'; import { BoostModal } from './boost_modal'; import { diff --git a/app/javascript/mastodon/models/dropdown_menu.ts b/app/javascript/mastodon/models/dropdown_menu.ts index ceea9ad4dd..c02f205023 100644 --- a/app/javascript/mastodon/models/dropdown_menu.ts +++ b/app/javascript/mastodon/models/dropdown_menu.ts @@ -22,3 +22,29 @@ export type MenuItem = | LinkMenuItem | ExternalLinkMenuItem | null; + +export const isMenuItem = (item: unknown): item is MenuItem => { + if (item === null) { + return true; + } + + return typeof item === 'object' && 'text' in item; +}; + +export const isActionItem = (item: unknown): item is ActionMenuItem => { + if (!item || !isMenuItem(item)) { + return false; + } + + return 'action' in item; +}; + +export const isExternalLinkItem = ( + item: unknown, +): item is ExternalLinkMenuItem => { + if (!item || !isMenuItem(item)) { + return false; + } + + return 'href' in item; +}; diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 25d33566ef..2590e07934 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -6484,55 +6484,38 @@ a.status-card { } .actions-modal { + border-radius: 8px 8px 0 0; + background: var(--dropdown-background-color); + backdrop-filter: var(--background-filter); + border-color: var(--dropdown-border-color); + box-shadow: var(--dropdown-shadow); max-height: 80vh; max-width: 80vw; - .actions-modal__item-label { - font-weight: 500; - } - ul { overflow-y: auto; flex-shrink: 0; - max-height: 80vh; + padding-bottom: 8px; + } - &.with-status { - max-height: calc(80vh - 75px); - } + a, + button { + color: inherit; + display: flex; + padding: 16px; + font-size: 15px; + line-height: 21px; + background: transparent; + border: none; + align-items: center; + text-decoration: none; + width: 100%; + box-sizing: border-box; - li:empty { - margin: 0; - } - - li:not(:empty) { - a { - color: $primary-text-color; - display: flex; - padding: 12px 16px; - font-size: 15px; - align-items: center; - text-decoration: none; - - &, - button { - transition: none; - } - - &.active, - &:hover, - &:active, - &:focus { - &, - button { - background: $ui-highlight-color; - color: $primary-text-color; - } - } - - button:first-child { - margin-inline-end: 10px; - } - } + &:hover, + &:active, + &:focus { + background: var(--dropdown-border-color); } } } From 40157e063d12b5591a9cccaf92abd783e03586b4 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 28 Apr 2025 13:44:01 +0200 Subject: [PATCH 056/349] Add ability to feature and unfeature hashtags from web UI (#34490) --- app/javascript/mastodon/actions/tags_typed.ts | 18 +++++- app/javascript/mastodon/api/tags.ts | 6 ++ app/javascript/mastodon/api_types/tags.ts | 1 + .../components/hashtag_header.tsx | 60 +++++++++++++++---- app/javascript/mastodon/locales/en.json | 2 + 5 files changed, 74 insertions(+), 13 deletions(-) diff --git a/app/javascript/mastodon/actions/tags_typed.ts b/app/javascript/mastodon/actions/tags_typed.ts index 6dca32fd84..a3e5cfd125 100644 --- a/app/javascript/mastodon/actions/tags_typed.ts +++ b/app/javascript/mastodon/actions/tags_typed.ts @@ -1,4 +1,10 @@ -import { apiGetTag, apiFollowTag, apiUnfollowTag } from 'mastodon/api/tags'; +import { + apiGetTag, + apiFollowTag, + apiUnfollowTag, + apiFeatureTag, + apiUnfeatureTag, +} from 'mastodon/api/tags'; import { createDataLoadingThunk } from 'mastodon/store/typed_functions'; export const fetchHashtag = createDataLoadingThunk( @@ -15,3 +21,13 @@ export const unfollowHashtag = createDataLoadingThunk( 'tags/unfollow', ({ tagId }: { tagId: string }) => apiUnfollowTag(tagId), ); + +export const featureHashtag = createDataLoadingThunk( + 'tags/feature', + ({ tagId }: { tagId: string }) => apiFeatureTag(tagId), +); + +export const unfeatureHashtag = createDataLoadingThunk( + 'tags/unfeature', + ({ tagId }: { tagId: string }) => apiUnfeatureTag(tagId), +); diff --git a/app/javascript/mastodon/api/tags.ts b/app/javascript/mastodon/api/tags.ts index 4b111def81..cb84ccb1c4 100644 --- a/app/javascript/mastodon/api/tags.ts +++ b/app/javascript/mastodon/api/tags.ts @@ -10,6 +10,12 @@ export const apiFollowTag = (tagId: string) => export const apiUnfollowTag = (tagId: string) => apiRequestPost(`v1/tags/${tagId}/unfollow`); +export const apiFeatureTag = (tagId: string) => + apiRequestPost(`v1/tags/${tagId}/feature`); + +export const apiUnfeatureTag = (tagId: string) => + apiRequestPost(`v1/tags/${tagId}/unfeature`); + export const apiGetFollowedTags = async (url?: string) => { const response = await api().request({ method: 'GET', diff --git a/app/javascript/mastodon/api_types/tags.ts b/app/javascript/mastodon/api_types/tags.ts index 0c16c8bd28..3066b4f1f1 100644 --- a/app/javascript/mastodon/api_types/tags.ts +++ b/app/javascript/mastodon/api_types/tags.ts @@ -10,4 +10,5 @@ export interface ApiHashtagJSON { url: string; history: [ApiHistoryJSON, ...ApiHistoryJSON[]]; following?: boolean; + featuring?: boolean; } diff --git a/app/javascript/mastodon/features/hashtag_timeline/components/hashtag_header.tsx b/app/javascript/mastodon/features/hashtag_timeline/components/hashtag_header.tsx index b7c1ea02d9..c11874e7d4 100644 --- a/app/javascript/mastodon/features/hashtag_timeline/components/hashtag_header.tsx +++ b/app/javascript/mastodon/features/hashtag_timeline/components/hashtag_header.tsx @@ -9,6 +9,8 @@ import { fetchHashtag, followHashtag, unfollowHashtag, + featureHashtag, + unfeatureHashtag, } from 'mastodon/actions/tags_typed'; import type { ApiHashtagJSON } from 'mastodon/api_types/tags'; import { Button } from 'mastodon/components/button'; @@ -28,6 +30,11 @@ const messages = defineMessages({ id: 'hashtag.admin_moderation', defaultMessage: 'Open moderation interface for #{name}', }, + feature: { id: 'hashtag.feature', defaultMessage: 'Feature on profile' }, + unfeature: { + id: 'hashtag.unfeature', + defaultMessage: "Don't feature on profile", + }, }); const usesRenderer = (displayNumber: React.ReactNode, pluralReady: number) => ( @@ -88,22 +95,51 @@ export const HashtagHeader: React.FC<{ }, [dispatch, tagId, setTag]); const menu = useMemo(() => { - const tmp = []; + const arr = []; - if ( - tag && - signedIn && - (permissions & PERMISSION_MANAGE_TAXONOMIES) === - PERMISSION_MANAGE_TAXONOMIES - ) { - tmp.push({ - text: intl.formatMessage(messages.adminModeration, { name: tag.id }), - href: `/admin/tags/${tag.id}`, + if (tag && signedIn) { + const handleFeature = () => { + if (tag.featuring) { + void dispatch(unfeatureHashtag({ tagId })).then((result) => { + if (isFulfilled(result)) { + setTag(result.payload); + } + + return ''; + }); + } else { + void dispatch(featureHashtag({ tagId })).then((result) => { + if (isFulfilled(result)) { + setTag(result.payload); + } + + return ''; + }); + } + }; + + arr.push({ + text: intl.formatMessage( + tag.featuring ? messages.unfeature : messages.feature, + ), + action: handleFeature, }); + + arr.push(null); + + if ( + (permissions & PERMISSION_MANAGE_TAXONOMIES) === + PERMISSION_MANAGE_TAXONOMIES + ) { + arr.push({ + text: intl.formatMessage(messages.adminModeration, { name: tagId }), + href: `/admin/tags/${tag.id}`, + }); + } } - return tmp; - }, [signedIn, permissions, intl, tag]); + return arr; + }, [setTag, dispatch, tagId, signedIn, permissions, intl, tag]); const handleFollow = useCallback(() => { if (!signedIn || !tag) { diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 6b4a0a12ab..e193e10a6d 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -405,8 +405,10 @@ "hashtag.counter_by_accounts": "{count, plural, one {{counter} participant} other {{counter} participants}}", "hashtag.counter_by_uses": "{count, plural, one {{counter} post} other {{counter} posts}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} post} other {{counter} posts}} today", + "hashtag.feature": "Feature on profile", "hashtag.follow": "Follow hashtag", "hashtag.mute": "Mute #{hashtag}", + "hashtag.unfeature": "Don't feature on profile", "hashtag.unfollow": "Unfollow hashtag", "hashtags.and_other": "…and {count, plural, other {# more}}", "hints.profiles.followers_may_be_missing": "Followers for this profile may be missing.", From bd9223f0b9a00ea177d74a213dcd9c66445d8cdd Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 28 Apr 2025 15:02:41 +0200 Subject: [PATCH 057/349] Fix `tootctl search deploy --only-mapping` not updating index settings (#34566) --- lib/chewy/index_extensions.rb | 7 +++++++ lib/mastodon/cli/search.rb | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/chewy/index_extensions.rb b/lib/chewy/index_extensions.rb index 064fd56b3e..a22ffa210f 100644 --- a/lib/chewy/index_extensions.rb +++ b/lib/chewy/index_extensions.rb @@ -12,6 +12,13 @@ module Chewy base_options.merge(number_of_replicas: 1, number_of_shards: (base_options[:number_of_shards] || 1) * 2) end end + + def update_specification + client.indices.close index: index_name + client.indices.put_settings index: index_name, body: { settings: { analysis: settings_hash[:settings][:analysis] } } + client.indices.put_mapping index: index_name, body: root.mappings_hash + client.indices.open index: index_name + end end end diff --git a/lib/mastodon/cli/search.rb b/lib/mastodon/cli/search.rb index e291801f1b..7a9d95fb3e 100644 --- a/lib/mastodon/cli/search.rb +++ b/lib/mastodon/cli/search.rb @@ -56,7 +56,7 @@ module Mastodon::CLI if options[:only_mapping] indices.select { |index| index.specification.changed? }.each do |index| progress.title = "Updating mapping for #{index} " - index.update_mapping + index.update_specification index.specification.lock! end From 17d8e2b6e3653f4743e859553288f2f885e383a9 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 28 Apr 2025 15:38:40 +0200 Subject: [PATCH 058/349] Refactor context reducer to TypeScript (#34506) --- app/javascript/mastodon/actions/statuses.js | 53 +----- .../mastodon/actions/statuses_typed.ts | 18 ++ app/javascript/mastodon/api/statuses.ts | 5 + app/javascript/mastodon/api_types/statuses.ts | 5 + .../components/notification_mention.tsx | 6 +- .../mastodon/features/status/index.jsx | 87 ++-------- app/javascript/mastodon/reducers/contexts.js | 109 ------------ app/javascript/mastodon/reducers/contexts.ts | 155 ++++++++++++++++++ app/javascript/mastodon/reducers/index.ts | 4 +- app/javascript/mastodon/reducers/statuses.js | 1 + app/javascript/mastodon/selectors/contexts.ts | 94 +++++++++++ app/javascript/mastodon/store/index.ts | 1 + .../mastodon/store/typed_functions.ts | 4 +- 13 files changed, 308 insertions(+), 234 deletions(-) create mode 100644 app/javascript/mastodon/actions/statuses_typed.ts create mode 100644 app/javascript/mastodon/api/statuses.ts delete mode 100644 app/javascript/mastodon/reducers/contexts.js create mode 100644 app/javascript/mastodon/reducers/contexts.ts create mode 100644 app/javascript/mastodon/selectors/contexts.ts diff --git a/app/javascript/mastodon/actions/statuses.js b/app/javascript/mastodon/actions/statuses.js index 1e5b53c687..42d0c1c0f1 100644 --- a/app/javascript/mastodon/actions/statuses.js +++ b/app/javascript/mastodon/actions/statuses.js @@ -4,8 +4,11 @@ import api from '../api'; import { ensureComposeIsVisible, setComposeToStatus } from './compose'; import { importFetchedStatus, importFetchedStatuses, importFetchedAccount } from './importer'; +import { fetchContext } from './statuses_typed'; import { deleteFromTimelines } from './timelines'; +export * from './statuses_typed'; + export const STATUS_FETCH_REQUEST = 'STATUS_FETCH_REQUEST'; export const STATUS_FETCH_SUCCESS = 'STATUS_FETCH_SUCCESS'; export const STATUS_FETCH_FAIL = 'STATUS_FETCH_FAIL'; @@ -14,10 +17,6 @@ export const STATUS_DELETE_REQUEST = 'STATUS_DELETE_REQUEST'; export const STATUS_DELETE_SUCCESS = 'STATUS_DELETE_SUCCESS'; export const STATUS_DELETE_FAIL = 'STATUS_DELETE_FAIL'; -export const CONTEXT_FETCH_REQUEST = 'CONTEXT_FETCH_REQUEST'; -export const CONTEXT_FETCH_SUCCESS = 'CONTEXT_FETCH_SUCCESS'; -export const CONTEXT_FETCH_FAIL = 'CONTEXT_FETCH_FAIL'; - export const STATUS_MUTE_REQUEST = 'STATUS_MUTE_REQUEST'; export const STATUS_MUTE_SUCCESS = 'STATUS_MUTE_SUCCESS'; export const STATUS_MUTE_FAIL = 'STATUS_MUTE_FAIL'; @@ -54,7 +53,7 @@ export function fetchStatus(id, forceFetch = false, alsoFetchContext = true) { const skipLoading = !forceFetch && getState().getIn(['statuses', id], null) !== null; if (alsoFetchContext) { - dispatch(fetchContext(id)); + dispatch(fetchContext({ statusId: id })); } if (skipLoading) { @@ -178,50 +177,6 @@ export function deleteStatusFail(id, error) { export const updateStatus = status => dispatch => dispatch(importFetchedStatus(status)); -export function fetchContext(id) { - return (dispatch) => { - dispatch(fetchContextRequest(id)); - - api().get(`/api/v1/statuses/${id}/context`).then(response => { - dispatch(importFetchedStatuses(response.data.ancestors.concat(response.data.descendants))); - dispatch(fetchContextSuccess(id, response.data.ancestors, response.data.descendants)); - - }).catch(error => { - if (error.response && error.response.status === 404) { - dispatch(deleteFromTimelines(id)); - } - - dispatch(fetchContextFail(id, error)); - }); - }; -} - -export function fetchContextRequest(id) { - return { - type: CONTEXT_FETCH_REQUEST, - id, - }; -} - -export function fetchContextSuccess(id, ancestors, descendants) { - return { - type: CONTEXT_FETCH_SUCCESS, - id, - ancestors, - descendants, - statuses: ancestors.concat(descendants), - }; -} - -export function fetchContextFail(id, error) { - return { - type: CONTEXT_FETCH_FAIL, - id, - error, - skipAlert: true, - }; -} - export function muteStatus(id) { return (dispatch) => { dispatch(muteStatusRequest(id)); diff --git a/app/javascript/mastodon/actions/statuses_typed.ts b/app/javascript/mastodon/actions/statuses_typed.ts new file mode 100644 index 0000000000..b98abbe122 --- /dev/null +++ b/app/javascript/mastodon/actions/statuses_typed.ts @@ -0,0 +1,18 @@ +import { apiGetContext } from 'mastodon/api/statuses'; +import { createDataLoadingThunk } from 'mastodon/store/typed_functions'; + +import { importFetchedStatuses } from './importer'; + +export const fetchContext = createDataLoadingThunk( + 'status/context', + ({ statusId }: { statusId: string }) => apiGetContext(statusId), + (context, { dispatch }) => { + const statuses = context.ancestors.concat(context.descendants); + + dispatch(importFetchedStatuses(statuses)); + + return { + context, + }; + }, +); diff --git a/app/javascript/mastodon/api/statuses.ts b/app/javascript/mastodon/api/statuses.ts new file mode 100644 index 0000000000..921a7bfe63 --- /dev/null +++ b/app/javascript/mastodon/api/statuses.ts @@ -0,0 +1,5 @@ +import { apiRequestGet } from 'mastodon/api'; +import type { ApiContextJSON } from 'mastodon/api_types/statuses'; + +export const apiGetContext = (statusId: string) => + apiRequestGet(`v1/statuses/${statusId}/context`); diff --git a/app/javascript/mastodon/api_types/statuses.ts b/app/javascript/mastodon/api_types/statuses.ts index 2c59645ea7..09bd2349b3 100644 --- a/app/javascript/mastodon/api_types/statuses.ts +++ b/app/javascript/mastodon/api_types/statuses.ts @@ -119,3 +119,8 @@ export interface ApiStatusJSON { card?: ApiPreviewCardJSON; poll?: ApiPollJSON; } + +export interface ApiContextJSON { + ancestors: ApiStatusJSON[]; + descendants: ApiStatusJSON[]; +} diff --git a/app/javascript/mastodon/features/notifications_v2/components/notification_mention.tsx b/app/javascript/mastodon/features/notifications_v2/components/notification_mention.tsx index d53cb37a83..fe9dc23ef0 100644 --- a/app/javascript/mastodon/features/notifications_v2/components/notification_mention.tsx +++ b/app/javascript/mastodon/features/notifications_v2/components/notification_mention.tsx @@ -39,9 +39,9 @@ export const NotificationMention: React.FC<{ unread: boolean; }> = ({ notification, unread }) => { const [isDirect, isReply] = useAppSelector((state) => { - const status = state.statuses.get(notification.statusId) as - | Status - | undefined; + const status = notification.statusId + ? (state.statuses.get(notification.statusId) as Status | undefined) + : undefined; if (!status) return [false, false] as const; diff --git a/app/javascript/mastodon/features/status/index.jsx b/app/javascript/mastodon/features/status/index.jsx index a6c010b6c5..7da2df3742 100644 --- a/app/javascript/mastodon/features/status/index.jsx +++ b/app/javascript/mastodon/features/status/index.jsx @@ -65,6 +65,7 @@ import { textForScreenReader, defaultMediaVisibility } from '../../components/st import StatusContainer from '../../containers/status_container'; import { deleteModal } from '../../initial_state'; import { makeGetStatus, makeGetPictureInPicture } from '../../selectors'; +import { getAncestorsIds, getDescendantsIds } from 'mastodon/selectors/contexts'; import Column from '../ui/components/column'; import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../ui/util/fullscreen'; @@ -83,69 +84,15 @@ const makeMapStateToProps = () => { const getStatus = makeGetStatus(); const getPictureInPicture = makeGetPictureInPicture(); - const getAncestorsIds = createSelector([ - (_, { id }) => id, - state => state.getIn(['contexts', 'inReplyTos']), - ], (statusId, inReplyTos) => { - let ancestorsIds = ImmutableList(); - ancestorsIds = ancestorsIds.withMutations(mutable => { - let id = statusId; - - while (id && !mutable.includes(id)) { - mutable.unshift(id); - id = inReplyTos.get(id); - } - }); - - return ancestorsIds; - }); - - const getDescendantsIds = createSelector([ - (_, { id }) => id, - state => state.getIn(['contexts', 'replies']), - state => state.get('statuses'), - ], (statusId, contextReplies, statuses) => { - let descendantsIds = []; - const ids = [statusId]; - - while (ids.length > 0) { - let id = ids.pop(); - const replies = contextReplies.get(id); - - if (statusId !== id) { - descendantsIds.push(id); - } - - if (replies) { - replies.reverse().forEach(reply => { - if (!ids.includes(reply) && !descendantsIds.includes(reply) && statusId !== reply) ids.push(reply); - }); - } - } - - let insertAt = descendantsIds.findIndex((id) => statuses.get(id).get('in_reply_to_account_id') !== statuses.get(id).get('account')); - if (insertAt !== -1) { - descendantsIds.forEach((id, idx) => { - if (idx > insertAt && statuses.get(id).get('in_reply_to_account_id') === statuses.get(id).get('account')) { - descendantsIds.splice(idx, 1); - descendantsIds.splice(insertAt, 0, id); - insertAt += 1; - } - }); - } - - return ImmutableList(descendantsIds); - }); - const mapStateToProps = (state, props) => { const status = getStatus(state, { id: props.params.statusId, contextType: 'detailed' }); - let ancestorsIds = ImmutableList(); - let descendantsIds = ImmutableList(); + let ancestorsIds = []; + let descendantsIds = []; if (status) { - ancestorsIds = getAncestorsIds(state, { id: status.get('in_reply_to_id') }); - descendantsIds = getDescendantsIds(state, { id: status.get('id') }); + ancestorsIds = getAncestorsIds(state, status.get('in_reply_to_id')); + descendantsIds = getDescendantsIds(state, status.get('id')); } return { @@ -188,8 +135,8 @@ class Status extends ImmutablePureComponent { dispatch: PropTypes.func.isRequired, status: ImmutablePropTypes.map, isLoading: PropTypes.bool, - ancestorsIds: ImmutablePropTypes.list.isRequired, - descendantsIds: ImmutablePropTypes.list.isRequired, + ancestorsIds: PropTypes.arrayOf(PropTypes.string).isRequired, + descendantsIds: PropTypes.arrayOf(PropTypes.string).isRequired, intl: PropTypes.object.isRequired, askReplyConfirmation: PropTypes.bool, multiColumn: PropTypes.bool, @@ -383,7 +330,7 @@ class Status extends ImmutablePureComponent { handleToggleAll = () => { const { status, ancestorsIds, descendantsIds } = this.props; - const statusIds = [status.get('id')].concat(ancestorsIds.toJS(), descendantsIds.toJS()); + const statusIds = [status.get('id')].concat(ancestorsIds, descendantsIds); if (status.get('hidden')) { this.props.dispatch(revealStatus(statusIds)); @@ -482,13 +429,13 @@ class Status extends ImmutablePureComponent { const { status, ancestorsIds, descendantsIds } = this.props; if (id === status.get('id')) { - this._selectChild(ancestorsIds.size - 1, true); + this._selectChild(ancestorsIds.length - 1, true); } else { let index = ancestorsIds.indexOf(id); if (index === -1) { index = descendantsIds.indexOf(id); - this._selectChild(ancestorsIds.size + index, true); + this._selectChild(ancestorsIds.length + index, true); } else { this._selectChild(index - 1, true); } @@ -499,13 +446,13 @@ class Status extends ImmutablePureComponent { const { status, ancestorsIds, descendantsIds } = this.props; if (id === status.get('id')) { - this._selectChild(ancestorsIds.size + 1, false); + this._selectChild(ancestorsIds.length + 1, false); } else { let index = ancestorsIds.indexOf(id); if (index === -1) { index = descendantsIds.indexOf(id); - this._selectChild(ancestorsIds.size + index + 2, false); + this._selectChild(ancestorsIds.length + index + 2, false); } else { this._selectChild(index + 1, false); } @@ -536,8 +483,8 @@ class Status extends ImmutablePureComponent { onMoveUp={this.handleMoveUp} onMoveDown={this.handleMoveDown} contextType='thread' - previousId={i > 0 ? list.get(i - 1) : undefined} - nextId={list.get(i + 1) || (ancestors && statusId)} + previousId={i > 0 ? list[i - 1] : undefined} + nextId={list[i + 1] || (ancestors && statusId)} rootId={statusId} /> )); @@ -574,7 +521,7 @@ class Status extends ImmutablePureComponent { componentDidUpdate (prevProps) { const { status, ancestorsIds } = this.props; - if (status && (ancestorsIds.size > prevProps.ancestorsIds.size || prevProps.status?.get('id') !== status.get('id'))) { + if (status && (ancestorsIds.length > prevProps.ancestorsIds.length || prevProps.status?.get('id') !== status.get('id'))) { this._scrollStatusIntoView(); } } @@ -621,11 +568,11 @@ class Status extends ImmutablePureComponent { ); } - if (ancestorsIds && ancestorsIds.size > 0) { + if (ancestorsIds && ancestorsIds.length > 0) { ancestors = <>{this.renderChildren(ancestorsIds, true)}; } - if (descendantsIds && descendantsIds.size > 0) { + if (descendantsIds && descendantsIds.length > 0) { descendants = <>{this.renderChildren(descendantsIds)}; } diff --git a/app/javascript/mastodon/reducers/contexts.js b/app/javascript/mastodon/reducers/contexts.js deleted file mode 100644 index b2c6f3f1ab..0000000000 --- a/app/javascript/mastodon/reducers/contexts.js +++ /dev/null @@ -1,109 +0,0 @@ -import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; - -import { timelineDelete } from 'mastodon/actions/timelines_typed'; - -import { - blockAccountSuccess, - muteAccountSuccess, -} from '../actions/accounts'; -import { CONTEXT_FETCH_SUCCESS } from '../actions/statuses'; -import { TIMELINE_UPDATE } from '../actions/timelines'; -import { compareId } from '../compare_id'; - -const initialState = ImmutableMap({ - inReplyTos: ImmutableMap(), - replies: ImmutableMap(), -}); - -const normalizeContext = (immutableState, id, ancestors, descendants) => immutableState.withMutations(state => { - state.update('inReplyTos', immutableAncestors => immutableAncestors.withMutations(inReplyTos => { - state.update('replies', immutableDescendants => immutableDescendants.withMutations(replies => { - function addReply({ id, in_reply_to_id }) { - if (in_reply_to_id && !inReplyTos.has(id)) { - - replies.update(in_reply_to_id, ImmutableList(), siblings => { - const index = siblings.findLastIndex(sibling => compareId(sibling, id) < 0); - return siblings.insert(index + 1, id); - }); - - inReplyTos.set(id, in_reply_to_id); - } - } - - // We know in_reply_to_id of statuses but `id` itself. - // So we assume that the status of the id replies to last ancestors. - - ancestors.forEach(addReply); - - if (ancestors[0]) { - addReply({ id, in_reply_to_id: ancestors[ancestors.length - 1].id }); - } - - descendants.forEach(addReply); - })); - })); -}); - -const deleteFromContexts = (immutableState, ids) => immutableState.withMutations(state => { - state.update('inReplyTos', immutableAncestors => immutableAncestors.withMutations(inReplyTos => { - state.update('replies', immutableDescendants => immutableDescendants.withMutations(replies => { - ids.forEach(id => { - const inReplyToIdOfId = inReplyTos.get(id); - const repliesOfId = replies.get(id); - const siblings = replies.get(inReplyToIdOfId); - - if (siblings) { - replies.set(inReplyToIdOfId, siblings.filterNot(sibling => sibling === id)); - } - - - if (repliesOfId) { - repliesOfId.forEach(reply => inReplyTos.delete(reply)); - } - - inReplyTos.delete(id); - replies.delete(id); - }); - })); - })); -}); - -const filterContexts = (state, relationship, statuses) => { - const ownedStatusIds = statuses - .filter(status => status.get('account') === relationship.id) - .map(status => status.get('id')); - - return deleteFromContexts(state, ownedStatusIds); -}; - -const updateContext = (state, status) => { - if (status.in_reply_to_id) { - return state.withMutations(mutable => { - const replies = mutable.getIn(['replies', status.in_reply_to_id], ImmutableList()); - - mutable.setIn(['inReplyTos', status.id], status.in_reply_to_id); - - if (!replies.includes(status.id)) { - mutable.setIn(['replies', status.in_reply_to_id], replies.push(status.id)); - } - }); - } - - return state; -}; - -export default function replies(state = initialState, action) { - switch(action.type) { - case blockAccountSuccess.type: - case muteAccountSuccess.type: - return filterContexts(state, action.payload.relationship, action.payload.statuses); - case CONTEXT_FETCH_SUCCESS: - return normalizeContext(state, action.id, action.ancestors, action.descendants); - case timelineDelete.type: - return deleteFromContexts(state, [action.payload.statusId]); - case TIMELINE_UPDATE: - return updateContext(state, action.status); - default: - return state; - } -} diff --git a/app/javascript/mastodon/reducers/contexts.ts b/app/javascript/mastodon/reducers/contexts.ts new file mode 100644 index 0000000000..7ecc6e3b29 --- /dev/null +++ b/app/javascript/mastodon/reducers/contexts.ts @@ -0,0 +1,155 @@ +/* eslint-disable @typescript-eslint/no-dynamic-delete */ +import { createReducer } from '@reduxjs/toolkit'; +import type { Draft, UnknownAction } from '@reduxjs/toolkit'; +import type { List as ImmutableList } from 'immutable'; + +import { timelineDelete } from 'mastodon/actions/timelines_typed'; +import type { ApiRelationshipJSON } from 'mastodon/api_types/relationships'; +import type { + ApiStatusJSON, + ApiContextJSON, +} from 'mastodon/api_types/statuses'; +import type { Status } from 'mastodon/models/status'; + +import { blockAccountSuccess, muteAccountSuccess } from '../actions/accounts'; +import { fetchContext } from '../actions/statuses'; +import { TIMELINE_UPDATE } from '../actions/timelines'; +import { compareId } from '../compare_id'; + +interface TimelineUpdateAction extends UnknownAction { + timeline: string; + status: ApiStatusJSON; + usePendingItems: boolean; +} + +interface State { + inReplyTos: Record; + replies: Record; +} + +const initialState: State = { + inReplyTos: {}, + replies: {}, +}; + +const normalizeContext = ( + state: Draft, + id: string, + { ancestors, descendants }: ApiContextJSON, +): void => { + const addReply = ({ + id, + in_reply_to_id, + }: { + id: string; + in_reply_to_id?: string; + }) => { + if (!in_reply_to_id) { + return; + } + + if (!state.inReplyTos[id]) { + const siblings = (state.replies[in_reply_to_id] ??= []); + const index = siblings.findIndex((sibling) => compareId(sibling, id) < 0); + siblings.splice(index + 1, 0, id); + state.inReplyTos[id] = in_reply_to_id; + } + }; + + // We know in_reply_to_id of statuses but `id` itself. + // So we assume that the status of the id replies to last ancestors. + + ancestors.forEach(addReply); + + if (ancestors[0]) { + addReply({ + id, + in_reply_to_id: ancestors[ancestors.length - 1]?.id, + }); + } + + descendants.forEach(addReply); +}; + +const deleteFromContexts = (state: Draft, ids: string[]): void => { + ids.forEach((id) => { + const inReplyToIdOfId = state.inReplyTos[id]; + const repliesOfId = state.replies[id]; + + if (inReplyToIdOfId) { + const siblings = state.replies[inReplyToIdOfId]; + + if (siblings) { + state.replies[inReplyToIdOfId] = siblings.filter( + (sibling) => sibling !== id, + ); + } + } + + if (repliesOfId) { + repliesOfId.forEach((reply) => { + delete state.inReplyTos[reply]; + }); + } + + delete state.inReplyTos[id]; + delete state.replies[id]; + }); +}; + +const filterContexts = ( + state: Draft, + relationship: ApiRelationshipJSON, + statuses: ImmutableList, +): void => { + const ownedStatusIds = statuses + .filter((status) => (status.get('account') as string) === relationship.id) + .map((status) => status.get('id') as string); + + deleteFromContexts(state, ownedStatusIds.toArray()); +}; + +const updateContext = (state: Draft, status: ApiStatusJSON): void => { + if (!status.in_reply_to_id) { + return; + } + + const siblings = (state.replies[status.in_reply_to_id] ??= []); + + state.inReplyTos[status.id] = status.in_reply_to_id; + + if (!siblings.includes(status.id)) { + siblings.push(status.id); + } +}; + +export const contextsReducer = createReducer(initialState, (builder) => { + builder + .addCase(fetchContext.fulfilled, (state, action) => { + normalizeContext(state, action.meta.arg.statusId, action.payload.context); + }) + .addCase(blockAccountSuccess, (state, action) => { + filterContexts( + state, + action.payload.relationship, + action.payload.statuses as ImmutableList, + ); + }) + .addCase(muteAccountSuccess, (state, action) => { + filterContexts( + state, + action.payload.relationship, + action.payload.statuses as ImmutableList, + ); + }) + .addCase(timelineDelete, (state, action) => { + deleteFromContexts(state, [action.payload.statusId]); + }) + .addMatcher( + (action: UnknownAction): action is TimelineUpdateAction => + action.type === TIMELINE_UPDATE, + (state, action) => { + updateContext(state, action.status); + }, + ); +}); diff --git a/app/javascript/mastodon/reducers/index.ts b/app/javascript/mastodon/reducers/index.ts index e98d835f47..a1b349af80 100644 --- a/app/javascript/mastodon/reducers/index.ts +++ b/app/javascript/mastodon/reducers/index.ts @@ -8,7 +8,7 @@ import accounts_map from './accounts_map'; import { alertsReducer } from './alerts'; import announcements from './announcements'; import { composeReducer } from './compose'; -import contexts from './contexts'; +import { contextsReducer } from './contexts'; import conversations from './conversations'; import custom_emojis from './custom_emojis'; import { dropdownMenuReducer } from './dropdown_menu'; @@ -55,7 +55,7 @@ const reducers = { settings, push_notifications, server, - contexts, + contexts: contextsReducer, compose: composeReducer, search: searchReducer, media_attachments, diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js index d92174f806..7a1b7967e5 100644 --- a/app/javascript/mastodon/reducers/statuses.js +++ b/app/javascript/mastodon/reducers/statuses.js @@ -64,6 +64,7 @@ const statusTranslateUndo = (state, id) => { }); }; +/** @type {ImmutableMap>} */ const initialState = ImmutableMap(); /** @type {import('@reduxjs/toolkit').Reducer} */ diff --git a/app/javascript/mastodon/selectors/contexts.ts b/app/javascript/mastodon/selectors/contexts.ts new file mode 100644 index 0000000000..1c76d7cc82 --- /dev/null +++ b/app/javascript/mastodon/selectors/contexts.ts @@ -0,0 +1,94 @@ +import { createAppSelector } from 'mastodon/store'; + +export const getAncestorsIds = createAppSelector( + [(_, id: string) => id, (state) => state.contexts.inReplyTos], + (statusId, inReplyTos) => { + const ancestorsIds: string[] = []; + + let currentId: string | undefined = statusId; + + while (currentId && !ancestorsIds.includes(currentId)) { + ancestorsIds.unshift(currentId); + currentId = inReplyTos[currentId]; + } + + return ancestorsIds; + }, +); + +export const getDescendantsIds = createAppSelector( + [ + (_, id: string) => id, + (state) => state.contexts.replies, + (state) => state.statuses, + ], + (statusId, contextReplies, statuses) => { + const descendantsIds: string[] = []; + + const visitIds = [statusId]; + + while (visitIds.length > 0) { + const id = visitIds.pop(); + + if (!id) { + break; + } + + const replies = contextReplies[id]; + + if (statusId !== id) { + descendantsIds.push(id); + } + + if (replies) { + replies.reverse().forEach((replyId) => { + if ( + !visitIds.includes(replyId) && + !descendantsIds.includes(replyId) && + statusId !== replyId + ) { + visitIds.push(replyId); + } + }); + } + } + + let insertAt = descendantsIds.findIndex((id) => { + const status = statuses.get(id); + + if (!status) { + return false; + } + + const inReplyToAccountId = status.get('in_reply_to_account_id') as + | string + | null; + const accountId = status.get('account') as string; + + return inReplyToAccountId !== accountId; + }); + + if (insertAt !== -1) { + descendantsIds.forEach((id, idx) => { + const status = statuses.get(id); + + if (!status) { + return; + } + + const inReplyToAccountId = status.get('in_reply_to_account_id') as + | string + | null; + const accountId = status.get('account') as string; + + if (idx > insertAt && inReplyToAccountId === accountId) { + descendantsIds.splice(idx, 1); + descendantsIds.splice(insertAt, 0, id); + insertAt += 1; + } + }); + } + + return descendantsIds; + }, +); diff --git a/app/javascript/mastodon/store/index.ts b/app/javascript/mastodon/store/index.ts index c2629b0ed7..0b9564c909 100644 --- a/app/javascript/mastodon/store/index.ts +++ b/app/javascript/mastodon/store/index.ts @@ -3,6 +3,7 @@ export type { GetState, AppDispatch, RootState } from './store'; export { createAppAsyncThunk, + createAppSelector, useAppDispatch, useAppSelector, } from './typed_functions'; diff --git a/app/javascript/mastodon/store/typed_functions.ts b/app/javascript/mastodon/store/typed_functions.ts index 9fcc90c61b..f0a18a0681 100644 --- a/app/javascript/mastodon/store/typed_functions.ts +++ b/app/javascript/mastodon/store/typed_functions.ts @@ -1,5 +1,5 @@ import type { GetThunkAPI } from '@reduxjs/toolkit'; -import { createAsyncThunk } from '@reduxjs/toolkit'; +import { createAsyncThunk, createSelector } from '@reduxjs/toolkit'; // eslint-disable-next-line @typescript-eslint/no-restricted-imports import { useDispatch, useSelector } from 'react-redux'; @@ -24,6 +24,8 @@ export const createAppAsyncThunk = createAsyncThunk.withTypes<{ rejectValue: AsyncThunkRejectValue; }>(); +export const createAppSelector = createSelector.withTypes(); + interface AppThunkConfig { state: RootState; dispatch: AppDispatch; From 715cbee93d419e26cf952bf7fc70f9c1cc217d8b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 28 Apr 2025 15:59:49 +0200 Subject: [PATCH 059/349] Fix dashboard warning about Elasticsearch index mismatch not showing up (#34567) Co-authored-by: Claire --- app/lib/admin/system_check/elasticsearch_check.rb | 4 ++-- spec/lib/admin/system_check/elasticsearch_check_spec.rb | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/lib/admin/system_check/elasticsearch_check.rb b/app/lib/admin/system_check/elasticsearch_check.rb index 3950756e6a..e427c83f82 100644 --- a/app/lib/admin/system_check/elasticsearch_check.rb +++ b/app/lib/admin/system_check/elasticsearch_check.rb @@ -16,7 +16,7 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck def pass? return true unless Chewy.enabled? - running_version.present? && compatible_version? && cluster_health['status'] == 'green' && indexes_match? && preset_matches? + running_version.present? && compatible_version? && cluster_health['status'] == 'green' && indexes_match? && specifications_match? && preset_matches? rescue Faraday::ConnectionFailed, Elasticsearch::Transport::Transport::Error false end @@ -40,7 +40,7 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck ) elsif !specifications_match? Admin::SystemCheck::Message.new( - :elasticsearch_analysis_mismatch, + :elasticsearch_analysis_index_mismatch, mismatched_specifications_indexes.join(' ') ) elsif cluster_health['status'] == 'red' diff --git a/spec/lib/admin/system_check/elasticsearch_check_spec.rb b/spec/lib/admin/system_check/elasticsearch_check_spec.rb index 05d204c453..702c19cf09 100644 --- a/spec/lib/admin/system_check/elasticsearch_check_spec.rb +++ b/spec/lib/admin/system_check/elasticsearch_check_spec.rb @@ -29,6 +29,9 @@ RSpec.describe Admin::SystemCheck::ElasticsearchCheck do }, }, }) + [AccountsIndex, StatusesIndex, PublicStatusesIndex, InstancesIndex, TagsIndex].each do |index| + allow(index).to receive(:specification).and_return(instance_double(Chewy::Index::Specification, changed?: false)) + end end context 'when running version is present and high enough' do From e96044f389f38ff3639c91d1b8a135af154ef9f5 Mon Sep 17 00:00:00 2001 From: Essem Date: Mon, 28 Apr 2025 09:22:14 -0500 Subject: [PATCH 060/349] Update to Twemoji 15.1.0 (#34321) --- .prettierignore | 2 +- .../components/emoji_picker_dropdown.jsx | 2 +- .../features/emoji/emoji_compressed.js | 102 +++---------- .../mastodon/features/emoji/emoji_data.json | 1 + .../mastodon/features/emoji/emoji_map.json | 2 +- .../mastodon/features/emoji/emoji_sheet.json | 1 - config/webpack/production.js | 2 +- lib/tasks/emojis.rake | 137 +++++++++++++++--- package.json | 1 - public/emoji/1f344-200d-1f7eb.svg | 1 + public/emoji/1f34b-200d-1f7e9.svg | 1 + ...c3-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...c3-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f3c3-1f3fb-200d-27a1-fe0f.svg | 1 + ...c3-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...c3-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f3c3-1f3fc-200d-27a1-fe0f.svg | 1 + ...c3-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...c3-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f3c3-1f3fd-200d-27a1-fe0f.svg | 1 + ...c3-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...c3-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f3c3-1f3fe-200d-27a1-fe0f.svg | 1 + ...c3-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...c3-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f3c3-1f3ff-200d-27a1-fe0f.svg | 1 + .../1f3c3-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + .../1f3c3-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f3c3-200d-27a1-fe0f.svg | 1 + public/emoji/1f426-200d-1f525.svg | 1 + .../1f468-1f3fb-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f468-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f468-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg | 1 + .../1f468-1f3fc-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f468-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f468-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg | 1 + .../1f468-1f3fd-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f468-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f468-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg | 1 + .../1f468-1f3fe-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f468-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f468-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg | 1 + .../1f468-1f3ff-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f468-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f468-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg | 1 + public/emoji/1f468-200d-1f466-200d-1f466.svg | 2 +- public/emoji/1f468-200d-1f466.svg | 2 +- public/emoji/1f468-200d-1f467-200d-1f466.svg | 2 +- public/emoji/1f468-200d-1f467-200d-1f467.svg | 2 +- public/emoji/1f468-200d-1f467.svg | 2 +- ...1f468-200d-1f468-200d-1f466-200d-1f466.svg | 2 +- public/emoji/1f468-200d-1f468-200d-1f466.svg | 2 +- ...1f468-200d-1f468-200d-1f467-200d-1f466.svg | 2 +- ...1f468-200d-1f468-200d-1f467-200d-1f467.svg | 2 +- public/emoji/1f468-200d-1f468-200d-1f467.svg | 2 +- ...1f468-200d-1f469-200d-1f466-200d-1f466.svg | 2 +- public/emoji/1f468-200d-1f469-200d-1f466.svg | 2 +- ...1f468-200d-1f469-200d-1f467-200d-1f466.svg | 2 +- ...1f468-200d-1f469-200d-1f467-200d-1f467.svg | 2 +- public/emoji/1f468-200d-1f469-200d-1f467.svg | 2 +- .../emoji/1f468-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../emoji/1f468-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../emoji/1f468-200d-1f9bd-200d-27a1-fe0f.svg | 1 + .../1f469-1f3fb-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f469-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f469-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg | 1 + .../1f469-1f3fc-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f469-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f469-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg | 1 + .../1f469-1f3fd-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f469-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f469-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg | 1 + .../1f469-1f3fe-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f469-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f469-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg | 1 + .../1f469-1f3ff-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f469-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f469-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg | 1 + public/emoji/1f469-200d-1f466-200d-1f466.svg | 2 +- public/emoji/1f469-200d-1f466.svg | 2 +- public/emoji/1f469-200d-1f467-200d-1f466.svg | 2 +- public/emoji/1f469-200d-1f467-200d-1f467.svg | 2 +- public/emoji/1f469-200d-1f467.svg | 2 +- ...1f469-200d-1f469-200d-1f466-200d-1f466.svg | 2 +- public/emoji/1f469-200d-1f469-200d-1f466.svg | 2 +- ...1f469-200d-1f469-200d-1f467-200d-1f466.svg | 2 +- ...1f469-200d-1f469-200d-1f467-200d-1f467.svg | 2 +- public/emoji/1f469-200d-1f469-200d-1f467.svg | 2 +- .../emoji/1f469-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../emoji/1f469-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../emoji/1f469-200d-1f9bd-200d-27a1-fe0f.svg | 1 + public/emoji/1f46a.svg | 2 +- public/emoji/1f642-200d-2194-fe0f.svg | 1 + public/emoji/1f642-200d-2195-fe0f.svg | 1 + ...b6-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...b6-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f6b6-1f3fb-200d-27a1-fe0f.svg | 1 + ...b6-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...b6-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f6b6-1f3fc-200d-27a1-fe0f.svg | 1 + ...b6-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...b6-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f6b6-1f3fd-200d-27a1-fe0f.svg | 1 + ...b6-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...b6-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f6b6-1f3fe-200d-27a1-fe0f.svg | 1 + ...b6-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...b6-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f6b6-1f3ff-200d-27a1-fe0f.svg | 1 + .../1f6b6-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + .../1f6b6-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f6b6-200d-27a1-fe0f.svg | 1 + ...ce-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...ce-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f9ce-1f3fb-200d-27a1-fe0f.svg | 1 + ...ce-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...ce-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f9ce-1f3fc-200d-27a1-fe0f.svg | 1 + ...ce-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...ce-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f9ce-1f3fd-200d-27a1-fe0f.svg | 1 + ...ce-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...ce-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f9ce-1f3fe-200d-27a1-fe0f.svg | 1 + ...ce-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + ...ce-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f9ce-1f3ff-200d-27a1-fe0f.svg | 1 + .../1f9ce-200d-2640-fe0f-200d-27a1-fe0f.svg | 1 + .../1f9ce-200d-2642-fe0f-200d-27a1-fe0f.svg | 1 + public/emoji/1f9ce-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3fb-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3fc-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3fd-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3fe-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3ff-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../1f9d1-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg | 1 + .../emoji/1f9d1-200d-1f9af-200d-27a1-fe0f.svg | 1 + .../emoji/1f9d1-200d-1f9bc-200d-27a1-fe0f.svg | 1 + .../emoji/1f9d1-200d-1f9bd-200d-27a1-fe0f.svg | 1 + ...1f9d1-200d-1f9d1-200d-1f9d2-200d-1f9d2.svg | 1 + public/emoji/1f9d1-200d-1f9d1-200d-1f9d2.svg | 1 + public/emoji/1f9d1-200d-1f9d2-200d-1f9d2.svg | 1 + public/emoji/1f9d1-200d-1f9d2.svg | 1 + public/emoji/26d3-fe0f-200d-1f4a5.svg | 1 + public/emoji/sheet_15.png | Bin 1327037 -> 0 bytes public/emoji/sheet_15_1.png | Bin 0 -> 1314041 bytes yarn.lock | 8 - 156 files changed, 282 insertions(+), 146 deletions(-) create mode 100644 app/javascript/mastodon/features/emoji/emoji_data.json delete mode 100644 app/javascript/mastodon/features/emoji/emoji_sheet.json create mode 100644 public/emoji/1f344-200d-1f7eb.svg create mode 100644 public/emoji/1f34b-200d-1f7e9.svg create mode 100644 public/emoji/1f3c3-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-1f3fb-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-1f3fc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-1f3fd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-1f3fe-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-1f3ff-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f3c3-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f426-200d-1f525.svg create mode 100644 public/emoji/1f468-1f3fb-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-1f3fc-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-1f3fd-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-1f3fe-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-1f3ff-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f468-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3fb-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3fc-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3fd-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3fe-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3ff-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f469-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f642-200d-2194-fe0f.svg create mode 100644 public/emoji/1f642-200d-2195-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3fb-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3fc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3fd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3fe-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-1f3ff-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f6b6-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3fb-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3fc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3fd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3fe-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-1f3ff-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-200d-2640-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-200d-2642-fe0f-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9ce-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3fb-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3fc-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3fd-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3fe-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3ff-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-200d-1f9af-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-200d-1f9bc-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-200d-1f9bd-200d-27a1-fe0f.svg create mode 100644 public/emoji/1f9d1-200d-1f9d1-200d-1f9d2-200d-1f9d2.svg create mode 100644 public/emoji/1f9d1-200d-1f9d1-200d-1f9d2.svg create mode 100644 public/emoji/1f9d1-200d-1f9d2-200d-1f9d2.svg create mode 100644 public/emoji/1f9d1-200d-1f9d2.svg create mode 100644 public/emoji/26d3-fe0f-200d-1f4a5.svg delete mode 100644 public/emoji/sheet_15.png create mode 100644 public/emoji/sheet_15_1.png diff --git a/.prettierignore b/.prettierignore index 80b4c0159e..07f90e4bbd 100644 --- a/.prettierignore +++ b/.prettierignore @@ -63,7 +63,7 @@ docker-compose.override.yml # Ignore emoji map file /app/javascript/mastodon/features/emoji/emoji_map.json -/app/javascript/mastodon/features/emoji/emoji_sheet.json +/app/javascript/mastodon/features/emoji/emoji_data.json # Ignore locale files /app/javascript/mastodon/locales/*.json diff --git a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx index a7d4408d1a..2bd6af4cf4 100644 --- a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx +++ b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.jsx @@ -40,7 +40,7 @@ let EmojiPicker, Emoji; // load asynchronously const listenerOptions = supportsPassiveEvents ? { passive: true, capture: true } : true; -const backgroundImageFn = () => `${assetHost}/emoji/sheet_15.png`; +const backgroundImageFn = () => `${assetHost}/emoji/sheet_15_1.png`; const notFoundFn = () => (
    diff --git a/app/javascript/mastodon/features/emoji/emoji_compressed.js b/app/javascript/mastodon/features/emoji/emoji_compressed.js index 5cd3a1317d..7cc1de7087 100644 --- a/app/javascript/mastodon/features/emoji/emoji_compressed.js +++ b/app/javascript/mastodon/features/emoji/emoji_compressed.js @@ -7,94 +7,21 @@ // This version comment should be bumped each time the emoji data is changed // to ensure that the prevaled file is regenerated by Babel -// version: 3 +// version: 4 -// This json file contains the names of the categories. -const emojiMart5LocalesData = require('@emoji-mart/data/i18n/en.json'); -const emojiMart5Data = require('@emoji-mart/data/sets/15/all.json'); +const { NimbleEmojiIndex } = require('emoji-mart'); const { uncompress: emojiMartUncompress } = require('emoji-mart/dist/utils/data'); -const _ = require('lodash'); +let data = require('./emoji_data.json'); const emojiMap = require('./emoji_map.json'); -// This json file is downloaded from https://github.com/iamcal/emoji-data/ -// and is used to correct the sheet coordinates since we're using that repo's sheet -const emojiSheetData = require('./emoji_sheet.json'); const { unicodeToFilename } = require('./unicode_to_filename'); const { unicodeToUnifiedName } = require('./unicode_to_unified_name'); -// Grabbed from `emoji_utils` to avoid circular dependency -function unifiedToNative(unified) { - let unicodes = unified.split('-'), - codePoints = unicodes.map((u) => `0x${u}`); - - return String.fromCodePoint(...codePoints); -} - -let data = { - compressed: true, - categories: emojiMart5Data.categories.map(cat => { - return { - ...cat, - name: emojiMart5LocalesData.categories[cat.id] - }; - }), - aliases: emojiMart5Data.aliases, - emojis: _(emojiMart5Data.emojis).values().map(emoji => { - let skin_variations = {}; - const unified = emoji.skins[0].unified.toUpperCase(); - const emojiFromRawData = emojiSheetData.find(e => e.unified === unified); - - if (!emojiFromRawData) { - return undefined; - } - - if (emoji.skins.length > 1) { - const [, ...nonDefaultSkins] = emoji.skins; - nonDefaultSkins.forEach(skin => { - const [matchingRawCodePoints,matchingRawEmoji] = Object.entries(emojiFromRawData.skin_variations).find((pair) => { - const [, value] = pair; - return value.unified.toLowerCase() === skin.unified; - }); - - if (matchingRawEmoji && matchingRawCodePoints) { - // At the time of writing, the json from `@emoji-mart/data` doesn't have data - // for emoji like `woman-heart-woman` with two different skin tones. - const skinToneCode = matchingRawCodePoints.split('-')[0]; - skin_variations[skinToneCode] = { - unified: matchingRawEmoji.unified.toUpperCase(), - non_qualified: null, - sheet_x: matchingRawEmoji.sheet_x, - sheet_y: matchingRawEmoji.sheet_y, - has_img_twitter: true, - native: unifiedToNative(matchingRawEmoji.unified.toUpperCase()) - }; - } - }); - } - - return { - a: emoji.name, - b: unified, - c: undefined, - f: true, - j: [emoji.id, ...emoji.keywords], - k: [emojiFromRawData.sheet_x, emojiFromRawData.sheet_y], - m: emoji.emoticons?.[0], - l: emoji.emoticons, - o: emoji.version, - id: emoji.id, - skin_variations, - native: unifiedToNative(unified.toUpperCase()) - }; - }).compact().keyBy(e => e.id).mapValues(e => _.omit(e, 'id')).value() -}; - -if (data.compressed) { - emojiMartUncompress(data); -} +emojiMartUncompress(data); const emojiMartData = data; +const emojiIndex = new NimbleEmojiIndex(emojiMartData); const excluded = ['®', '©', '™']; const skinTones = ['🏻', '🏼', '🏽', '🏾', '🏿']; @@ -103,10 +30,15 @@ const shortcodeMap = {}; const shortCodesToEmojiData = {}; const emojisWithoutShortCodes = []; -Object.keys(emojiMart5Data.emojis).forEach(key => { - let emoji = emojiMart5Data.emojis[key]; +Object.keys(emojiIndex.emojis).forEach(key => { + let emoji = emojiIndex.emojis[key]; - shortcodeMap[emoji.skins[0].native] = emoji.id; + // Emojis with skin tone modifiers are stored like this + if (Object.hasOwn(emoji, '1')) { + emoji = emoji['1']; + } + + shortcodeMap[emoji.native] = emoji.id; }); const stripModifiers = unicode => { @@ -150,9 +82,13 @@ Object.keys(emojiMap).forEach(key => { } }); -Object.keys(emojiMartData.emojis).forEach(key => { - let emoji = emojiMartData.emojis[key]; +Object.keys(emojiIndex.emojis).forEach(key => { + let emoji = emojiIndex.emojis[key]; + // Emojis with skin tone modifiers are stored like this + if (Object.hasOwn(emoji, '1')) { + emoji = emoji['1']; + } const { native } = emoji; let { short_names, search, unified } = emojiMartData.emojis[key]; diff --git a/app/javascript/mastodon/features/emoji/emoji_data.json b/app/javascript/mastodon/features/emoji/emoji_data.json new file mode 100644 index 0000000000..4d7a48692b --- /dev/null +++ b/app/javascript/mastodon/features/emoji/emoji_data.json @@ -0,0 +1 @@ +{"compressed":true,"categories":[{"id":"people","name":"Smileys & People","emojis":["grinning","smiley","smile","grin","laughing","sweat_smile","rolling_on_the_floor_laughing","joy","slightly_smiling_face","upside_down_face","melting_face","wink","blush","innocent","smiling_face_with_3_hearts","heart_eyes","star-struck","kissing_heart","kissing","relaxed","kissing_closed_eyes","kissing_smiling_eyes","smiling_face_with_tear","yum","stuck_out_tongue","stuck_out_tongue_winking_eye","zany_face","stuck_out_tongue_closed_eyes","money_mouth_face","hugging_face","face_with_hand_over_mouth","face_with_open_eyes_and_hand_over_mouth","face_with_peeking_eye","shushing_face","thinking_face","saluting_face","zipper_mouth_face","face_with_raised_eyebrow","neutral_face","expressionless","no_mouth","dotted_line_face","face_in_clouds","smirk","unamused","face_with_rolling_eyes","grimacing","face_exhaling","lying_face","shaking_face","head_shaking_horizontally","head_shaking_vertically","relieved","pensive","sleepy","drooling_face","sleeping","mask","face_with_thermometer","face_with_head_bandage","nauseated_face","face_vomiting","sneezing_face","hot_face","cold_face","woozy_face","dizzy_face","face_with_spiral_eyes","exploding_head","face_with_cowboy_hat","partying_face","disguised_face","sunglasses","nerd_face","face_with_monocle","confused","face_with_diagonal_mouth","worried","slightly_frowning_face","white_frowning_face","open_mouth","hushed","astonished","flushed","pleading_face","face_holding_back_tears","frowning","anguished","fearful","cold_sweat","disappointed_relieved","cry","sob","scream","confounded","persevere","disappointed","sweat","weary","tired_face","yawning_face","triumph","rage","angry","face_with_symbols_on_mouth","smiling_imp","imp","skull","skull_and_crossbones","hankey","clown_face","japanese_ogre","japanese_goblin","ghost","alien","space_invader","robot_face","smiley_cat","smile_cat","joy_cat","heart_eyes_cat","smirk_cat","kissing_cat","scream_cat","crying_cat_face","pouting_cat","see_no_evil","hear_no_evil","speak_no_evil","wave","raised_back_of_hand","raised_hand_with_fingers_splayed","hand","spock-hand","rightwards_hand","leftwards_hand","palm_down_hand","palm_up_hand","leftwards_pushing_hand","rightwards_pushing_hand","ok_hand","pinched_fingers","pinching_hand","v","crossed_fingers","hand_with_index_finger_and_thumb_crossed","i_love_you_hand_sign","the_horns","call_me_hand","point_left","point_right","point_up_2","middle_finger","point_down","point_up","index_pointing_at_the_viewer","+1","-1","fist","facepunch","left-facing_fist","right-facing_fist","clap","raised_hands","heart_hands","open_hands","palms_up_together","handshake","pray","writing_hand","nail_care","selfie","muscle","mechanical_arm","mechanical_leg","leg","foot","ear","ear_with_hearing_aid","nose","brain","anatomical_heart","lungs","tooth","bone","eyes","eye","tongue","lips","biting_lip","baby","child","boy","girl","adult","person_with_blond_hair","man","bearded_person","man_with_beard","woman_with_beard","red_haired_man","curly_haired_man","white_haired_man","bald_man","woman","red_haired_woman","red_haired_person","curly_haired_woman","curly_haired_person","white_haired_woman","white_haired_person","bald_woman","bald_person","blond-haired-woman","blond-haired-man","older_adult","older_man","older_woman","person_frowning","man-frowning","woman-frowning","person_with_pouting_face","man-pouting","woman-pouting","no_good","man-gesturing-no","woman-gesturing-no","ok_woman","man-gesturing-ok","woman-gesturing-ok","information_desk_person","man-tipping-hand","woman-tipping-hand","raising_hand","man-raising-hand","woman-raising-hand","deaf_person","deaf_man","deaf_woman","bow","man-bowing","woman-bowing","face_palm","man-facepalming","woman-facepalming","shrug","man-shrugging","woman-shrugging","health_worker","male-doctor","female-doctor","student","male-student","female-student","teacher","male-teacher","female-teacher","judge","male-judge","female-judge","farmer","male-farmer","female-farmer","cook","male-cook","female-cook","mechanic","male-mechanic","female-mechanic","factory_worker","male-factory-worker","female-factory-worker","office_worker","male-office-worker","female-office-worker","scientist","male-scientist","female-scientist","technologist","male-technologist","female-technologist","singer","male-singer","female-singer","artist","male-artist","female-artist","pilot","male-pilot","female-pilot","astronaut","male-astronaut","female-astronaut","firefighter","male-firefighter","female-firefighter","cop","male-police-officer","female-police-officer","sleuth_or_spy","male-detective","female-detective","guardsman","male-guard","female-guard","ninja","construction_worker","male-construction-worker","female-construction-worker","person_with_crown","prince","princess","man_with_turban","man-wearing-turban","woman-wearing-turban","man_with_gua_pi_mao","person_with_headscarf","person_in_tuxedo","man_in_tuxedo","woman_in_tuxedo","bride_with_veil","man_with_veil","woman_with_veil","pregnant_woman","pregnant_man","pregnant_person","breast-feeding","woman_feeding_baby","man_feeding_baby","person_feeding_baby","angel","santa","mrs_claus","mx_claus","superhero","male_superhero","female_superhero","supervillain","male_supervillain","female_supervillain","mage","male_mage","female_mage","fairy","male_fairy","female_fairy","vampire","male_vampire","female_vampire","merperson","merman","mermaid","elf","male_elf","female_elf","genie","male_genie","female_genie","zombie","male_zombie","female_zombie","troll","massage","man-getting-massage","woman-getting-massage","haircut","man-getting-haircut","woman-getting-haircut","walking","man-walking","woman-walking","person_walking_facing_right","woman_walking_facing_right","man_walking_facing_right","standing_person","man_standing","woman_standing","kneeling_person","man_kneeling","woman_kneeling","person_kneeling_facing_right","woman_kneeling_facing_right","man_kneeling_facing_right","person_with_probing_cane","person_with_white_cane_facing_right","man_with_probing_cane","man_with_white_cane_facing_right","woman_with_probing_cane","woman_with_white_cane_facing_right","person_in_motorized_wheelchair","person_in_motorized_wheelchair_facing_right","man_in_motorized_wheelchair","man_in_motorized_wheelchair_facing_right","woman_in_motorized_wheelchair","woman_in_motorized_wheelchair_facing_right","person_in_manual_wheelchair","person_in_manual_wheelchair_facing_right","man_in_manual_wheelchair","man_in_manual_wheelchair_facing_right","woman_in_manual_wheelchair","woman_in_manual_wheelchair_facing_right","runner","man-running","woman-running","person_running_facing_right","woman_running_facing_right","man_running_facing_right","dancer","man_dancing","man_in_business_suit_levitating","dancers","men-with-bunny-ears-partying","women-with-bunny-ears-partying","person_in_steamy_room","man_in_steamy_room","woman_in_steamy_room","person_climbing","man_climbing","woman_climbing","fencer","horse_racing","skier","snowboarder","golfer","man-golfing","woman-golfing","surfer","man-surfing","woman-surfing","rowboat","man-rowing-boat","woman-rowing-boat","swimmer","man-swimming","woman-swimming","person_with_ball","man-bouncing-ball","woman-bouncing-ball","weight_lifter","man-lifting-weights","woman-lifting-weights","bicyclist","man-biking","woman-biking","mountain_bicyclist","man-mountain-biking","woman-mountain-biking","person_doing_cartwheel","man-cartwheeling","woman-cartwheeling","wrestlers","man-wrestling","woman-wrestling","water_polo","man-playing-water-polo","woman-playing-water-polo","handball","man-playing-handball","woman-playing-handball","juggling","man-juggling","woman-juggling","person_in_lotus_position","man_in_lotus_position","woman_in_lotus_position","bath","sleeping_accommodation","people_holding_hands","two_women_holding_hands","man_and_woman_holding_hands","two_men_holding_hands","couplekiss","woman-kiss-man","man-kiss-man","woman-kiss-woman","couple_with_heart","woman-heart-man","man-heart-man","woman-heart-woman","man-woman-boy","man-woman-girl","man-woman-girl-boy","man-woman-boy-boy","man-woman-girl-girl","man-man-boy","man-man-girl","man-man-girl-boy","man-man-boy-boy","man-man-girl-girl","woman-woman-boy","woman-woman-girl","woman-woman-girl-boy","woman-woman-boy-boy","woman-woman-girl-girl","man-boy","man-boy-boy","man-girl","man-girl-boy","man-girl-girl","woman-boy","woman-boy-boy","woman-girl","woman-girl-boy","woman-girl-girl","speaking_head_in_silhouette","bust_in_silhouette","busts_in_silhouette","people_hugging","family","family_adult_adult_child","family_adult_adult_child_child","family_adult_child","family_adult_child_child","footprints","love_letter","cupid","gift_heart","sparkling_heart","heartpulse","heartbeat","revolving_hearts","two_hearts","heart_decoration","heavy_heart_exclamation_mark_ornament","broken_heart","heart_on_fire","mending_heart","heart","pink_heart","orange_heart","yellow_heart","green_heart","blue_heart","light_blue_heart","purple_heart","brown_heart","black_heart","grey_heart","white_heart","kiss","100","anger","boom","dizzy","sweat_drops","dash","hole","speech_balloon","eye-in-speech-bubble","left_speech_bubble","right_anger_bubble","thought_balloon","zzz"]},{"id":"nature","name":"Animals & Nature","emojis":["monkey_face","monkey","gorilla","orangutan","dog","dog2","guide_dog","service_dog","poodle","wolf","fox_face","raccoon","cat","cat2","black_cat","lion_face","tiger","tiger2","leopard","horse","moose","donkey","racehorse","unicorn_face","zebra_face","deer","bison","cow","ox","water_buffalo","cow2","pig","pig2","boar","pig_nose","ram","sheep","goat","dromedary_camel","camel","llama","giraffe_face","elephant","mammoth","rhinoceros","hippopotamus","mouse","mouse2","rat","hamster","rabbit","rabbit2","chipmunk","beaver","hedgehog","bat","bear","polar_bear","koala","panda_face","sloth","otter","skunk","kangaroo","badger","feet","turkey","chicken","rooster","hatching_chick","baby_chick","hatched_chick","bird","penguin","dove_of_peace","eagle","duck","swan","owl","dodo","feather","flamingo","peacock","parrot","wing","black_bird","goose","phoenix","frog","crocodile","turtle","lizard","snake","dragon_face","dragon","sauropod","t-rex","whale","whale2","dolphin","seal","fish","tropical_fish","blowfish","shark","octopus","shell","coral","jellyfish","snail","butterfly","bug","ant","bee","beetle","ladybug","cricket","cockroach","spider","spider_web","scorpion","mosquito","fly","worm","microbe","bouquet","cherry_blossom","white_flower","lotus","rosette","rose","wilted_flower","hibiscus","sunflower","blossom","tulip","hyacinth","seedling","potted_plant","evergreen_tree","deciduous_tree","palm_tree","cactus","ear_of_rice","herb","shamrock","four_leaf_clover","maple_leaf","fallen_leaf","leaves","empty_nest","nest_with_eggs","mushroom"]},{"id":"foods","name":"Food & Drink","emojis":["grapes","melon","watermelon","tangerine","lemon","lime","banana","pineapple","mango","apple","green_apple","pear","peach","cherries","strawberry","blueberries","kiwifruit","tomato","olive","coconut","avocado","eggplant","potato","carrot","corn","hot_pepper","bell_pepper","cucumber","leafy_green","broccoli","garlic","onion","peanuts","beans","chestnut","ginger_root","pea_pod","brown_mushroom","bread","croissant","baguette_bread","flatbread","pretzel","bagel","pancakes","waffle","cheese_wedge","meat_on_bone","poultry_leg","cut_of_meat","bacon","hamburger","fries","pizza","hotdog","sandwich","taco","burrito","tamale","stuffed_flatbread","falafel","egg","fried_egg","shallow_pan_of_food","stew","fondue","bowl_with_spoon","green_salad","popcorn","butter","salt","canned_food","bento","rice_cracker","rice_ball","rice","curry","ramen","spaghetti","sweet_potato","oden","sushi","fried_shrimp","fish_cake","moon_cake","dango","dumpling","fortune_cookie","takeout_box","crab","lobster","shrimp","squid","oyster","icecream","shaved_ice","ice_cream","doughnut","cookie","birthday","cake","cupcake","pie","chocolate_bar","candy","lollipop","custard","honey_pot","baby_bottle","glass_of_milk","coffee","teapot","tea","sake","champagne","wine_glass","cocktail","tropical_drink","beer","beers","clinking_glasses","tumbler_glass","pouring_liquid","cup_with_straw","bubble_tea","beverage_box","mate_drink","ice_cube","chopsticks","knife_fork_plate","fork_and_knife","spoon","hocho","jar","amphora"]},{"id":"activity","name":"Activities","emojis":["jack_o_lantern","christmas_tree","fireworks","sparkler","firecracker","sparkles","balloon","tada","confetti_ball","tanabata_tree","bamboo","dolls","flags","wind_chime","rice_scene","red_envelope","ribbon","gift","reminder_ribbon","admission_tickets","ticket","medal","trophy","sports_medal","first_place_medal","second_place_medal","third_place_medal","soccer","baseball","softball","basketball","volleyball","football","rugby_football","tennis","flying_disc","bowling","cricket_bat_and_ball","field_hockey_stick_and_ball","ice_hockey_stick_and_puck","lacrosse","table_tennis_paddle_and_ball","badminton_racquet_and_shuttlecock","boxing_glove","martial_arts_uniform","goal_net","golf","ice_skate","fishing_pole_and_fish","diving_mask","running_shirt_with_sash","ski","sled","curling_stone","dart","yo-yo","kite","gun","8ball","crystal_ball","magic_wand","video_game","joystick","slot_machine","game_die","jigsaw","teddy_bear","pinata","mirror_ball","nesting_dolls","spades","hearts","diamonds","clubs","chess_pawn","black_joker","mahjong","flower_playing_cards","performing_arts","frame_with_picture","art","thread","sewing_needle","yarn","knot"]},{"id":"places","name":"Travel & Places","emojis":["earth_africa","earth_americas","earth_asia","globe_with_meridians","world_map","japan","compass","snow_capped_mountain","mountain","volcano","mount_fuji","camping","beach_with_umbrella","desert","desert_island","national_park","stadium","classical_building","building_construction","bricks","rock","wood","hut","house_buildings","derelict_house_building","house","house_with_garden","office","post_office","european_post_office","hospital","bank","hotel","love_hotel","convenience_store","school","department_store","factory","japanese_castle","european_castle","wedding","tokyo_tower","statue_of_liberty","church","mosque","hindu_temple","synagogue","shinto_shrine","kaaba","fountain","tent","foggy","night_with_stars","cityscape","sunrise_over_mountains","sunrise","city_sunset","city_sunrise","bridge_at_night","hotsprings","carousel_horse","playground_slide","ferris_wheel","roller_coaster","barber","circus_tent","steam_locomotive","railway_car","bullettrain_side","bullettrain_front","train2","metro","light_rail","station","tram","monorail","mountain_railway","train","bus","oncoming_bus","trolleybus","minibus","ambulance","fire_engine","police_car","oncoming_police_car","taxi","oncoming_taxi","car","oncoming_automobile","blue_car","pickup_truck","truck","articulated_lorry","tractor","racing_car","racing_motorcycle","motor_scooter","manual_wheelchair","motorized_wheelchair","auto_rickshaw","bike","scooter","skateboard","roller_skate","busstop","motorway","railway_track","oil_drum","fuelpump","wheel","rotating_light","traffic_light","vertical_traffic_light","octagonal_sign","construction","anchor","ring_buoy","boat","canoe","speedboat","passenger_ship","ferry","motor_boat","ship","airplane","small_airplane","airplane_departure","airplane_arriving","parachute","seat","helicopter","suspension_railway","mountain_cableway","aerial_tramway","satellite","rocket","flying_saucer","bellhop_bell","luggage","hourglass","hourglass_flowing_sand","watch","alarm_clock","stopwatch","timer_clock","mantelpiece_clock","clock12","clock1230","clock1","clock130","clock2","clock230","clock3","clock330","clock4","clock430","clock5","clock530","clock6","clock630","clock7","clock730","clock8","clock830","clock9","clock930","clock10","clock1030","clock11","clock1130","new_moon","waxing_crescent_moon","first_quarter_moon","moon","full_moon","waning_gibbous_moon","last_quarter_moon","waning_crescent_moon","crescent_moon","new_moon_with_face","first_quarter_moon_with_face","last_quarter_moon_with_face","thermometer","sunny","full_moon_with_face","sun_with_face","ringed_planet","star","star2","stars","milky_way","cloud","partly_sunny","thunder_cloud_and_rain","mostly_sunny","barely_sunny","partly_sunny_rain","rain_cloud","snow_cloud","lightning","tornado","fog","wind_blowing_face","cyclone","rainbow","closed_umbrella","umbrella","umbrella_with_rain_drops","umbrella_on_ground","zap","snowflake","snowman","snowman_without_snow","comet","fire","droplet","ocean"]},{"id":"objects","name":"Objects","emojis":["eyeglasses","dark_sunglasses","goggles","lab_coat","safety_vest","necktie","shirt","jeans","scarf","gloves","coat","socks","dress","kimono","sari","one-piece_swimsuit","briefs","shorts","bikini","womans_clothes","folding_hand_fan","purse","handbag","pouch","shopping_bags","school_satchel","thong_sandal","mans_shoe","athletic_shoe","hiking_boot","womans_flat_shoe","high_heel","sandal","ballet_shoes","boot","hair_pick","crown","womans_hat","tophat","mortar_board","billed_cap","military_helmet","helmet_with_white_cross","prayer_beads","lipstick","ring","gem","mute","speaker","sound","loud_sound","loudspeaker","mega","postal_horn","bell","no_bell","musical_score","musical_note","notes","studio_microphone","level_slider","control_knobs","microphone","headphones","radio","saxophone","accordion","guitar","musical_keyboard","trumpet","violin","banjo","drum_with_drumsticks","long_drum","maracas","flute","iphone","calling","phone","telephone_receiver","pager","fax","battery","low_battery","electric_plug","computer","desktop_computer","printer","keyboard","three_button_mouse","trackball","minidisc","floppy_disk","cd","dvd","abacus","movie_camera","film_frames","film_projector","clapper","tv","camera","camera_with_flash","video_camera","vhs","mag","mag_right","candle","bulb","flashlight","izakaya_lantern","diya_lamp","notebook_with_decorative_cover","closed_book","book","green_book","blue_book","orange_book","books","notebook","ledger","page_with_curl","scroll","page_facing_up","newspaper","rolled_up_newspaper","bookmark_tabs","bookmark","label","moneybag","coin","yen","dollar","euro","pound","money_with_wings","credit_card","receipt","chart","email","e-mail","incoming_envelope","envelope_with_arrow","outbox_tray","inbox_tray","package","mailbox","mailbox_closed","mailbox_with_mail","mailbox_with_no_mail","postbox","ballot_box_with_ballot","pencil2","black_nib","lower_left_fountain_pen","lower_left_ballpoint_pen","lower_left_paintbrush","lower_left_crayon","memo","briefcase","file_folder","open_file_folder","card_index_dividers","date","calendar","spiral_note_pad","spiral_calendar_pad","card_index","chart_with_upwards_trend","chart_with_downwards_trend","bar_chart","clipboard","pushpin","round_pushpin","paperclip","linked_paperclips","straight_ruler","triangular_ruler","scissors","card_file_box","file_cabinet","wastebasket","lock","unlock","lock_with_ink_pen","closed_lock_with_key","key","old_key","hammer","axe","pick","hammer_and_pick","hammer_and_wrench","dagger_knife","crossed_swords","bomb","boomerang","bow_and_arrow","shield","carpentry_saw","wrench","screwdriver","nut_and_bolt","gear","compression","scales","probing_cane","link","broken_chain","chains","hook","toolbox","magnet","ladder","alembic","test_tube","petri_dish","dna","microscope","telescope","satellite_antenna","syringe","drop_of_blood","pill","adhesive_bandage","crutch","stethoscope","x-ray","door","elevator","mirror","window","bed","couch_and_lamp","chair","toilet","plunger","shower","bathtub","mouse_trap","razor","lotion_bottle","safety_pin","broom","basket","roll_of_paper","bucket","soap","bubbles","toothbrush","sponge","fire_extinguisher","shopping_trolley","smoking","coffin","headstone","funeral_urn","nazar_amulet","hamsa","moyai","placard","identification_card"]},{"id":"symbols","name":"Symbols","emojis":["atm","put_litter_in_its_place","potable_water","wheelchair","mens","womens","restroom","baby_symbol","wc","passport_control","customs","baggage_claim","left_luggage","warning","children_crossing","no_entry","no_entry_sign","no_bicycles","no_smoking","do_not_litter","non-potable_water","no_pedestrians","no_mobile_phones","underage","radioactive_sign","biohazard_sign","arrow_up","arrow_upper_right","arrow_right","arrow_lower_right","arrow_down","arrow_lower_left","arrow_left","arrow_upper_left","arrow_up_down","left_right_arrow","leftwards_arrow_with_hook","arrow_right_hook","arrow_heading_up","arrow_heading_down","arrows_clockwise","arrows_counterclockwise","back","end","on","soon","top","place_of_worship","atom_symbol","om_symbol","star_of_david","wheel_of_dharma","yin_yang","latin_cross","orthodox_cross","star_and_crescent","peace_symbol","menorah_with_nine_branches","six_pointed_star","khanda","aries","taurus","gemini","cancer","leo","virgo","libra","scorpius","sagittarius","capricorn","aquarius","pisces","ophiuchus","twisted_rightwards_arrows","repeat","repeat_one","arrow_forward","fast_forward","black_right_pointing_double_triangle_with_vertical_bar","black_right_pointing_triangle_with_double_vertical_bar","arrow_backward","rewind","black_left_pointing_double_triangle_with_vertical_bar","arrow_up_small","arrow_double_up","arrow_down_small","arrow_double_down","double_vertical_bar","black_square_for_stop","black_circle_for_record","eject","cinema","low_brightness","high_brightness","signal_strength","wireless","vibration_mode","mobile_phone_off","female_sign","male_sign","transgender_symbol","heavy_multiplication_x","heavy_plus_sign","heavy_minus_sign","heavy_division_sign","heavy_equals_sign","infinity","bangbang","interrobang","question","grey_question","grey_exclamation","exclamation","wavy_dash","currency_exchange","heavy_dollar_sign","medical_symbol","recycle","fleur_de_lis","trident","name_badge","beginner","o","white_check_mark","ballot_box_with_check","heavy_check_mark","x","negative_squared_cross_mark","curly_loop","loop","part_alternation_mark","eight_spoked_asterisk","eight_pointed_black_star","sparkle","copyright","registered","tm","hash","keycap_star","zero","one","two","three","four","five","six","seven","eight","nine","keycap_ten","capital_abcd","abcd","1234","symbols","abc","a","ab","b","cl","cool","free","information_source","id","m","new","ng","o2","ok","parking","sos","up","vs","koko","sa","u6708","u6709","u6307","ideograph_advantage","u5272","u7121","u7981","accept","u7533","u5408","u7a7a","congratulations","secret","u55b6","u6e80","red_circle","large_orange_circle","large_yellow_circle","large_green_circle","large_blue_circle","large_purple_circle","large_brown_circle","black_circle","white_circle","large_red_square","large_orange_square","large_yellow_square","large_green_square","large_blue_square","large_purple_square","large_brown_square","black_large_square","white_large_square","black_medium_square","white_medium_square","black_medium_small_square","white_medium_small_square","black_small_square","white_small_square","large_orange_diamond","large_blue_diamond","small_orange_diamond","small_blue_diamond","small_red_triangle","small_red_triangle_down","diamond_shape_with_a_dot_inside","radio_button","white_square_button","black_square_button"]},{"id":"flags","name":"Flags","emojis":["checkered_flag","triangular_flag_on_post","crossed_flags","waving_black_flag","waving_white_flag","rainbow-flag","transgender_flag","pirate_flag","flag-ac","flag-ad","flag-ae","flag-af","flag-ag","flag-ai","flag-al","flag-am","flag-ao","flag-aq","flag-ar","flag-as","flag-at","flag-au","flag-aw","flag-ax","flag-az","flag-ba","flag-bb","flag-bd","flag-be","flag-bf","flag-bg","flag-bh","flag-bi","flag-bj","flag-bl","flag-bm","flag-bn","flag-bo","flag-bq","flag-br","flag-bs","flag-bt","flag-bv","flag-bw","flag-by","flag-bz","flag-ca","flag-cc","flag-cd","flag-cf","flag-cg","flag-ch","flag-ci","flag-ck","flag-cl","flag-cm","cn","flag-co","flag-cp","flag-cr","flag-cu","flag-cv","flag-cw","flag-cx","flag-cy","flag-cz","de","flag-dg","flag-dj","flag-dk","flag-dm","flag-do","flag-dz","flag-ea","flag-ec","flag-ee","flag-eg","flag-eh","flag-er","es","flag-et","flag-eu","flag-fi","flag-fj","flag-fk","flag-fm","flag-fo","fr","flag-ga","gb","flag-gd","flag-ge","flag-gf","flag-gg","flag-gh","flag-gi","flag-gl","flag-gm","flag-gn","flag-gp","flag-gq","flag-gr","flag-gs","flag-gt","flag-gu","flag-gw","flag-gy","flag-hk","flag-hm","flag-hn","flag-hr","flag-ht","flag-hu","flag-ic","flag-id","flag-ie","flag-il","flag-im","flag-in","flag-io","flag-iq","flag-ir","flag-is","it","flag-je","flag-jm","flag-jo","jp","flag-ke","flag-kg","flag-kh","flag-ki","flag-km","flag-kn","flag-kp","kr","flag-kw","flag-ky","flag-kz","flag-la","flag-lb","flag-lc","flag-li","flag-lk","flag-lr","flag-ls","flag-lt","flag-lu","flag-lv","flag-ly","flag-ma","flag-mc","flag-md","flag-me","flag-mf","flag-mg","flag-mh","flag-mk","flag-ml","flag-mm","flag-mn","flag-mo","flag-mp","flag-mq","flag-mr","flag-ms","flag-mt","flag-mu","flag-mv","flag-mw","flag-mx","flag-my","flag-mz","flag-na","flag-nc","flag-ne","flag-nf","flag-ng","flag-ni","flag-nl","flag-no","flag-np","flag-nr","flag-nu","flag-nz","flag-om","flag-pa","flag-pe","flag-pf","flag-pg","flag-ph","flag-pk","flag-pl","flag-pm","flag-pn","flag-pr","flag-ps","flag-pt","flag-pw","flag-py","flag-qa","flag-re","flag-ro","flag-rs","ru","flag-rw","flag-sa","flag-sb","flag-sc","flag-sd","flag-se","flag-sg","flag-sh","flag-si","flag-sj","flag-sk","flag-sl","flag-sm","flag-sn","flag-so","flag-sr","flag-ss","flag-st","flag-sv","flag-sx","flag-sy","flag-sz","flag-ta","flag-tc","flag-td","flag-tf","flag-tg","flag-th","flag-tj","flag-tk","flag-tl","flag-tm","flag-tn","flag-to","flag-tr","flag-tt","flag-tv","flag-tw","flag-tz","flag-ua","flag-ug","flag-um","flag-un","us","flag-uy","flag-uz","flag-va","flag-vc","flag-ve","flag-vg","flag-vi","flag-vn","flag-vu","flag-wf","flag-ws","flag-xk","flag-ye","flag-yt","flag-za","flag-zm","flag-zw","flag-england","flag-scotland","flag-wales"]}],"emojis":{"grinning":{"a":"Grinning Face","b":"1F600","f":true,"k":[32,46],"j":["grinning_face","face","smile","happy","joy",":D","grin"],"m":":D"},"smiley":{"a":"Smiling Face with Open Mouth","b":"1F603","f":true,"k":[32,49],"j":["grinning_face_with_big_eyes","face","happy","joy","haha",":D",":)","smile","funny"],"l":["=)","=-)"],"m":":)"},"smile":{"a":"Smiling Face with Open Mouth and Smiling Eyes","b":"1F604","f":true,"k":[32,50],"j":["grinning_face_with_smiling_eyes","face","happy","joy","funny","haha","laugh","like",":D",":)"],"l":["C:","c:",":D",":-D"],"m":":)"},"grin":{"a":"Grinning Face with Smiling Eyes","b":"1F601","f":true,"k":[32,47],"j":["beaming_face_with_smiling_eyes","face","happy","smile","joy","kawaii"]},"laughing":{"a":"Smiling Face with Open Mouth and Tightly-Closed Eyes","b":"1F606","f":true,"k":[32,52],"j":["grinning_squinting_face","happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],"l":[":>",":->"]},"sweat_smile":{"a":"Smiling Face with Open Mouth and Cold Sweat","b":"1F605","f":true,"k":[32,51],"j":["grinning_face_with_sweat","face","hot","happy","laugh","sweat","smile","relief"]},"rolling_on_the_floor_laughing":{"a":"Rolling On the Floor Laughing","b":"1F923","f":true,"k":[40,54],"j":["face","rolling","floor","laughing","lol","haha","rofl"]},"joy":{"a":"Face with Tears Of Joy","b":"1F602","f":true,"k":[32,48],"j":["face_with_tears_of_joy","face","cry","tears","weep","happy","happytears","haha"]},"slightly_smiling_face":{"a":"Slightly Smiling Face","b":"1F642","f":true,"k":[33,55],"j":["face","smile"],"l":[":)","(:",":-)"]},"upside_down_face":{"a":"Upside-Down Face","b":"1F643","f":true,"k":[33,56],"j":["face","flipped","silly","smile"]},"melting_face":{"a":"Melting Face","b":"1FAE0","f":true,"k":[56,30],"j":["melting face","hot","heat"]},"wink":{"a":"Winking Face","b":"1F609","f":true,"k":[32,55],"j":["winking_face","face","happy","mischievous","secret",";)","smile","eye"],"l":[";)",";-)"],"m":";)"},"blush":{"a":"Smiling Face with Smiling Eyes","b":"1F60A","f":true,"k":[32,56],"j":["smiling_face_with_smiling_eyes","face","smile","happy","flushed","crush","embarrassed","shy","joy"],"m":":)"},"innocent":{"a":"Smiling Face with Halo","b":"1F607","f":true,"k":[32,53],"j":["smiling_face_with_halo","face","angel","heaven","halo"]},"smiling_face_with_3_hearts":{"a":"Smiling Face with Smiling Eyes and Three Hearts","b":"1F970","f":true,"k":[44,32],"j":["smiling_face_with_hearts","face","love","like","affection","valentines","infatuation","crush","hearts","adore"]},"heart_eyes":{"a":"Smiling Face with Heart-Shaped Eyes","b":"1F60D","f":true,"k":[32,59],"j":["smiling_face_with_heart_eyes","face","love","like","affection","valentines","infatuation","crush","heart"]},"star-struck":{"a":"Grinning Face with Star Eyes","b":"1F929","f":true,"k":[41,15],"j":["star_struck","face","smile","starry","eyes","grinning"]},"kissing_heart":{"a":"Face Throwing a Kiss","b":"1F618","f":true,"k":[33,8],"j":["face_blowing_a_kiss","face","love","like","affection","valentines","infatuation","kiss"],"l":[":*",":-*"]},"kissing":{"a":"Kissing Face","b":"1F617","f":true,"k":[33,7],"j":["kissing_face","love","like","face","3","valentines","infatuation","kiss"]},"relaxed":{"a":"White Smiling Face","b":"263A-FE0F","f":true,"k":[58,33],"c":"263A"},"kissing_closed_eyes":{"a":"Kissing Face with Closed Eyes","b":"1F61A","f":true,"k":[33,10],"j":["kissing_face_with_closed_eyes","face","love","like","affection","valentines","infatuation","kiss"]},"kissing_smiling_eyes":{"a":"Kissing Face with Smiling Eyes","b":"1F619","f":true,"k":[33,9],"j":["kissing_face_with_smiling_eyes","face","affection","valentines","infatuation","kiss"]},"smiling_face_with_tear":{"a":"Smiling Face with Tear","b":"1F972","f":true,"k":[44,34],"j":["smiling face with tear","sad","cry","pretend"]},"yum":{"a":"Face Savouring Delicious Food","b":"1F60B","f":true,"k":[32,57],"j":["face_savoring_food","happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"]},"stuck_out_tongue":{"a":"Face with Stuck-Out Tongue","b":"1F61B","f":true,"k":[33,11],"j":["face_with_tongue","face","prank","childish","playful","mischievous","smile","tongue"],"l":[":p",":-p",":P",":-P",":b",":-b"],"m":":p"},"stuck_out_tongue_winking_eye":{"a":"Face with Stuck-Out Tongue and Winking Eye","b":"1F61C","f":true,"k":[33,12],"j":["winking_face_with_tongue","face","prank","childish","playful","mischievous","smile","wink","tongue"],"l":[";p",";-p",";b",";-b",";P",";-P"],"m":";p"},"zany_face":{"a":"Grinning Face with One Large and One Small Eye","b":"1F92A","f":true,"k":[41,16],"j":["face","goofy","crazy"]},"stuck_out_tongue_closed_eyes":{"a":"Face with Stuck-Out Tongue and Tightly-Closed Eyes","b":"1F61D","f":true,"k":[33,13],"j":["squinting_face_with_tongue","face","prank","playful","mischievous","smile","tongue"]},"money_mouth_face":{"a":"Money-Mouth Face","b":"1F911","f":true,"k":[39,38],"j":["face","rich","dollar","money"]},"hugging_face":{"a":"Hugging Face","b":"1F917","f":true,"k":[39,44],"j":["face","smile","hug"]},"face_with_hand_over_mouth":{"a":"Smiling Face with Smiling Eyes and Hand Covering Mouth","b":"1F92D","f":true,"k":[41,19],"j":["face","whoops","shock","surprise"]},"face_with_open_eyes_and_hand_over_mouth":{"a":"Face with Open Eyes and Hand Over Mouth","b":"1FAE2","f":true,"k":[56,32],"j":["face with open eyes and hand over mouth","silence","secret","shock","surprise"]},"face_with_peeking_eye":{"a":"Face with Peeking Eye","b":"1FAE3","f":true,"k":[56,33],"j":["face with peeking eye","scared","frightening","embarrassing","shy"]},"shushing_face":{"a":"Face with Finger Covering Closed Lips","b":"1F92B","f":true,"k":[41,17],"j":["face","quiet","shhh"]},"thinking_face":{"a":"Thinking Face","b":"1F914","f":true,"k":[39,41],"j":["face","hmmm","think","consider"]},"saluting_face":{"a":"Saluting Face","b":"1FAE1","f":true,"k":[56,31],"j":["saluting face","respect","salute"]},"zipper_mouth_face":{"a":"Zipper-Mouth Face","b":"1F910","f":true,"k":[39,37],"j":["face","sealed","zipper","secret"]},"face_with_raised_eyebrow":{"a":"Face with One Eyebrow Raised","b":"1F928","f":true,"k":[41,14],"j":["face","distrust","scepticism","disapproval","disbelief","surprise","suspicious"]},"neutral_face":{"a":"Neutral Face","b":"1F610","f":true,"k":[33,0],"j":["indifference","meh",":|","neutral"],"l":[":|",":-|"]},"expressionless":{"a":"Expressionless Face","b":"1F611","f":true,"k":[33,1],"j":["expressionless_face","face","indifferent","-_-","meh","deadpan"]},"no_mouth":{"a":"Face Without Mouth","b":"1F636","f":true,"k":[33,41],"j":["face_without_mouth","face"]},"dotted_line_face":{"a":"Dotted Line Face","b":"1FAE5","f":true,"k":[56,35],"j":["dotted line face","invisible","lonely","isolation","depression"]},"face_in_clouds":{"a":"Face In Clouds","b":"1F636-200D-1F32B-FE0F","f":true,"k":[33,40],"c":"1F636-200D-1F32B","j":["face_without_mouth","face"]},"smirk":{"a":"Smirking Face","b":"1F60F","f":true,"k":[32,61],"j":["smirking_face","face","smile","mean","prank","smug","sarcasm"]},"unamused":{"a":"Unamused Face","b":"1F612","f":true,"k":[33,2],"j":["unamused_face","indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","ugh","side_eye"],"m":":("},"face_with_rolling_eyes":{"a":"Face with Rolling Eyes","b":"1F644","f":true,"k":[33,57],"j":["face","eyeroll","frustrated"]},"grimacing":{"a":"Grimacing Face","b":"1F62C","f":true,"k":[33,28],"j":["grimacing_face","face","grimace","teeth"]},"face_exhaling":{"a":"Face Exhaling","b":"1F62E-200D-1F4A8","f":true,"k":[33,30],"j":["face_with_open_mouth","face","surprise","impressed","wow","whoa",":O"]},"lying_face":{"a":"Lying Face","b":"1F925","f":true,"k":[40,56],"j":["face","lie","pinocchio"]},"shaking_face":{"a":"Shaking Face","b":"1FAE8","f":true,"k":[56,38],"j":["shaking face","dizzy","shock","blurry","earthquake"]},"head_shaking_horizontally":{"a":"Head Shaking Horizontally","b":"1F642-200D-2194-FE0F","f":true,"k":[33,53],"c":"1F642-200D-2194","j":["slightly_smiling_face","face","smile"]},"head_shaking_vertically":{"a":"Head Shaking Vertically","b":"1F642-200D-2195-FE0F","f":true,"k":[33,54],"c":"1F642-200D-2195","j":["slightly_smiling_face","face","smile"]},"relieved":{"a":"Relieved Face","b":"1F60C","f":true,"k":[32,58],"j":["relieved_face","face","relaxed","phew","massage","happiness"]},"pensive":{"a":"Pensive Face","b":"1F614","f":true,"k":[33,4],"j":["pensive_face","face","sad","depressed","upset"]},"sleepy":{"a":"Sleepy Face","b":"1F62A","f":true,"k":[33,26],"j":["sleepy_face","face","tired","rest","nap"]},"drooling_face":{"a":"Drooling Face","b":"1F924","f":true,"k":[40,55],"j":["face"]},"sleeping":{"a":"Sleeping Face","b":"1F634","f":true,"k":[33,37],"j":["sleeping_face","face","tired","sleepy","night","zzz"]},"mask":{"a":"Face with Medical Mask","b":"1F637","f":true,"k":[33,42],"j":["face_with_medical_mask","face","sick","ill","disease","covid"]},"face_with_thermometer":{"a":"Face with Thermometer","b":"1F912","f":true,"k":[39,39],"j":["sick","temperature","thermometer","cold","fever","covid"]},"face_with_head_bandage":{"a":"Face with Head-Bandage","b":"1F915","f":true,"k":[39,42],"j":["injured","clumsy","bandage","hurt"]},"nauseated_face":{"a":"Nauseated Face","b":"1F922","f":true,"k":[40,53],"j":["face","vomit","gross","green","sick","throw up","ill"]},"face_vomiting":{"a":"Face with Open Mouth Vomiting","b":"1F92E","f":true,"k":[41,20],"j":["face","sick"]},"sneezing_face":{"a":"Sneezing Face","b":"1F927","f":true,"k":[41,13],"j":["face","gesundheit","sneeze","sick","allergy"]},"hot_face":{"a":"Overheated Face","b":"1F975","f":true,"k":[44,37],"j":["face","feverish","heat","red","sweating"]},"cold_face":{"a":"Freezing Face","b":"1F976","f":true,"k":[44,38],"j":["face","blue","freezing","frozen","frostbite","icicles"]},"woozy_face":{"a":"Face with Uneven Eyes and Wavy Mouth","b":"1F974","f":true,"k":[44,36],"j":["face","dizzy","intoxicated","tipsy","wavy"]},"dizzy_face":{"a":"Dizzy Face","b":"1F635","f":true,"k":[33,39],"j":["spent","unconscious","xox","dizzy"]},"face_with_spiral_eyes":{"a":"Face with Spiral Eyes","b":"1F635-200D-1F4AB","f":true,"k":[33,38],"j":["dizzy_face","spent","unconscious","xox","dizzy"]},"exploding_head":{"a":"Shocked Face with Exploding Head","b":"1F92F","f":true,"k":[41,21],"j":["face","shocked","mind","blown"]},"face_with_cowboy_hat":{"a":"Face with Cowboy Hat","b":"1F920","f":true,"k":[40,51],"j":["cowboy_hat_face","face","cowgirl","hat"]},"partying_face":{"a":"Face with Party Horn and Party Hat","b":"1F973","f":true,"k":[44,35],"j":["face","celebration","woohoo"]},"disguised_face":{"a":"Disguised Face","b":"1F978","f":true,"k":[44,45],"j":["disguised face","pretent","brows","glasses","moustache"]},"sunglasses":{"a":"Smiling Face with Sunglasses","b":"1F60E","f":true,"k":[32,60],"j":["smiling_face_with_sunglasses","face","cool","smile","summer","beach","sunglass"],"l":["8)"]},"nerd_face":{"a":"Nerd Face","b":"1F913","f":true,"k":[39,40],"j":["face","nerdy","geek","dork"]},"face_with_monocle":{"a":"Face with Monocle","b":"1F9D0","f":true,"k":[47,61],"j":["face","stuffy","wealthy"]},"confused":{"a":"Confused Face","b":"1F615","f":true,"k":[33,5],"j":["confused_face","face","indifference","huh","weird","hmmm",":/"],"l":[":\\",":-\\",":/",":-/"]},"face_with_diagonal_mouth":{"a":"Face with Diagonal Mouth","b":"1FAE4","f":true,"k":[56,34],"j":["face with diagonal mouth","skeptic","confuse","frustrated","indifferent"]},"worried":{"a":"Worried Face","b":"1F61F","f":true,"k":[33,15],"j":["worried_face","face","concern","nervous",":("]},"slightly_frowning_face":{"a":"Slightly Frowning Face","b":"1F641","f":true,"k":[33,52],"j":["face","frowning","disappointed","sad","upset"]},"white_frowning_face":{"a":"Frowning Face","b":"2639-FE0F","f":true,"k":[58,32],"c":"2639"},"open_mouth":{"a":"Face with Open Mouth","b":"1F62E","f":true,"k":[33,31],"j":["face_with_open_mouth","face","surprise","impressed","wow","whoa",":O"],"l":[":o",":-o",":O",":-O"]},"hushed":{"a":"Hushed Face","b":"1F62F","f":true,"k":[33,32],"j":["hushed_face","face","woo","shh"]},"astonished":{"a":"Astonished Face","b":"1F632","f":true,"k":[33,35],"j":["astonished_face","face","xox","surprised","poisoned"]},"flushed":{"a":"Flushed Face","b":"1F633","f":true,"k":[33,36],"j":["flushed_face","face","blush","shy","flattered"]},"pleading_face":{"a":"Face with Pleading Eyes","b":"1F97A","f":true,"k":[44,47],"j":["face","begging","mercy","cry","tears","sad","grievance"]},"face_holding_back_tears":{"a":"Face Holding Back Tears","b":"1F979","f":true,"k":[44,46],"j":["face holding back tears","touched","gratitude","cry"]},"frowning":{"a":"Frowning Face with Open Mouth","b":"1F626","f":true,"k":[33,22],"j":["frowning_face_with_open_mouth","face","aw","what"]},"anguished":{"a":"Anguished Face","b":"1F627","f":true,"k":[33,23],"j":["anguished_face","face","stunned","nervous"],"l":["D:"]},"fearful":{"a":"Fearful Face","b":"1F628","f":true,"k":[33,24],"j":["fearful_face","face","scared","terrified","nervous"]},"cold_sweat":{"a":"Face with Open Mouth and Cold Sweat","b":"1F630","f":true,"k":[33,33],"j":["anxious_face_with_sweat","face","nervous","sweat"]},"disappointed_relieved":{"a":"Disappointed But Relieved Face","b":"1F625","f":true,"k":[33,21],"j":["sad_but_relieved_face","face","phew","sweat","nervous"]},"cry":{"a":"Crying Face","b":"1F622","f":true,"k":[33,18],"j":["crying_face","face","tears","sad","depressed","upset",":'("],"l":[":'("],"m":":'("},"sob":{"a":"Loudly Crying Face","b":"1F62D","f":true,"k":[33,29],"j":["loudly_crying_face","sobbing","face","cry","tears","sad","upset","depressed"],"m":":'("},"scream":{"a":"Face Screaming In Fear","b":"1F631","f":true,"k":[33,34],"j":["face_screaming_in_fear","face","munch","scared","omg"]},"confounded":{"a":"Confounded Face","b":"1F616","f":true,"k":[33,6],"j":["confounded_face","face","confused","sick","unwell","oops",":S"]},"persevere":{"a":"Persevering Face","b":"1F623","f":true,"k":[33,19],"j":["persevering_face","face","sick","no","upset","oops"]},"disappointed":{"a":"Disappointed Face","b":"1F61E","f":true,"k":[33,14],"j":["disappointed_face","face","sad","upset","depressed",":("],"l":["):",":(",":-("],"m":":("},"sweat":{"a":"Face with Cold Sweat","b":"1F613","f":true,"k":[33,3],"j":["downcast_face_with_sweat","face","hot","sad","tired","exercise"]},"weary":{"a":"Weary Face","b":"1F629","f":true,"k":[33,25],"j":["weary_face","face","tired","sleepy","sad","frustrated","upset"]},"tired_face":{"a":"Tired Face","b":"1F62B","f":true,"k":[33,27],"j":["sick","whine","upset","frustrated"]},"yawning_face":{"a":"Yawning Face","b":"1F971","f":true,"k":[44,33],"j":["tired","sleepy"]},"triumph":{"a":"Face with Look Of Triumph","b":"1F624","f":true,"k":[33,20],"j":["face_with_steam_from_nose","face","gas","phew","proud","pride"]},"rage":{"a":"Pouting Face","b":"1F621","f":true,"k":[33,17],"j":["pouting_face","angry","mad","hate","despise"]},"angry":{"a":"Angry Face","b":"1F620","f":true,"k":[33,16],"j":["angry_face","mad","face","annoyed","frustrated"],"l":[">:(",">:-("]},"face_with_symbols_on_mouth":{"a":"Serious Face with Symbols Covering Mouth","b":"1F92C","f":true,"k":[41,18],"j":["face","swearing","cursing","cussing","profanity","expletive"]},"smiling_imp":{"a":"Smiling Face with Horns","b":"1F608","f":true,"k":[32,54],"j":["smiling_face_with_horns","devil","horns"]},"imp":{"a":"Imp","b":"1F47F","f":true,"k":[25,41],"j":["angry_face_with_horns","devil","angry","horns"]},"skull":{"a":"Skull","b":"1F480","f":true,"k":[25,42],"j":["dead","skeleton","creepy","death","dead"]},"skull_and_crossbones":{"a":"Skull and Crossbones","b":"2620-FE0F","f":true,"k":[58,24],"c":"2620"},"hankey":{"a":"Pile Of Poo","b":"1F4A9","f":true,"k":[28,25],"j":["pile_of_poo","shitface","fail","turd","shit"]},"clown_face":{"a":"Clown Face","b":"1F921","f":true,"k":[40,52],"j":["face"]},"japanese_ogre":{"a":"Japanese Ogre","b":"1F479","f":true,"k":[25,30],"j":["ogre","monster","red","mask","halloween","scary","creepy","devil","demon"]},"japanese_goblin":{"a":"Japanese Goblin","b":"1F47A","f":true,"k":[25,31],"j":["goblin","red","evil","mask","monster","scary","creepy"]},"ghost":{"a":"Ghost","b":"1F47B","f":true,"k":[25,32],"j":["halloween","spooky","scary"]},"alien":{"a":"Extraterrestrial Alien","b":"1F47D","f":true,"k":[25,39],"j":["UFO","paul","weird","outer_space"]},"space_invader":{"a":"Alien Monster","b":"1F47E","f":true,"k":[25,40],"j":["alien_monster","game","arcade","play"]},"robot_face":{"a":"Robot Face","b":"1F916","f":true,"k":[39,43],"j":["robot","computer","machine","bot"]},"smiley_cat":{"a":"Smiling Cat Face with Open Mouth","b":"1F63A","f":true,"k":[33,45],"j":["grinning_cat","animal","cats","happy","smile"]},"smile_cat":{"a":"Grinning Cat Face with Smiling Eyes","b":"1F638","f":true,"k":[33,43],"j":["grinning_cat_with_smiling_eyes","animal","cats","smile"]},"joy_cat":{"a":"Cat Face with Tears Of Joy","b":"1F639","f":true,"k":[33,44],"j":["cat_with_tears_of_joy","animal","cats","haha","happy","tears"]},"heart_eyes_cat":{"a":"Smiling Cat Face with Heart-Shaped Eyes","b":"1F63B","f":true,"k":[33,46],"j":["smiling_cat_with_heart_eyes","animal","love","like","affection","cats","valentines","heart"]},"smirk_cat":{"a":"Cat Face with Wry Smile","b":"1F63C","f":true,"k":[33,47],"j":["cat_with_wry_smile","animal","cats","smirk"]},"kissing_cat":{"a":"Kissing Cat Face with Closed Eyes","b":"1F63D","f":true,"k":[33,48],"j":["animal","cats","kiss"]},"scream_cat":{"a":"Weary Cat Face","b":"1F640","f":true,"k":[33,51],"j":["weary_cat","animal","cats","munch","scared","scream"]},"crying_cat_face":{"a":"Crying Cat Face","b":"1F63F","f":true,"k":[33,50],"j":["crying_cat","animal","tears","weep","sad","cats","upset","cry"]},"pouting_cat":{"a":"Pouting Cat Face","b":"1F63E","f":true,"k":[33,49],"j":["animal","cats"]},"see_no_evil":{"a":"See-No-Evil Monkey","b":"1F648","f":true,"k":[34,50],"j":["see_no_evil_monkey","monkey","animal","nature","haha"]},"hear_no_evil":{"a":"Hear-No-Evil Monkey","b":"1F649","f":true,"k":[34,51],"j":["hear_no_evil_monkey","animal","monkey","nature"]},"speak_no_evil":{"a":"Speak-No-Evil Monkey","b":"1F64A","f":true,"k":[34,52],"j":["speak_no_evil_monkey","monkey","animal","nature","omg"]},"love_letter":{"a":"Love Letter","b":"1F48C","f":true,"k":[27,8],"j":["email","like","affection","envelope","valentines"]},"cupid":{"a":"Heart with Arrow","b":"1F498","f":true,"k":[28,8],"j":["heart_with_arrow","love","like","heart","affection","valentines"]},"gift_heart":{"a":"Heart with Ribbon","b":"1F49D","f":true,"k":[28,13],"j":["heart_with_ribbon","love","valentines"]},"sparkling_heart":{"a":"Sparkling Heart","b":"1F496","f":true,"k":[28,6],"j":["love","like","affection","valentines"]},"heartpulse":{"a":"Growing Heart","b":"1F497","f":true,"k":[28,7],"j":["growing_heart","like","love","affection","valentines","pink"]},"heartbeat":{"a":"Beating Heart","b":"1F493","f":true,"k":[28,3],"j":["beating_heart","love","like","affection","valentines","pink","heart"]},"revolving_hearts":{"a":"Revolving Hearts","b":"1F49E","f":true,"k":[28,14],"j":["love","like","affection","valentines"]},"two_hearts":{"a":"Two Hearts","b":"1F495","f":true,"k":[28,5],"j":["love","like","affection","valentines","heart"]},"heart_decoration":{"a":"Heart Decoration","b":"1F49F","f":true,"k":[28,15],"j":["purple-square","love","like"]},"heavy_heart_exclamation_mark_ornament":{"a":"Heart Exclamation","b":"2763-FE0F","f":true,"k":[60,35],"c":"2763"},"broken_heart":{"a":"Broken Heart","b":"1F494","f":true,"k":[28,4],"j":["sad","sorry","break","heart","heartbreak"],"l":[" { + additionalManifestEntries: ['1f602.svg', 'sheet_15_1.png'].map((filename) => { const path = resolve(root, 'public', 'emoji', filename); const body = readFileSync(path); const md5 = createHash('md5'); diff --git a/lib/tasks/emojis.rake b/lib/tasks/emojis.rake index 3b2cf46a13..21c2b2be6a 100644 --- a/lib/tasks/emojis.rake +++ b/lib/tasks/emojis.rake @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'vips' + def gen_border(codepoint, color) input = Rails.public_path.join('emoji', "#{codepoint}.svg") dest = Rails.public_path.join('emoji', "#{codepoint}_border.svg") @@ -42,10 +44,24 @@ def codepoints_to_unicode(codepoints) end end +def get_image(row, emoji_base, fallback, compressed) + path = emoji_base.join("#{row[compressed ? 'b' : 'unified'].downcase}.svg") + path = emoji_base.join("#{row[compressed ? 'c' : 'non_qualified'].downcase.sub(/^00/, '')}.svg") if !path.exist? && row[compressed ? 'c' : 'non_qualified'] + if path.exist? + Vips::Image.new_from_file(path.to_s, dpi: 64) + else + fallback + end +end + +def titleize(string) + string.humanize.gsub(/\b(? emoji['unified'], - 'sheet_x' => emoji['sheet_x'], - 'sheet_y' => emoji['sheet_y'], - 'skin_variations' => {}, + puts "Downloading keyword data from source... (#{keyword_source})" + res = HTTP.get(keyword_source).to_s + keywords = JSON.parse(res) + + puts 'Generating JSON emoji data...' + + emoji_data = { + compressed: true, + categories: [ + { id: 'smileys', name: 'Smileys & Emotion', emojis: [] }, + { id: 'people', name: 'People & Body', emojis: [] }, + { id: 'nature', name: 'Animals & Nature', emojis: [] }, + { id: 'foods', name: 'Food & Drink', emojis: [] }, + { id: 'activity', name: 'Activities', emojis: [] }, + { id: 'places', name: 'Travel & Places', emojis: [] }, + { id: 'objects', name: 'Objects', emojis: [] }, + { id: 'symbols', name: 'Symbols', emojis: [] }, + { id: 'flags', name: 'Flags', emojis: [] }, + ], + emojis: {}, + aliases: {}, + } + + sorted = data.sort { |a, b| (a['sort_order'] || a['short_name']) - (b['sort_order'] || b['sort_name']) } + category_map = emoji_data[:categories].each_with_index.to_h { |c, i| [c[:name], i] } + + sorted.each do |emoji| + emoji_keywords = keywords[codepoints_to_unicode(emoji['unified'].downcase)] + + single_emoji = { + a: titleize(emoji['name']), # name + b: emoji['unified'], # unified + f: true, # has_img_twitter + k: [emoji['sheet_x'], emoji['sheet_y']], # sheet } - emoji['skin_variations']&.each do |key, variation| - filtered_item['skin_variations'][key] = { - 'unified' => variation['unified'], - 'sheet_x' => variation['sheet_x'], - 'sheet_y' => variation['sheet_y'], - } - end + single_emoji[:c] = emoji['non_qualified'] unless emoji['non_qualified'].nil? # non_qualified + single_emoji[:j] = emoji_keywords.filter { |k| k != emoji['short_name'] } if emoji_keywords.present? # keywords + single_emoji[:l] = emoji['texts'] if emoji['texts'].present? # emoticons + single_emoji[:m] = emoji['text'] if emoji['text'].present? # text + single_emoji[:skin_variations] = emoji['skin_variations'] if emoji['skin_variations'].present? - filtered_item + emoji_data[:emojis][emoji['short_name']] = single_emoji + emoji_data[:categories][category_map[emoji['category']]][:emojis].push(emoji['short_name']) if emoji['category'] != 'Component' + + emoji['short_names'].each do |name| + emoji_data[:aliases][name] = emoji['short_name'] unless name == emoji['short_name'] + end end - File.write(dest, JSON.generate(filtered_data)) + smileys = emoji_data[:categories][0] + people = emoji_data[:categories][1] + smileys_and_people = { id: 'people', name: 'Smileys & People', emojis: [*smileys[:emojis][..128], *people[:emojis], *smileys[:emojis][129..]] } + emoji_data[:categories].unshift(smileys_and_people) + emoji_data[:categories] -= emoji_data[:categories][1, 2] + + File.write(data_dest, JSON.generate(emoji_data)) + end + + desc 'Generate a spritesheet of emojis' + task :generate_emoji_sheet do + src = Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_data.json') + sheet = Oj.load(File.read(src)) + + max = 0 + sheet['emojis'].each_value do |row| + max = [max, row['k'][0], row['k'][1]].max + next if row['skin_variations'].blank? + + row['skin_variations'].each_value do |variation| + max = [max, variation['sheet_x'], variation['sheet_y']].max + end + end + + size = max + 1 + + puts 'Generating spritesheet...' + + emoji_base = Rails.public_path.join('emoji') + fallback = Vips::Image.new_from_file(emoji_base.join('2753.svg').to_s, dpi: 64) + comp = Array.new(size) do + Array.new(size, 0) + end + + sheet['emojis'].each_value do |row| + comp[row['k'][1]][row['k'][0]] = get_image(row, emoji_base, fallback, true) + next if row['skin_variations'].blank? + + row['skin_variations'].each_value do |variation| + comp[variation['sheet_y']][variation['sheet_x']] = get_image(variation, emoji_base, fallback, false) + end + end + + joined = Vips::Image.arrayjoin(comp.flatten, across: size, hspacing: 34, halign: :centre, vspacing: 34, valign: :centre) + joined.write_to_file(emoji_base.join('sheet_15_1.png').to_s, palette: true, dither: 0, Q: 100) end end diff --git a/package.json b/package.json index b0a5382aee..bd83d32690 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,6 @@ "@dnd-kit/core": "^6.1.0", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", - "@emoji-mart/data": "1.2.1", "@formatjs/intl-pluralrules": "^5.4.4", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^2.1.1", diff --git a/public/emoji/1f344-200d-1f7eb.svg b/public/emoji/1f344-200d-1f7eb.svg new file mode 100644 index 0000000000..99b163241c --- /dev/null +++ b/public/emoji/1f344-200d-1f7eb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f34b-200d-1f7e9.svg b/public/emoji/1f34b-200d-1f7e9.svg new file mode 100644 index 0000000000..35e1e46506 --- /dev/null +++ b/public/emoji/1f34b-200d-1f7e9.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..3f617a1516 --- /dev/null +++ b/public/emoji/1f3c3-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..3db1c6219b --- /dev/null +++ b/public/emoji/1f3c3-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fb-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fb-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..677b019143 --- /dev/null +++ b/public/emoji/1f3c3-1f3fb-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..b83eae104f --- /dev/null +++ b/public/emoji/1f3c3-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..bbfac670ed --- /dev/null +++ b/public/emoji/1f3c3-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fc-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..1c4f22f590 --- /dev/null +++ b/public/emoji/1f3c3-1f3fc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..44a67a3b50 --- /dev/null +++ b/public/emoji/1f3c3-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..844f3906a9 --- /dev/null +++ b/public/emoji/1f3c3-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fd-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..88bb1b64bb --- /dev/null +++ b/public/emoji/1f3c3-1f3fd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..c585dc5737 --- /dev/null +++ b/public/emoji/1f3c3-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..db2430df70 --- /dev/null +++ b/public/emoji/1f3c3-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3fe-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3fe-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..77444daa12 --- /dev/null +++ b/public/emoji/1f3c3-1f3fe-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..6b60b57709 --- /dev/null +++ b/public/emoji/1f3c3-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..96b880ab09 --- /dev/null +++ b/public/emoji/1f3c3-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-1f3ff-200d-27a1-fe0f.svg b/public/emoji/1f3c3-1f3ff-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..17de344617 --- /dev/null +++ b/public/emoji/1f3c3-1f3ff-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..f4b9cee103 --- /dev/null +++ b/public/emoji/1f3c3-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f3c3-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..691ea39a32 --- /dev/null +++ b/public/emoji/1f3c3-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f3c3-200d-27a1-fe0f.svg b/public/emoji/1f3c3-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..ef8b45a3ea --- /dev/null +++ b/public/emoji/1f3c3-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f426-200d-1f525.svg b/public/emoji/1f426-200d-1f525.svg new file mode 100644 index 0000000000..4ab5d047ed --- /dev/null +++ b/public/emoji/1f426-200d-1f525.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fb-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fb-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..fb3b9fab56 --- /dev/null +++ b/public/emoji/1f468-1f3fb-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..ce8a73e3a9 --- /dev/null +++ b/public/emoji/1f468-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..7c547a70a3 --- /dev/null +++ b/public/emoji/1f468-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fc-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fc-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..980b1ce170 --- /dev/null +++ b/public/emoji/1f468-1f3fc-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..d9478bb749 --- /dev/null +++ b/public/emoji/1f468-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..1b6ed6be60 --- /dev/null +++ b/public/emoji/1f468-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fd-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fd-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..2317b586de --- /dev/null +++ b/public/emoji/1f468-1f3fd-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..8297e3f781 --- /dev/null +++ b/public/emoji/1f468-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..d92a889c77 --- /dev/null +++ b/public/emoji/1f468-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fe-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fe-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..5216cd4a8e --- /dev/null +++ b/public/emoji/1f468-1f3fe-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..c270710c91 --- /dev/null +++ b/public/emoji/1f468-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..83a08aff38 --- /dev/null +++ b/public/emoji/1f468-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3ff-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3ff-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..924b65efb7 --- /dev/null +++ b/public/emoji/1f468-1f3ff-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..076e8f1f54 --- /dev/null +++ b/public/emoji/1f468-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f468-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..e702990717 --- /dev/null +++ b/public/emoji/1f468-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f466-200d-1f466.svg b/public/emoji/1f468-200d-1f466-200d-1f466.svg index 89b3ad3d10..9fe81618ff 100644 --- a/public/emoji/1f468-200d-1f466-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f466-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f466.svg b/public/emoji/1f468-200d-1f466.svg index 26c8de9732..da28199a88 100644 --- a/public/emoji/1f468-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f467-200d-1f466.svg b/public/emoji/1f468-200d-1f467-200d-1f466.svg index a2008f1c63..9fe81618ff 100644 --- a/public/emoji/1f468-200d-1f467-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f467-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f467-200d-1f467.svg b/public/emoji/1f468-200d-1f467-200d-1f467.svg index acb7b7df46..9fe81618ff 100644 --- a/public/emoji/1f468-200d-1f467-200d-1f467.svg +++ b/public/emoji/1f468-200d-1f467-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f467.svg b/public/emoji/1f468-200d-1f467.svg index 4cda75140d..da28199a88 100644 --- a/public/emoji/1f468-200d-1f467.svg +++ b/public/emoji/1f468-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f468-200d-1f466-200d-1f466.svg b/public/emoji/1f468-200d-1f468-200d-1f466-200d-1f466.svg index efa5db97f0..317e600ed1 100644 --- a/public/emoji/1f468-200d-1f468-200d-1f466-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f468-200d-1f466-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f468-200d-1f466.svg b/public/emoji/1f468-200d-1f468-200d-1f466.svg index d3a5877d10..743b7ba469 100644 --- a/public/emoji/1f468-200d-1f468-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f468-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f466.svg b/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f466.svg index 4d12c1a3cb..317e600ed1 100644 --- a/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f467.svg b/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f467.svg index a694e42959..317e600ed1 100644 --- a/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f467.svg +++ b/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f468-200d-1f467.svg b/public/emoji/1f468-200d-1f468-200d-1f467.svg index 48c4e73125..743b7ba469 100644 --- a/public/emoji/1f468-200d-1f468-200d-1f467.svg +++ b/public/emoji/1f468-200d-1f468-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f469-200d-1f466-200d-1f466.svg b/public/emoji/1f468-200d-1f469-200d-1f466-200d-1f466.svg index 9c3f3da357..317e600ed1 100644 --- a/public/emoji/1f468-200d-1f469-200d-1f466-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f469-200d-1f466-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f469-200d-1f466.svg b/public/emoji/1f468-200d-1f469-200d-1f466.svg index 8f5fad9f5e..743b7ba469 100644 --- a/public/emoji/1f468-200d-1f469-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f469-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f466.svg b/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f466.svg index 885680769c..317e600ed1 100644 --- a/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f466.svg +++ b/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f467.svg b/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f467.svg index 58111c6b0d..317e600ed1 100644 --- a/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f467.svg +++ b/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f469-200d-1f467.svg b/public/emoji/1f468-200d-1f469-200d-1f467.svg index 22a662f0f5..743b7ba469 100644 --- a/public/emoji/1f468-200d-1f469-200d-1f467.svg +++ b/public/emoji/1f468-200d-1f469-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f468-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..73caf9b0b5 --- /dev/null +++ b/public/emoji/1f468-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f468-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..0364c1214d --- /dev/null +++ b/public/emoji/1f468-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f468-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f468-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..d02d61b5d9 --- /dev/null +++ b/public/emoji/1f468-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fb-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fb-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..ce2d666456 --- /dev/null +++ b/public/emoji/1f469-1f3fb-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..109b618b86 --- /dev/null +++ b/public/emoji/1f469-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..8982e6939d --- /dev/null +++ b/public/emoji/1f469-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fc-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fc-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..598b65f782 --- /dev/null +++ b/public/emoji/1f469-1f3fc-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..fcc9404f54 --- /dev/null +++ b/public/emoji/1f469-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..f532afa0a1 --- /dev/null +++ b/public/emoji/1f469-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fd-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fd-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..d80fe830d9 --- /dev/null +++ b/public/emoji/1f469-1f3fd-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..713ec299a3 --- /dev/null +++ b/public/emoji/1f469-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..8eeaf6414c --- /dev/null +++ b/public/emoji/1f469-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fe-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fe-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..c253f451cd --- /dev/null +++ b/public/emoji/1f469-1f3fe-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..72c56875b9 --- /dev/null +++ b/public/emoji/1f469-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..fe1d01ace8 --- /dev/null +++ b/public/emoji/1f469-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3ff-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3ff-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..10bb4774e0 --- /dev/null +++ b/public/emoji/1f469-1f3ff-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..932c2d8020 --- /dev/null +++ b/public/emoji/1f469-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f469-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..6725afc0d7 --- /dev/null +++ b/public/emoji/1f469-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f466-200d-1f466.svg b/public/emoji/1f469-200d-1f466-200d-1f466.svg index a10b0190a1..9fe81618ff 100644 --- a/public/emoji/1f469-200d-1f466-200d-1f466.svg +++ b/public/emoji/1f469-200d-1f466-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f466.svg b/public/emoji/1f469-200d-1f466.svg index 6ae66b6494..da28199a88 100644 --- a/public/emoji/1f469-200d-1f466.svg +++ b/public/emoji/1f469-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f467-200d-1f466.svg b/public/emoji/1f469-200d-1f467-200d-1f466.svg index 710fb8e5e2..9fe81618ff 100644 --- a/public/emoji/1f469-200d-1f467-200d-1f466.svg +++ b/public/emoji/1f469-200d-1f467-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f467-200d-1f467.svg b/public/emoji/1f469-200d-1f467-200d-1f467.svg index 88da46ee19..9fe81618ff 100644 --- a/public/emoji/1f469-200d-1f467-200d-1f467.svg +++ b/public/emoji/1f469-200d-1f467-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f467.svg b/public/emoji/1f469-200d-1f467.svg index 43e4333f35..da28199a88 100644 --- a/public/emoji/1f469-200d-1f467.svg +++ b/public/emoji/1f469-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f469-200d-1f466-200d-1f466.svg b/public/emoji/1f469-200d-1f469-200d-1f466-200d-1f466.svg index 8915200c62..317e600ed1 100644 --- a/public/emoji/1f469-200d-1f469-200d-1f466-200d-1f466.svg +++ b/public/emoji/1f469-200d-1f469-200d-1f466-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f469-200d-1f466.svg b/public/emoji/1f469-200d-1f469-200d-1f466.svg index 8cd8bad87b..743b7ba469 100644 --- a/public/emoji/1f469-200d-1f469-200d-1f466.svg +++ b/public/emoji/1f469-200d-1f469-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f466.svg b/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f466.svg index 976e8481d0..317e600ed1 100644 --- a/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f466.svg +++ b/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f466.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f467.svg b/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f467.svg index 96e0434e4a..317e600ed1 100644 --- a/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f467.svg +++ b/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f469-200d-1f467.svg b/public/emoji/1f469-200d-1f469-200d-1f467.svg index 9201b66c41..743b7ba469 100644 --- a/public/emoji/1f469-200d-1f469-200d-1f467.svg +++ b/public/emoji/1f469-200d-1f469-200d-1f467.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f469-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..d4456dd822 --- /dev/null +++ b/public/emoji/1f469-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f469-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..c3badcd2cc --- /dev/null +++ b/public/emoji/1f469-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f469-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f469-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..bb40571660 --- /dev/null +++ b/public/emoji/1f469-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f46a.svg b/public/emoji/1f46a.svg index 945b1a840b..743b7ba469 100644 --- a/public/emoji/1f46a.svg +++ b/public/emoji/1f46a.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/public/emoji/1f642-200d-2194-fe0f.svg b/public/emoji/1f642-200d-2194-fe0f.svg new file mode 100644 index 0000000000..4b4faf9b71 --- /dev/null +++ b/public/emoji/1f642-200d-2194-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f642-200d-2195-fe0f.svg b/public/emoji/1f642-200d-2195-fe0f.svg new file mode 100644 index 0000000000..4e6f2d9912 --- /dev/null +++ b/public/emoji/1f642-200d-2195-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..aa8a93758c --- /dev/null +++ b/public/emoji/1f6b6-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..aa108d3235 --- /dev/null +++ b/public/emoji/1f6b6-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fb-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fb-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..2b75990689 --- /dev/null +++ b/public/emoji/1f6b6-1f3fb-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..e2a8ad2589 --- /dev/null +++ b/public/emoji/1f6b6-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..83102b5db1 --- /dev/null +++ b/public/emoji/1f6b6-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fc-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..5c3588c067 --- /dev/null +++ b/public/emoji/1f6b6-1f3fc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..96659aac2a --- /dev/null +++ b/public/emoji/1f6b6-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..47ca19a639 --- /dev/null +++ b/public/emoji/1f6b6-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fd-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..a03ce86e47 --- /dev/null +++ b/public/emoji/1f6b6-1f3fd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..78831c758c --- /dev/null +++ b/public/emoji/1f6b6-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..f46c27961d --- /dev/null +++ b/public/emoji/1f6b6-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3fe-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3fe-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..9ed16312c6 --- /dev/null +++ b/public/emoji/1f6b6-1f3fe-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..6e343a2bae --- /dev/null +++ b/public/emoji/1f6b6-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..3e29c09af0 --- /dev/null +++ b/public/emoji/1f6b6-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-1f3ff-200d-27a1-fe0f.svg b/public/emoji/1f6b6-1f3ff-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..0a4ee8f499 --- /dev/null +++ b/public/emoji/1f6b6-1f3ff-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..00a260f4cd --- /dev/null +++ b/public/emoji/1f6b6-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f6b6-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..9c24631164 --- /dev/null +++ b/public/emoji/1f6b6-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f6b6-200d-27a1-fe0f.svg b/public/emoji/1f6b6-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..44b588d188 --- /dev/null +++ b/public/emoji/1f6b6-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..c7d0280306 --- /dev/null +++ b/public/emoji/1f9ce-1f3fb-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..88655aa153 --- /dev/null +++ b/public/emoji/1f9ce-1f3fb-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fb-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fb-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..5ce1c6cb0e --- /dev/null +++ b/public/emoji/1f9ce-1f3fb-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..8c6fe2dc0f --- /dev/null +++ b/public/emoji/1f9ce-1f3fc-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..0666eb6287 --- /dev/null +++ b/public/emoji/1f9ce-1f3fc-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fc-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..b158ba87d7 --- /dev/null +++ b/public/emoji/1f9ce-1f3fc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..fdf1af6da1 --- /dev/null +++ b/public/emoji/1f9ce-1f3fd-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..81eee1b57f --- /dev/null +++ b/public/emoji/1f9ce-1f3fd-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fd-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..77c6ab60b4 --- /dev/null +++ b/public/emoji/1f9ce-1f3fd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..6061ed091c --- /dev/null +++ b/public/emoji/1f9ce-1f3fe-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..f0cbfadc3d --- /dev/null +++ b/public/emoji/1f9ce-1f3fe-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3fe-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3fe-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..09e7ed099b --- /dev/null +++ b/public/emoji/1f9ce-1f3fe-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..ad3d3ce818 --- /dev/null +++ b/public/emoji/1f9ce-1f3ff-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..d7949f6c48 --- /dev/null +++ b/public/emoji/1f9ce-1f3ff-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-1f3ff-200d-27a1-fe0f.svg b/public/emoji/1f9ce-1f3ff-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..36bba79b42 --- /dev/null +++ b/public/emoji/1f9ce-1f3ff-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-200d-2640-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-200d-2640-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..d234fee29e --- /dev/null +++ b/public/emoji/1f9ce-200d-2640-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-200d-2642-fe0f-200d-27a1-fe0f.svg b/public/emoji/1f9ce-200d-2642-fe0f-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..df257035f1 --- /dev/null +++ b/public/emoji/1f9ce-200d-2642-fe0f-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9ce-200d-27a1-fe0f.svg b/public/emoji/1f9ce-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..e1f21e61e6 --- /dev/null +++ b/public/emoji/1f9ce-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fb-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fb-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..14dc4174f7 --- /dev/null +++ b/public/emoji/1f9d1-1f3fb-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..559200edf7 --- /dev/null +++ b/public/emoji/1f9d1-1f3fb-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..976fa28272 --- /dev/null +++ b/public/emoji/1f9d1-1f3fb-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fc-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fc-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..828d98dd8c --- /dev/null +++ b/public/emoji/1f9d1-1f3fc-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..fe8198d2d9 --- /dev/null +++ b/public/emoji/1f9d1-1f3fc-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..0690a87f97 --- /dev/null +++ b/public/emoji/1f9d1-1f3fc-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fd-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fd-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..8d1215cdfd --- /dev/null +++ b/public/emoji/1f9d1-1f3fd-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..816b25386e --- /dev/null +++ b/public/emoji/1f9d1-1f3fd-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..bc0fd100b8 --- /dev/null +++ b/public/emoji/1f9d1-1f3fd-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fe-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fe-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..ac01e1ed20 --- /dev/null +++ b/public/emoji/1f9d1-1f3fe-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..b4e76bb908 --- /dev/null +++ b/public/emoji/1f9d1-1f3fe-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..36a9bc02dd --- /dev/null +++ b/public/emoji/1f9d1-1f3fe-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3ff-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3ff-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..95cc631972 --- /dev/null +++ b/public/emoji/1f9d1-1f3ff-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..b22836fb7b --- /dev/null +++ b/public/emoji/1f9d1-1f3ff-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f9d1-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..f76097294d --- /dev/null +++ b/public/emoji/1f9d1-1f3ff-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-200d-1f9af-200d-27a1-fe0f.svg b/public/emoji/1f9d1-200d-1f9af-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..7efa589bf7 --- /dev/null +++ b/public/emoji/1f9d1-200d-1f9af-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-200d-1f9bc-200d-27a1-fe0f.svg b/public/emoji/1f9d1-200d-1f9bc-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..b460c1288f --- /dev/null +++ b/public/emoji/1f9d1-200d-1f9bc-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-200d-1f9bd-200d-27a1-fe0f.svg b/public/emoji/1f9d1-200d-1f9bd-200d-27a1-fe0f.svg new file mode 100644 index 0000000000..9bf865e809 --- /dev/null +++ b/public/emoji/1f9d1-200d-1f9bd-200d-27a1-fe0f.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-200d-1f9d1-200d-1f9d2-200d-1f9d2.svg b/public/emoji/1f9d1-200d-1f9d1-200d-1f9d2-200d-1f9d2.svg new file mode 100644 index 0000000000..317e600ed1 --- /dev/null +++ b/public/emoji/1f9d1-200d-1f9d1-200d-1f9d2-200d-1f9d2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-200d-1f9d1-200d-1f9d2.svg b/public/emoji/1f9d1-200d-1f9d1-200d-1f9d2.svg new file mode 100644 index 0000000000..743b7ba469 --- /dev/null +++ b/public/emoji/1f9d1-200d-1f9d1-200d-1f9d2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-200d-1f9d2-200d-1f9d2.svg b/public/emoji/1f9d1-200d-1f9d2-200d-1f9d2.svg new file mode 100644 index 0000000000..9fe81618ff --- /dev/null +++ b/public/emoji/1f9d1-200d-1f9d2-200d-1f9d2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/1f9d1-200d-1f9d2.svg b/public/emoji/1f9d1-200d-1f9d2.svg new file mode 100644 index 0000000000..da28199a88 --- /dev/null +++ b/public/emoji/1f9d1-200d-1f9d2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/26d3-fe0f-200d-1f4a5.svg b/public/emoji/26d3-fe0f-200d-1f4a5.svg new file mode 100644 index 0000000000..556308f00c --- /dev/null +++ b/public/emoji/26d3-fe0f-200d-1f4a5.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/emoji/sheet_15.png b/public/emoji/sheet_15.png deleted file mode 100644 index 3d0a679119011d81951492c0a6504039a6ed9586..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1327037 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

    7Jj?!!|9t3-ak< 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

    7A- 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¬FjxW=WPw@2x-(B`(&}UU#+AES097 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%0A``9a1JB~#Pd+97gVMUhlyeE=;v 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�W!~i?2+}Fk=qQ~ZRtSHRim|y(b)6NWWjqh$Fwn0702iv37j9Gb5c51 zQ+YZyJZvny$qO}!VsCAk&gFM_6kpQV<_Qa$acxr zGt@I?v+cihs|Vmg+wf4{vBs{Bawnz-L-1jO4|4_4w|4&a1FrkX5BS7&`@FYccUzQQ zxG-G&Jk@GJVY&K*L=`%Nhc2-7b#-NTsSSRznYmgqXM4p+k{jP)qx}xnHuKOS#D^IZ z+8n9n(Kc!|vt6%hLIxHX1}yP1JfP^mkR-ta*epR3Jmdg7!2guvw%duOzRD8{RrdAW zbaNp;FDM85A|5^Z>1B+10PQ63FwTaTiwqvlnJ>aP6Gq_y-4#jo80>H)QJNn*Z7O)E zqt+a9EUM;v>zsv=L84uVqtMSc0-Eie!rN%3I4$r1v20Z4hI({e$Vcl$2oJK;q8u-9 zx`~bp$?)(6K-5XFpd>Qm0|ri>{DPPsVi6v)@CO4+i)4Y&noc3$&G&E^oyw*1??4Yy zH+PB;@B?G0OE*e3hb2_%4g3%aV|7VelZVV7@@=wZQW+UpgNk4Zj6OhYxiPK~0lF5ZFVNK8sVQx)2_k zic0pC+#2l#ctD`&3N&g)#pbqKBfxE8j$Xca@nZH-hQhL3Ff}Lzo(mrJ;O%GvF&LaD zl)eV+FpdK*9!?`WK->ci z)!Gr45b*%-MI+wyQ-X&F`!4N!AO}qHT`hQU?vd6l6C)i2Ir;%Ua?+|6^~oonu;)dk z4}}M_7CeB4JDlNz_NPo49)jkCs6!=br!eErXSF;QfDS+Xw9r15u4;M?GV{Zsm7;fW zxHq&^4A-Uo$8UW#?ge4_f<&+RLqkI=++jdc4O0fVQ3JCxn6fu0?phu&dFj&r{kI0; z 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

    onwlD$(xpz9VzlHA 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

    P<`w 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�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

    I~oP(?oq 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�XS?+$57j1lt==eO zNGh#d8H9nD%7>D3s_qf`hbefNp)tY;{%;tl(mPP#xRib<=&kz|U{0DmZ{pxt=ys7z z*QEG?c_r6%NNOVuett_eXZl4f6D%CeLVq4&4ICD@@&!Q?z;vnlQI}=T3_f zH$f%Krj{umcRZ4I6ba(6C^0}bC8w`fohe-lY5SF=zc^d4s3~0yPIkDj+i6_>NBlgM zA3B?)9~DCBCta7xVkJ#Su+2Fdw{rSFsln;cv-uGY)E39&21}P3@Lo}g^6F^8#KjB; z3#pI)h>$kMl2OuiAvr2&qh93jek2UA)frBSpx6DrhW77QzuW41yjgSrlVU;W+F>|* zKU9VeH5%nBOt*tzxyNsI+Dph)08YY?Y?Q!kq5D-;D=0e(=vPkvMMTkkX#z%3ooVvX zx8IIzgv{8QJuRdu-s&FNAcXbAtU!D$AH{Pd{I{Gp2VwI~GZ7W{q32F> zvqNgdVM@TFE9?^h{3NkKS~{$<8Nx#r_d^BP_qqF#>PRB~;M0S=>kxKwUM)K#0y?mm zC)HVJgh+{PFQ>Bh7jZTQLD~^fO)lEMEq#%TUNqHWgTEs|H|dBS61((b0q|B&1NYV9 zH>ubf=8K$H&U$`xit#!>Vm(Jk)6u7XAR0d_-;CeC<(zj9uK>W>%j_Jq_Xd@puTHVF z1)gWP_*WU-?uitsoV$Zv^k#|X<%2{MV_o$5jS{qsGAzBPcfx(*I5R}GN^8~0rBwgc zZZeh!)QE7VzNo0}3U~NbuX;z|LUhvkF3902U{+Iv(O{$(Oxli#*?wxn{1FkdfVc8V zQY+>S>k5GBCK0V%L%Ewv`_k#_x5SAgSmQmVff2O-BTP2+lva_Fsnx#DAj z!m~a+EDb3A3Vixf=$4GHf#2~AgB>W~^|H~kmw~|zUoC%4N9+AghMJg^MI)+;lKnp# z?LTW_FaEAs7kL@FRe8RlF#;qRx4I2HCVtrcDFjWXE>ms}MFUA~H0;UuqGl3;iFyC* zy-7#uLuGlHa{+w1i2H}J&~(t%oUF=!8amM> zK}SW~so+#>;%583>fb}w!yrv@4x1i&(p!>h1!4Y0-9yH94mBP=MK;uZSXlxqpF0F3rkMZl3@8lmNX9#w|r!sWqJq$;tImP4ont%rMNxSpM^y7ntx5ZM?wr$c+ zY~8x$UDs{C!08SV-3LBh95q9y+b_KFeA_4gJ(9S9N8nac?B#Z4Si{j~1(d6#7&*Ip z#ZI;*`USavmB$(imx(f5yig8hiaQ#0IJBQ1Yzv{wUxEqSW#%HA2z}aak2VCTz%uPo zXR>ODsCs|_6iVkN`oL`maZ-!*A60TpwPbyp7q)70_;@y)j{N8GEI;?XpooskCs2lI zG;Yu{x6;~(`_C_mg&yDfdzpLx@be%8%PP?~TaV5LWg-wwOG8#~;%iZZ08JV8{c!cMc2tfTGMbR}LsxO!LZokOQU`<&d_gtrycpzYeQrE#rGeqiy7xh7c48AJOX~Nj!Mn z&EOi+hYNz^wYjWtoT=$ZnY*7n8sB8O7)goB9FQCZ)i(zq$9N_ES2EL@_8zI zze-pEuEEvLe1mb~OJ^|KJBD@midM*6?1I0_(eF2N-7gQ-LY3fav03kd3^_)^(I`OE z#;<1`^a~X=MKrRw)n~!~A${`Pb_QS>+}LpFVy}jg^?bZ-sSwo~c-RcO{W~`kLM@?F z5NO;vTd1v|miF=50HyAmVNrPO1F*FZwcY<}8$Xz?_QP9p_r&qRj%+eJ!wg$8saf)I zJYWPu%K6iX-czTv(s1VDtFJP)$?VfxVM&!3fXcDa&#IcT(luL_S#oSS(pTrmN3Xx- z_ewSLFM)T^<*?>lUBmJ6Xpr1kz`>W|N#=tRDTApu#UK|=dqhH}f`L!kvqq8o(d|r-HbNWC!t>#WzOZCw8H?Wq+zEG z+FdnD61RG=Cxngn0KV-Q03quVGG0MF#hdBygTw|>=mJgOe*YC83(cx&%?@NgBhnMc zzWZP7=g4{5%vAnVqYhs=)PEH@>Qd9REVmIox}}7l6uIB#)x0#zzr&&Ia4wUz`J0#HTmKu>3 z9#P+zX;rty&Y?~^lkUbLg(6Hp>ek)OWAbcwYb6pX9oIb=Lhq$m&*Pz>e_r6R9 zE5ft$hM()*Vp{N&8ZWy8)!fU`3SeT+G?B3H57FY2t7%LSsk>Ns|Azz&Pzd6v0;~x; zR!wt{9FPwdO?N1;DuYmgopO@F0z5+^RUpbeb&A^&#vh5F0~O_%?Rr0pI_g`ma5w}Q zQ5cH4OqC+%HlKS31_myk|0cVczvPaDet*Tr*A@VvJgBD`{y+F9Lge#5@J|=(BE)lo zz)2#Ba+FR-D7XahE5PddJl?-9UtKyL`|29eTVX9#E{(EUSTU+k2(%r2NVv z9LO#XHjB3rm<|*o`rLDsxsg^NawPk1v?hwqPC)OR?Ln43_EVJVU&m1pLOx;@h!{)? zg6Sl}v^pCGr+-NK#uNg0(rFxGGdDuzCU)bR5sqFl48J?Quj&Y0t~cVrneDTBy~xq7 zi}%OZfbB)M+A}tArUSMKcLyeZ@6KQi$5^LF2szU{Sfb+^% z*d>hzT+UxVCw;g0(7E-Xy)`k)Kb{+m#aEJ93Z`Wf}CI)?@t!_H~H9RYFaPfg#LrB$&YEmK29?ZDUx$Cjga`!bW*L$oPGS2iYv+8Swy%-6sKaP_ z#@IK|TFUDvza{W&-?@Qp4uzu5XXA7j|404|%>U1>4DUpM`a2n0J%S*Yyv%*{%+B=h zx+!EoCmb3Ea=&I(tp6|morai90*qD(XujA$0ofppcdwY9$ok=7y@sWl(hdZKmB>kN zY`J3hT=zoCicAE5_BJ6c-27z%cM{+Q;Zy3Wy&uLL9d9fEg4R-c-oHanNR)W4}6n( zVl)hXD{lM&!TIFrAZPrZ15m+(c_f7Y@=Uv9?lbu2Ax-Z))BoZ6#|<|Q7Vzyy2_->T z-&gj2Wx^<2Y_Je>-SL8aOx?o*rluc6=eRq%dmHh4d{(?JsG!@2Bi6q1Q>6|$LSry& zMKO`I=@MgP)hINQi2<4}MhnWYQUW^RTa@$rVHkq@;wx<1T^7|U)iM^=A_h>u8l!~) z230vY4fzg+;_diQ0dnz0#E5etvKF>6xH>`s$p)rr`(@uHixl7h9U|6tS4J1}NQ?O) zf;xcuoWv8pT9iP|hj|assG^s6=ECc?Izu5i;!sZ@rpOflV~Ax!4&`0uP?@Ba2Nc30 zWdIW3l=Wg!vpeoJY{WQ?Pg2y*WryF<`g`G5?1b<=zxl`t?HZOuw`%^S5vIi`=x;6w zZ@t+9$*YKs1awSL3dh%B2^pjK&~SyYl>dW$`tgLn;xX%*lK1KS1?WiKgpmDuCi={VhmIuD|kh$Q&M%avNX z{v`U~`6qoFwu5T}a2b^Kqp;z`1Qou#emx%xvbmd4KEy>HQmH0Ry- zgn>v)$>W3eBzGHoTDm9=xjGq7MW5$YS4qsIH~Lfvb`l~pD+p#&hX{kWWt*dQHTZrr zS)1}Pvg)cwt0POMpoxdk5DTjP%D@Bu6ru45ho&R=&RRRH61YInl2yHW{h!~1I3kCz zIx8rQU)sqBq=5Sawn_BUJ(7kC0a@!?x@@=I>c-w9yV=`s7?Q#odwl_PFyBeXW~`Fl z`ti!oGYp|n@`LapB1Yg|`T7VXo1Me@1hQlrNdgO;I{}Sx`Mn+2<*Sf0MW!yYKh3TQ zoCp}={~$i2_0t*1hebeD4nO8zVG+9F%hI4W+f?CxX!HN=W}esuEa7Wn2*I|W_(MDt zi11XQfthxf@XFj0qH;Gja?!?G$jv@~ruz@`iLFY8KT7lOy|*{D*Yl`7X+CkXLP}5{ z>x}QiF$6K@E^m~NrN$Xo#kWET7pEigCH#3XR^#5SH+q*7er(1+CFbFrObp`(3@Krj zN~@ms`aU39me;Bq`90lS8>ACc+jNN!wmBZysowPy9yQDE#KpdO=*yonJ8kNnthb~L z&`SYkN_xzJb*`+q?7u`%`%pumt?Dv^pS}@l|ko?pK11c zEZpL?gRHD`q|w{0z=YI+Pz)cqw<$G`->cN4qP7xvA?9$jv_zfFu{v2G8KGo_r7;5!yp@=9XNsu2p|50SSg8K)3$)7z4iEH>Z;*AQS(_DI-C-N^3Dp zgT_-hJ_Y-BI38E=U=+Y%-VBQ3H+@PNh;IL9iJ!AP=VZ9*7Kz3xG|YOHd$qRk_f<0J zY#trFK_GUSxE8JbtjelVD5e z*8b${J8k^MNeY`-E4-$5tTSX3fas(Fs5Co%{i-kN*Xikm4O-iS9U+z#+U30Bk36IR=Z>Q{J#WHzK6Z; zk0T3u|3?57`#UsjPRe#dA{Qb>>tu5f@v5(i8<*^2^_g5k(`RE;1K20wZ$o5CC@#)e zk$V0ZX72M5!i*ScTyW7<_tzfI?j~#_r$>N(S+>AzhZ&A0ypRcuYK>&W;;#L~xfO&x zk(e8k#U;bYkI{R^3C93$Lu6iH9M}bA-7k9aZwWr)#AkaNoT{PLDBWsAU;@$S(9AX`+W9H47=Q8k4ZNw})Z zZFb1b5{QBIHVsX3#hY6xG0H)rE)sOrTMmf;6hkGm4{yR~5a7e3Toq$-)#4ve22CRI zH}gJ-hzgx|N9BHOh{^JV-o`+TXWy0Q*a|r*GvdmuaOjw*SxVX|gaRUjaOJkT{JV+G z`29FFE31E19p6?L`WWqnV1Wu4kof>SG*}^F!e=FCd*s!>fT(4V8u4<4j8KZIb2DZww$lb)zMD)n%!4 zzdY!TJ|3_==0T9CISguu3et}QS@5mOlK6)!j|Qh_%eG2o)WM-b=)eUrv;lpq9K8n6 zxs2MmI##dOgr@@_psYG?cx*_%Ng!EZG1_YT^%1gRpuDdkL}p=NQ)M6$KY)w?m>&tX zK?jOU27f9RpGS>^eio2OIp9W;9E^tqg~maG*gk-rhxaG{4+uKGKWPU^Y16RPvqpl1 z^|x*9$XgtQkMUzNJ8DyRF&Oje{jr%Ff5ZBnT#{cRM|t?qf4 z;r+K)quPJ2f!XtGVSr}dLmIeMmJ_5V)9r@TKLAM_C(!EDGrL6w=-w}n2zxPqo^IOR z7v}zr`Lwt9a1m**+1}3W2>*b+wcMJf@r2mmk+7$^i2|qITgr`bW`?N}nxeZ_rN(s3 zXPUuM{kUd0HFD2PWcJZ7%cUj-0!0huaUKIY{*E2iZ`f=%#G2y$jMvu;2fF(h>B<8A z!fEuErL)$Mfq}c2|6Kec(1-jfccSo8XlV68Cv-!$t1xSf5m^BAU&;sqFb=~Gy2X2Q z^rq+IgLlf6-7(uG=4*~$y?_xJ=p7r#vb*W6=CN`+0xMn%qYq<1 zVkxm8e7=|an!TvBpHKWW0?Nn8yn_Gbi5agyMlbv+pR^K$oM4XtL07Wa>MkFzb#w_v z!d(OBRBE{dRu`5XDfCeLysD= zD1fT?z)dP}x+l_~-y}!SfxJ5PssU4mlDqG?0~X84C8s3CCN5G6R*@kpmD|k01`&vD zSX#2z+j<`DNVM>G{a3%{6+vH3gBvEQHo*c73d@dpmDfCttqZH@+RNzp*FS z=J^CBnR%> zXDJ{u;VKEc_&i;Igv0vQ&QR1p2oFwo|Irj*^obvi<@svB)id;HSLxmxIVTK`_0Mv< zx&9C~cw{|H@xXfLM@9rfKprs~dgVT~{iuTcy*72l0%9ig zimY#I!}gHS<8E3Vv)&(K;~3-blt8?Sth`L)dvi$jeB&Fp`r8Ll zKTefXwtGZS+xe!#U~p?Jf1SrH*1>AwK#b3O6@0DD7iu=A8c1klon^XJcbn=#Btem+ zgwklLEznaTLFqt+n^;{{ti&Xgo|{uzl1dc(3pO2XZLsxcvVQ9NIr%B>)cIMgrpJfY3WMiY_FV$BaF) z*b&k#2N}p+W*;i9nWs5iKMfTiDq&XNKX4`{xdC}&HdWuD34w&qSo?n?BB-viH~-Q$ zH-GpaH*~PMATyE<^LMCH-BDLK?3eY&Gw7BKQB?atjFx|D3!@p^{+XpPleh5VJ9^ zOCN(H%@0JI7=c`P5eX+mS_TgyQw?%`J9+d%v6uw65*H4`!V`Zr9HS{Kf(beeum@vP z43wJp(<4DJU|E!hFgOK6?0k&suPA_JEE;fVzqB@{@O5V6lpCJzE3nEP-S6^N=Yd*W z%|Pu=G+0wusS9mR2~(iVy{sxny8vl+dsd$jb5G2)Eu)`n@Gq_7<9Uzf%i0AFGU<^C zG~x+46E`;lmxjn8V~I(=Mu58mKyCZ(KyTRtdC`DXdT0?8t?kNBLcuJ}bd8S;Oo}2I zG*?eaXPz=Sw7T0H&yr5;kHm5r@loRNbxMR`DR#E7M}fIcN&a&4;4KI1W2!D!FkQ;& zA6W}b4&;bV9AM9DCm*X`mey0hBKQoiZk#EQbj*p;H4;y2D%JH?DM^F(yx78Zf-Wyo z@CG6~YB`FfbG#THuRj}-?Zp>sem|iNgKjy9^+&#WzZahsKXcey>EN+du)E$ZshGZv zY{Gkm@LkiRLpHyNKBGY@2raDC6WeyKK?`DRRXn8k9BS%y4UgX{PLt=1Y zm@O~~m?5|CGsW45%z^-;OVB-EtB0Ux32)w$9BIwJ3CZkvI&oSISv(EBT%-|e!(a-a z0AG0-*3*K+K!?&DzUrC*=Zcmi3A_$f;#|Sk2C-)!kF@1}kT#FHHpTh5*Amim?vo78 zB680>+#>HE4-sKrueYx?%TFW4iJ!*U;xo}?XHE!-%~P3h@Ue+E?LBg-?T~53Bk>S0 z*%HoSsk=g~LelI7t)8KHys+d@sdm&k)V~Qg>X%CtclfFSAJP`;_Hby* z*42x$KO=?uMBgH)#Uek8kxNuoRXvxQOqJXI!V9rL7U!H2 zU<_1$6O+2QnS3ZTsw~Q{7j-o%dL3o1KWCMBY<;V`UbFRtHXPc_=uTJ^N|GbwcYt>3 zczk}8LsIOvBY+N^lADSAfQ89yjegI+jeM1|b4&;B{rQPM{e0kW4n==0iH^QoD+4QY zy7>vPiQTK_civv9VW|z<+e|A19!I7m+lMHMkJKz0!(Ki*V;!xieUbQoF z_orKEY`&WLSHr`QY~o;2R_7>S6ka~9x^?G%pEovN*9r`IO*>fVisu}p+LkccP-JBvtGwAp9gwF>u{uOLKpNpyy9Vt-R_ zeqv`IIpqI4mO=c3bACekGhwk@sKKY~WN`$rtM~s8A39()mX>#>T4FKk=DoHIeo_V{ zlg84z-WsrF?X)%3#@q33e-cmrdf5C}X6FCsO zb1=sTM$|Zz4ECKoz5YhS6TO`>Ml#!Cu3Dn>H3-ExRFdPn_X^pE@KBpd3T<%x#-Arf zZ4(E|eDp-pwB!aJaiY3HJPDuzQm_REMpDOAqFpZ_5 z+mPq8j)GX7>#M!bmS0gq)p~DdtZxoMHRx1Zyp5AQXUG23v*uZi+J}Sy`hUXW+3A?Y7sowoJPm9%@ZZOG|SOp}#Q3`rO^A zoV?e+M9mD{tJjm@AN?J=q+Ap@6iYkw6ekmjl*X8-OXLOS(38`R+wo-l_j2oR@Rzgm z*}rVPlcDqB@76!ikxO!MO!Kcz-`^hKp<}zUgOqFhZ2gk0&4CeKv27ST0I6&`V&ao*^X z-oz4^wkdraF?4!+P|Cu}9Jli({}ZKn7hrScMay<0tLVkC@`Fc0lKRQ|Ti5vm^Y@SI z>&()kh1I$+c;gFkKi#q6eO-^U9=fHkvhpKMQ$rZ%$|8tQP@W zGWG2I(Ndm_z34aF8F5zJ$3D}yoN?KAY|JBaZ$P_*+J*mEg$ELg&&n$e^}i?0N0Odi zj!x-B->C30?ah_kbpHPE=>@|?r;I}VGNSC)6GJY?1V)0$%|w33#vj468zI@wYY*Bc?;zXP*rm64s>oVTvaLD~ z;BwRrf!f&CVFn79TRh_*(s2l44h`a#wEW|JYAuF>I3C{d>dgPM_TtB*_wGi%TuRx; zh2JYrIp_R7T&FwdRY?0hHD~tHrIEbE$}U#xFMxTc!ycMhstd-t8piBQTkTsl<;sW< zGf&2iiw`nJ!-yn(=rCXFP#`E{*jhCE`(o5cS5mFXEWE`Gar!0B^ZK##S*!PWvfX@bDq3v^y^<; zJX#&3af0@Tk1ZwD8Z1U(5ugez?zi<;L)|cRigHI*X7_qFc0mc6f+sDufMTccbyb2x ze-Rg(9j~9l-IB77qxTwhVWXL4X40>l>8u(C4u}cxN6@^|%6Cm!^p$|66)yv1Z)7?y zZC{nLWBA<`GwTdT)pcSLWoiTWhPDDyZ)c8HsLICvjYMcatx3G<&W_RBroh5}A|o!S z8`(~w)>LC5QdqBKoMo%*Ibyu3B#Jj~nNp1m#cv88#7kDY3QL=0RLw#DMj|+F^5~jT zJt&tM1l3z44rN{LUpRxbPRqUDT-QHALjF0A_ zI?Y&ITf!X2>_zVT5Lz?>v7N4NG(-cCA=5e8!ekT~ z`ON=$yuUr*|H6$bn}lk#li91RP=Z|5>%-zpaC{L}clq<>TdLSn=4Q z>6^z=8s)<6%fpcRTQZ-HFp7dn01IMLm@vz-& zO8;ucB@48$l_K8yw(Mk$X@MUDsF&iH>?5z}rA*IRVu4knvhbP+iJ3kke`c@`9NmoC zRS;3PIJ(fe4{>akJ@u1ItqO>C@e;4-+{b$Jx@NBb$FZ>FdXdY}&`|DIQANw4`&77T z?Rr7)>}k)eqF`7gF|QbC$v>>y! zx^Gk!eJ7;bTiS`vDlm0zsl{dz{=<0br)R=Cn+dF-wh_@c{>KM)VqTq=aw&lx27GPA zq)kHsQ%`fP2X->8&;%GIp+GajU8`uC9SUu(+@B8-Qt-!-i?2ccQj>l##{0^X^l!eC zK8wjTeCn#X4CtG~Oo6fJUaB2Wspfj?5rFm5u1Q4LN<+wtqnBBlRw< z`%#k@O6bvmD!rnS5>cXL_ptZnqiI@NfxO=rW@p6Xg0F?eb#GY6?!=W>a>|?_iKAbg z_f9^Mm-<=nqY{3^U`fz@r37q?(^2d{dA4vTe1& zH++s%BE?tfb^Mpb7Bi=!Dur5FRsQog{LaRsJ2Ykw9^MjCKZBu{XU3`D*41~`(meYL z%~%41E7REfE6rHUWPKR6P$ZgALH%q+JcW$E0Dg3dE&Zs?nBj)IuiDJ_i@B?5nTDuT=S7 zc@?j7W)mJ`;jgQaVxdG7JK3SRwO1I`DbmRiU+HsX_lpMk;DLtT$P0o^H)ApvZu%)a z9+yVevb=td{<{v4x)eMRe3vkJe0pXd9NOhyJMQD2=i0F3*uDSQ{^#fUiK5~cb7OAf zK6zCvr?{+h(|1;YV^0lMcFHypr)XD5SXz%J9mlOV709P0Cc#&x*U+0OD^^cZR->guW^-u+1$Bi8aa^-Fn*BH0Zg<^~)+< zpkQ|j_6i7>-5bg!u)H#*7vS$lJ<{c!{QyDoqwC_mCIXqPKSV*lpwLQrA{t|Z7}>fn zT45VTaowb?j}FlFs6$#N*xxU{S zYs2kpx2}|>Pzb&0@hK|73tfh}h+TgryfomqjXqja7<5e~WE8cZ+GJ)fKWEvY2gx1v(jJ#(q^O|T-tpoD5F#> z^6Tzf#fys9tRe%$T*@$a4V3L_Q&lKSH#CjIdW-pU;z#ILNQt11NLO0_)mWKg+AFYI zUh(|*gPixEL1o`>a#0!#-izCHX>1~}Pjkw&npHU*H_HKa^bBh7@r53gz+=pm*x?Rm zZgg7YeM@{Wj%KcpOE@~njnAm@n66+K;?1@j+ltrkscFw8IC0CtvK8J5wb_$Uoy9lT ziHaKTQ3%3qfy81%?yiaR_X)tkHR-Kp~a;260bc7~2BFgH%8RLnKf8FP85}h65osBG9bq?|69ztT8kO;Oa08#DJh<-F( zfJb6%AY~{)^V(+U5ZB`m8EsX(evl-EE17E48U@n7rJ^jMZ~*fUTbVKUWQppEdQ9|R zq$01YsCL%8k3J3JDFw!w1L1JHDi<*MH$VimOB4(6a?RT;|!iT`em@jf~1vS-K;j{z)Wvk#EAITBs&LecG1 zL2S;uk)RCo*;c{v+BB=?Fx;Xj5-^7r7>x%~xe_#UMxiATH}19Gn~r(ZHZOM>u=^dW z)28ty(QA-XD6T^rGE(^SY>9BrLf+IqZIf0!v!lTIZjlkLhVm~tO}bJNXtp|afW zozl8X3Kk6~PBN>QU=NWm*~uHjE)QqTBc*Lr7OAyb8o=K)%$L;4WpUPSV^-HoAu)uE z!nI9>=!B?d!%se~3ZsHcOP^f6!i0psTh$;M0_Wvf85Q-xqXI7Hu@)HQy<}0 zrkS}}{FKEqTlq;!c1xVSpl3F5j*>H2h=B^u2>V`ay5BOGr~s#jY|pJrzOLPd`4>n< zFx2xx+K5+;T9agyW8$Ju; z1d)7%>sY*f`zyu11@r=g)77s1Xtol|hiyayFmEH~cr?g_iJL}vN6%cCAx0$uIYs$D zZuGGv@BT12aBJ*T1^irCpH-Fz4s<1sra6JB+1P7%oGm(pzqtNc+dn>@OGCAjw323t zY%tGgj~yqJ=7{xbkBJw&;!GLfK&6zrRrj@Eb0)#@_9r>va+NMGmeZqmU0EvK8En51 z5HG7`WR#jYpsj_EKrv_hcX*(#5wR_Jsj?SnAkAae@N`33rtZz$3hBMhRp& z3IB}4UPy=zTBlxfMbvNp7_4-lm^FXjd;@$-GuhIIM-`<9Y#nX=8M_GPVVc% z9yr~`&)|RAI(y|AMnl|eF1r2vfZxO7c9tTVVoF#D?}eis)1V_b@r<9#`H+cPxmJs# zS$1Yev+z}kLw8R4K(*h~M_FtvGq^q4vTl>03Z#X3w1+7F-V^MRApBQynZrX?H^GSn zgh8v{bvDy4PZdwK=I$=RYmNmzu7LvLji0Xc-~%1fl3eBH8JXzCSokyrg%4;{0F$)#!6| z?deTM2n$%ntv1g0E6cbW<8S(Za58S?q}+T!s^eCQP+76J$d%F!VhzaVmZ&I7#*lt? zFXLk1Y8c`D^S9QbO3&Bd-&rctoDI3hZq%N#D@v@BX9>_C~#XGq4*dvade}D3re){+aCzSBmnKl|lR>-&i++iA?32bas)ajPKk`f7&)uwZX;4&x_AYFu#0E)m0=LM0&WaGpBV!zfaTgd*s zGc(cGoKY<@9TSmk?U$uAqut>HN8hVB;9p!`+((wX(x0)f!^CHb030FK=$Eq7Cu2C> zL;k89>U(nlH{WjrysSq-Gl(v74qM6`{4XZqA}4C|OQfIjkj5OATm}6D*0WJDf_#Y2 z$(>u>b7tY9b9=iuY2;-c10XD_<&d_z2f*vw+@;QE-jwd`IY(fEoC1unNZ7JZ<^SOY zSF(kd0wE)vgP$s)02E>Y>1(o&A>VJ@&UXfe+P?|Zf>-ZC+RjN3=h#|%WH z!s#OJeb=j^NP`Gy`(eQE00RTJ%MX~qf7gA0f7e@4&?=GY>aB$!;5YG5!SQ6XgXsp^ zrO`mrR*xma6M35=Ju@8HgiS3W3=!1`b4k0od5V0B#UInaut7rJ*%SUOc-Sc)1MZIE z8X+U}9rH9DioL`KCb3+5^3gxnD74uj_RXw2kyLP`%c1WfhGr8h;Xd_kca7EioyO}a ziXouLk-)lm6C8JEG5e3ErKLj4yNnVG-!#LCUxxwiFkM}%to1@P1^Xi14dZ1S7eehE z#tLxsu^c3IiuTtA(PorixxQ|XZ3|jl91EBgIHLcCQ}!3qnq{D`zab67wdY{%H_MRQ z44FY-y8sq$$i?0@KT!hm^N1q=<{>|C4shUnRKL`1P(EtoS;6b5BS>fQ+jaaHF$6$% zPAa1-B}34hlxzIK<@O5{^-taqqyuYN>^q8CZh7ry1#L>Ko-F4dd*ruS*j<0pNQP-8 zOQr*QiR^+O)&@}~0t-Jv@hXtic#({I2NH$twTOji=pid!n9U`BQX8LgagStyKp+U6 z)SLt5y-oudLn+a=DY@!~!|^haO0kz3w`qbPVlJ4i!npW(#r7#;TNZ~hOHiti7M|iA$2p7x z%m)5HRGnp5lW!ZwfdQk3Gzg=+yM{E`1Ega# zDDm#=`(?-R?BjFX$8%rTd7anq)ZgZQWy?FC&lBb72xO>^+&|dD0!M>0k6K6ed}3jj z>As(r5UPB1q%paelbjR> z>JYiR-po|&lgBTlRzt(oz8xhbZ@9ei1`U2#>Qlux2P}l0#5@I&w?un~72=Ut4Xad4 zTY-Xo86h+d(>Tl6IxqW@$%B|bRkHNKD7ppVxmdG;?a@F&KV?nTb-0^Om8rg+Id8hq z~po?^#dRLsK{F8a4X#o<@suNK)J4Wzs|4wMV?I*{|V z#xq(aT4<$z3wRpKlSqd*z&-?5GFVlR@reKp{XS|jYI4dI7oVuVhG2Bgy+7vM^0re@5!-&~vdU(0)~=_&`7i!#15oyjct0`1`9;Yeqp2Q6t!>s^=ye% z;n~9`m4bZ9y(Bc_c>bcKC8fTlduRCfssJ$*{j;nOLDTz)4@s(@5np>9LJ1yrPqbM+ z>(3W=wS_ACD3Q!eaw*;oqA0wTTi3jNPX0ni$WtuG@2LG{$9myY%a~dz?c0NF%2$BP zmTv;l?6TvpRbkQ+V@m$k41zgCajkpfv8~68kf4AGaR-O}adGRdcU#%%GB2#GjCLr% zWPZirzQdf5A`ke5uX9v5dcH&mxNS^sb#7lW(=fBWF-~C|l}cNydTA)=`TD}~HI@iCMM(Kug~dOc z0k``nFr)6j=4Z`%+lNXRu!lokZ&gIXR?^$-LkA-qc$|ZD#ETf_h82g0aM)sho}%5; zV%R(8<37Od;_ah4dYZ6zF;gEgm6wKhJG(XV&_C~rkk-u?7+FON^u-ZG)pj|X3&OFZ zoH}To?zZ_?3sTjSh&4)?WrlG<{oAzxTt2?O>&o1pT2mSl&I4M^M{}sCv15LVIu-fX zjCbNbIUC%@++8qW6L_30oI@m`8IZ#(Yvrmy4iUf-E}Wkg3&ga@b?5J?w9nx#JoH;| zBzAA_o$!aLJ*glnyDUi!lA_ z3V1$K$@Do!lT`jRht`@L(qxXmrqqZqXeL1;^Q06gcA!3mV(9{}rRxMMa)~!i;~eaP zO^tRrt!T8d>B4`-Z%kQ&b6>h*gH#E?iFdzV=q+JFj%M-je7YTGzRNAvO{q4-Fj2%D zbduy3PDdrq7um6`cZ8n?+rGGcds&wkdH)#8x6-@wjJmzc( zbW>Uyu;o%|M8s-tu7m8ww@IhCRA=KJ0W25(DqS3f!#Oz+TR)56=@* z5C0RIJJ1csp}ZtL1#Y4&ZQo&oy+5iQ#Pnfr#{%wW^9M2$)R`q%l9-10Pw2uXrnsH_ zSgXF(z?k`b*?z^qiu6Zw4*_6*XXx;)PoJuvXno}HO@sNh_@W+slPv{Y_{nAm{!{K%18ncD%0I;vgBaHN=UmBX?|K+6bIl#kHUL6f^ByNPw#tCz!NZ0d&n+QIm|?Vpy8QN zRKVvm$rOp#6jxgD(nc1L?9Tp%Fzddz^-sTnA^>+vP1 z<7pltcBXvv%Af6unWjXc=xIDRcz`eMe`~ys*9ya_Pt^V6KSZok{R>~4Q2pxe{xuUH zEZ2@OdT=}Lo;a-WAuFUJg*7_;!)Aw&%V)f3TcCOEN}OJdCqv+s;E`JP@%4~LDlC_X z`Qc&?QN|XHuNlr0Tg?dGJ(Iw>KPupr{LsIv@d<|hQCK*`#ujeaNXiV7?o++HD&{ks zx`NVT&X3(yT+Y2TQh9j->EPK}$iy}HDusIsgJ>Y-G@4P@`Te;LF3MyzLW06z{;ovek}QY-WHKFN$A`Z)arWZtNEHlNgr%~f zAgbA4Cu$WHUR#2!WPZ$ptlD{-K$PRT(5qk-DkA z!aHy*OyUZ6TR|*ZM7?7~0qXW`)!4?y*48HCkH=RUaEVfu^c$>i6kK17+Jycv_oX?Xon-~l_urf zewFLO!h|o6aboub+P->dg9OZYp9ov-+5SukI+#4Dr0c+%F#D~#j3X`|%>}>BY&&wz zQQym5&}PA*;CfYblX+iMDO65#_y-q+CrJp!Nf;Ci7r(fp*k*wY_!vm{#d+bHFbfZU zdTsGqw3qXvDBu?j$At9N2$PuSNG4~K4q-@C4I&%^y9~zzL;Al)<>P>Ei69kCIx^do z;|$HAEm`V8`l7DeR4^d3h~U)1kG9bS%bWkcKV1D>LP_tIglpXbIV-rGYeINEhAJcy zmtkNY2KJG!U;q633K)Cp)8xdUtRfiz!ZG>r>Ev(0 zPALs&=c(q?rN}gkJXFkX>1$x3P>Bg;3+G!jI*YM}03YKc2ci3Q(3(I{-!vmwmz!p# zHaampFQ|4G`)5gT-kJzqXk=AG)ZglSYb+4tRVK3Zc?=AUQI>l3(CFBSZwi+>a+s5q zWYzuOsNRmlFbySSmnnm@n>Q%(FUrLcCLAV24S+BTS(L@WeglAEs78Qy5E|=2C7Ler zP^mw-V|G}|=Va03qt0Jbk)@a4!XaJi^Dz`938kuj1~&>+9%aR-NNgBvQA(|%-K=w@ zSt#QVTB$;9qc5$5QSkX5mol4C-i(+ElxMIlW<7hF2ph8#V4{03XM<2Jdhz;6H4La- z&!gbWf)|LyIvW}N5s2w=D>mfx83@=(IbRQ#m0(T2#KT)cbA=Mj;x@&Fh7Dmgv>^W! zJO_}-f=&wF!kCa6N|S(ySS_R@{WF~nXH07ZWjS#8SYq8eoBso)_Ce&iU`@4+$kNIs z7RcJf@5nrlnw8**1;mnbGTPrJJyPqfg>?WP=yC93srT$nP5ZQuA2Ha!(Kh|$H=*`$ zZ=~dN04R@Vq)kI}vOMHDK=ZAQ*lIfBOM%XsFA&WvnHMr_1w z?2dlvg0F`g1+5z6N=FFXA2;f?jAM>s9IVpPD!uUO9c+_SA+Jr-1XU`Jji3=I)fxEg z5U|-5P)}@C;%<(KPIzi3oFLxK35jo`ik2&rzY*l&)lH{eVcst8>AF7ZSl6$+M@QIumC@x$QC>&?5&z6@GO?Vt99j z!vwkEu5Z`Up|D%Dq63y@t`r6*a-BkSBRe3ic!N^$8*g|AL&^^SaVf%!7lY1Qh0`8U z?}Zl_46NmUu=ZL#=VAXsCh2uLoVCaXWpNlnko6_Dxc+A&k&NRV-J~v3r4vi|qyYwN z&;(k4BuQw()5sr3qYv@wSUb5&(DTKYqTZ;?p^u9_6bD?8q%SV>t z`?5avFfu3MKU0M+{CSQ5*lNu$Z1qpIHZ(|mhUMgsPJI%*uj@yYyZyF7=#BrRl> z%9$?#IYyibs8cicdUEC$Wb1cZuWH?|`dx+SZGwL#*K5%})zQ^9-a8r;s}caj4r7;X zZEI^U2DG)ex3Mac7-UNvqA7~L*g8t1Uk7i{I0MBY-D7|5hZ&gftATn-E$3K62&I^A z{@g{t1Bow#!EZ4Hz(rv=cRABouRUNmVP2mG(I@fjJdlc19yzL%toz;wmza^u?YosM z$WUjM7IKFI2;IyE+{1Ce->S`r5$uLWB7Lg2`i2;?L(?~l7@)5BFGhXAGQ%u9YOtBA z|JLy@G70dV^oSsrIw%CCOoa<)PJ^AKqzL+R-Y+0d8iqGMdQ>cK70j{0?RwtEtVj*uRNG8`@&sqFxWJeVTWKy^zDrSSENnt2g4B$kbm6RG*8Z`RPDD{0b&|c{p z6_WL1wN6ZJ(wX-`{ml4%BOJacD0B6bXx`SfOsQMSS26!%VQ-pN$#TEnqd( zrESe=Q)*Z+RLqp=r+}Yjw9j=oekK8_n2zS-8zgE!%5oU7SySipWrw>c!H%I1(b1ZX zSrbvP@M4Jfg=^KA3mEZ}i*F!RE5 zelLIGA^rGZ*IZlNj!}E9|-h1 zgNJ^3n*mJDkimp}Me-EfPf3o~%3pN#N3uo)L=0uQMq&Hnc99W5(!h`#06?LSa#_M0 zqZ8H}UQDMWQwW47?hXzQa>X&4{0axkA6R z#biKhJO_Fhn_%@q4VqkRCLIAdk&Tw#n{k1X$BC_U#uiF%7NC{MnHuwsbd!h$1*6GF zBYL_O6164y3swzUe@OoMBRL3<3)8`fH~!l~`&aZ4Z^xn?o*_hhl!%CJgrc@YPq3-E z^5uQ1qIm+pn$PyBMg;g^@Yr2eKrJ)0uZja~h;jUI@a}h!MgmyhEdZQz_Qj0Xj<4=V z0y*UH^O#3x5I?)^DOLKbwQmavw8L`ck8-K&51~hZ%&2 zSPYut<2%nC7vr!<;O&}9q&O}R7M(jELaWYb*k#I9#GCukAD4c9m(0Bp_dhS|WFTJA zL=&#ksj+3~po4xqNiTS^X9u!xdT_&|q0REh7X*$U3CCY-`@8xiKmX0n4RNE$7#W%z zm8U4^`8UGH;^=i4lpNL(m3o$qnZN1{AugxB%rPx_b4KK)@F#)i!*O@c+)D6`mvI95 zEb*hH-vvA7=Vf|lY+H{}scrkz4e|_l^_H2_^kyXN7`jL|(VHB+-3###c_)Q4r z@p7O@5NwLTtxJFj<;b^XK?%Un=;8H_aq-Urf;79>4^1T;_7*sEq71PDgMmDI0muCS z4Z+}z0Ktq^N6^c08H^fR@0Gnzl zynQYJ_h@+WyVN_YxBcxv()Runo8scV+sPgjYt|Aq(B%pbg#LoAER%B;fUC|XG!z$E z(PgN$00EgD{>b~Yab*V*sStw4&2-%;k{{u)Skd6q{|NY@=2IxR^;eX5_~Szi0v>HB z2#aZQhz7k9r_a{BP(qiusR`}|W|4tePSaDr38YS+VJE0la%3|NrGF3?T^;k!R!v)G z(abm?ujJ6~XS9l8#odik?XU2JB0YcytPi8vP!X`DJHJ8RhyH{K^7gz2H$D>^-QNNj zt^J+#cTR3_v--pll3D@X}$+pm^E_1ChSES^>5@6C2-}FQ3=0}con%qUJf#v7OB-ArjMWZ%DxVlaniRnW+ zfQMWGsvu=f?Hj)sT4P%uFSuytiDHdAsKpA{wfJ<7=4B{cH)UQs-|qA~5r9X!r$A26 z_tAP;Sm3g`+uQVC>P|$mybIr%8meCZ^zh(XSTNNf`_;a(_SB)025jchk2xJod-VVP zAX7@&)QtzCUzO4JWoNA6#~oc88~D+>-w@NYPW~yam;EgGW8oc_6`JkafEpNBx<`Y2 zZJA2J6*|hnJC7OF&3eJ5myQWfiN5<-czb&{cqh-~V5oP*R9!$2#HM+I&*6oBPB0P7{p4bTm}$B5(wTn3T=T=%NBerkmkFyqb>B`wC5;qLc?7ba6pe z8Q^iktf<~q6}qg$)cM|@vT|#J(B(3VW79$5tX9G-&I#rvTHno5+!a>PJ5N6h1E5l8 z{)Jvw75C}tpRpx#!7LmQ&lL-aR$&i+T8k45G%!b=D0moJsJf1%M0gSx!e0eUg-r_DdxWQ;HNp0FwJ@s4lsd zexd?pXdd)vz)EF0k`;LJtO(V7Zc`(5m#L&Q6BG}dnEwz7c;LqFW!)YoYs2%g{lLj^ zspIIM8^7=ZE;hs~(u|r>ux4$mvY>mwPr6D+?8fpaFcyd+gLv5=qE|ygWfNlH`EAt! zXFdPOB6}(wJzHqxfFxdDCgdVcHwLFlS|!j$zeC9v8=l{XLw$MQ5$og#w7(BZdWQQ4 zGL0v6%{Uxo$o39^pT=rVm&Hf$DNg8;s%~`BwWkJLJHPfz64{K|c%TtPhb_S98 zPN^~xyUf)gK}%LwU2ip3$VF9ki0eSeKsj-mLu%<^XUTo^L)@C(nL8dh=T$d(3q&^t zmRBJX3v32=z90ZMnFQ3Qx*z!0as@Ry$J%M+IpCwYI8SkZeXxjBX(R!G$-E@E&`o&6 z*4+$^R*qRKT>~~drAGofxn95AP3vyatcrfB<7{ZwGF)$oKGos)j9Vd0jL~900uWZg zzi`Li%;)k1>|IQl$y`c!_1vb`Meu`pcvLZ=zVl^}TseT^kMVmZ0&oV{zC69u#JIX` z5#2O;`>>QJu*0tDjQ|Kv1#~M5D*XeN{GT4M)9aJ^vQ2o&+5F7bT8x93p6Aosi<+qNqj3+H z@=bHGK6gEszS^^uu3sEYkOp;N0*ifVQY01(+NE!tx#mqptjw2{F*U@pS`?=QpG9s z<41b>j-gP;Fi4gR{*ueyALjff0Abe7W$%iDTEtI|p93LXS8Z>_vhd1crx;$c zVl#pvoHm=wnhdYlhNo6eZ`NlxMyVkg?}~p~6upFa@5mliSaxY)6gccjW@G7paUx!* z6Jd`+wUw_(oLMz2HVEF~HIfFRtGqIj%y~#-vTkTRQc}Q5}|OU{@{0$ce7XhUlGq5aOKnfR**l{a>a& zGTApTzMZ^SDsL9Er^g<@t#Rdwp-m;;pt2^H=h{QDF8uu0MhYgoBXA}ChVEMzq)9QzwY@xdw_znjDF^Ebbuo!eW5_D^wf8;S!>>)d8zL(vG03#x_uKi zSWVFiHx{AN=>T~yS1}TL69c9%P>Z?5`mGvp4is6yicdEyJ4H8_B*1+5#_Eqh7M(5i z>dS_Hsq20r&upn})6y#_gsqO5-g^G*dWW9)r;vzW%dxSX%sVDpjhAKJL%~if@*m56M*(WLt#&|FI0gakSz+G5h_?PpoFJ) z(C_}{=iM=|)!!78u`^|ehco6pTN>*6e}C7@7@rW+PA*3a>YD-q}~D;dB*=8OCq{`JV+yJf-$REu^M;n zKwBc=NnUTS>qSu2N=MYE>$lI>V6b0AGSTJA-;%JDWkD@_f9*nYK7DqdQ0Xf%8Y2nS z`@KGCSc==L6^98%?0xh6A0rC;PxXN6v@xU+VmsdZ`&S7Gr96v**9@obyKe+xz8Al^ zL;5?~ZdfjIdX7}l87?6*0b>v*0#Jk6Ij30zZ^uNred#p_{qJ2;qmeq=m+_w`o4nyB z?N6>}60OdgLz^UE9s}%jE8G@GldArYk^AlrTe4NEU|TCzllQ>|BQNPl^EEmNPOs+O z6s&vjzm2B>$w12C*+!p%GVeobhT`VpaExA}OHGhhuh$o)c--=WU3777iUJ%>rv!hiuKpH&=#WJO>LV+8Lju+gwdIO~ zr76vulYzR6_sv4tYVK%01wE&hae{={?QHB&J6v8Ke0m<=pJr_IM&!3?rG}s;0NHwk z7{}M55^;n}P0I}8dK!_TU4~!ZJo{16?b)!JEVlh@YVsX<=M(Jgq@`Eb&wZgXM2Eg| zWGl)huqLuNW^`|qNX|dB(grqhCWKDM1d09WGx1BLvUA*50&vNqN}u9k?SIU&pg0;* zOI8Hpi!xSFLWZ|^SyK)Adu^fgja4+jyaMsX7D9TOGL;f=MznE`)reesI3gVnW*1v`(*=_37}R(mH-H*>HQg83e$jZ>7QV~qOJjaZ=WcX5Bc401Kc9VXHNRwOPs>r zv|t$^Srq&o3oJ2Z3N7iwt0;(YU*OoUB~NYE`AOcMS=VMwYvk&1EC^j+uZ%ud5)W*; zHxgQtsia#hw|jP71>2zf-AUi;YUpvw-So+Y!4;-LZYW+27U*4@>29EgZeL+OC zIg>ne;nV5h$O~#2eE(Lr98xiDh%NUl8}llZkQY zFj$w;d8uuvqFKh;-EtuRiUhO1`g&cc-Z>lmR`Xg$c-3R1VhOr>$>}f=GjyeWJ{YW0 zIcSgopZ07f2h$^!M_sgTp1l8Nh(kIQR^t9deacsWS@@$) z;<{OsxGqkPWdFq!XC4YWkc>OV-5>lH5A=1}Y3!Tg*9atO7XE7OstRpYRWnHCZa?5a zd8h8Y)VhTg=tM(0lXBWLqVc6r*7Nj`@FRW6Bw-8fRDtZ+m<$1a4^yeY3)2in0LS~u zXRn;hY8OKJAQCwa^Em34G-axZFlj&XuzsJY!e~rJ?FUS*;Vcy(TmXOMmt^eLD-tc9?!CjP9U8&;wL`dfon#5jUU`jE~5tSAdt zcN5Db6fVd7ag270dc02G3T6fisJj6A0mIDZv6#F;p&S4TKIeYCdBgzDX|(6gr?$m> zNh(r?{PIo=KRBV}25_WFn3p3dC*z;*zuPL=H2fXMeVO|5r$g5a0xruYlUsY3%8>^sL5{2?OGzJ}rHh_<6`Co?5e zP*j!Zai6N9hJV}y`3>c7ac6>VlXzjG?$lYlNKYSAIhMYikaUx z2}@wy#pWY;>CsFNop99?h>~ZzTo=OGh9*hux)`_ZYMMcZ*w=vnfe9X`m4lAH>i>s0 z4cXWX{sd&pgEqcwTkdpA^{Ne4Zh;l6jAsvo15KXkp3Y6GTHl~vCa}NzkjqSObh7{> zRz>XMjI2j3xVb{j-O^kS>CEOJT#Mpd7n2|5N9tQ?b(E=EWqwhOe*|U%kfl}fn|dbr zy$6lhP+w?*B1LDMFDjc5QNFn`(`TW?SXfowX;22fRG;kl z5{E^dSL8nwCt&bjhZ2UM&2q>PMQ6JMihf?iu6C~*%5QW}J|sBKo3(D|WJJt2e^&&L zOJ*`7KGQtrPItlF%V3g2;L(U;aGlHVThIGgnBpBOiVV{Cq;UUBKcIE%S9d62vP3c=4YP$%P*+xT2(InN<@Ly^*PY_n&H=*c|`XD<|SXt>#M+(C?M@P~iO4{5d^@ z5gR&u!XtPz41~%wKOXR6qe60jLa# zv9EpT=W_Zlh(B&`(F&N4uvSO+eFhGPXy!f-e}BpnB9@ySF9!#Q9U!qgtaY&?#z9_u ze~z9&<`t(Zx~(2_nO*{c1TaV@XApFp2AmJ@orqV{g)Am1|TUocqWZ_h$p z5KXtfvG|;jJjJtPX@G&jmzumtxu*IuF@An4hsv$bBQizq2WG>{J;u@B;()+^0=oxj z=yX{Qq`NS+N{#TN$%!zG+{+GhMJa2Ny6BG!UDNe zCyJh(8OA$Ladf@+&}{%|KCp_ktD9|iR>?G09WTAAz1R(XEKD$Za(y!OGWEOSpkm@3m28u8i_`l8#gp#g>|q(L6!)jIp&-A&ERl=@h#Vj2VR~cIG~CY`5&Y@(TgBc zM)ws=G7_T=XlQ1~(MCV1O?txdDE_6#LqDu!h9h-TorTF*<(OzEN4ti1hI$t2(;(% z5oU?TVwbspKq?#tcM^j5!B0102(xOm=J@?n(j}<>bh{)1eWqn)mBm2%z650PWE#+D z8-q3k#YN8+7o<icVvLZPJ8iTqP=&EwK=EuntkM3JVe z&<)u#@8#N(oix7m;HFG%6_RT=slIiPvh*p`X2RKg(y@JEexdkyU(Uu%Hez)A}lR3J_#gJqcK#>faN{zzBnT)(R@f0yEIF zmG_gQNkL)@0vlmB0wRV?qn|&%8Q{Mm2diyf1bR?h0+I^Uj22U?Pv|s2x3Cp=2|E|y zB?rx$+<^iGWN`_Sn;g%3YQ_#>oUR2yeVedTr@vRPqm?8_ImA>ai!5B6sxHGU zq|d#nbER42MBp{VM7lCasF})b!&P_|s4^eHNMaz0#Ohl`;pMZY@nDu^H0L}eunYwyIIaB2EJGk53)$a z&UZX~Q89UFSZ6eFEI^bkj>j>FW9-8Reo3uNq|ec_8dG^gR{IK|CP!jRsS>wxJYxo8 zZow-qdguFwSP0mLQYXLY(G5!Qe(Fy4TFBt5BaHNp8nbt#LhxTd1Nh-NRTWL+iR#@w zT(@DQAOAAzX;0|c*2DvjNPM&UQTo@X=(zaY zs7QpgQ2C*pam1_kms*C!AqZYut7x0LtHs;q0?C$bxm=^)?RG|dZ_X%I@9LB^vo(uP`(z2oKaf zAB&9H#V)4}%YO@uhtYFA|HlpPG90AjB1|soDRz1oMx&DN!h^2|nBOyX-emx~BKPBU zke^777qS=*PzkRH=EiId(|{j@9GX?LF{4svG|OCE^%g$F5ZSNdg^o*ao^Rvk#FizO zH=K^0`cNat?>SB~8UI*fs`~n4Rj1ln$h(!4aV0T0;4&2JEPD8U4o-asq0xEf^U~L%qS<50rK#5VpttJb#ax|qkkIP)a8;o`K*Msc ztQ(xn=V4n~okcgKzpa$oatwc`hRAy%>$@?bMfgL=L_nvu%cJ0+~fa#s%Ja`WkZc9dc;TunS;Th96xWfo0=NKOXj8%k1?il@&NX33M zhhpL3zQy~P?^Wv?mLL!+t^gvM?%kMv!?m)4%_K5j`Js`Uty9w2@7*^xDAhCSzm9zh z?vki%t;T8(e?m8flHfm*QZy0Lrp?i?@`Q#~l~cyPK&3#Wn28mnD>51wjKvmS86K`< zq~9aB#m^sj!#Cg}G#Re043zsEx7AW!bfx5Y$dW$yLwllfk}+Uz1{EP%k~W({l65^X(20gvBx(-YK|?f=h|gp`!~o%9#LAUkVJVKMxr*hrs=Hr|@}*JTa_Z&d6;02vd4W1YdI9 zXX8NzcpbC1;%r}6E!wIRsYck`L`Kqulb^X`YDyANRpOhCYRFv7 zcQWlOMD<10VNcH_>4*W#vl6888NSxjznwZ^Xu}q6SSxzk5@fcdDGOm))xgN2Z4{7B z|}``X99|9nUYV zhhkXJ#B4~Z**SG9zg%W_K6G3t@ zBbcS!+5j{!Au1(hPZz?v7oLDdM^z7y9#l2_)O{j76D5urBPpG6bT`KXk@y3N6f6Xh z-v@W0%t< znT=rJEXKs+R2dOL1oCKT>fBxEq+Z7mfsX7!<=4?Y02quJDfVCM2fG1JL%NTo)P}95 z%m1hqRM61|&TV^0W&EUcqxJVY4gGQJ(0Cw4#a94i_ay{&GEvxbwboeGIOj(Ku9%5( zM5G?aj-!=g;pXDTFESWAX;ckip72`ZY8ps&3`~^|B4hspa*4(|#JqaL_hjHCa1s*% zDNCQ(aL0yK zKB9_NSifIt>vH8v>5HvbzRZSE;i2M8A}LlGTyCzfW&$nYru9Mx-vPH`g?~7oKG@p-}Oz4eu&>47om2rSLl%gAX{;O!< zS4DK6ilT~r7870tJ zJv@yC27*U_`qfS7XEQ&#zjXnK4k1kLpWLWU%w~?p)7O)!9EC>BX zlk&Lj3M~^CK|ULgoW_8k`1+uA>h1reEY6y=^SnG?=i<3aZ@Sx;fWcQsabkLYCS2K? zwaeY3FZ6#E|HO&qs(V1Zq>RInc%w}zm{uJ`WYsNmG)P-IyYz&ng>g0~2eHKoyf6>* z!@f(1y9|}VUpLUq95~!|I{N2uDI0ci=*r9c>0^R}vn908JBQbLc_Fi+89^!tSu@;K zj)9qr6;r-YvU+$1X+^XRcLm@>ll~)IGMsFk^CRz&IZB=Me~nj2t?r2t&fch?OO_hk zr}oqxQlpLD+TGU3Z|_w!4a$gsh4N7`gbgsi?J}+TMblN|(ooU=P*RZjrGVhw*?t7G zj6(P==fjn;jdr9D07Gqw3DmVoE&v+*5Et;dR$|)IeAfMvitrqw6>io<-s7;aJ5w(e zKbOvO0Iy)aKu3GLj*3TOXu*&<`T#IFoo0kQC~y3|q^d8s7dFLx4z@svt&I4#?{x6-{2?!iu4yrE1+1$V>6#4H5hAy)b4ercf^4fM& zT^27j5A;J~Et8=|bf*Q{10MRxN-RD{d)*4{eC(nPysx^ z!EwhVNrtjLE@`idP``Qc1%SFY5tFVpqx|XKmGOG+MV7W}YS^>)Rwhx8t1fV&r>Fhz z$FeD_2bj2u72ePYIRLm`B!Bpsd56;(tuT>EGf|c?*svlM!5_oJGv@-r`%dXhyESpn zWYl2x{iqG2C;eFY<#`nHC-Lx8#L)3O3P`ltm%)~t?z7QMi&O`~KxVL78K$DL7(?!{ z!XuzfA-}p;@XBjN9mJL>-&UoJt}cH9fF_6qP|Df|`ze=)`~IWch+Asv;>na0f)N6c zdasdb1q}F2#4@{^`a?HScXN~oWFW>Gqsx^u$66OXi~r;-=VY}{uD;u{PczwPYBM@H znlk=Q#Fby?lS(gecG!Ru)WN~HPYbaR&HDRLVz^2GagM$_o8Ayr$ zBOv0wJHI5J&}!;q0`|g=rMnUL%DNT7N~Ztst(}!~JX&z*VUwiiqEg^=W%y!))~o6h zNyU>u1?R!hA6%QV*Tvc)I0>@V+p6VZX?@elb zJQfLNVUlbwxx{h!XMu4p;tI<8#2r7Y(T^Du*qc-RG`lmezFhW;vAr+gO~DrS9OrE_ za?|R7|BewVb62G7v2V8+ZvMUcGyvGJeBLtOo-9iM5{lOXC9-cbll60ae56ESKO1RW z!TbacwbL{)PaMC+b+s5E4hokM93=`sT~7gMV2+&Ey;q-pAA=wzk2+ipPrw7F7?Y$r z%xrE}F;n_|QuOtP25cl!OEW>O(c~w2$!R4E((i&Bv-MgR*QstysV2Bz^&JGFx*JHs z!-Kq~U~-sZk%Leo-l)DmMRR*gbW0^1NP4T^?Fk2v=;FQUCfD(1tlBn;0)YpN{J11X z+p>SqLy)fAW_^I%94S7tM=3SDm|6cZfe(dTn})+O^k8r0TFe3#WkWxrlN=wEEWIZW zY;Q)TWK0U5x2&YqPG2KO$1A<&Z-!p5eKDmD#|2#{{CE9QfZ|@-s~8frKR@#HPCfkh zkLUVP+JVW$nT7J_sgX0nf7N?;Y46MIF8=?)&85FQ9pn;rXVmm>yjd2$=`Uy%ZH5#` z7FK+>ou`=7@9cV6>-E|`5Wj*+BeXL|m0Z1ReZ#ki_^@4V`0Lr(EKNfw9A9x}u-*Ym zI-V2s8NHROL0oUEO}4~H^hG%iY!gG;Tr!52`&jbBe#|MIj6n_9A^i0?rNu?Hd}?I5 zg`d$gsrcg|NUNY!rgMir>&=mGhP(%Pn@=P&!yREn50@h=Np47zQ3^9HVWam}D*^Cl zx~rcelI)t@k>MXdDD#2Zg)(HaJ2b%QP}}G6uwl<)j-=H3iAOrOF5OcJXN-lI<(o+S zQHI;b{!z+{SjVVjP0dspIp1)@0`aVYS1;GinfN_66@p<^4}OO- zpH-07XEN<0okf(Vqf9`*?Toi%Sx0lI`K3ZHRQt$Cm}#&jq8C3qg&6O^Gz=Wi zSVnd>+=;6v@`Nv_N#a3}trGaof9XzK&MzHFWE@e9w)*l+3Du#9NZql5$%@Y)LEz6T!_lIEz+HdCUAJo4 z0J1((9@2|tE*$9sPZ7YQ&AiGpr0=}uufHPc?#D$FLm^`=N{_6BSrtZ8=?s_Q4N}SL zMV-BQ4qI$p@D<~hw>}{=ToB_j9_6O>F9gFFqJ!(=c)rJH!B@ZoPLAr33Ph9>M=s%# z^#|YA6!ICuqtqN6FAtm8eSzgb1TC3m<{WHnVpF*~NO?M|K(^W;eA}}Z-(7LUq=wi% z)Vh|BpW*wY+QjfX`^z;!5qEyB@#F2=oW$^19v|Aw=m)GkUQ$i&=W18|d(AWqncjo9 z#O$>HW9zQJq7K`((E|evB}1nS-Q6{GcSwVjfOJU=CC!l1(%k~mCEZ<0=g=X_NGM3S z=YHK z;oJV;8!$_rLPc#&oM}%-Cn7wca{&gC5 zi){{3sy5ts%YSa*8DpxxuH&`HH8Cn}iKb-H!rWCcOw@;pJETQ*WkBi}q48ag>M4!k zoT*8l@nSB?No>RIDF(O@&n_`rFj8SUZd^XqC6BDrl4TU&cET15@pQe(@E^a#fK2R*eTeY8ZjOkgd zUfeoh%5ojwKeVmb$oP)?n3bd7p-d+Y zI!1YmUhi8l+qa3Dc2hpi3pl5k2$c&GwuLKIsk3lt`5chazXVt703DBQ^MskFTQt+3 zUS|Y;FXy~vnKcO``CYpA%2^Fx(jQ&EPkI>mig>;LW_TOg!Nd;Xa+u4{ZuHEW?jsRs z>g)_A9|HVi(e0;oJ`ayK4BhpyEGM%vtpmB;F!kWRNS|TDBR%ol|KshH8Y{@s)~Z>m zkL6PPg4Z}D`wT~Q9Qf_FD2V7iu@_P9Z5vgFv!5KVHm<#hpG{4rk-UN8?^Y-Hnc7&? z&XPe~?knBD&Dun7fJ<)EA%uXK`T%kv{s~yYP9#gSrQYyFo=-(s95J#v%hU>Z^DXa_ zben9#-opzt$H&mmBT9!7DG$~rfmw3bm7+@}xlx7xlDLCHL zyqX_$b!l;gnCZCZzNY9(ZXT%Nzqn%3;69nPA?Idahf;FT@py2VMpTsVyUt=Jv~CD) zyZXFnOXqVOHqv_EMfsmJU(@Yw`KDbTUYepY0`ZrmpxtyZ(!tl05`pSR_u|G28+2)K zB&<1~EA3Oz4+c9|o*F11WJC6RbL)aMY_3UWUu1QozdMOw<40$G{!c~)e)x}IJ6^i) zy+@jI(D!j2yprYkd&zRrNJrY!-qTKdlEUs;MB_BV9UDw{Rd(usnP*)5-Zz`cM*i`- z%s_^hF8%L&B1ri_^}FAT`TbcEXBn^OI>h_KTz9Aw};B@rQu^6lS&98U5co22L%X*9a*>dr58P`N=V@Lovy z!rC?G2Dv9THnP1H)=u`a8?o4 z=|PFF$~ZdqP|v|?K1pAVal!vVK(P%Af?CKNv~oE*aX~X@tXjfD!y8$L7@L#ulB-w? zmMVQ)6c@dMZ#l+unX5U&Uo<|!EODqn#K!49=heK&jC~Wk^pv0K7W5XupV#0 zYX@cX%v}$k+Lv=q?ZJ>*%NjPki@?Af@}0%6rjdY}RM0wpy*!X3DtL#bdm^Uv{b*ZS zhCwpRw=(CTL5A`?H}#=k-2eK! zRoWn5@?YA2lfF+yB(smhp`MdwUO{?A zodCb>Q%K{@2pcSN zczEk>d>Oufw39MSXL%EFnv!4X7#5)kpi1@M z+j?$IY71G|oWAO6F7N6ZfwnL8M<_Pv!cj-pw7rWE`L6QLl+z)U={2WILQGu#v{yEWNtApO988ra{sRfS}s*nri9%82rn*e|E%+! z{+6&8vlGt-Bls4+@aQxxN>TT$_9fxh>vSye@l4M2{`govFgBbAT`N7b)?7wiQ&six z)a21fQu{00%EUYc~$Hom>L+U3PalST-Zebu_*i%e}l&V5tSWy;+f>`roFotc9;M*+|2A^N3G zNtJDL-=i%lcIebUxZdWbt`s}GY%lQeIqy9sWm)9J0$YFlJ4jM+3&(^+y)#(Tj8PFY z!df&yNu$7g+B*B&4T7>6tl7ZGz)V}X>fL<0WZ)0HvX9UK6YN6{32=|fH%NicGKrs# zjt@>LUqkxYQUVLbpT&h?PmgIkHL5+eIkPn;-Rjrtrq;k-kuJ7(gvO*jON5MHTz|M= zI`As&V^oV=#>RkKJ=jYbn}QM&veir<#7RkWO^7>&SV&pt+OoQQL}T&SCkQ)-7!L+F z0zL0ol!_wGA{5e}6%n#BWxUV^Zn*LeB->C5{G9uVlr*_xdjGvYyJou z|F_8udDI}9Tf9cx>8v6KqQ)t_nL%Wxr*w8&>VF$C63hqQu$BVOF@7fu>TZ@S$mi-2=M2)S9LtS@Fj+Q!xk;iIk8_ppg5<)E?>rssS1+A8!LGjzpNXWA?EG z?LgF0jat3+MI+J(4cW5YEdO}pgG{aoe-deEdCzMxp|kp@l<~zW5Te_^udrS+^|!9j z#rNb}K=7Mw!rLfGR)+$fLn#GQU6Or`WF6I5UR4T41`dPU3}eIX?=^wpm-R0q$c|8O zm1ntO0~igj&=2S*{mftioew02n2d3wjiq19wj~jM*S5qhNG*`!=Jf7sVuTcO+QcA5 zIg#}{PA;VeEV=_!4^;$f{Q%(_r6Hzn+Utk9_PA1A6Q+i^}wZ0{0gMWz^<`vQ{^ zOFzXqc78VEidql!_AIDAzdrjB5h2+}CbNS#L&CajWoGwdw)Xs@CiO(>a;;92p8he4g-_$1oMeBjor2uE!u%8_& zWlwVE>EpV|K@1bE7946xAz%SoO4T3NmL@sU+FIZ(7(rd za{3V$yw{rdU=hpcejfnXeT%PoSkwiT2I(;-z@s^TpWYr8nEK}%Ay(ZnGS+g z*6|@g?l;XNG%=Jv<`xLD6sLF|aCH9yzYcx89k=oWfG_$oO?^q*G8d+bFj48715fwK zj7_GL?I06l0Gt;h@8VXppskzPei*6bN znS;$pbqvpGD@%wp{s)60k9$`V63ScWh0-Xu3fN72n0KY+fWZyzgwifku8}`7jYiVS z_bn3Z#+s&c%?&&^-Q8}ElwnH$oz@>G0wur`_!}uof_UTlmEP&U2BcrRteTmEhJMb= zb(h_gZNsZ!r$M^oL{cU&RP6697^P$)A;#ZZ8XoU(_E$g;lZVY;Via|A(3>qfPp~t&;m=I zLfA6fI{dXjVw44PJnNz8L=_2J$Xj&>!I#b|+}HUtktw4c|1R($kKdD4R;d3uH`B;+ zJ^(->9ABAedRk%Rt{bNc0|#Wp0skeZJq(nMk68FUk*a{pFy)sP%&Zj_ zGRJ1HpIfLq+Y*-Io3;YvvX#CtVxj#YO%LL^x5sdXdIE_YgPm5%p|nrJ1if>H7~twjG~Ykal?y3N5#NX6 z$>&-OT&Uya7yR_poiOV6{=K!Y0if2MWHKhTQoht>i01=k+`{w30?Sb0Bk<6|V=4h&rX?Q<(wETG zagr*uw84iZ)zK9z6n_WMqY_6gfCk6LRw0>A_n4!emW!FT?A}^`6sgN_A*g3W|cZ*LU!4p6_jK=) z&2F0gj!>i<74&c8y$Bz|^`Sr46_&YO@DvWCPyT}eT7#=CvSEU{3*I2m)fk`@Jwz6; z$PT)sDa;y+bP@WHucsJpX(%tJ^VZN(DI+sHaBnQh<2BVYNL?Z?B&=OvbqI*3r@N6rM?jAn1)H^j?z>&R9c@ zzGwa$-KyTu!zilq0U14FljgVK{tEC9DwM={{XR{WXKyd2Zm({yCWZ#b|6*;DB=%zA zZ>$D1tbjma3@G?(%i>Ep^%vX^CquDp&NY*(#lg0~k79Ay1OhZ%ltaes%&jF9_b){e zq(07pDJAD{IWcb|1Y8FJ_YeTDxLK;)$kq^$tweVI{fpGTTwE|fCnyvbfAZ72>lW=0`~hVp>! z&eJ#;MyWn=dt*pumhsC&D)0u9&5|4f9NDcLPvR;)#rFFC?Hp|$5wwGJwu3MDxzl5m zVG?bV9)6<3W^1HA`y;EQy&{q)Lm~*PCpb2#5`Tp4)u-AOeBavGgu?%$-F8h_Z?r@pyZYEJnc1x) z_*kUsw6(3613F`1LD6PMQJnzL@Bc!egqDma8hV5Tr%7>MQwJh1G*Zw&jaE%vee(Ua z+(s$CtlPmxTq`$%k<9?{1g{+W@2EcrbLU%6PkR=I8N~RF(CQP~t%A{^S&*d-yxxe}%=olc@c*W$FOeyjzubOg2)=@xt z5@D>$5}nZrsU;3##~1kc{@58`pecOQ5l z#ar=`{IEgE3$f01YUwV533QrGEp4;rHSGi5xT^?0{R|4p;)vEs_tbTS+nR_y*eXda zfs)s{H9{ZkiCYypdO?Z~V&00RYp`v?2Y)#zu}$Co(G&rrHz$RzNkp|@QRU6~sMYRj2R)WaA}L$HoMzcyzF*?yqFcr9O1vA^dp%RVF1LmgnP?+1HXU(DB!x& z@HJGV;z`EnuOv zJl+Kek4m+a!o4j6eY0M_A6`ovZOawR$@gARI5wzSO9T^Ct&ajE5w;UJqmg+5DfiH^ zLo_-LOITzT%+o=9TxE(Qf$ZI-VE+bV_qT@bN01pSKJ0_Icr%tZ%~EZu5e>d{ro-B~ zxuXAdL&;rv-y#U;FICVZVNpLYUVRz_;=3OhJaC)L;GZG|tvUTDE)6;0p&VA^`tyYYq7j0e za#+Bq->V=7obh#O&M?XijmFEwWn`>o(dZlXAxbv*!{6?pU!+7-OlMd`!dw1Yj-c5A ze@me*NssQ6$$2v1r1>zDGm3co-Zl&tGm^ZwxDm{_LJVTJ)@iqP6m@zXd~eVRM%jIb zyU*77j@+ke01b?leSK|jJ!c%AL!yU$a(f3*oh~?|K>=+HILPkwR_-?;Z=;?$*Tpd4 zqv#Z6%7I%54evW9=)jubq}?)>4Zln1V~GCO4cdPc5*zgX2UxGc$J%oMjOXHi%n^Vz z0Cf(J-q#OCXEZm^#Nw#g=_#s66(LeD;Up|~F3#(tS`wt0!@zMd(C}yO=^+_S75%4d z{#u+DZWxd=kj@Y5_&r_NP^tb@Fv4u#VP#mRRzC2~byLJo#as&V{JLQn_JW$^gq~mr z#UI=#n_i-zUBV2p=(3G~4O$rX*I1%{de$Nx1jHZVH7lxN_Ya*RxA#;ST4>lkeNu^z@I@7PM z#u(+s0^>Lnp@19DrC&-0VwbES_;=wzzi_RN^)VR$nB$qpe0BR;gZ0MhZy5Gv z&$ag3w(nS#6owPk#6$jI0wd^fH=0y)=7!vl4Gx^Vm^6eqD6Lz%&KhFX%{#CVgA{R`RsT^lz@M+`wxcn9Tc zyM*&&@1t5eqX@5XafCN`(zFjC{T+JCa2S*mT8ta|YKVamea*TO815A<40#lpkvQ4= zf(D|S3a}o7fx((en_z*cUOCN_$>$*g{=TFQH`-`2C_@fW{@@70DOt4zGq+m!ObV7B_wma?)I^}ZiG9vioahpTGK8!#tdKRYcL%8VmQ5RxVLS}ECwW7 zMx)T)UKCgGyE2JaQuQ=fk7*32v@_js^gtO!eM-2E3gH;<2TV(jh$H|Zc;-g-A`HRT zow01HyL0He);8)+W$GGf?5DeKpsqyAZZE-68A&|in9#$%i#9cZzNyNPwZtq z1wymegO9G~8-(V4FhHE9l~KYFi;RY=;dIHJ=ltnc=OD<%V9a;qJs~@L@!EcTs-?Y| zNZ@8|M2R-jc-GXIt_q?*`s!R1BCB8`0QQm44sjh+Itj@;d$xBPtBCggyVAx7b<(~BOH5y~BM9b0 z(AqGTZq71iUf7V+{|_X3!C&dzRy_b%!^1$l`r2{eCO`Pwr^gT}=Mk3@yeC6^A9{t0 z)I>jS9_5QOwK`KS<(iV2#&d{;APS6rj{U{{-TFDNDrB(sFqQW{kVI0yuHYbLxBfsW z3ik1oOas~(eqkL0Yss<}4~RnFOAs;fn43bt?+dG5Tep!OjE{xGiQ+OSOD9*7eP)tp zsBml&-X^|J8|ryPpX85NL$TVEupvU8{K%%-CP^14mN5~2Vmfm*ao0z1wN)1e!~zJ- zrZ*DB!LM9&9lnUzq} zPr>)vQNh7XwBq=e^ID$ZK*pP5i^A6%-}G zhutwBX6n;y>#xxRy&_X&`w*#)%Br{`LfHWN(4vL-v64%D1PuI?9k^gxeu`DmxR}N; z;$y)sa;lN20q(u##{)q*y{v~FK%>Y?o zBxxBORf!|bAQ6auDKh(8fJM^}6U(Wq%46sMi-}4%i2>k9E5)b$>N;NN z6fG{Qlk8%y4A1c3nFojLqwl=mjs`6D&R{f~dk8{RSI8&uHMBBMus2b_H!chM3OasH zF^~2?p4pmS#Q>Aygg^C&^0Hn|)Y6yYLg8O1S4|R4A)`rNqW3H`5Cb0$V;N|kaX^V} zDed6!EVXFkqOXpE4jR_a#;)5JjkM^N9WjDG-yaTj`A;hhYLaZxtmBK#>FgwFo=R6I zy<+-@;HUZYm6XUZgDXh6%NjyLiN2!n`E@vqCJQa#)1h85tmVPJ9@Nts2}izxjvyEH zS{^eT&MWeIsu`zkk#F{$CU>R)6h-h>C%*aNfqLA9?AO}>I7Tj~m_(wBbF^#>y(|B9 z5^`)V>hPSNhmiFp`^``D=B_!ECTcRCZHLLZ0uQv{)ZFr=ygX3HcXBY2nK^-6&VTfI z0KiUm<%UcHq6I?#%Z;+VPFs?JBJvPqJf$9>B%{w`rLevv&U16(N1rhT)&#E&F{uS7 zwUix3) zDxrA+)nuwOT>jZLi-3@Ud~Na64;y6jp@hja)54h#5ZM~eNoEKM)n18eI50)bd4FR2 zHpg38Y%6u`KH<1b^2fA`t__$4TC5s%@l}wAZITt*_)!CT8m*JBfs92&!wiwNkT=Lf zv%K+W03QWZf^5^`I(J+Zzkl9tdAlpcACZ8w`R%0C1^=8`nMZF=97)WX! zc{9G|K^0-o0f~ZBg7(7OIQNr)rAWUcpqk+gY&8@VSg;sbT@sZ|ff&3YqH%4Dy}1$Q0mR(nQPWKch9?bhk(;NKS}u!&js%$i zkVKh`%|^}E2pBPrq|ht;CEB3-9{(dfy z(K+)MroOvdSyBKok&?OpkfgEkHY!tuN1iQGz5`HZ$JDs}T~_JkP|YhN{9>jkEG6}& z(k9hK?$J<3gMBh|5Zgo?55zeFNGwGl8D=6$ls_?1mB&VWK%S|er}k%vO#DT^`-F|C z@#~>spp`5Wei<242uzJ@!D2BeA(~TQzJ$~!2KK!enUZf8T%&dVlYMjOiF!5&JwN6K zQ$Vb%T!dcifoZv}C=PibYp7s`m)AB^Hz6LMMWi6H!<+p|_v-G$krX#9LkjO!qH)hO za=s!T4xN>u&{sb$9rI*INmW4^$;B|3$tKtKWIQ3Wx>>7Tg~jmDIq!%Z)Gph|R;oQX z=Ku#BVFy(`owLq$vm9RRS|*FS{|o;6iCBo9TS$NNSk8NcAGC~$olemV97MW}Z|IEQ zLZC%qWI36;Td-QX%kWHLA);&W?+JOD9Bl;OQ*5woVE3h0Z9m{O94fXxuFBW%q-ZGq zCF_N&+TQRC2~-t2cr03yK0LfUhs^;&3c6_cQ%`23$nUtEG>X*6ESFF)?J zD`1Gc6z84xbs<%seW8=RQXD{B~BjC~g>QJ{;2wX?o<$);)_z*CzF zw00tZxP~{cyUuMJPrjq`BWO!n3o7zcb~gW=%EmU>P_HI~EMb3C`u$}FL3h3<*BXO- zx-dr8oP`BGQ2w~TeNp)>k%d}&_aZ`9f0(on`)DuK6&qy!FE96Xr7=i(6noyomgKVIEym`fcL5rZ>menYJ<* z*@(D@##pk8`S(kuQbyk0*o3WIHsMm~rdH;bD)Lv#q!h67*Bb?B zpIvzL*Ep~NG|c%kgMrt5Te_C!s1|Z;)oubx4hQcD!?-((vTJ@^63j$TG^)~L5?u<3 zKfDzKiQi(}ieDU;YCs*qfp>@nhb#nww@ru7ht9h(0x2;#BFPn55m(;zln+kK`Cvye zQQE||h+%-`oAmei5Har-hO&{hz07Zy3SmEvmutyoT%4~(W-3t+I^A|X7u}$Up!3-d z^?G>8O}%K*)vKWPzUw)YznVr~IR(JvQFb%E%C!CsDZnY}0a>JBJ+i1XAh2ssE``VS zmqD2LP2GIJ9ZAw`(bXr<_qTTq_)aUB^A@Zu1XXG%pqW5j`9F&Y3tSMOXS1W;yu;00 zYZm$PH8oMPDUuh+cxdRnS0a%7AC43#K}7ToG%~ynhTE7affe8EUmBA7z|GT665RH9 zz9Nh}@UYMF2V|7Gcf%vq5yf^oY*n6HBXA^MP(NDxqle&FwE-_MXE1WMd0rs}p6Bu> z3L3rL!6hmxYDC_?@OfG9n~x1HvWRMUcv0RO*4~0gR_&CLk103H++fuJTA31B+doUJ zx}PXf{T`*3Wp?$)N)C~dQj*>^9~o-{kns2LjX#c3laexF)x_a1=~I2`mU>f)T*zCq zxlAQgf%o^SBI&HV`FGP=Ws7N&@y|M?^ zU&G~FO!uN^pY*jfp(vyZg<yQjGH*j$_4iN(nM+s=NLeIKHDaQPE_wHIR^|wRPJymyR*YIb^)4e!?z&x*wAXl<=)u8~>?jG;2 zBSzsjNzhR4ZFL9$iNl3;>;!X;;(+zxyl6{KhL?_i7yl+z2&gkcpxko1sC}JW{WhuI zJYc>UYa7i^biseIrFQQYRaV-_0z(-IF{Y=!m6rJ6W_i|MBiH(!rKn@S7~blBn-J;X zB7>v4qk=uc@+43H^uEZb3H`&SOdE-d8cx^1@4)~*{VtQ-d{N%1LHyS*es z3485*3Bl3njH7Xsc*!=v>4#-LLlOQ#T}5YEYNqg0+Ji=+9^7XAqad+FBncEsWf})B zp_8jZivV&h`|x{&h$GQfo0n&uT!{?#-}h|Lj{8`Of0q2BJDfrmM;Zi&d_xDfTN{@* z#C-p_rVGg|rhq`!VVDU0*)lE#Z`P!Vp)pYS7k#Z0q_%BQ1FOxbz18Z;{Hf@7rhyZ{ zVb|BS$D7IWWu>nFA5H`;86@xh)4tN34}6o9Mz1IBw`}wj{cpvvDTSwjb6IFH(y*qI z;5hi7i{{5`LMCEJ@&2E}pYqUCiC$4~Ss4|yI6+Bi!DOxAK(35?0RH!MBZGaFD5nj> zAqN;Yh+L1|eE;H~!klutw$F(3CqT~v6eSR9dq8}Rf?SV=|G<{d87FA#u|HiPyJje7 zlA6iKsQ2Zu>JGlA`n|Fy^sZ8AW;0Zi3I^kUjzOlZVglUMO`Bua-C8j#*Z@=^%1$?= zGgUv%!ru!Q-IG_<_L7Y^w^pM9MsRQ^_#YM*C)z{BTdWy-ZKy*Q{a5cO$p@R|T!PwLzmFJ$^dzeS7rH&PkD#+ZXT5HU--=(3>aM$`$H%EOcO9 zh&@EbtnPb6dH1Sl+>k3)XUX_6i{7#z$ib&*WcPT|U1Trfb9lv)@WaNJcB(Q=^X`q` z^=g?*EP7yvK!W;QMYS5w$HRDPB!}=zH%KuC#@IF!*cb*wOBz%Ci>#4LxcyOcpHFIy ztX|>!>W=z#=k|LS7pK3RpNXbpqM)YK^|hyh z8%p*II!ye)G1~^yj9;=uPp?wj;9)lDp+seX#&xnyKB>GFxBgVGbMI+VaZ6nA{tG{|*K=YBe)7=!5F3qq+(2-4H zdqBVSA8eHQ`#W$L&D=o_%o|*nr`YS_OfSa57zztL;3q-ejZQOxgigK0(S3^9~N|vR8!FXYy~h! zeUF|BgdmrLoaKK0=leF`d9}-lC=xioWx}L<@nn$nqNI9s>Dey^ha!oK64Dv+Z(DNX z1PgTNSWGA0oF`-8HtMb$6GxK*ZWs6-o*NShei`yd?INAZ0t4Z>34_zm{`5Tl7$9M( zXfd$g0s!*C^5NlstnW}Ok!w<`)eO+P=g0fYS_zdUr|OmI7OS<+-mdIeW;NX#d@m00#Vc>*-2Xv^)lKE)xuc!7D|jReBfgz%-imp^S8Xa^bkn-@Y6Oc(>CQ#gXf06;21DrVNp`v7*TSdZ`R`Ko(gQqk zie$r6v|THYYaA){b?ALN!Wz*But5DqRgHiOO`N@w;NI||G)L{uYW%Kn)U4Hg(*&i> ziz+@()TT)S>ZO$L4U*UwKn4gj8$BN{%vHhKXob!eNU=y#XZ*_IxPGpRepQ*MtsI@~ zB6RC*g|cm3Rgnf1%Pt8VMvvx;;Nu}6%^D>~C*UD1CJe7`Lf*%umg{@26mZROGXN?XN`C6Z4bEBd@!Ejmb&S%8xm*WEj5BOF8ELQ{;Jcma%<(o^U z?divzNpS`uc3b5?B8SO%pR2L(g?5M`v1tD{COVZaagIx$cD+98;bEOa!cJ;S=7Oo8 z;PVHLdb$T6?AVbvvkt^91l!F=2x$X?G8qwI7!NXOl_P zSi#1Dd?50-_z>V#7*VGxdb(UaZ8?ixXC*Y7No>7CcDANFRwBsfX%Pkr{foU9?r>`T zP-fBTrT&e8+%i~sP9T_YPtHk)I~Fa&>=E00=l`Ih8spWoU!%88UrN`0tWw}edY>E; zWhqB->9iVDmjxemnHKP}WBkUZs#0LBFs4!wCwI|^c?5UGUDAkC7ck$~a8&?38m5?? zj4z`JSk09v^1ai`>rvE{qK8^HPZlTy7;un%NO~V@h2}UdkkG)VlZCAPY#f6P1ES=7 z8T=N8hOY+)Z;d}&_IkIe&Ebmv`%>Y0d{@k_D4uSxJ-Qc`5E=fSkL>cJ4@H#!>rp-Ex;s(!{O^vx8fcA9!92!W7s!?b zzlAZC9`RJ#__eXNqJgrn5E4Pv4(#}p#KXGuQUNokM|WZA3Mz7e)hvc1p{ZH1%BBsu zB;0|6$Q~XFcMOns^KVYeI{zg7R7l=G@Irv&5+@IS9gMpu_-b-G8J|$N!i=1O@iLUH zk@dG8YH1LHV1mTL+;nr!YB6oXNAlbi)SNcx650 z$kU1J-@72*`O)Au@Eea!gv{eq@C%Ec%DHYvKa*X{3l*fp@&2C%l#-nPNwo@${4vvm z1s*A;LlUoHrrd89XD+f~9K}(N~na=bIecBPG@?p3>Ma80er(YrXgl=owV5d!N~;_%o! zXHRmcI-qk>RB7s#B1m%r{|5Q1|2(HSvTnhaC0^`KP1i*soI$J2T!HhsK!Ec5`fO<& zcmgScC#O$0oxnaKAS7p;_EKw zTsl-k&PxXV%%AwzxUq$Si>pY(6oFfm67S+mPicSl*O6y7;em%RLAaw|B7hCX8JO*- zZ+c461Xm}-TH?E{-Uj9er~T>g;$wWs1O0eBt7=LUhL8wjTA^Wxk|Fy^3=$QtR0{$| z!<(_duEcZ>sgXmHi74s$JwXe;ELHix=%!z#Gkc^W=$xj61W~C3ya>n=%(AJfRLgMd zlt|(&?My8exvyyUof8uFJ#)@aRNZZXB&3NPn^Ig#%ei^w&x6AqVtUtC{giFruefLO zE?6O3$-Ev*>5-cVI?6hjv*W9R!96)G2ER&wrpxz{3FaC+pa^{M$mmlfkc`Nq9|t>a z^p-p59m?PTKXJ5wW1psx$~qH$KlJ)hZQ)*YJsqzRi~_6CzoudK=ZOpB~A8awe2<%HmKXhyQ{<79qMq2B=iRbR|*7@Y^3QGfn_p`L;BZ&cw4WXvBD@ZFxD?uUQ>gL4l=_mj<|asNXBZ~qtpJXfT)87)tKHd~0d z_H$`_dnr$?1GQZbA>@&1HTS>xX!{;34MbL2bgpzDN^K$*1*$ttMwiEiypRtnq?z~- zN~H=B3T`16cvNv+4yO0eFwp&fxp*mnVZe+6QxIQp0|tqd50N1FVycAVX7ZpqiM=}M z;@5WxC&iUdv=20?b ztiRCIhQmT$w~py&^?eR`31$jl`QwoON4CD+2Z4~JEeel0!&F~DO9D>l0`}bMsXB}C z)6L|@4zmsCJVVulXh6_zkAB?0CJ*l7Tq;B3PY&?2Gg4B5?0!>Jh4L2CKx7UEX98uJ z5OLp^9yRp)gADww)zXo_m)}4}lR#6fKUJc?;AcH{6iU6)F@)Z2 z?k+gP5!S5K@~LjwwRUQ{VR-m!hv7QkUdl)lW3+G^)M;p2?hG0hliCzWk(+7mNYpd} zh7^vSatoMV>|W~6V6yrx#Geihw>`eS?Oz^tpUCL(|FO&E^8U+C!iB!GJd2yb~4FUe#SHkT0gr}hX8nrQewx!4!j5P|3d8UUF1)yHTc9Wk#IXpOCLUeH zJ=t<+TSMFIH`ZWl{8;o#CJQacfz4!=I-~9AJ|X^`Gh57}PD*-wAwk#=Wk^E<1^kl57azrekeqCBB+D2TBKLzh zG}WLezgmInZ-QR0jOk;7E}FpL9yvU4uH%;?q=z?2#aY8E*TQ zI!hj(O+o#zdfRxsETYS&r6}6f@l%|r>l zBWCtERx{wNZ}K7X2q7AM>%l0cS?RF2@8H9DQ$v6b!WXgjvgYWenZtiUT9y1VE`1O6 z5%!JrMLyVMI1+8?Ur}!;YQp~1pZ8uHYnV9EBY0>y@#G{U<|NT*2QO4f2I-Q-sDuY& zV<`v>N-=+d`NJ2nBGoYwGl_C9_TM?YwcN(+!O)avVWA(RRBcyVgPl&g&KCAuUSEVB zhdzZEZ?F76T%A=wRPWceDH(DGltzZ`77>u4QGRqIT_TN058aG(cXv0El0!F0Bi%i8 z%RB$?@H^b+&)$1IYpwgb%F4d?IdtxIuEn3dX)8+yYJB-pd9Bk~u9=>UPnpD|Cw4*$ z1mnqvac3$Y&d-94iIy)?-`5UNl zk5v6r4NjgViQ~<1)H(5MC`4v%Y*h<)-`{mOJsK5z5JL9dm*Z|@#L>YwmIxKy^tf=_ z@V^O5YWV+qHZ})XK7KI20tnkW+x?av$x?rnp=2W4`wda{!LA230TLwZO~C`j)JG2j zy#>c5sy?kGx8%UMW%#`A-qEqq(b2I>zZPbK$@e0%N+^U^6*>{fY7`+bv<{(Q%7h3DQ{b?MNPI5?NLCI zroQy@5;oH{8LjKr;0u_YA&?iU?G(A>RE-K@S%PpFA($JYLVr>$T7Q6uW2Gdpnyf!| zcz3=$&Fd-0_&nd=qI!20$8XU>8?l zWvL4f%VTAK87gqu;be6VZPKU=j~9THE@Y@~Zd4inff{+bHfh&D^o@N&bUHdJxV5Bo z%3pyoK~>Ml#p;?ITXb+gQA}fET;)rV{Jf%WtNJ9aRRr&74aSqd!XSLFY~kMsi6#e+ zOE@Lea!J^x>t*(yzE$#jXn);UH^#`p$z+yiF z1^Tl%a@N6wFyiX=F-rVLPFY)tCWFr(KfubB_=s1-dw6dN8JOl9lZL8^RD%?qs?*Ld zS0&s*Sa+Z#NEC<)p8iu_MgfIdmXygU&#$9K;WjP(?s>2xh7yQYrhU^l_+8lhuK^QIywxT5((RCry!t5*$GY1Y>qn4k7=sf3OD^^`M(bH=G3pO@14Z{9>yV z4=dYZf*z$871?Wes4SvZYg^*VW9lLIB)`sAT~j_RqFi3)9{cdE(|)A$E?~!40c8IYfFm>{WxGX16WZVWx0^%na)g#%roIw^dFud@ z?60Q(xt|NnE-S-{b~!QCo?#QX${Cj)y8PrypdqkkDpnUHPU^9e+(V-1SpLcO=k>o# zfP1~$(`w-F;I-O!n)3{bQ)wX3m2vDLd7##NfqcWZv*ARIb^q@VhF$3V{b_E#h#z6y z*8b*BH2LV0-6Y_WaVcu(dK`l6RZTn$I*8!FXEd<3Ou8#1;}wK#>e-P- z$hlp>{^o|$y4udZ^e8A*DXoBE{rT!P8zIk$Kv^lIR&%$WW2b4yP{MTXmt(mV@9)bCcM41M$zht(a5ejfDcv42iH+q&-U7iY)S+Ju&+>JPcj>{Jd?O};4ef_ zyNRGO3WfIt|_VdV&V zyn|rrGX)kSS%urx{qk`MF#z9F(waQ7&qt9#g6<1Etj^jEUrMC7opfaP&I*&6-F`n^ zj2IYPP4eFFB=1AM@3 zH3tOY;{73he5F=sUTnVBgkHghR3%~J$xfe^=Q80=j@)7kwkr>^>D+;4@R*Q3ftB|_ zMam;yVX+qEVeTxT}{g7y3q|!Fe|X zF7+mBc~SCsee8wY(_`|)(w`7)#wZ?6{ciTCGmT*Z%yDe|*9oCpQ0k)#4fR9?mHzX| zeZ4Lbgy~S;BLx*4^!JC~q6vuyu%3O=-I9HeW-uPf z!sFRv>*Cu~E_=wKEWC2=5H~|oz<%7QvQ_tfZa z&$s2M5I3^P8Jk$&C%=>%1cIVv60S?2Vuc~yad*t-PDr`9+57eG$w*286i|M!b7{`_ zIL%q!P3uh(5hmzj@=V(|+n!bcfuj1gVzK;7b(V_QwpTOJwpAH= zm)ZMH!g8OIGa)oBtvCshxL?4u@VDthVeI7Fn~t^Er%Fu{D2m8ik;fpdKYO9|GTlIh zLwPJm9-GQksvKmnuqNPQ9Ci5AGvEFT1mHeT;P(`E*S!fu3LzG?Mv9prta;dap; zzSzI6@xw$WI?R2>rM?>&HR^Eyg8-sSF2$=K^-`^`ENA{}GQg%Z;D;Vd8RzbXMASsM ziS$Qe!uXJa{U;S}ma6@XDRTM5RnjAULW9&oHVBbZak$2pGPu;c^;}%UWWgVJ2UB}z zRhgi)JdWd=FQj>`To2lOdD}5OtPG~M-?=b9FtZuy7MCGm2!+9EYuoAVFhp*9yr{J& z?g?GNk{n3O^=@FtNRXa?=BP94i32UkQphN^;uNH{{Gqa_w%6+@>&-e}rG9p=571 z#3J_neJX~@QI`V+D{&DuUVW&@Wfs3HrYpQABv$b?_#9#r`X67l33i8n-$2VSt7*Pw+FX7CGN9%rs(j*Xe7H zZw3YNY9MLBP$&Vvjcx_Y_yteF&4~DOm)A5NH0K?NgLw3~(QojIXE^OWHfPo#V9l6k z=d=1vLlff1_RnG92?SEo>2iO#)7+!gl6bKQJ~&eCNgUNOzys&Rl*FpWsX)k-a4Y}9 zHDF`jdd*#C8Z1{wW5UKBHTwWUa88kvH$HUVQ^^DnC(5Gi?pT+@T>KL~#L``yN5=5? zKX;@_s9DFgS# zM%<_$Qcys7PyC&)f;bcvTZ&uU1f%y1zL9F`kIuTNzhO8{t~MTV7y=XlJTsTK=uyEr zC(HK#kRRZcY#c$T;PTGlp@ywbY{nn7L-_q36V??%h~vmL;C!QRO_Y$S<?>MM68A(PG5UkLl7 z1$}H4^lY)f50iZb^B2U7h8Ehns>LF@Jw1wVH)iE`?7<{q^0q<#Kzf!k%)VqOY2{n~ z{vSFK678>U5q?bh)d<9o-JQ$HgFm*H7mN0hdy@v|=0C}tQr;tpdD3U=sB-_(kb`5X z{R0P?GbEs)y}mwESDoIt4ok~9`y#At8{iKchUh_K>X(<}y_c5%Ffc0A|MoJ~b-&kG z!~+#ByCmvvpvG;MH~_7Bq-Xkln-MW+E&hPPBT?yEK`_Idj2a|7`$g%+w&$E-8|k@- z94O(c9vKPOffY!`XIw%BwN(Ts7Teqeqt-|vH0`o4Ui#FITRuYq2-N);djUMP*V`w{ zEVKdlVK!8qaYCGBGunXvBE3sYqrwyax}AwTN|da2tikV5Ahtwem03~x9k4I1 zRrGFj4@Y{-xPw}sxe2x*zgM2JQoc`0B7xin_q*Sw1-=-nOf6GI2fwfEMmWvO9FRW7F)uW0re(=@;RZPKMJ zM0DER{kT1gjn%E|VG%6($kzo_`9mDmR@OdkMm6I=s*qzTTS+1w06X~n`QpL1%*(qj zJf+Ut>jY>#n2z@i{{sFx24nwV zpSw4(^?UbG8a%|*WytnkOyg4wAxr`YlaUq*rnbb%m8H7z_h{ zGMp4J1}Jf-n+Qb&bxzqp{oW1@bpF%DHiAIjDfqnHJ)+o0e-E$MYI?QnT9zTZ!Z>R} z%TvNOcus@h5uIZYx#H%g1-GCtrF|5oRpy3hqCkJpV~C^(zx5pGbI%j2tty!kptb9g3N?eh%Fc8h@MGy1vQ81~& zV5+JRh`7LDg>4&MuVQA+cdoZxZ+w#1AARq2m*&&AkD_qi4taNhXkem(fiG4MI$}o_ z&lTC%^~i(v|2 zR<6BIVjuS@n8uPQxpwa2+BqUarre)(PduWhc!&6J+4`(9*<#(u17CL(ZDAD(OcN^IPJi=(u?)Fw za>#AZOw&v55i1o>2ux(y6Z1Nbro<9jSq;xA>L<{*m6VmSEN|@6-}N&xF!bIp{o`;p zJd7ac!%_dm&aKig7nR=+-eOX?`XzL9EM1cp6RVZGJ%`@RX-u&;?}c_Kki+GfLxB5xFd%_1 ztUm&V=mU{Ied7#$unr!Q)N2y++R^g8Yll<#eZ`izSl@l*W@oLLcvHrH*~k2VAvZ^R zjAEoa?Z%ju>slf#TUT(q^mhGJ8>ZPt>Qbc5MQKCX$(XorXjQCob`=C4a zn6vFZv}r||;bo)3AyO}xD?b*kusA7r=>}r{dY{BtDXhV}I2}kIwd;zXiYHVm(n4{#Dqv#s&F0%ir$#jq^fub$4_qE4 zsPX@}FhP_SV_B6uORq}?Z*B*IdV3vav^9p@Z#b@w$%I`Sx->qE4fUj6_6m)@5%vT3 z###nU;*QY`9qfrA;}v2PESy6?7{^MWZ8&A<{qkn6XX%cbKbaw_km zBIeV>o$d3Gd`tI1hzr$`@8n^OLm!clcTi*|ZZ(D2fRpNmm>kI#GES zLE{|YD^Gd08C-6n2UJ>)L32{$CnHUNZ$qMs*~gS(Gb=`;l%+48Of4V^&%B8|pXUdB z3Hr0bsq>TZ%~ zzn?ATj_@xs6$n0-AETg#dZ2?Qr-uS=MDyhYEtd2lnN^y%d75r7sL!=`&ebs+6}6jl z{=$M#zt_yTx(^9#+&{VBTduufRm#rbxxX8O$`Q|pYlP)lgM{1O4U`WbFUcZR8w|Mr zax>jDiAA(KWVNw&`>oT=fvU`30lhCfw5(F22$Zob4wfmbe{ZR*s%r(yZ?ns=~T&VoQ)%qUD;1RP!4jPmoU7AlHqnr&!N$U3!D@=Z)Vgw@xR$1=w%mnEHpl zuMzSm9TuEfm>H|zI1In8XA-&+AKpoI&w=H>wh+N$!?~!{OBXb2C7PbjTLJ$hdKvw5 zCdxOq;r_&bIUTWqXGHW}CI{|yc7sXy&K-AhR>n1EEXs7U3IPSh}4S!`<76#(sB zt1!-947ZI=FyPmc)JgK^nMyz#`W4_bXe@*L_3+YT5gP3kf84;#?n_+U7uJ2mX1Frs zJg@Fix{mew+HYI(~p(f$gn-0S5c1UD*>XjlP2 zmqp=HfqI}g$4Aofc#$sjrFY6N*ImDI=^z?PBn^FdAQo9x%Q%LrZ2qw*5+D@pcBHQR zX>3T^fZ1k0SXGs7_W^@noRib`4a2TlU$>+&Rw&Nztk>`96T0CJLzrOKl<`(nQ0#3G ztmA|AM>uKd1>+GGpAZ%TrEk>0;+^=Qtdo{S^M`jMQaw{9<1k$YxnNiXUIP#R`0cV<7QqozR7Da&zwk!u+g3%V*4*u(SZgF5%8PHv`_Uo)LD&fMnrnOAnPWY1 zD3Z6MBzrzby%k#Ggh-#&bOmBAKVw!Ht!A|7@`wl)(S7Sav4CR} zhMu*;04SG#Q?wPGia&B3^Q?HR99=9!c|}B?v3h`*_tJ{3|VezGhxJ!#duQ@IRb?e0`~<(tytTgZR?ucXOBwU@{;N{e3r6AOq3j zY?*6FFun;Eng;>}4H?=-en@mQ46Oa!f!hS#5{MsHmZ~>(e2Y@@MWgm}CrmHt0Icm@auq&;xN=G@9F{DUc`uv7_z zs9~~sh%k!G-rVPeC=jmkB9BXXa`|;R(jfrz4@@Wn%~wdfbdPVo)9e$*RWXPYkQ%lU z2S`X*#i?k>swe~qL;WVZ?|ffF^jF<){Gd@`>0QA)emubvIPuba4;jzR#+MX+Y5qptXt0tpfMt7<$$0!I~o4}?sv|B+7=`?pit@8$ zF%0$6?Djh@rAJDWUzuR~#vJc|L9pH3oV=uvdV5hUh>BQ-Yn3AzTkg7JXah2!)ne*F zMytaaMU;mH56mUL3X{5UUb}9haaq7htIFM=?=edc{r)VnLZWu4o>8=%pH~0kG%0d` zdY)@vQ1q|WF>D)YnWRKQ3nQaGf4;&zr=leIy0f>pr?Fx3!DU5XL=Oh5;2)?fazd=X z#m?@F-AtErd+#jNqT|Jo0wJZ(>=&3drl(%Cl(3r9H+lmx`*yy^=8{DTO+hBn9c{*j z+esnEkNdMs=wNAQf(_KyUs~Xnj-A^Y!=iVhfBUunacMF-A!hf}c4|_4-$PTN_9N)O zh?&c!Fg&PqpZxTiI-YN;+;0P5U*t9Y!P4-+WvL%Ur;WNg6<1yL==@FD->f zpn5!0{;awJFx6V_hAm0e&zi5dLKeaPiuO`QzSGn5z34pfzvkpr zMVHC#)JC;s+ma#sc$dFX0x-3I$TfUNXgzEvV}X5Y&wf>2vt-r{7P;1==Yo__jUW4ZJd z(Zj99LXCV7Al|pBvcc}%!EdgqKSw%e%`kvvNOE!)@YO2;dlDk7tM#2)t zY>z{SC@RrMkahEkKNZcL(U*1%;lNQgBglF0n}jZ!AuRt%DZ(j*Ka;5Tmrield5U>t zK+k_4*AFm%O$S2i5y9j>MI;pEXw7205f6wDdw96kR#sx+?6t`VKe)WrTKoz75W|p! zIgCiU+l6GYE6_`pUnD5Cx|4Y1zi^Wrjb9&~cnvA6an={EIeeFe6t}3xW?MrhoWl@) zrKc@Jzi&DpN4wmz{T1ZH4|DT*9UWZ!H#Iup;bZG<6!rUKY1ah#HAL^Y;|$b z)JAY&t}ft*Xvh{)|7XG8jU?tg$S!#5Yc+>xNh?VJ_I8} z^;fhObMfCU_#bp%%}nN=z??}%a>{39uRPQFH$&q#$xb7qfUaxjC&}gS8&nh!{S*=A zcIo#b5J3nE2EB~hZz(cW=>nI(K1WkcZYv`f1cufi(7UJ}#f4xz*Jc3`sM9e@bQn5Z?{ZcmufiR4Y1+v}5M3j_S)&%AhSPm)TnRq{UStVt= zqwEUuqNU+8{4|^H%U?$BAVq?oPoA>^T|@I>7Dt$F)99t4v|7-zjqbqzQJ@^hqoQSn zcm2S>opZH{JjXyYPb9hHSOKudQ1_IQD`B}y;yI7$b6wM5U9Bph0smrSl4YKjjtLef zjEU_RV0Od61(~EI3LwIS1_26#pEIME{0NriHSId-8*6S$UjCp%#Aj+F=6^LtMK#*= z$Qv522g$q?Ou;RD>5NqtHl!NYh=8_Vo_Wev3hq%cZ!{$}_r00)&^XUTAg(*VOs~>fY30T~fnQ@b= zZHkj76(o3sV;q+qZ1lFXV;wS6!5K*$xYI)mkV8CtM&M|;qCW7vIB@RK`CxLtJ^bJD zHxpN@T?#2v%V5WmPF{m6y{Eg;Kg@5)MG!O5Zl<){RqT*TaD@+TuHpH40rryr2aN%? zw690M2B+B-#^rR`n-N$0(mU~njyo~lkoI1FyljWvw5teyo2ue!osujqW+BdDrKqNT zGjbuW4BeJdOg*c$WepNnGJUUv^ssp$45;8|=6kYExsM5su>y9?OAnm8lhxlk+aw+I zw$r{HHDXz|K3O-Hso_Z_qmLpGS8cvNHb-0XAcIcr3!5mKUj6Y>8{v;kz14aGoZL(j zwmo}V!Acuc%&QOeWlc(0XGk)%Quu5YUKW^XsX3n?Y7DfRz>)II!(t{5q_X1==xlc> zFC`D6Yzrg?n_cnON*h2w)TbEhhEdzUmNByeOm1q#x${v`u`5i4cv(E(ZM~-4IZDO8 zw}F*?$Cbqt7M~?1-qG}|`$miT-z3Mf_-xm0=lJLo*I=eMzdx!|-xP!}rO%xTj@}O# zLyH{-EqtSdRU+R1WMlqHnlW^WSK^opm>4Wm=gy?aqXhp=2YU^iWJ)cl$kGL+)VpO= z8$%H}w10yI*z~dDE{r|=NVt_Y)#KqE7{bR^tj1#li33R@$dUcxlIjnwgzw?M@qC&k zZ(WfqLg1$qxM?X6)K>3$(zAu;E0X#p>)oOsEGt^~jORLG^_b>M_0!}Asus-V<#VfR z{3r+l@go9TT=}(&J%`$L1Eas5b*yh-FHi-U`$N0^lhOMWa5dQ#l^OYjw|8-_jL|`I z&>S&5kiuVuT`CQKQ8MBL8;gP^RGq&5vg{hJ4n~RW^QHR$e* z&c6y~HVTtymYqWt$+>o$c?{yG!*&XG54EM-uc1~Yq{TCPS!1TA=@w%M0)DT^oQ-~J ze_nq>+CT8l@DKn+4?uJbF2%Nr-G1I*%fSv2L}SzzA1wz6C@|L=0zUD2BxoPSUO-l_ zXvn}t)Ozs5;;iLwPOpMLt+5A|I*_xiJF@P2 zSG9JwyAq%mSZ+yI)$b7Q6J9)XS>Qkt2n+tL$61`JhSP6hj#C7C-nuM{Qlm`D@9t~& zgYi9%zG{-^c0wRd#ecw^6b4d=0!omvl9 z!U@An3A`yw3{h>=?p!$Bd&gQ$S&I2L2_cEoR>Htz{zALONZ@A!$NyZ5rvbLM_asbYhb47O*BVDCAd* z9=ZYNqC{u=hiTpM16eR{y|F!9+Asb<`sJJ6k;$gvaQ#AgSzH7NvkRznUeb*QiRh?q z)CRV2^(b&3xJU{&Ex zqDutUr!xO>2l%1K)KueTd3;Dk1~Rb1PYJYVuRNof(_ zQe>A5=V<%TqfSUXlsOgf^-=}4-#9q@(U}gnXSW5F)--E|BA(<>Y@)~7e+up)y1B6u zpIXrCf98nrb2GH?gU^v(D!dn0{2-OOv7zI0z0OoKeS6gQ?VH=n2bHEA)wUI5Qz6v+WyRM0Dv5lM+fPId*4#NR$5k}Z=b7!{oEL+(k8~`XwDGl4e4iR7F{)VO^T2c! zA+R)x@B>tYio-U|jIL`zE~L4<2LmLS{~#!r=EHIwM|LTmnc(F3j?XFWz62(x%||h; zTdKbF+{QWn`yrNP#bIOT)px;eMdg9_{xs9R&+HwP7&Z6^KXJM84OB38TwQp(!Goio zH(ANzU~%KT(@Xg8i8!)I)D7?h1H(YGJ3l=p|0TRW?E;IuQtaS%hLaYcJAEQGIG2gi(ug0a z(#0@Gj{P>w`IQB8IS zp2J0@<(InA@d!d(i$DId7VO0YUDj;)M*!`p&N`MIEZ$Xs%%Ofq z0VYV_(>qrceUe){_Z)3mZZZmK4;00HMj|sa>!ky~XxneF1l?69)c1tJ*FQN}k0&Q4 zLYvX^pOilx>xY1N&yP%fp3w^NCobt-Y1|j5;i&e2jlk%Z*M8B}6j(zH+RSxB_NeuN zEMXp&1Cg9nSu9BoCfb8V5qQXR5qG)KLhy^j2npMFUT){#Qz5Z(*`d8K!s7Fsp^)gI z?tb$|c^p#)`6c?j*eB;LxZx#8>p%nzgLTy(i;+%ypI=-3ciN9wq5FB_;|Z1 z-mY{;8XZlp`_IV5hU06xCt{LM?g@pIY9sXmfrG#pOgW-+aR-o`R*F+^+7Va4JNzUw zoMcE`Ney~>SNaj*g&%2@%3y(QD6|mD&(FCN?j5~kH8cpE`Pba`t&OfK={2CFKB|?BV+f{zw^Q6q3>t_&t2j((LmR; zGoF*;CzfZ@5_JYXW@7~lOiY)4{q^e3EsT3MGBxqG!9WK|Zx}ECic6`airmoQtSiz< zozfjRK!=;OUtDW4#~`C?^hpd0atHh-BMz&9O1`%0Q87Zk3ONn(&kMf&%)#bihT-v{ zy+DSrR;GaeAXayrAztS~+bb_Z4^)VEr)s=<;1=~q7ObQzJkWFqm3j!5QD#bUX{+v~ zzQzgm>vfa+U|hy>+0zXPdk>GloREZM)-HX05`AK?UcAw9a>VSngc@3o_F7MTcS-fg zY#$x{-+!DeOj}|Wsa(s|X)48$d<5dMEW$2q)s`XqT9&OiOK1(R$bW{wu%rs+{*|S_ z3en7mtcTqjjK~GKp3k(~sCF&+J<_(nxb@M>76f$HRa3Y?>^tr40#KD z&uFjseOX5dT}WiaLa(Rbbg#s3y;s#cawP;CdqA5JldWcFaalVPkUvxPzGu;H(oMm6 z6J$spp5OwiKj?IQr61y?KML>@si1|GG8Uw%?*AT96{`etDs;^zMF?rF}rLrThI8*AH9=>imPSI*ft z{4r^_rf`ti#ZP{c$e5PU@kFJjr`qD8&f)~#%XEqwZ_hTh+m2fI=5Ue~nF~`3)`4@f zaH@SJHytDhmZk>1ATvCe6bsB%dh0y+^T=73)SBKAD;VNjdYr>vOnx`{NdiR6RQ+kJ zuc9KH-@LPLX2J2}IM*v0eSlJ7jxik3cMfy4q(+$K72T zC}Lpyv*S!dF@nADF>M^fa*^b}CW3WT-UwfxWKB=Mk@ANxom^7{lGLk3ef<^rZ6*WT zLO&CU5^#tFBZuOA@W)cx5IfFSc#Yxh-$PN?I*pOsDIyHiL$@GZD4~Uo| zWc5J;i=xQ1QKx?Yvi1D(TdeaIk>gQnwK*}vh+#fzHWg=II*1ZM5Xs@;hoovL0evHP z$chqTvjeDn_Ea(=gC0gTjQ(qq>>bZ6Bm9)MO%66rTc|bB=JV^WaHI%rh7QGR;&&Su zR8>_`9E$j;Rc15EQFvVG73E7Y3LsSQt28zL&UzH+`T<6d-&YEpjdgu9GLlX9B>{kF zDGg*?J)(FL78V6nCytBtj;sil8RyDTv;C-?X-i5}c999{|MxPC%3l}9z@&6qfvS^% zzK6e8y8|Jwhe%4)DZ!%F3PFD`aNm4lBu}2kK-4(#d=iLw*x$Xkacc}m@PyIPVhRgE zn_qWC=TUv%W;5_jx7|RE&RY=TE!)Ug>v;BxMgbMbf{=R2)zr(;=$C)?V*l>!U;a@~ z9NXFa>OqeHNrPTKzqI4m2kJqg*P4HDcbVFhuMRGQ4x0(;XjC!nc2I#dz_;3|A&D^} z!rODDS-9mpv<#!s}ZE;Dtf5d)|epcYX%sF`B%;){K8rc9NuZw;qTZ$ zE}Yl8LlmJzj*X_4#=P+buJ44{i?FB#rm%1YdajITJXqxNJ5xE;p`RU9G?kTQqj1@V z4p_Okad>5DEvCF>ny5bLxdn>$rQrkw=_Wzrq?#b>Cg8BJiZNwl1kb-zw^z^@T-FOe z=aoV-rdQCeD{<=fwW^AFL(k{y(|K8_*U2vqUOlA^#!iCH67IIPGao(GmhSLCSX}!z zJa7@)0McYm`_(=Q6IB1DdhXq``36;VX`?(8^F0(xpTA^e2j{eYIG5;3za|S_%##ww%~`CPv>^BtP@{)f#&b(yTYG(ix-)qS&Nb1Am_Pt8hcq6`{c z%k1wq+Kmg8Oz-x96yUSRS$I0U z`KlTBm{8TNMT_&7w>?x_nAKUwG%IrOqGkZgy~N_=d?NNc&G$~9aocpB+1%7M z9;6Y06M~Xb&N5gWzMnOdsPw3bVy?tDlwDI)u=)yW`MtTV-bRBpSN&sTr|cwjA7eH)#yhze<&9CE2Ue+>o5&G zlZ%W4LZyz>jqZEzK0alh6)m!56-K-Mar2{+*p<%YkH8m$G5c^g#| ztg)NrBeU2frg1j7w~W_Z87rkCe5>d-tmYyPPOhW0D=zIF_mD}cu+*9-q$Xv zOW6Qe+F=?YJqhrP9Q^5ejtELK5#@8t*WR<+L`2+OyJO=Ib8r|gjtnnlVS<(vta-oi zf{NvaW`2aQzjnFDqhnEKMdX;kv%lD{$n6H~MHMDLJr z7=nsCtpWyuGA(;Jos>X`G&m8mcU` z+e=+)WJe&j;f)Yymh~Kz-fb{C_}^7=6Seo%`Gn|KJP94rgm2v?8}$=l->a#nb74WH zh12*u)!a!?OWKkP z79d!iH%2S*i^eur*oCnW`TZK=EYY6FZLI)duGdt z8FcVuv^=L63S*3OxRVT~Z8Zp6lSKNr+09GMUAJ~;ZYPs63%`6?l@fupQbjsp?|VuBuIQ6U9wDSjYpY?f^kaY342 zdI?+UwFMvQNyRzFIsWt^1qQv4WDWrxEF0~Wt(gHJQ<9PaZG-iqG%nbZAf8Lt{w4i; z<8nBByJpmq7yX2#YAiY1=kVs<_SAwl-A~q%2?V;vBS;*G&)boRwC%z(?n3W>5}&I! zi=p_nfeFqNqE>dvs>BVJLugK2FTyhxGotu+C!#+ z4oWtD_L6!9a48ttJjPVz`f@&ArwBfvbw=9it1SR`%iU5+!1|Z$xf(FKC zF>d`4-G{6}ZkJ&1RTup9!Q6bUWDOr`Y$BvmxAze=q~BanqDs$tBQbsWO?%y+eu{x2 z&|3I*rbvU|_R&&LSr2(Ll>{wQl&M+YI?p*Ge%v^IH#^;_H_D8}5GIq%Al#HpI#nZ( zlx@(K1L+V5pMMm#4IJ16P6i#&OJbMIBM^PdS`NIRy_Y}^(98L0+Y9OlyweFaUYYgb z4Gmgwt_ly%q&QhOLl<1WI_X`M$2B7#L{R0>pByZh)Mew3`ElX10{A~Cs4?J)FOnwi zEg`QHiULsO@HZ;b!*Vrs z251g!;WyFnpKV3ZG}f=}d_D|Mie?aqw;LVqaV)&z2B;5A@&rEyk4G3X|Obd@UMFIVvvF*zlpRg@vw5;ql_XQH)~yaCMna`Yo`wp~A*$#m1j9(2Ho`sJyK`wzTA#}iJo zhmhxVkyDBDSxcLM%AX&V02?CuY0puuXOA?3T~FGu6f_Lj=h@t zDt~K+j4p_HOOeM~s%#b{!N3GfsY>NX{7f0G;HAZcIAi`5bStc?D$>E%s1#C5c0B!z zvX-@~Gq`TT?-XTgFt#o+QR@P{+5hz;ED81>D)r}FBEF#wN&#Bc&Aor9qWHCT-bXe zp%AuxDQUpRj1pdMY+AYBH`k-g?M3gF+I`vT)a!-AqbHv3?8QW-Ktz`aKLiRd^_b`e zqsX>DsuXoOt>jskU3Fr|&2i2*TO8RY7PsiMnMstBZe2y8mJGCzDMqf{TNEu}=%Cg{ z_qflYyaYbJFa9dMoSWSpayClsV3^IyZiU(!0!v+|z-kfBz@g*y^omA}F{`yCccgo+X7S+~Wf#x3CE1x!iCq(ba|0*FbGl+Fz+I_wKBZk^C^K53cZ1KN-Z#C7w zV(zv$?4pqc>}*78EMkE2qe<-y89evxYV~T*pLZJS=sh5)dWU|K-u~yRTdU2~rMVq_J0a z0WYN33;-95|08yK&&aCD%C;C?4q_ZmUpFbUN8|tRH*wBk1QuvIr+!VUMoTY2!5N7? zjZqvdaQhGlYZcM_6}Ft$Xst{Y2xvFN_$i@SMR3rK1{&w>F>_f+18*026#A+*P}-15 z@vU^j6<&e$=Oc?-nGWalItpHjx(7(v8so_S^t}T~IVQFZ_OThz-AU?*{9Lh9>ArlM zI9So_9j+yT8m*y0!O81c<%SMkm)}{ZmFFL9#sa5|<)$)a?>ZmG#xRToUwtKYgv%v( z;l(+bBqJl9!Ag4wehP>)$jz~@)Z}x>74$CtE#yw%J*zf+8cls&Zn7T?`27hw%kB~l_as^qd_n`5a-jzjD0E{DbA5*f9_vJ@h^u+EM zxI)(P5ZAODZ4vplAJ6p|(SDn{42Z>qm>EWjc+@us!C>h!iop%cr+|oYo%+RYQf01V{yZ-@& z5d51Ccu~jI*!8T_rYr@k390P~WFKHWEoq=h5q9q5Y;5K%xHVb$z1&`Oy<39(ks9F; zuIB>X)Xb{Fi9HtEzdavZ>$%b!>IT6?Q7zmm4CLE?un(x~q^I}`M_9XikZ22mKv+F$ zz3a5?9gB&v>ZwY>QK+CR^)DiY348Ci=vklpK9p${NTh#wkf|iEGE@hIY!y&saym*w z2RGXEMir`u0*u#!v=xXo;;Xz#?7K2@>p~~O5j2)X^d*DKuqWbG3D2-FqGpb%UcKI} zfQ6dBv-9UzU3YuE<$EFXHFGIW6PRibuQunA{SUTl6ZCt zwY{I?3q0Xc!CHF~l9N){3#g8<2~b*g2*xX(SE;YfzO)OP&6dT)R>I=>jZaTi{e{Mt zj)6+JMMp&Y^o_G@tgM~HL>^X`L4w?FXbPx>u4m>D#!1-Q&y2+8Ea+%*WUe(&JeVLQ z*+AGgr>{|`9G`V&BL2uKdy3?bd!-Q5iW(hU;QjSSsz z=Kb$|?#{X5!wpw!n6;kx{xq9Tzx#hJS|_4is|%zfvXzbrEc2-m@3Ar6Z%Rp8-H)x; zc4wpXg7rcviEJ^uY4kwk99<}#)}>7m^dk*GDdW)|}h=zBU*P>1B-u1UZ9J0+PealmNTGxCgl`=6X1J>+kbnF7atG@Lsgy_yKMN)b zvus~WeGmLZu48M2w5Sw_b47{*8MX?U&IJXU(ykKKm=^ID=Q|U6BNcY-&|`y$zIQY@ zjMHF)Wc?DIA@7WhX-a&+@abW8BdrufSkIY3M~SfvjMk++=lIH-6$3saMV&#Uw0Qnq zD4YNyE|y5OJ32{?Xpn?1#hg-b-4+2ad!wc_=qPANAu>JT`V=L@HoC3V16svO zV#=1AI_^0p9Ul}gFZj5$XF;F=t?@Hbc;;=^A(D5nS*`^}f~qW=F*0Z>hBLKqw=+kX zB<;6=s#CG)>D$DZmg~xJr+xS$M8DKX>>E@NX;i|eO$nff8WJUu>du6G?$=SNlJz`f zZAB+E5Q8cMWLQFb7QHU`j+p8f$!qDzyoQ`(j%j!reCgWg)>&UG!Te+@0AxAYH}cO4 z{8wV-s$kj47E5Sdei>0|S-$8^P6;> z#4jdnZ0|^4X5G;$BevSM8HuJCb(WgTbd1D54uivwXt+&6=k9WGu_JbH!*nhsmRheV z*gjzLU@I=Js*d*X@Z;|`1%>dBk91Uqs(yf^H*M(+nD0>#K^cK(BFa2q^ zdJ^CjZ}mi1e=EM-^sq6!X5a07Sg1<~VS2o2anOl+3-&s!PAL90-$8a_5&+dkMC91_ zyw4+YT<I zDHXkemvIrI`EP(P{U3+nQ5ey>%0NmEM(>JuAV{;!vWw?v|Mdr7^D8TnrL|BeH;NFd zeNQCt9UEQqiQ`Q0am_)`MNFjuv0m-=!-Gcx!Y4~d(Lg+In2kt}RH*cp25&zHAmbqv z5xI}@Ch1-%w4YWqi)AWb>C>Pq^SMFQl^wEp zC=&iKWg4%KJX&t#b*VJHrGx{@8I<|DF8$s}yov;rqq3d#Hc{<-Kfc*M^S$FzpOn0= zf+DA;qJnN18yGDS6lYN@mq0e#ZytS*xmzj$#9i_a`fDa%t1}kdUa#@xH%+$u{L$Wc zhV_-qmD(PBao$4kua46VE02En6c-7j_x9Am=X&o>);KTkm=tklg)ObooTwPrg15ws z{BI~gG_4eYu5}l;d0Ure)$3im{YMu#KRoiFYf!m%V+7%M8Vtwg3dCYWI*6`R6q*|J z*FwOH;jOAIq%w)_c+l^*@Nrqa9{2{X{);!}GoT-Nqu1PAIk&KgMNqQ;jny1ezEWxi zr$i7y{Vf6zrf>ULk`u)(wlTs7VM724ah3?_w*dvz%g#}3c|aXR2fvYmQY#s? z0;ix4@!%V^9EOsp5lH_U@o+Z(%Zh^h3Wn=K7B((yYmndf(y}L#%o3t@q^|2;10Eg{ z*1SSWQHW)FW}e54!-h&GxFqQUqVsG?;BO-~l0rPZoz=D3Sr6Ri@VtZsIdvE2R(p#= zA#xmeCIcHO?o-xLl?vvf`~$Z?h=_Y7P=${&=3mysDaXyUNc~%F(k`5a9;so3jXpnO z0(bzQ*1<@$*OC*#KVIHijbudN;>w?YYUQQhs-z0*VazV2KTh@DY)H7IZr57S%v3GJ zINT{!v@g*QZM;_+>U`QL8@4mWaQtbKLL>p38Vqsi>9OZ{uB1!kNRES1N=`}Rgl;nT)s zXFtLlzn~W!9MFbu@$b1vV%*E$i}J2l?w7=fyQ#PUpqhIR$NI_k0WWx9(4f;J@xU~Z z0_-&dDJY~)Db3xL+h#Ny3sjzyij!hh{a!t%#%TW_&QUQ)uM{zK*vTe6^36Yq7$fsf z5UdXqv*YIrQPyU!XO&?C9TxD{cd$*~&Zh>vD9mqnb#h4z6ZjNw-zq3H{* zqWTq=S5c8>iR`JwTSVa4RZXRg?a%o-><|DBC=CVD^SalM*XmaxT|F&Q&=$9WN8Q% z{~~xFzHXYf9iY=s%u^hEqo0rlR7ocjj9f$YP+9{_eL3=cyzPE!SQw|TKqzz(~mubYTLU`msxPFHz3~KehxrUs3fy6IQ^c5^Yz;D-j`;dSlD(+kzOsJ(0EfU= zb?LE~Q-zf^mgMMPP*BYzDYrKe9c8g~zePc+e@Ulq z<~E>Pq9szm8CU#-;W1Fn-_ji276_ zh~LD^7O}l3eAC%)`N*J&0-Qje%j2o7%^b4bH{7I_>B@LLtX#`QbjuY96zNwDI{UG` zrTdflJ#}K_XFM^xjLK$Xolw&d&C23bSEX58U%G}*` z35C=&f(@91N2o9I9e6PU=F4I5=IRG8BQV%`bs(e{8C4>OYvC0PfuOOqUK@;yXMs%O z5+41im3{z4jYNa6GDeXkn@|tCmJmtRN^CPac>P;Ur)a+ln>v=@gp8Oz9@}@kY(lTD zSPOB(VX(b)ExB~U_XG_?fl*n;)Z3yCSVaRbG;_sO@4q%XQnfR6OYS@}+SrYK<78C23>ON~PWnvS)6h(pW0+kuSV_r{k^Z_xwBFppWc|^_?s&Hy-ezr(1)74^lf%_c5`zx z5-_+Sx#@6gPs5RPc`scSZ+=tI+^sK0-^NW1^t2(RlglG|(q=1=ChnO)j7 ze&uTPO(cGtpz0KtYRS`SEB06rKT@%g5Qu*RG@+RP+6!W<JLPLP`Sh<=8BhM&-WbU`c>d%HogJ#B<`*E5d8tfwD>2$ z6|sRFfI8>RVG)3SFLysb3x@(!)eD1(;ej^l5QLfhfeJ0~XqT#p#}GgYywY;PLa%o* zNR0Q1_0}Dohsc2i4g6*{)AA7K2Yob!`pEVKP8kKa4ovzeAjSzta8&s>n=$$$ zOF_H#gn-h#_BWpi9kye89-F`f*uuU(!T4OMnJ1YUk*pC(pENM**uA{GJH4;;SI`aK zRY^Q4DgHsWY1Jl3IN62aU|mI7Y4aedlAFmitg5?spl$=Ne(RaBvD~3YN@~&4A%lLW zflNsWN?M6Q>hOwsA5aUAcggt-`_YjAiD5`KFVOZqZ?J&#xyd2l-9h5yehO)zI6GbG zP;@qTO39FUKO<9M{q(2u9%_9;9>Pzf5g+3B1Rd|o~#BhI;_=|=Gl z(5Pp2C{3ap0GeqzW77a?v;kL8PL67xQdREz(MWtNI>Nk9>@~$)U6}rt~@y% z=>fj0)?>=0O~cWK3d#sxmGpc+Qp3?xLDkXE(t!*!DH)YH(zxkX+1uD07y0$hM(c3p z(h^RTEbeFOH&_1}cnd}oo6aEmLU0~~k2PIHU#R3{@W}@A{WC8yqq0)OrHdT7axeZR zQ6}c_A0o^ea;aobPl%$eySuF-#8Ys-Z?P288-U7j;$zy2yZRp)X}Myd9Q?R-Y1za zAEB2kvxJ?v8ZF@mI52K#U)f(cZT+EXzc%wT-0{yNby2ri$ysDaNA<%SuQZtlo();v z*a7VCavE4b6M%$}$cC}&90-__TI1`Hl0jXWgAeL`)t62(n#KkW*9k<#0Av*MqVx+D6k@gE zhrcl|{>{ebUSm`G$|Ppt2KbO-5>}J6^+CoJGKT_$01*2%O#nszTPphkM9oK|JD`Y$ zSOOYP(4Eu}2zGk33oHPmbbEEYvDKxh0(T&)2zaeFrjU6G*;%z+s#`4>r15zDb}S6B z;Jt$1j?LT|$xcpwAS!71d+qO)qh`4Y92!Ex&(t(bpN)RJhz#=giK?hEu3c!?)@r*D z2$ZH&eVJD0@{&%7Uv8D@N8XXcVNq}zwgz+oAv=${30kEKs$ITx8;{7MIP82aN$jSl z6P3?uC8Z_l0#%wB@y9}Y>${8h;c8!O77CtZ6U|J2V9jJ@!^J&|7eJbcvxyM!2))4ww%`(pcn&n z5BKaDXgbDa067Q+M1DMH3+V}jD7wQgCSmQ9ZgjqwKL$ZBWhci!xV!x(NX;u~!!GqW zAxj77pqYUc?of=Bmt&5%_-G*f3YglA_M*moPI+0ON<=D3P5b$$e6iapp4}JaHS8E9 z=~S^&2hq|ob45EvcLfE(?>AcNK$}Q-&?LJF@lvj;IFNu6&D8-J*cx&jCMz;#!9X_J zmI5~9I-cnu{575a)rDz3l+Y8na(aMJ3-82dBe2FR>CJ_gIa5EcYgW6@Si3gnXB4G# zm3)mT+fUT*yUkpA6`Hp>I@Q;V^lGH;%Z>wFpL)JOBVxC9uETCoM_k!C?K&E^8O52h zS*d+lk^Sm5xED9xZ?)`H<~PgiEnl$smrCz$em}@|iZS~&JgbgCZ`x_I_bc@bawLN~ zQG8Hf-}q_5&M|x!V{TcpG8#icF)&b35wqk_9dilJ=apEmG`+9jSV(j*LBZ!scZR?$ zJeaVi`@U;K1iGK|7cQ5IDTMUh7^)+0+QbIkg8&Ay_cS74_C93KA#+k;arm|_0S$wT z2ju5^>`5$Wu2%D7u&93=QB%v2%wETaT}WbCw~-Ama_1rTfBH))i??q<2oLOM+?9Y?AAapuTCb& zKQN{KvWDVS%~xQp)b|L1UnDO-mzZCAvqwfAo>=hZ4B#Bu8rf z%qE!MMFKUMDxDQnrcvhnQnMf?l<^c?5KV2U>YxvPla^HG@?$21k&uj30lZ3ROZwn= zZI^1|-lEp0wBF@|nXqwehY7|4RrCk)&%2EAZI~({h7sDlXP?$qiu(9liy@K=edz2 zk@FA)@PK|_G%>_Mesxh;@*TjDw`|a!6qb_?vPz9kvV0p)1YhIs>CaP4ll{rVBfyl7 z61PA<*oo|#LbRXg@OV=xfC*0EiF>S}{-lfCN<>EJp{5_up7`gkw{$8nF%Bzt{F4je zpUvD3OucRGT*6ei`AO@OGj^owEW!lt5&MvR$D@>UK#^M zN!V@V{yqHn&*u4mwr37tg{$O~)X`8LZ$I+=z?R+LhtBhRFVsa;dU@XYA_K&ytWLeL)JA&ENUA~dW_p(yyu_&FhA&I;;&EH z$RK<%)yogF{a&Iv8aHYwW{?2{>exxC)&8yAZ%(3Y0tMcxik=GJ4Jl3=PjW@zWvBNm z3bY)?t>mA>Ljg0(^&a+^X#SsFKU7KYwY0ci{<#Mwqy$YguUWS*_#@tm?mi0}N-?Gq zjZ~9KbaLuaOUhWBp}2Jv|mJ9MZ088P2li=#=ul zEK^dMBEmVXzB?0Ap)ONAlSsf~KO9zZ{D*{}IN|{K{O}<$$MyLIy$uL9Z-jHklWogD zDezVa=H~%qc4<64ZFFHi)my=={hG*BJ4GA!v@whb_Bt0M@J596ly2IF#J2oE?MB^U zqjPjNo-~nMLe@3h;&0UbAN$!V;vjIyeZSVuBJSm}$cbB%u3S&DT4`Pc)#E`mKk2!p zh(+!!?Y-L@U+Qx7W-EcRxiOci0n)EelI$6%#(SFI%G( z(<$pBvHTS%!fxKFduQ*U~y$;9-?og7RW%edy=0MO2?k>z&~%WfcXeOHSyV9@5iaYM@oNyG5wZ=KeRLn zHHm`E53AtO8|w9>FXi_7pu3$eTGfl}TonFm$rf7h=^w76ri<)7x{(7%>~LV!de?Kc zRgw)RFgqb(p4V^18I^x7G0`ipH!w)R)J*k$XwIcFl5L+nf8C4aifPS2mWD8X; zO8S0{YM7hOzhAAjxk(rd>Vn7wLy_-Z0XCIsF7ed4CyX>;w8ONRn3U2$Nn;QQ79{Tn z2$jSYeS-DZwTFz8L`2*3K5G#Re$!`8wbplpOSAWHTwLF{6F1T}z?XKwSHeV2uWUPS zKvds;@_Jq$&DZZ+rKLP16dgLxD*1*7Lbrv$clhADPPK?L(0Ue#2~pH-I+pSMrKmHwx<0&H6FA8tvxf+)WLDHM`m18bjW(CPmC*)-z9 z#o+o|WrfQHbXp}j8Efmc z&<)t)+Eq%5=A9Zgh@hQNJ+bnKTdw&aqml0gm!&S6^;o=ZB)flMJ$z&P{}P{@&SY_9 z*48rgBd(4id);nEtUdlW>0^bPHT9n3Cr0LJ3o?*TU0Z$_K%O=)99Ojs|AA!9!7o-5ne-}D2#4ui`aIfD>^VlWsC83@d?go9BDn@wnBefl6c>)DKY&t$sS+=DD#1XVX; z@bH7U`f;W><}-W#(TAW_q3bN=Wkf7WT3nQg@4ED(W_$Mf$_-kbQbGf zPz<375rd)xCdRYJIZg_w;sJg>4^CRU-hi(}0Int%N5OIXMySF);TP4-_1i6~{TW1q zE^NDO*ck`bhFs*tfU9tMYx%e0m>wyC(sm~;4Lt16pKla1YfbpAd$C9@Vd1Fo#VxB+ zOjUXGYAJXgLI9My=rU@C1$l3C+5nxyVJQ_ z6yi@i*bFAQw3wym+#MMS$bwG_S5-DR{d0(<(84&hMn*XCx%$A;!&=6F*{_g2;a z3wy5E9sRKk2C%-zs`1U8QoZmf`9H2FS|+gwDJY{Q?$HCcYNz!4e75NMB3V_8tp{0f zXn!KJiQVT&t6wTxSA<_w!fY2*X1<_&-H4O0Q?TD_l2z|^=0M)f0m<>G^1c#I#4n^o z0a;|XD)bG{mD5$Y^HzH8#_xWl(IgE}{w5a&u6v5t)ww7%>FC_NiJP7DUGH%B z$-UFRfr---hmwa<-X!dcyaQ9=r)p+?I>L<$BP%)0Hm0Ty>W29Je`%k6t3#u1hS$Q~ z)hX#F%nR)@K>&&Se?vJStIn+^hleQ+OBimtZtX-b5Fm=P_B~e7Cz|2(sM9O8>L0gD zu@>YVDuhad3GKB#1Ss|_@}W*V7^;qzX4Q@0>X*i(;n#?)YPxXs$!y#3`iNkVCqqt8C@Kz)Jjg&?#u zYV7fXSR(_0@LJfO z1BLolfts5*fU;yQwm`Op=eQ${reKQ0T!N;6Wg z7x-JT!Z}r?=G$*CuKF}l{Q&%uQ-SV$UWoi(SoV5fmtj3<%b9Eb+Lvxu=O&(zg6KAj zo9jqLxfD`h2xRXYR$xd_i-2+N8*9n2)pvEQio^Il?5JdVyH~}HeA@ver7tS*CT0Km z%i=9E@Sw#;0Ndr-@kgG){W>e{Z>Vvkt=(8==a$UB|gn6J-gGDDs6u_Utuz6SRC*c={8 z!2@|mhzdCvJK*^z_~HFZ1sWqM3?U3Qp!D- zdY34)jau21^4zgMoZXOgj{N12ruOvzj}C>SqG7G|94`x%Mh$y2zvCG`8!3_~T?>Z{ zU+zPLWPYlr|IrR+)rugjDt`6SOiA`7Rhekl17CVQxnVGMN0J$6v9J^TPm_Izc zJ|{?z+pxPkwn%g6i_X=W-Pc*&Dt|GXA~7?RthUvxkG&CyNW+1uc;IjHpw+rNYA{`Q zW&HBVY((g+K9ho_tNUgx*T;Jm3b0|MKG#}nCT^$v+)k+=2Xx{=4+=-U3i9Y4C=X8c zzMB3Ga?uiXl+3WW@Ra#U&TVNSt(R8kvW?_qL9C5F=z}VsdnwoSOLAZpJCoN&XGXd* z#W>WeQYOFP$J>gpYl8M~Bn6Ag=P#XTv3HB+etcK{H~Jk>Ft~g@&}(}rlJX-x5!F!m z6!fSGjY3vLI^9X(iCotn_#InlS&KXv4#eno-CGko)ha5i6mUq1h^7Lgu-E06cD`EE@FA_@PF zm+M1h6&Hk&YRhklf{WtFUpJs6LE>(}xP$5q3@?XVpGt16B+yAhW!-vv(l^Nwt^8k$ za+*^6?w-Lx!NDev-4!cl!}cQILcdhOL*=YIAr2F&B*Nit2pRi!7_tb{48|@pqVX zu|@mfL)jS*oOa$Fm0bJzd>&Tpc9bDpbx?k&3ua!?Z(cXPp}t zN5(I8ZQvA-vq%yW%TXL{rKYQm0*A-Lsh@LdHmbFBr!`+o6HP;~i0sbJ>6CJdR56`R z%zXXLzDq;Uhz~Z`5#!awa&s#H$~+UA2UFwkLEm}`UM=4M(;3y)*3ZirIMvRX!eWsv zFc8c|@@_nF5F#Rq4{&xqf=eul3F;6sktA&qrk8=iw%O)Lq5^Aw(QjJ_`)Fi|yE}p` zzU$D9Ow`=Fw7TGa--8O$ZzqV}EEP;aLxK3-R9wdWS)6-tFM#MHRItybT2UcIeEEH- z*$vYOUbCH@lG2#L55vV#r*O2;k8vW^hQChNgzfUa4|~hKlgGr4&v@Wg&rN0z_PDpd zFqTeVS0tTVl$Eqd*r8|`vih+%Ec4$I8{0%tlI0N})hC~|pg)81eI9+hgdi@gx|icDT4jbOw3=%=M0HQn)e{~AR;w4S zvF0D6D7X~}D;XJWx{Dkbr-zt~Bic|o0ZY?s!X;*DwUzig5yWWf3U|yH=BS{ZI zElr4VLM8mBAw)UU_@lo&h>dDOnOLo!`o~6;6?_A7U?jkGOnore;fGsbVXJM15gN^i z|4qw-*6wKVT%MbX)H-+B1?iN;P+a@AoUHI!8H>ko(+*1T4Cy1Ya>-XJCV4Tm&d0Zg z&2SdNQkAG70r>LscVkbWIPg|w-oj}t|MnvgM@Tz${QB+kVn?gRpp^2w(tA@_O#HH! zV@K5hWJqKSbe-{!_X)vRF22TsVU@q0jNC+HjuzgbD}SZk6!}L44lv%dOOIq&7!0BeTwTo*L6}CEODQL<^G-&NdJ+TO`?QW-kPSHV6 z8m;9%y-Ld${FeIFo`&n3f|)2&?a2w8{7G+Td~Kg-sGQPKf3EH~cYBvcR|uk(m`$<( zeVI!g0i_@0KhVzQ38xXs%4-lzNleoeBe-sl0?}xe6wxj9Rv0vR%Y`+-r_kCW8m1@5r$lXAsmr&Kn8P~E z@J~)oDnxo{#P$RGqqyj$S`OPp+8LuG%Zg9nf`mydT zmgMougEStf?^D=OKpXAHfYd1R()Z#?4BaKkvwk=M0W)+_6j}JZ-dS)^G%l|YiVDmD z2tx#%!o#(UiORL=cMtOmhB7*wBwY8KtR|=-p_Yc3J#)Z%u#28N&anT$XV3=SIcH1P zT?D`V(|I)iyVl$3(Nmp^1DLbRb&mr7u4}Q8GC5>!_v|{lM`~ea4Fha}?GWxNxkMq& zmiaXk)A#;om2unWkHVdAi!6yx5x`?x_Qy<}9|(k)VoU7f9%h&-QJt?Yv%PPYih|Yg z8jUAjH|^8b@w}1aZU^qd(6@hKG6)EdgQfAAKFxKIY|+~n(f`EB3sLAeZGN$^R7p!_ z%3GU9-Sgb zIoAkCv!Al)CNgBbc>FYQ26R{fKwyZIzW=$GQokkGmx{Yueq%L9Nzi~}3M0+-Cc5qs zU{hvPQD{O6+}Z*Q)=%(Sd}@t0}s6DwRv0P-Lf~`4by`S=W*S(+|z7a z{ZcMj@MYv&CxP)SD^i96@Xyulm+(@0&=N`UkbNLP&osol zAm5@F=hOK}-P`{UG1q6chPCiWs*4LT=SLb<7KJ#liP8JWU@QgMm(F!VEExQOd`21A zwuwkenEMe2Zfkt?75pGpSkJc$hzkdfjATSd{Xq7eSVK(z8z2Rp5?nZq9`E@nr!jg! zWpFd?MG-at@54`99=Ri0ki{m+@;8Zy&~;10U=iBkn-UcYY#7BB)m1-`=KP6Pe{(AT zruEPx-hC^eW|-Z?=ZtgOxr1j3c}MNUIBNn3l4l?$x#HB)=x>q@VY8jD?Zp7L7$abR zuPo#jX86ney|d^_i%_I9t1!N|cQKkm_{}WAcO$Wqdc^fjc?e*s7aJ}=#*v+DNWh0W zaa$0NT3stssQMyz{ekDWY(P`vGFXlSGTN5thJ-?v?@ph&{9F7j>3);r?T7PllD{fMlL=5s!?pFD~t;0WbP58%Sy{OVbEzXdo(r($MQ-C6ty{B zYGo+(+gDVI3~&s|h({P8pOhn622o#oIyP9|g6}5!gs-Qm<(q_O=ji=)*R`7ehTT53 z5AiE~$~dF%>xWFEd>Hy4CCY7FEVxJQVTS)0`vK{DSB(G7=g7nK&Q0qtqiY#^dxPk3 zL=>YdyyFO?=m-qqEQ1W8F7?Xl(UUaN>Mm$zXu!*InX&3LISX|OyK2~=EiLtcmq%Ku>6e(Q)7g@qD#K8B-PZxl+OC72_(kiuZzhf04{rC zkJb8HrKta5h3jBBSen@_ip|lT+(E3d#z^(#2 zibRKE%?8>*{C));n5Ms8EN@3wE~rnWh|wfAU*rde2b^MV`Gu_`HLY zLVOp7H)TtO$Nm`BL4QDpI_7cJtons<%Sxt#{ap`OkKgj%F$tP%g!H8>1OO}om_dIF z3X3wFrXYK4Og!`ngBqq%Qa-M>w!%?7*Opm^pw_?q@;@Qp`GLT8W3paDkRPh{@`r%i z$bE_RlLxGmcyJi5jT1lo(PR4yG=F5R^` zlZhhLJ|=Ek? zuf5hwIN*!>EN_EKoCVsb^qNtuA{UB2q^~l??~rh4O5T}EW}W>&JYxL=rN}-$OH?un zv)J{RZwW(0AV({hVtwNXGY#`N7rXw2+$IesfC6@v#?^*7{jIG+vueg1+I*Be4MiM>UJ(xI3LMvPJ z+;$Fsk7!z?ll^wt?4#e83V;?~Srnmzvc_rj^b}r2$_2O{QWf|_&HpEms?Dp#ZQnC} zg(eq#yoN?@fisy;GvNO#3)`!9uwO6kwxf+p^82dPG6R4TzL<_ML7u#rXq(uKri-3j zDS!?``eXsZ*lcAFD?1z7Dq%fk`wjGhx!5orURfoT{_;jcd+_7$RwtTNNkTA0RwvWr za1K{w3$e}^b|1AO46QL$`Latc87k;GMDpKl4b&Lwxvh-hh9JD!>U6mWD`A4%5~?Ru zI{UKwFGiii98P%q>--`!C(O|75azaqZE+k;f7OF zTARu z;P*}gG#$atUjzud7GesY&L7ZgpL=*kzSUngb;*y2pu^Q5z!EMZo~73fc^_C%&{^eI zO!3e4)Hawo1aM&Ze<;#R2hvq0eT| z7fPe!HoEI|v{QxnfuMYaHM`wuYw9-oCE=*&he_X;%h;L4P*9x#GLNIB+2LU{Yo=EqP(v1n)3&Tf4`A7 z3a%%%pCM!@pC}wAe&T@5(Y)T_v?S-0v%0R;{b;&S(_ekI)ky@6OnE=?FDF=FXCKW6 z3m&@m&+bNm{5e*jSY{}5<}#izv%B@#Yv|^bV$5Jg5#IRN9MG9Te+Pn35jpHX?L0p+ zW_N4C5a7Q7@xapGFo4~yFWfT^>6;l1Gw+#dCi?@Wyz$bidjsi>@B=2(h_8idD}6=N zmwLSv@7`!Tc$M#+|Mm__TBX8jJbEI2@9hWd4Ar2Z_-B+qmiZy$<%ODOlKINSh)poW zE~Gjy%N9p%Yvf_RMi_1UvC#Gd_zE7pYNcsV%PxKQjA_U~!hdlThj|iWJkDsNvq$k| z@yloB#N?{nPr6he0#P2N(!$=9j1-+UES2kCe$yKzWf4c3OGdlx&P3|&dR**Ye>Tm* zf$~^6|x#FBb)xn3_5} z_E7|kVIxcQI8F-QafFG>Hp^+NlY%qcuW5_Czb@5}N&{EYuplv-n*~}T%egI-DOV@T zwFe^*RFGMbJ0Cc-2yjg?go6b7rl4r-d$YV4J@s!SvoHtHA$2zVjBWNIl`L#{1Os^R z3$}eiQxjNKoz>-Ebyv{_*rE{d@T)D^J(@82-O8!^*wc2LJqXT#VguWIaKcZiZA#(j z*B59C#Ia+dL{)V+O<2;}qNKWHZ#zNqR}}W!ZTeh;qZL*Z<6{Y6+@!GY*Q?J^2v`s#Avfh004+ z(q`!KlFJ1`qu^ZmW&Db0TfWZFAw8I&;Y{#$Uhu(Q)zhC4WM{Ne9np;*l>m)*YWfloM+DyYe5^)whnm&Kvr9R&Z@+9^EGo~y_@Fl;NhGy#L zYH8^a&pM=B6z5BZQpnxh&LP?dJW*jL3a=&IgumNG1m!6mN)U{;Oo=&v4oj=DF1~Nm&r!!EE+sh}#Vv;z#GUd_<7Q~t6>QSX_H6jSdpbf8k6X&;oAdF04!vhX} zNh$$g6|e}457jM@b7L2nPJX4e4HsXwG-pAnHW{u7K@*BO?)(BPFcLL1aO4%mMyG4pO6U6mnzxfKo0o;nLR znW^x9&(lbLDC_<~86zj#hgY zj+xK9+ZH8!{D&d}gCWePLOamV>F$(hXX3= z&P8@gB21yE-zc{!*!0(mliKTE&RFRae3e^Mc`jKC*3+FXk$PoTgue{Fy#>q3!}B^a z3it!4P_}>N{ZtHq8zom%?t)BubzS8Za*WxdEp8d!Jy;3$S?j@1E$WN&1 zZ@}Ul9k9LtRBp>LCRU|PVw%=-{f;jEXb6PD2vb?&jd0KC@X{vyXa}&`VM$cSEO`)BR346XJiSt%RW2Ja=IbX>m8yHIEd(9 z$b&qRu=sQ9c5p9~CB+)HFvDc+&S8P*s5277sNpvrI?ue5;<7VHWy6M?@-m--(a7&V zI(n<~jqzrjM&@U@8~)x_F7ffh{ecNU*OIxV&2h>JGp9Xecpt%Ba+f=1qqW5&s7qOc zKJsneg`4xq-|W|H9AHe`m~{YPsKHH@A!}?dQQ&2#{Xt9MLbIm-jQrf)(7C)RiGsPP zkT0E?*7YAbSze`xBQ5r9Syy_*$B9#tUNZ_vK+9-vAb(kbc7iU22!`gOx*tYoj_V*1 zE*?AP45OcjI+4j6u}^-V71ESvJ)YO`4Q>(>4~GY`h7(+pr(1vqe00BM-PCm8wa_=@HC1~$hCqE+YDPd z3W|7i?tosL@I|DwE6&Z$sBdn5H-8U#!K`@K=R-xr5D3%y#WL>z*x=Dtk*l3DN8P#G zei$gz(qAxz9q;lTEiksucm4O1oTBgrsrU*3*7HTe_75wA0YTyP-?5|- z_c$0g5f&5U{sY6f`LDGeq+UMo6-N3E8vSf7w zzKDeW1Gr)OO*D$um+3#l6n@hfGwRgi{sga;SemN(et!O~gMH-K8t_=*$P}EXYgZHs zO|eYyhN8T`r>*xS7&0G;T|9^wzqja(i6G+XUbqE>Al}?ma7v9LiLt5ZA_4WRRHDS zq#Qrj?POS$b@OCS#fkyVyQ9}1*RO6po3HQtUiMHsX}(5*_46Tb_A2@%F$D4wFuEh@ z7iQ&{;OB4ay|JVPLPDOFwzAb#O2!3SYTJp5x;}*tjkz1a_;@-Na6XgapxGx7X4eTz zyT=qfv6=c7U^bVFaA304I4w;ZJ#cF!iNy>8)vYQDLr3tSI6q`vcXYb^f>cuoabG1; zNd_I6N%U%?h}R72STeUOwWs zl_lB5I61uG@ayCVF?cgwafGFKM*!CUn(B4FO^RzIyyYv+W2hc37Udt@eu2)=wniMV z4SV0i{T!e_`#x>HUkVi&Flrs#?DJtBRf&f`sSV!wgVHms8I19xdknaZzktviBfO|$ zo&a(x?lEH8f>_cR(+6UD$=S{^(o(12RuuU`zF_YZBR%w>AiTk_}{b#jNMZ8gUg4Vh+MdGX!VS}&D-^div4)1 zP#K55n-V`x9=D36$w$Yeb5?=mXfQPLwa1V)lLlE}9~n8Dp({st7;~EI(vP`JIaobA zkz)n2%HnIguV*xM$jyOXYRk*datTA{=2g35;A!6oAO<`s`23YHa!CGUB<-Y#AdJcx z6O1nci{u~VBG2XK_MHem?B{{W+J=o0h)Bk)1qR0m85 zVldY-Q&A1?Nixz6OK%2qGOA*J=w36g?%Y=DwWP&?`)7K9 zQR{SMW`;2o^&#e(nKziB{nr9huDalzUn}ogV${KNX}TCP^2zk4tfBKnkgnrf3b!v? zA<=N6#H?;?*q+Pxp!(zdt#-g~SUV~)zjZpZ-S2RXhZkgoz;eU>JOSQ`diV8g&_l@@ z**%tUVN0U|iZ6;nT%kDDG@ps6DWHP(q>cEdH=*`$o4|#j=dye}AFACdS8})rRlB>* z=JcHXQwX7#s0jHD57_{WX&Y@y9p9b3HxB;uQnDQMV{k1s6Pxc!scwZXWAg{k&>_eY zxESAB#Z1fzAf9i|(0H}j7jS5uO(=}a=YIRTB&_XGfW8^=BS@^~tmM`TO@{l1MZ<$N z^b!6EBx5ytHy|iLBuH-w^T{5;=x9_*V_&g_b$9sc#THP-YUR=QjIM@sp~vuJmA~#) zV}!BwIbx&sb$WMgxnUfL4vqnqkRXSk2sBN#cKDfU(m*r0(ZQI% zt39#vk(=t=GjGX=4KFN!dmf+3ey;Id3rwqFHhlhSrtQjz>90Qw5)jfrH#jRt!OD)L zL^~ElM+apr>$ykJuhf3nCHg}_uig?CdC?gK4@u46oyze``OWG-EAMAX{52tzVg=6t zO)PDH^AWLP2(H0~ug52J0xoq1TTW`=8j)hohvR)o%!M(Yv@l5pk8I2+F0Mb5lD;gIM-~D_x*pse$UR-rv`@ zA?hsl5-LmbIKGJx(&IIXKLlej$Tplz%nVj;fkk0kovhC_chOqxAQ#b}8HvF9sQHgK zkT7&`x0~L>B2C8f+L6H%AR|l%WMLlpNj&zspqn*cVg1)41$gzp@&(X|vk*exsS??4nvOtIFf1iYs~ zJe?^TjXqi1nFDedx1U!l9;YUu`adXDV1VC1WtyzbAR-#TY)Y>P2i)RTIf2U-1URCN zIego++T2ry{uMipO))QE5=i&f01QZ|?T5r2Q7OeAn~d$(ZpN1!ygDE8Q2kY|S~+v+ zsgr41Tr$;sSR|0Jc!%u4_hnx3aB~ciR#zh0l8?)-Z>$^H46^2`{-ogNRGzWGNj^EQ zeRFnnMS}vZ zts&{WKr1e=ol6C+#(-wJ+z7}LIDtM|yi^*cV_nV`H`nBrgr!ZON-p`n$azMCK0_a2 zQm79lego=0XqinPzwg(A!#A0q&$xf$Vie?ut#R~V{-u1 z;OHInX}n+l7a%CC09y=v*UG_G@HDUHRcuHxwfbkD^!sMDM+;?fQ&r7vjTqH53r zi66LFkLDkNTU*}%P48Tbs+>|#iIFp(mV>%RuQfC%vN;iHSJ*zJR*r}eBp*caXxTl>sFWMN!x~3>>PS4Z2WE^!DSzF5Ek4-Q5)KM>w}-gFb6E zq|PB3{bW49GUdfy6Peg$`+~vc2NJNf+v^)R#_~eWJl2ETc{v7j4+E-4Sl$_;4DJIp ztqdr&;epusMC~aKkqx}&ShwM7Z{{wy1m@1%YD`)rfu(f~p@(y$`4& z0`c3d4g`ToI>l;lqIBn>A!lonT<(P#O020E zE4QlPNb1|zqcNpxy}TGW^S_=buk~gWgfyCb!(CMs+*UShNSJGc9rZ=^mT*bVUsZ(~ z={e{q0r*}* z_l7?7Xko?*o9}47m29Oo$=~J-15y%}3+X6MY0=du(VBlG!C?Zr&}h=fA^_$Eo;MSo zp5iYo+JlLqAG6j42O*)ff2Ob6%UO+$S=AmEI6p%ZQt;{?mjlJF{V_$W7)MPiv2b1* z8DeSW7XmWciA3a^3S=NKGJbe3^RYBp&hC2(6Z7b9Tu9|LoAy{z4|&Pn5j6>9N5Q!d zZd>1`pGgg2XkCdFG3Z%-eNFMvy@BtAM&n^*I3ol|r~g!RYUwJ`HpxyRR1R+vE&n}; zwRI192K`G278(AntD>a(_Z-rTRMwmR{WQ0R(%M4I^2k$=#q{dqu~A++A=={d&@&T4 z7%>;DxSTYPyxsd77YFi9t|l{i-_OwYuJwdnq+Msys~>iv{1wy`V*#eP&G=Y$nS1?lHZ4d5g zrjvEc1BsF_t=a)Y)B6RBr&IWT2|0F)=4;Vf`OsDUBqp?W#py%NsSz zpMuMVujc?T1B!ptq?} zdUC8NdO**ZNBLwN07BR5x+cm8o~Zmy3uSpm0jUny*`l=pktnc7JTN*4PVnz`9p^nMbN$^Q0?_!Py0!S>w(vUFIU zd`iS6{hso}ipmv*zTs2O5WSG2`VY>H0TI{xpeGAOB%7PKn&i^J{Hv+mn31GYfUWJiN9oyUaQ=^gEq6l|{@!=ox+nf6no< zHn39D>P>9*wKS?q<3)NZ*tEfnaX|P)gaBNj>QpPR7?K9OwXdvmzqqHDzL=`yK5`|5 zFjP(MncZzEJZ;i~oQ*JtV_?A|HwSp3vB?vyB#LaUvdfMx)j!h++3COVaYMtVSo$$t z=aZC7>hY+XpI<@=b2mRk^1R8Sntb+pjFz$X11T4_(sMD>HM~>$E~=-b-$y0Wd8O6) z@(K8VGbhujiZMlll%2$aM8txoDX^#0QE&e1jDE$1kb;V#lEe?BxR9?7KfVlWU_eFM zX)azbJg0}0sQeXyqCv8cY!u@`aWqYg`}d~Hjc--Kad-OIvG=@IeVM4J-v|Q3e&FWU zzQ1CG2nfCLpr+mM@{;v1*hmf|ne-P&c6{IlV*1tMYw}05N4*^!@Ka(B1$nkyWqD6(A2TO@tj$i zB}_PO#*5vktmwY*D}C1Q>(Vv_p3hQZVgno;rWnk-A*A?99`WCzu)IasG~S~g6?46- zdxpnpHG_-_f_qv6N^4U(ITYGmz`19I4oOVq7>{I4Y?09C*ivuSane5ve>N5Q48;@& zd}_E!%xt-?igYS?P}o)3bgoh>v}qtLPayM}5I&1>U|h>qYxp7_)F+-|F1ki_H=A9r zPF(ONp(Z~elPs=7L&kVE27pL^aVQ5|4Qr3N5^DdU@!kV&@vIa(F!w=%NQI~KkDv)> zDASdNl}b0ZOy{}Gx6~&lfHhrf8cBS zu^Zm*vl6)P9#MPP!|;<|Haa+OM2O~VCQje(m#b1&C7M{c&Og?TC6QMCRvSi08`G5~ zxc53FJ&+*(Wkp?GC4P>~g0lS&H~aN^CU1D~n)1yBwHw>{z=>+57vPP)dMxDjVMcZv zgSSZ9tN{yYN47iZx=hiF`&cc<>G?uHAia#HT6&(jSg3up-X8)~q=+7`MSrU)aHc0n zdpTdjsT_nyNrAn_}o?7@ozO zrjkPh@~q4CfWi#=tvKlp2cwcb&)Vnis@#%%Iz_8p=W8_>7eMm3+Owdc?Ip#TPogrp zv&V8vuQVx2fU6rR_1j4z2JSOgu;zEib|`RDVTnMnq*=u}!x98Em5iT5^q1`J$`5Z= zKVTwD3&#nceB2R@q~rLUWU*HNRB7bqyGNgMgfVquxX z;LO6-0>qIZhEd>=1U$6oX@eyiNCIM06TO9@$uN#tyu9shep#4r|vK2ocdscqBTr?X& zd~qa%6y^w3BR*n-UB}`_xu74RzFORPg z$tYBReKa>fyb}f}u|}O9MmjuHgxPS9YcUO?){M~ba2ctfyuqn~gzrZWWJ$`eNH-ag z#yw2u)Lhgm9QvB9<@w66+~9FlZy!%4rQI4dP+0iymR9vSleB0CN6S5xvPVV80}X{5 zfNuRU%@gmP|D(Au!~W&o^c?!9`?8DC)Tz_xpJi16mNA}hs$&z=%K?`3 z@mQBeI?K(cayTg=g!sa?DzEUyVSnG7yr=tNLznxg$*3@J+uW9&PxzTF&xZh-$@h{& z7NV4cC}Ii{LHkXdgO-XFUU%-=IvOeI!)jrZ7rZ12zy%Pf!fR8!GD-`HS4KtP^Y?t- z>F5BCi7W?R&SmJ_i|E!~mdWIWFDscOXi^MrRGXiNMqeu+oHf0GP`Fq}LgLh?(DMu4 zCnh>x3A30oF3m4(LH+~l4U%{=k<0o_iJ1+-iI~v-R6`R()rk5c>HVm$*{@9> zb~ZVKcFZGTDxp51v7p>y_T~goG3*Qcz^g%X<`+Q5;FLpIg z+M-X27m4t^@MrGD<}Z9cc=q9d!Bx=nR^IPqifZl)Qwy_;J+J38aQm=f96?!cGMW4h zi$AKsIj`Kx=wsmO_|gK^RP@g!cuj!9%ySoXk;b>-!E~GgR{(Z55310$Ow2-XE}6d& zlkZQW+_;@6Ko|EiL!ys735oDiYXJP%O3Xo=-R^av3U!#aSH?3bQ1oW2Yg{tT-4 zR26ZP6n;h>)b-42BZA%~3f}M9TyZKiVB3q8Q#v`e9#hLDuW@tIw+G&K?;$Hx)@WLVw4;>41S@IP@hnkdu3-MXx4I*T}c( z{Ae>alM{~lV_l9zFU(o$uq>J;gHrVUqAkIPD4%mKJF(Nz-)2Q>6ZT}V1X5DbJk`_y z)!&R6q5gfok6DKkCs?(|Oh#rtem=r^)41o@0^t7Jfn79?(Mrx&bLD!&|qXZ}Q74 z@|mTBQ}8~_HLq#ax*m6`vKEJ0xTCZa{=DjP;9h@B*Apb?0hWRW;GpEwji!bO`tC9D z?rwgm-lv#xDs$@ABQVLFetnQnsdNN_$RrSpAufG83mc#~Lq!b~xMPB6*lss_csjQV zw)W=MV`g7%c(Mi%N&)voS}SB>6w?UT-Mx1|dF)xtrcepb%KdkspU_<g` z!BDEk9+MLd!UENOCPtcgc@Qy(gpcj6ruXPpN54Vmw+8h&wwIsq*z}XV&Pf-a$mi7j zI^KA=pS9{owEwb14oHf!J-52Zfm@a$Y_RK-UVWozAsSVvq1e!mb-eBWosUg}>h~$< z()IaN#c6dm=c8T}$yd_LinJ5E2!Pl#f|Du+TD6tB>Bh22LTY*(E6Cp$20dC})^$JA z(=}K|->sRSG@IN>Fu~mF{GQ-=BBJ3q9;X_s!7;!xhzT{&ocK+QU2611^BHDNnpk7g zz)Bhk;zdsFD3?J_nN;hy0}L;M7qAZbqDY<9ftc`iSnkawdBGD8Q*L3yb9%st8q}XawcyUL5q&%oJ|Mynw+R)99fRly2oIkDTe1`*~i_#3Wi#uD|%z^Yi9L>lw*x zouFX*x-U#&UCC$GjOE7Q^%>2(_nJ>V)}?G5mI$3!H1ywEISpwpu5GoP%}+=UeT^QE zgr^~}oYYdW7w55_$XGm!L}qKm0YA?n3gl z{;zpIOQoF>3>!vOHlGzn_nWAWTTWHEQ)RU7ntNITxzt0hBV%MUMt8~p zuM`LDZQyh#iyp53UQchtjNoV}C?3A$&h6-FESN}dbz@u^M8~e}VIMN8)v|Ow0~?aA zPM~-%i_;u47ck-FML=6mM8lgd(Cp zbLKO}GppcV`A9nfBx9_Bm>T6YE-T5KxYT<;pBAZvq2WepN}mfSru9oR4sfA>PoW-5 zZ7Gd~^G9{vTDayvy6VS&byfYhLW0ameZb|DNDlC--`Nnq;mqx~B6dqThR~h17qVgYHHQ-gzt~{Gt?Q^$L3q=}=LC3;#y-E^n=+aCK)t?eE z1XuXEk>M*#Zsp-nJK4_sakTt1bhkHxzlzaqpUmK(8EXlIpY2lnU;fcoZw}^N z1>3!4aG)jCQO05Dv1yIQ2t?d>4msQb6a!yb)kOHuu^C%8Zhi7+*SpgGoeK|kc19W5 ze#&>ujjF>(5KE%twDh27?I977bnJI&bq>>g!|9gOLhe{o?8|B1}j zVO?X?7E;k&@NLKk;w9voFFVLTYVpI)F(AYVn4DRhMz$A!pxDRbOM_>*L`MGydDTik zoue`AA9}S!mIxh!muThqE~sYE+83Z#(ZQ!w|In+$BhTd-VGNxD-`g%amNHnHFKl87 zr4t^%*yCvdw)4u1J)<<4&3o(|9D zc6TTGJ!1VIhBeUw*W|>kU}^xNyP;_FWHDvCLrC?(I1;3(t`aQ{Od?2pOZ9^-|9=!~ z?E~3A6e}E{Sf$6l8PsrfoVc*nJE#@?VWLg79PUu{Q~F zlfnqtSeQ7|6r`MJ+%Tg?YouSd4=RpH_6a_Ya8jIbW#CFORjB4WkpIr zx*K87W%bxF5JvnI%&wOin)BQScIY7VD!n+E=2w3Kio$)$t3Rfc=3+VPt}){^2Sz_) zn9SuaN2{(yfrzCvp$3Xo-|Vqx=l!npV^-sobi0?$>sRbBR0uIlKEF~WGzk4~$bD#j z1hQ+a;w1%nw!@yEH`x0XFMp~ht~Y<sA}*UL zHv&9EH4_pEVtFG@cW|-z?!fW!_zAJo>qtHCyFCpj`;K zm`_!Z_tb;DVN*PKn01{D5k25f4s-DadwGMPR8AjQ-qt1_eAN&sWId*``Bz^xFeZ`q zM63{A0pC&TfWC?z5P6cnMnV1heg8WLilhW2uvM0}vT~&i<{GX-@4MjmmPi0m4>UF& zkPfEE0eTBfy8WGfj6-~)(1H4KNNjjp8`H((nSzsxRSd@4oB_;Lz~_#f+h@Z1ba-N_ zh^M13vQ*QApirs$=N4)Yy_qN>lYk+Vqi1cA2tp)kY8|;49k6HS;Pe3poD%3J21P0e z@ya+?pUGeLpPAg9{-IBXtmDsblu{Ovi6~vsj(Q={eT73$xA|@{m=YqYAMhtg5gO%- zI_vIQ;EcsYZ*8J7jLL`WvDnzv+P!U6{Rwl&L~Y78V6aBd+ay1^=PohMMR#zHPS7n{pog*zt;v=H8k9NZmW}}gWZi8_lvKQ>m zD%nf@dSrvFrQbiz7m+}g1~h>O^(A-hgor*4)O0-Y=pS({LFKjBJB1D#D5qu>s5RSP%Tv6tMQ~nZ;x?}5UQ-3*TN_#mp|U_zBr>45OE*RX;@Z| z>hFjmiA4h&^bJ3@BYOEv@>_(p7|Q2|&>Ku#J0b#l**j}BP}1twgmHD^Wx{@O`ZV5H zEe;jE(uVYuRebp<6-l0f{u{-D5q%Cy6pAd_$BwibjP%x zG}Q;*yXi^9R!XK77gr$6v^bfgqsy{}YHr=kIF;PwfNt^&I!Gh=IEF*EO{>Vz(@`fwpvs}Lt`c zT`n<^M=a~}o-~7iz?$=~z$)c%bv-%Qwxbx21;GX{Yz`ExXgJcM1XMfG_hh*y=Zv+* zv;5qX{}EW-a~Y-CY#emY%*g2}1SV`Ywy+_SGYY{)*qqx%qlLk?&9>Kj&S{`@OuvS(`eTMrXfXL_Z|8l{Um)I+^UCSkpP{Tp9*F9Y zA0siAJ;sa^ufI6<_)*A$LK%*u?_S0bO7|0g+Ry~Q_*;Wib&8^)aby6+!A>+tTHE-Oa29Uq!7YdZ|Zr9p(*9K39X zlW=p>Nbubd2AIkwcXqJSK2z#t*zDZdYfUhhG?M)AC`xA`#ssK!?VDW$)>jv&uyfyn zWR_ACh8Ej6LU}BNq1u1mF)Ud2iOas_e@1!x*1Ps;Cuw9|$j?dP@V>O>|AG9#<|2pTrIC6pRQ1XI6-P8_Wgm$BJN zwU)x4Fq$~DU@m}w&g+qn#QE8lD;6A5K>#U{Ri>x{oB)h-q~{DHs3hTG720&3k`#A6 zHU2`1il&4&UgQJ!dS~$(Uae8UKVY9>tB`TdJ;g4);me;UhJs1^M2Y%7CP<(yNZlft z52+9a6d&s2LDR}8W9UulJmIVWr_lQPP0VwDhH}hlpmaRFW>V?N0{_5HMIkyE?nF0Na zi%RTmqlVG;>YlcqcMXqSS!OCmdGxN>@esEQ6cAMKgC@G|{(G2J=&KpvP_)SJGAz57 z|Fk~pB-n8=MobTB0XS<37(fqYIUR77SH%KVo6R`*teELiCkZ`Y+V;w36fOVxQ&wNC z7uRAh_bVk|WS4`|?{_*Nr}Fmus1Db>{Q;rR8X`0% z`CE|UhKgoA(gf(rUzgF4M^%KY5*FK)|8VvSAyx)cW6k}o&m7FcwkWOtYMEivz^e~EyY`4=-CO_ab-k(-;RjFLty=n+0Y@GuWoUc<+@Hz zgH{+5IWewlh)`*(Emf?PcDw)!*Q-!eq_D1X9C*yjNdVa?-5?wqy5;@+x{11v@_~(!SQ&D1qMg+$HmRYsU-YWRs(D1}4JgIG4 zZq5?~^~naUxj(%L2y&UZIpp%YJ@F@p$UdAQ2Xy63H#h%mNWR~V`6UoFezYrXgaBpN z)~w;#e;Jy&_u{sAbkUh^Ka(XJg$)J7)ENY{oGeuZt`?trLYd^#cWXMkr=Cg^{(usQ zWx{>*nuc0TIR?aOcVgenlmqnJ?Z2<3Ws;OnP57rdW+xycen(ZcLvB0WV}v^YVf{+u z`Pi0?G@JNB>1L%0PN2^iQ6zkqo2VKkUq1HJ7Wh|JU%84*V{`&E)zt^ahFVsng7F3| z6uP$O9u0RypvJc-AHE_GIr6y1t(}|i$j+LodeC|~@u4iiZSBF8PVK~~iY70NQR7`( z985?Aa&r>|fhbSpJB1GTSQ1eGS5qD05Q0XM0b3La+TijICR=!1fsp1F5`Ac%aMRU$ zld(h92_6K2$Qtf%USGdZ-W7tuDjLgPsvji}VZ4R@_4GTI75Ff_!G4xPadvH*jp}X57 zZ3;WhznqQLnkTH#B`vFGj{h}OHSn~ub8afKa&)sMP)+q_i(>dtc{^q>Ei^S1C9uhe z1$^_T+20_>;&n16S`=ANrD(75R=;{8- zWq&r7vR%As*FS@fd0jQBgd>;PH?aA`%OP;*LfA&Q4#IA^u_bJ(L6sMpMJ9Z%fJFbR zRcg)U_C>o&;#)-cOH`U^FFR{@10U2$H)I`fJk5q!>y#6IZZ(Ue7zpQIWb_8?7UXDb zJk#eT_Kx_wt(VcmR$9g+U0OyXp2+aP3qdk&+)>S8)|;XR_YDQbqXsa^KapO0ytt7F zXvYfgU;770O`b0LkB>S8w2VwdqxudZGkt2R>qg%x%85n36|X}|s`oW{S-GrSTL=zh zBSFfNX|h*4{+N)kBR)|%x#h8P7Qf36I;S6=pZiJj6CSviE2JwJ-<7d`l3PmUH{euz zEjeyUU#58Ui_+>S;)I z5%)U57iDPR=w0>kVLE!IRFS8VWjjBo{wNZ+XiN&EuNKHUlHg~rb?ncS5s!}XLLU{* zlT9y1f?N~MCyfhGxF|FY9XZmkQx`N42DQ`Qjmss=yDREwr}w}Ap8JdD>SB+msQ&|| zn%P4b@_t-+~SDxYq!R#@;H^5NnM>eFX^7{l8i&W`7KssNXnMITM5&MkOqy+2svOD1Nti74bh%s(Q@s z?wA)@b3W9t*BOSAz$P!mhBkS#ED!YGU#2d0yo?9GWB>jvI`zQh+gLU@@V!}zYI0lpPja1?2Q^idh~+hW#&Elf_pf^Q zToZk0VwXzbu6yIuM~mk8(>K?$kNWaNeAhaBHF^yS+pov$r|0cgjK+K~bqWQDcr&{L z@-`SXPm2<^^flHGa&iTZ_nnK2vu#gN2KT2_R8i$iY=cjqWio%NuC3)*-Tc9Psao~! zor?6)OA1OkyS3QB$J=uobW9fR%WCJ#p82deT@JCFxNfK0_j^tazd`*y z4L`HbgRNTG3_B+enxnpkRcsRX-&SdI?j*WecsCk$=qZ10w&Ry#|M_tx`7i+fbNiMl8mr^~kx*~rC%okP9>0aVhPruAPScU17+)r)k9^4XtQ^OblCRW~WON;j#nt#r zeEBUSc>aq4)u_qvK zNJ!1w2|Vz@&%WUPid|LPCt#%W

    diff --git a/app/javascript/mastodon/features/account_gallery/index.tsx b/app/javascript/mastodon/features/account_gallery/index.tsx index 0027329c93..594f71cb23 100644 --- a/app/javascript/mastodon/features/account_gallery/index.tsx +++ b/app/javascript/mastodon/features/account_gallery/index.tsx @@ -147,7 +147,7 @@ export const AccountGallery: React.FC<{ [dispatch], ); - if (accountId && !isAccount) { + if (accountId === null) { return ; } diff --git a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx index 9d4825d302..b7908cc8d3 100644 --- a/app/javascript/mastodon/features/account_timeline/components/account_header.tsx +++ b/app/javascript/mastodon/features/account_timeline/components/account_header.tsx @@ -107,7 +107,6 @@ const messages = defineMessages({ id: 'account.disable_notifications', defaultMessage: 'Stop notifying me when @{name} posts', }, - pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences', @@ -451,7 +450,6 @@ export const AccountHeader: React.FC<{ text: intl.formatMessage(messages.preferences), href: '/settings/preferences', }); - arr.push({ text: intl.formatMessage(messages.pins), to: '/pinned' }); arr.push(null); arr.push({ text: intl.formatMessage(messages.follow_requests), diff --git a/app/javascript/mastodon/features/account_timeline/index.jsx b/app/javascript/mastodon/features/account_timeline/index.jsx index a5223275b3..6fc7d0a4ef 100644 --- a/app/javascript/mastodon/features/account_timeline/index.jsx +++ b/app/javascript/mastodon/features/account_timeline/index.jsx @@ -13,7 +13,6 @@ import { normalizeForLookup } from 'mastodon/reducers/accounts_map'; import { getAccountHidden } from 'mastodon/selectors/accounts'; import { lookupAccount, fetchAccount } from '../../actions/accounts'; -import { fetchFeaturedTags } from '../../actions/featured_tags'; import { expandAccountFeaturedTimeline, expandAccountTimeline, connectTimeline, disconnectTimeline } from '../../actions/timelines'; import { ColumnBackButton } from '../../components/column_back_button'; import { LoadingIndicator } from '../../components/loading_indicator'; @@ -27,7 +26,7 @@ import { LimitedAccountHint } from './components/limited_account_hint'; const emptyList = ImmutableList(); const mapStateToProps = (state, { params: { acct, id, tagged }, withReplies = false }) => { - const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); + const accountId = id || state.accounts_map[normalizeForLookup(acct)]; if (accountId === null) { return { @@ -86,7 +85,6 @@ class AccountTimeline extends ImmutablePureComponent { dispatch(expandAccountFeaturedTimeline(accountId, { tagged })); } - dispatch(fetchFeaturedTags(accountId)); dispatch(expandAccountTimeline(accountId, { withReplies, tagged })); if (accountId === me) { diff --git a/app/javascript/mastodon/features/compose/components/action_bar.tsx b/app/javascript/mastodon/features/compose/components/action_bar.tsx index af24c565f6..55e95fb5d8 100644 --- a/app/javascript/mastodon/features/compose/components/action_bar.tsx +++ b/app/javascript/mastodon/features/compose/components/action_bar.tsx @@ -9,7 +9,6 @@ import { useAppDispatch } from 'mastodon/store'; const messages = defineMessages({ edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' }, - pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned posts' }, preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences', @@ -53,7 +52,6 @@ export const ActionBar: React.FC = () => { text: intl.formatMessage(messages.preferences), href: '/settings/preferences', }, - { text: intl.formatMessage(messages.pins), to: '/pinned' }, null, { text: intl.formatMessage(messages.follow_requests), diff --git a/app/javascript/mastodon/features/followers/index.jsx b/app/javascript/mastodon/features/followers/index.jsx index eaafb3d193..e55d3d9cd6 100644 --- a/app/javascript/mastodon/features/followers/index.jsx +++ b/app/javascript/mastodon/features/followers/index.jsx @@ -29,7 +29,7 @@ import { LimitedAccountHint } from '../account_timeline/components/limited_accou import Column from '../ui/components/column'; const mapStateToProps = (state, { params: { acct, id } }) => { - const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); + const accountId = id || state.accounts_map[normalizeForLookup(acct)]; if (!accountId) { return { diff --git a/app/javascript/mastodon/features/following/index.jsx b/app/javascript/mastodon/features/following/index.jsx index 3200f1543b..1dc39df0ee 100644 --- a/app/javascript/mastodon/features/following/index.jsx +++ b/app/javascript/mastodon/features/following/index.jsx @@ -29,7 +29,7 @@ import { LimitedAccountHint } from '../account_timeline/components/limited_accou import Column from '../ui/components/column'; const mapStateToProps = (state, { params: { acct, id } }) => { - const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]); + const accountId = id || state.accounts_map[normalizeForLookup(acct)]; if (!accountId) { return { diff --git a/app/javascript/mastodon/hooks/useAccountId.ts b/app/javascript/mastodon/hooks/useAccountId.ts index 1cc819ca59..af1c93d17d 100644 --- a/app/javascript/mastodon/hooks/useAccountId.ts +++ b/app/javascript/mastodon/hooks/useAccountId.ts @@ -11,27 +11,25 @@ interface Params { id?: string; } -export function useAccountId() { +export const useAccountId = () => { const { acct, id } = useParams(); + const dispatch = useAppDispatch(); const accountId = useAppSelector( (state) => - id ?? - (state.accounts_map.get(normalizeForLookup(acct)) as string | undefined), + id ?? (acct ? state.accounts_map[normalizeForLookup(acct)] : undefined), ); - const account = useAppSelector((state) => accountId ? state.accounts.get(accountId) : undefined, ); - const isAccount = !!account; + const accountInStore = !!account; - const dispatch = useAppDispatch(); useEffect(() => { - if (!accountId) { + if (typeof accountId === 'undefined' && acct) { dispatch(lookupAccount(acct)); - } else if (!isAccount) { + } else if (accountId && !accountInStore) { dispatch(fetchAccount(accountId)); } - }, [dispatch, accountId, acct, isAccount]); + }, [dispatch, accountId, acct, accountInStore]); return accountId; -} +}; diff --git a/app/javascript/mastodon/hooks/useAccountVisibility.ts b/app/javascript/mastodon/hooks/useAccountVisibility.ts index 55651af5a0..7ef98eef69 100644 --- a/app/javascript/mastodon/hooks/useAccountVisibility.ts +++ b/app/javascript/mastodon/hooks/useAccountVisibility.ts @@ -1,12 +1,14 @@ import { getAccountHidden } from 'mastodon/selectors/accounts'; import { useAppSelector } from 'mastodon/store'; -export function useAccountVisibility(accountId?: string) { - const blockedBy = useAppSelector( - (state) => !!state.relationships.getIn([accountId, 'blocked_by'], false), +export function useAccountVisibility(accountId?: string | null) { + const blockedBy = useAppSelector((state) => + accountId + ? !!state.relationships.getIn([accountId, 'blocked_by'], false) + : false, ); - const suspended = useAppSelector( - (state) => !!state.accounts.getIn([accountId, 'suspended'], false), + const suspended = useAppSelector((state) => + accountId ? !!state.accounts.getIn([accountId, 'suspended'], false) : false, ); const hidden = useAppSelector((state) => accountId ? Boolean(getAccountHidden(state, accountId)) : false, diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index e193e10a6d..3d6e166498 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Notify me when @{name} posts", "account.endorse": "Feature on profile", "account.featured": "Featured", + "account.featured.accounts": "Profiles", "account.featured.hashtags": "Hashtags", "account.featured.posts": "Posts", "account.featured_tags.last_status_at": "Last post on {date}", diff --git a/app/javascript/mastodon/reducers/accounts.ts b/app/javascript/mastodon/reducers/accounts.ts index 2001353b2e..692c4feec4 100644 --- a/app/javascript/mastodon/reducers/accounts.ts +++ b/app/javascript/mastodon/reducers/accounts.ts @@ -4,9 +4,9 @@ import { Map as ImmutableMap } from 'immutable'; import { followAccountSuccess, unfollowAccountSuccess, - importAccounts, revealAccount, } from 'mastodon/actions/accounts_typed'; +import { importAccounts } from 'mastodon/actions/importer/accounts'; import type { ApiAccountJSON } from 'mastodon/api_types/accounts'; import { me } from 'mastodon/initial_state'; import type { Account } from 'mastodon/models/account'; diff --git a/app/javascript/mastodon/reducers/accounts_map.js b/app/javascript/mastodon/reducers/accounts_map.js deleted file mode 100644 index d1229169cc..0000000000 --- a/app/javascript/mastodon/reducers/accounts_map.js +++ /dev/null @@ -1,23 +0,0 @@ -import { Map as ImmutableMap } from 'immutable'; - -import { ACCOUNT_LOOKUP_FAIL } from '../actions/accounts'; -import { importAccounts } from '../actions/accounts_typed'; -import { domain } from '../initial_state'; - -const pattern = new RegExp(`@${domain}$`, 'gi'); - -export const normalizeForLookup = str => - str.toLowerCase().replace(pattern, ''); - -const initialState = ImmutableMap(); - -export default function accountsMap(state = initialState, action) { - switch(action.type) { - case ACCOUNT_LOOKUP_FAIL: - return action.error?.response?.status === 404 ? state.set(normalizeForLookup(action.acct), null) : state; - case importAccounts.type: - return state.withMutations(map => action.payload.accounts.forEach(account => map.set(normalizeForLookup(account.acct), account.id))); - default: - return state; - } -} diff --git a/app/javascript/mastodon/reducers/accounts_map.ts b/app/javascript/mastodon/reducers/accounts_map.ts new file mode 100644 index 0000000000..820082e3d8 --- /dev/null +++ b/app/javascript/mastodon/reducers/accounts_map.ts @@ -0,0 +1,38 @@ +import { createReducer } from '@reduxjs/toolkit'; +import type { UnknownAction } from '@reduxjs/toolkit'; + +import type { AxiosError } from 'axios'; + +import { ACCOUNT_LOOKUP_FAIL } from 'mastodon/actions/accounts'; +import { importAccounts } from 'mastodon/actions/importer/accounts'; +import { domain } from 'mastodon/initial_state'; + +interface AccountLookupFailAction extends UnknownAction { + acct: string; + error?: AxiosError; +} + +const pattern = new RegExp(`@${domain}$`, 'gi'); + +export const normalizeForLookup = (str: string) => + str.toLowerCase().replace(pattern, ''); + +const initialState: Record = {}; + +export const accountsMapReducer = createReducer(initialState, (builder) => { + builder + .addCase(importAccounts, (state, action) => { + action.payload.accounts.forEach((account) => { + state[normalizeForLookup(account.acct)] = account.id; + }); + }) + .addMatcher( + (action: UnknownAction): action is AccountLookupFailAction => + action.type === ACCOUNT_LOOKUP_FAIL, + (state, action) => { + if (action.error?.response?.status === 404) { + state[normalizeForLookup(action.acct)] = null; + } + }, + ); +}); diff --git a/app/javascript/mastodon/reducers/index.ts b/app/javascript/mastodon/reducers/index.ts index a1b349af80..0b6e66a1b2 100644 --- a/app/javascript/mastodon/reducers/index.ts +++ b/app/javascript/mastodon/reducers/index.ts @@ -4,7 +4,7 @@ import { loadingBarReducer } from 'react-redux-loading-bar'; import { combineReducers } from 'redux-immutable'; import { accountsReducer } from './accounts'; -import accounts_map from './accounts_map'; +import { accountsMapReducer } from './accounts_map'; import { alertsReducer } from './alerts'; import announcements from './announcements'; import { composeReducer } from './compose'; @@ -49,7 +49,7 @@ const reducers = { user_lists, status_lists, accounts: accountsReducer, - accounts_map, + accounts_map: accountsMapReducer, statuses, relationships: relationshipsReducer, settings, diff --git a/app/javascript/mastodon/reducers/user_lists.js b/app/javascript/mastodon/reducers/user_lists.js index 7a4c04c5c7..466bfe54d6 100644 --- a/app/javascript/mastodon/reducers/user_lists.js +++ b/app/javascript/mastodon/reducers/user_lists.js @@ -5,9 +5,7 @@ import { fetchDirectory } from 'mastodon/actions/directory'; import { - FEATURED_TAGS_FETCH_REQUEST, - FEATURED_TAGS_FETCH_SUCCESS, - FEATURED_TAGS_FETCH_FAIL, + fetchFeaturedTags } from 'mastodon/actions/featured_tags'; import { @@ -31,6 +29,7 @@ import { FOLLOW_REQUESTS_EXPAND_FAIL, authorizeFollowRequestSuccess, rejectFollowRequestSuccess, + fetchEndorsedAccounts, } from '../actions/accounts'; import { BLOCKS_FETCH_REQUEST, @@ -191,21 +190,27 @@ export default function userLists(state = initialState, action) { case MUTES_FETCH_FAIL: case MUTES_EXPAND_FAIL: return state.setIn(['mutes', 'isLoading'], false); - case FEATURED_TAGS_FETCH_SUCCESS: - return normalizeFeaturedTags(state, ['featured_tags', action.id], action.tags, action.id); - case FEATURED_TAGS_FETCH_REQUEST: - return state.setIn(['featured_tags', action.id, 'isLoading'], true); - case FEATURED_TAGS_FETCH_FAIL: - return state.setIn(['featured_tags', action.id, 'isLoading'], false); default: - if(fetchDirectory.fulfilled.match(action)) + if (fetchEndorsedAccounts.fulfilled.match(action)) + return normalizeList(state, ['featured_accounts', action.meta.arg.accountId], action.payload, undefined); + else if (fetchEndorsedAccounts.pending.match(action)) + return state.setIn(['featured_accounts', action.meta.arg.accountId, 'isLoading'], true); + else if (fetchEndorsedAccounts.rejected.match(action)) + return state.setIn(['featured_accounts', action.meta.arg.accountId, 'isLoading'], false); + else if (fetchFeaturedTags.fulfilled.match(action)) + return normalizeFeaturedTags(state, ['featured_tags', action.meta.arg.accountId], action.payload, action.meta.arg.accountId); + else if (fetchFeaturedTags.pending.match(action)) + return state.setIn(['featured_tags', action.meta.arg.accountId, 'isLoading'], true); + else if (fetchFeaturedTags.rejected.match(action)) + return state.setIn(['featured_tags', action.meta.arg.accountId, 'isLoading'], false); + else if (fetchDirectory.fulfilled.match(action)) return normalizeList(state, ['directory'], action.payload.accounts, undefined); - else if( expandDirectory.fulfilled.match(action)) + else if (expandDirectory.fulfilled.match(action)) return appendToList(state, ['directory'], action.payload.accounts, undefined); - else if(fetchDirectory.pending.match(action) || + else if (fetchDirectory.pending.match(action) || expandDirectory.pending.match(action)) return state.setIn(['directory', 'isLoading'], true); - else if(fetchDirectory.rejected.match(action) || + else if (fetchDirectory.rejected.match(action) || expandDirectory.rejected.match(action)) return state.setIn(['directory', 'isLoading'], false); else From a2310a06fab655392a588bbb4e029095e088fd8d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 29 Apr 2025 16:40:02 +0200 Subject: [PATCH 069/349] fix(deps): update dependency axios to v1.9.0 (#34547) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 33d4800b61..a636d78d03 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5440,13 +5440,13 @@ __metadata: linkType: hard "axios@npm:^1.4.0": - version: 1.8.4 - resolution: "axios@npm:1.8.4" + version: 1.9.0 + resolution: "axios@npm:1.9.0" dependencies: follow-redirects: "npm:^1.15.6" form-data: "npm:^4.0.0" proxy-from-env: "npm:^1.1.0" - checksum: 10c0/450993c2ba975ffccaf0d480b68839a3b2435a5469a71fa2fb0b8a55cdb2c2ae47e609360b9c1e2b2534b73dfd69e2733a1cf9f8215bee0bcd729b72f801b0ce + checksum: 10c0/9371a56886c2e43e4ff5647b5c2c3c046ed0a3d13482ef1d0135b994a628c41fbad459796f101c655e62f0c161d03883454474d2e435b2e021b1924d9f24994c languageName: node linkType: hard From 64ab9be93f3bbb2399000c88e396429bc2f9c247 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 30 Apr 2025 09:31:08 +0200 Subject: [PATCH 070/349] New Crowdin Translations (automated) (#34580) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/ca.json | 3 +++ app/javascript/mastodon/locales/cs.json | 1 + app/javascript/mastodon/locales/da.json | 2 ++ app/javascript/mastodon/locales/de.json | 1 + app/javascript/mastodon/locales/es-AR.json | 1 + app/javascript/mastodon/locales/es-MX.json | 3 +++ app/javascript/mastodon/locales/es.json | 3 +++ app/javascript/mastodon/locales/fi.json | 1 + app/javascript/mastodon/locales/fo.json | 1 + app/javascript/mastodon/locales/gl.json | 1 + app/javascript/mastodon/locales/he.json | 1 + app/javascript/mastodon/locales/ia.json | 19 +++++++++++++++++++ app/javascript/mastodon/locales/is.json | 1 + app/javascript/mastodon/locales/ko.json | 2 +- app/javascript/mastodon/locales/nl.json | 1 + app/javascript/mastodon/locales/pt-PT.json | 2 ++ app/javascript/mastodon/locales/ru.json | 1 - app/javascript/mastodon/locales/sq.json | 1 + app/javascript/mastodon/locales/tr.json | 1 + app/javascript/mastodon/locales/vi.json | 1 + app/javascript/mastodon/locales/zh-TW.json | 1 + config/locales/lt.yml | 1 + 22 files changed, 47 insertions(+), 2 deletions(-) diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 26dd71b8ab..30edd60606 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Notifica'm els tuts de @{name}", "account.endorse": "Recomana en el perfil", "account.featured": "Destacat", + "account.featured.accounts": "Perfils", "account.featured.hashtags": "Etiquetes", "account.featured.posts": "Publicacions", "account.featured_tags.last_status_at": "Darrer tut el {date}", @@ -405,8 +406,10 @@ "hashtag.counter_by_accounts": "{count, plural, one {{counter} participant} other {{counter} participants}}", "hashtag.counter_by_uses": "{count, plural, one {{counter} tut} other {{counter} tuts}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} tut} other {{counter} tuts}} avui", + "hashtag.feature": "Destaca al perfil", "hashtag.follow": "Segueix l'etiqueta", "hashtag.mute": "Silencia #{hashtag}", + "hashtag.unfeature": "No destaquis al perfil", "hashtag.unfollow": "Deixa de seguir l'etiqueta", "hashtags.and_other": "…i {count, plural, other {# més}}", "hints.profiles.followers_may_be_missing": "Es poden haver perdut seguidors d'aquest perfil.", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index ca7de5deb1..1e8037dff3 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Oznamovat mi příspěvky @{name}", "account.endorse": "Zvýraznit na profilu", "account.featured": "Zvýrazněné", + "account.featured.accounts": "Profily", "account.featured.hashtags": "Hashtagy", "account.featured.posts": "Příspěvky", "account.featured_tags.last_status_at": "Poslední příspěvek {date}", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 578722a035..cd4bb8f223 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -405,8 +405,10 @@ "hashtag.counter_by_accounts": "{count, plural, one {{counter} deltager} other {{counter} deltagere}}", "hashtag.counter_by_uses": "{count, plural, one {{counter} indlæg} other {{counter} indlæg}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} indlæg} other {{counter} indlæg}} i dag", + "hashtag.feature": "Fremhæv på profil", "hashtag.follow": "Følg etiket", "hashtag.mute": "Tavsgør #{hashtag}", + "hashtag.unfeature": "Fremhæv ikke på profil", "hashtag.unfollow": "Stop med at følge etiket", "hashtags.and_other": "…og {count, plural, one {}other {# flere}}", "hints.profiles.followers_may_be_missing": "Der kan mangle følgere for denne profil.", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 964f760118..7eadf7e15c 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Benachrichtige mich wenn @{name} etwas postet", "account.endorse": "Im Profil vorstellen", "account.featured": "Vorgestellt", + "account.featured.accounts": "Profile", "account.featured.hashtags": "Hashtags", "account.featured.posts": "Beiträge", "account.featured_tags.last_status_at": "Letzter Beitrag am {date}", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index c7e22672a3..83011e0f29 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Notificarme cuando @{name} envíe mensajes", "account.endorse": "Destacar en el perfil", "account.featured": "Destacados", + "account.featured.accounts": "Perfiles", "account.featured.hashtags": "Etiquetas", "account.featured.posts": "Mensajes", "account.featured_tags.last_status_at": "Último mensaje: {date}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index 7b9a992a7f..43e9706a62 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Notificarme cuando @{name} publique algo", "account.endorse": "Destacar en mi perfil", "account.featured": "Destacado", + "account.featured.accounts": "Perfiles", "account.featured.hashtags": "Etiquetas", "account.featured.posts": "Publicaciones", "account.featured_tags.last_status_at": "Última publicación el {date}", @@ -405,8 +406,10 @@ "hashtag.counter_by_accounts": "{count, plural, one {{counter} participante} other {{counter} participantes}}", "hashtag.counter_by_uses": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}} hoy", + "hashtag.feature": "Destacar en el perfil", "hashtag.follow": "Seguir etiqueta", "hashtag.mute": "Silenciar #{hashtag}", + "hashtag.unfeature": "No destacar en el perfil", "hashtag.unfollow": "Dejar de seguir etiqueta", "hashtags.and_other": "…y {count, plural, other {# más}}", "hints.profiles.followers_may_be_missing": "Puede que no se muestren todos los seguidores de este perfil.", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 83798e6cf3..4b033ae181 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Notificarme cuando @{name} publique algo", "account.endorse": "Destacar en el perfil", "account.featured": "Destacado", + "account.featured.accounts": "Perfiles", "account.featured.hashtags": "Etiquetas", "account.featured.posts": "Publicaciones", "account.featured_tags.last_status_at": "Última publicación el {date}", @@ -405,8 +406,10 @@ "hashtag.counter_by_accounts": "{count, plural, one {{counter} participante} other {{counter} participantes}}", "hashtag.counter_by_uses": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}} hoy", + "hashtag.feature": "Destacar en el perfil", "hashtag.follow": "Seguir etiqueta", "hashtag.mute": "Silenciar #{hashtag}", + "hashtag.unfeature": "No destacar en el perfil", "hashtag.unfollow": "Dejar de seguir etiqueta", "hashtags.and_other": "…y {count, plural, other {# más}}", "hints.profiles.followers_may_be_missing": "Puede que no se muestren todos los seguidores de este perfil.", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 2d9fcb1c58..4f2f9d2a9f 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Ilmoita minulle, kun @{name} julkaisee", "account.endorse": "Suosittele profiilissa", "account.featured": "Suositellut", + "account.featured.accounts": "Profiilit", "account.featured.hashtags": "Aihetunnisteet", "account.featured.posts": "Julkaisut", "account.featured_tags.last_status_at": "Viimeisin julkaisu {date}", diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json index 7a1e65b1d8..efefbc752c 100644 --- a/app/javascript/mastodon/locales/fo.json +++ b/app/javascript/mastodon/locales/fo.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Boða mær frá, tá @{name} skrivar", "account.endorse": "Víst á vangamyndini", "account.featured": "Tikin fram", + "account.featured.accounts": "Vangar", "account.featured.hashtags": "Frámerki", "account.featured.posts": "Postar", "account.featured_tags.last_status_at": "Seinasta strongur skrivaður {date}", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index 3d1c2dfa8a..c527c8a7ca 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Noficarme cando @{name} publique", "account.endorse": "Amosar no perfil", "account.featured": "Destacado", + "account.featured.accounts": "Perfís", "account.featured.hashtags": "Cancelos", "account.featured.posts": "Publicacións", "account.featured_tags.last_status_at": "Última publicación o {date}", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index ae5e415b89..859dfd1e9d 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -29,6 +29,7 @@ "account.enable_notifications": "שלח לי התראות כש@{name} מפרסם", "account.endorse": "קדם את החשבון בפרופיל", "account.featured": "מומלץ", + "account.featured.accounts": "פרופילים", "account.featured.hashtags": "תגיות", "account.featured.posts": "הודעות", "account.featured_tags.last_status_at": "חצרוץ אחרון בתאריך {date}", diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json index 138dc713d4..1a3d36d83f 100644 --- a/app/javascript/mastodon/locales/ia.json +++ b/app/javascript/mastodon/locales/ia.json @@ -19,13 +19,19 @@ "account.block_domain": "Blocar dominio {domain}", "account.block_short": "Blocar", "account.blocked": "Blocate", + "account.blocking": "Blocate", "account.cancel_follow_request": "Cancellar sequimento", "account.copy": "Copiar ligamine a profilo", "account.direct": "Mentionar privatemente @{name}", "account.disable_notifications": "Non plus notificar me quando @{name} publica", + "account.domain_blocking": "Dominio blocate", "account.edit_profile": "Modificar profilo", "account.enable_notifications": "Notificar me quando @{name} publica", "account.endorse": "Evidentiar sur le profilo", + "account.featured": "In evidentia", + "account.featured.accounts": "Profilos", + "account.featured.hashtags": "Hashtags", + "account.featured.posts": "Messages", "account.featured_tags.last_status_at": "Ultime message publicate le {date}", "account.featured_tags.last_status_never": "Necun message", "account.follow": "Sequer", @@ -36,6 +42,7 @@ "account.following": "Sequente", "account.following_counter": "{count, plural, one {{counter} sequite} other {{counter} sequites}}", "account.follows.empty": "Iste usator non seque ancora alcuno.", + "account.follows_you": "Te seque", "account.go_to_profile": "Vader al profilo", "account.hide_reblogs": "Celar impulsos de @{name}", "account.in_memoriam": "In memoriam.", @@ -50,18 +57,23 @@ "account.mute_notifications_short": "Silentiar le notificationes", "account.mute_short": "Silentiar", "account.muted": "Silentiate", + "account.muting": "Silentiate", + "account.mutual": "Sequimento mutue", "account.no_bio": "Nulle description fornite.", "account.open_original_page": "Aperir le pagina original", "account.posts": "Messages", "account.posts_with_replies": "Messages e responsas", + "account.remove_from_followers": "Remover {name} del sequitores", "account.report": "Reportar @{name}", "account.requested": "Attendente le approbation. Clicca pro cancellar le requesta de sequer", "account.requested_follow": "{name} ha requestate de sequer te", + "account.requests_to_follow_you": "Requestas de sequer te", "account.share": "Compartir profilo de @{name}", "account.show_reblogs": "Monstrar impulsos de @{name}", "account.statuses_counter": "{count, plural, one {{counter} message} other {{counter} messages}}", "account.unblock": "Disblocar @{name}", "account.unblock_domain": "Disblocar dominio {domain}", + "account.unblock_domain_short": "Disblocar", "account.unblock_short": "Disblocar", "account.unendorse": "Non evidentiar sur le profilo", "account.unfollow": "Non plus sequer", @@ -157,6 +169,7 @@ "column.lists": "Listas", "column.mutes": "Usatores silentiate", "column.notifications": "Notificationes", + "column.pins": "Messages in evidentia", "column.public": "Chronologia federate", "column_back_button.label": "Retro", "column_header.hide_settings": "Celar le parametros", @@ -222,6 +235,9 @@ "confirmations.redraft.confirm": "Deler e rescriber", "confirmations.redraft.message": "Es tu secur de voler deler iste message e rescriber lo? Le favorites e le impulsos essera perdite, e le responsas al message original essera orphanate.", "confirmations.redraft.title": "Deler e rescriber le message?", + "confirmations.remove_from_followers.confirm": "Remover sequitor", + "confirmations.remove_from_followers.message": "{name} non plus te sequera. Es tu secur de voler continuar?", + "confirmations.remove_from_followers.title": "Remover sequitor?", "confirmations.reply.confirm": "Responder", "confirmations.reply.message": "Si tu responde ora, le message in curso de composition essera perdite. Es tu secur de voler continuar?", "confirmations.reply.title": "Superscriber le message?", @@ -289,6 +305,9 @@ "emoji_button.search_results": "Resultatos de recerca", "emoji_button.symbols": "Symbolos", "emoji_button.travel": "Viages e locos", + "empty_column.account_featured.me": "Tu non ha ancora mittite alcun cosa in evidentia. Sapeva tu que tu pote mitter in evidentia tu messages, le hashtags que tu usa le plus, e mesmo le contos de tu amicos sur tu profilo?", + "empty_column.account_featured.other": "{acct} non ha ancora mittite alcun cosa in evidentia. Sapeva tu que tu pote mitter in evidentia tu messages, le hashtags que tu usa le plus, e mesmo le contos de tu amicos sur tu profilo?", + "empty_column.account_featured_other.unknown": "Iste conto non ha ancora mittite alcun cosa in evidentia.", "empty_column.account_hides_collections": "Le usator non ha rendite iste information disponibile", "empty_column.account_suspended": "Conto suspendite", "empty_column.account_timeline": "Nulle messages hic!", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index bd0edadfab..3f3bf4e707 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Láta mig vita þegar @{name} sendir inn", "account.endorse": "Birta á notandasniði", "account.featured": "Með aukið vægi", + "account.featured.accounts": "Notendasnið", "account.featured.hashtags": "Myllumerki", "account.featured.posts": "Færslur", "account.featured_tags.last_status_at": "Síðasta færsla þann {date}", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 7f6a5590c7..039051959e 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -436,7 +436,7 @@ "ignore_notifications_modal.not_following_title": "내가 팔로우하지 않는 사람들의 알림을 무시할까요?", "ignore_notifications_modal.private_mentions_title": "요청하지 않은 개인 멘션 알림을 무시할까요?", "info_button.label": "도움말", - "info_button.what_is_alt_text": "

    대체 텍스트가 무었인가요?

    대체 텍스트는 저시력자, 낮은 인터넷 대역폭 사용자, 더 자세한 문맥을 위해 이미지에 대한 설명을 제공하는 것입니다.

    깔끔하고 간결하고 객관적인 대체 텍스트를 작성해 모두가 이해하기 쉽게 만들고 접근성이 높아질 수 있습니다.

    • 중요한 요소에 중점을 두세요
    • 이미지 안의 글자를 요약하세요
    • 정형화된 문장 구조를 사용하세요
    • 중복된 정보를 피하세요
    • 복잡한 시각자료(도표나 지도 같은)에선 추세와 주요 결과에 중점을 두세요
    ", + "info_button.what_is_alt_text": "

    대체 텍스트가 무엇인가요?

    대체 텍스트는 저시력자, 낮은 인터넷 대역폭 사용자, 더 자세한 문맥을 위해 이미지에 대한 설명을 제공하는 것입니다.

    깔끔하고 간결하고 객관적인 대체 텍스트를 작성해 모두가 이해하기 쉽게 만들고 접근성이 높아질 수 있습니다.

    • 중요한 요소에 중점을 두세요
    • 이미지 안의 글자를 요약하세요
    • 정형화된 문장 구조를 사용하세요
    • 중복된 정보를 피하세요
    • 복잡한 시각자료(도표나 지도 같은)에선 추세와 주요 결과에 중점을 두세요
    ", "interaction_modal.action.favourite": "계속하려면 내 계정으로 즐겨찾기해야 합니다.", "interaction_modal.action.follow": "계속하려면 내 계정으로 팔로우해야 합니다.", "interaction_modal.action.reblog": "계속하려면 내 계정으로 리블로그해야 합니다.", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index 49424203da..2fe9a8d784 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Geef een melding wanneer @{name} een bericht plaatst", "account.endorse": "Op profiel weergeven", "account.featured": "Uitgelicht", + "account.featured.accounts": "Profielen", "account.featured.hashtags": "Hashtags", "account.featured.posts": "Berichten", "account.featured_tags.last_status_at": "Laatste bericht op {date}", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 374037ff8a..da2762e3d4 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -386,7 +386,9 @@ "hashtag.counter_by_accounts": "{count, plural,one {{counter} participante} other {{counter} participantes}}", "hashtag.counter_by_uses": "{count, plural, one {{counter} publicação} other {{counter} publicações}}", "hashtag.counter_by_uses_today": "{count, plural, one {{counter} publicação} other {{counter} publicações}} hoje", + "hashtag.feature": "Destacar no perfil", "hashtag.follow": "Seguir #etiqueta", + "hashtag.unfeature": "Não destacar no perfil", "hashtag.unfollow": "Deixar de seguir #etiqueta", "hashtags.and_other": "…e {count, plural, other {mais #}}", "hints.profiles.followers_may_be_missing": "É possível que não estejam a ser mostrados todos os seguidores deste perfil.", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index 888ddf7e34..d3a459eb23 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -603,7 +603,6 @@ "notification.poll": "Опрос, в котором вы приняли участие, завершился", "notification.reblog": "{name} продвинул(а) ваш пост", "notification.reblog.name_and_others_with_link": "{name} и ещё
    {count, plural, one {# пользователь} few {# пользователя} other {# пользователей}} продвинули ваш пост", - "notification.relationships_severance_event": "Потеряно соединение с {name}", "notification.relationships_severance_event.account_suspension": "Администратор {from} заблокировал {target}, что означает, что вы больше не сможете получать обновления от них или взаймодествовать с ними.", "notification.relationships_severance_event.domain_block": "Администратор {from} заблокировал {target} включая {followersCount} ваших подписчиков и {followingCount, plural, one {# аккаунт} few {# аккаунта} other {# аккаунтов}}, на которые вы подписаны.", "notification.relationships_severance_event.learn_more": "Узнать больше", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index b1213e671b..50c5f15796 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Njoftomë, kur poston @{name}", "account.endorse": "Pasqyrojeni në profil", "account.featured": "Të zgjedhur", + "account.featured.accounts": "Profile", "account.featured.hashtags": "Hashtag-ë", "account.featured.posts": "Postime", "account.featured_tags.last_status_at": "Postimi i fundit më {date}", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index e446536b0f..d2da1f7751 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -29,6 +29,7 @@ "account.enable_notifications": "@{name} kişisinin gönderi bildirimlerini aç", "account.endorse": "Profilimde öne çıkar", "account.featured": "Öne çıkan", + "account.featured.accounts": "Profiller", "account.featured.hashtags": "Etiketler", "account.featured.posts": "Gönderiler", "account.featured_tags.last_status_at": "Son gönderinin tarihi {date}", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index 49728cbc45..0bb31dcb99 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Nhận thông báo khi @{name} đăng tút", "account.endorse": "Tôn vinh người này", "account.featured": "Nêu bật", + "account.featured.accounts": "Mọi người", "account.featured.hashtags": "Hashtag", "account.featured.posts": "Tút", "account.featured_tags.last_status_at": "Tút gần nhất {date}", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index dca17e76c3..3021727955 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -29,6 +29,7 @@ "account.enable_notifications": "當 @{name} 嘟文時通知我", "account.endorse": "於個人檔案推薦對方", "account.featured": "精選內容", + "account.featured.accounts": "個人檔案", "account.featured.hashtags": "主題標籤", "account.featured.posts": "嘟文", "account.featured_tags.last_status_at": "上次嘟文於 {date}", diff --git a/config/locales/lt.yml b/config/locales/lt.yml index a8d30cf873..056570f7b5 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -304,6 +304,7 @@ lt: create: Sukurti skelbimą title: Naujas skelbimas preview: + disclaimer: Kadangi naudotojai negali jų atsisakyti, el. pašto pranešimai turėtų būti siunčiami tik svarbiems pranešimams, pavyzdžiui, asmeninių duomenų pažeidimo ar serverio uždarymo pranešimams. explanation_html: 'El. laiškas bus išsiųstas %{display_count} naudotojams. Į el. laišką bus įtrauktas toliau nurodytas tekstas:' title: Peržiūrėti skelbimo pranešimą publish: Skelbti From 05f6f7d28a5d9f2d672c0bd593c0a75c9d64fe24 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 30 Apr 2025 09:50:13 +0200 Subject: [PATCH 071/349] fix(deps): update dependency core-js to v3.42.0 (#34577) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index a636d78d03..fb65f06a81 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6678,9 +6678,9 @@ __metadata: linkType: hard "core-js@npm:^3.30.2": - version: 3.41.0 - resolution: "core-js@npm:3.41.0" - checksum: 10c0/a29ed0b7fe81acf49d04ce5c17a1947166b1c15197327a5d12f95bbe84b46d60c3c13de701d808f41da06fa316285f3f55ce5903abc8d5642afc1eac4457afc8 + version: 3.42.0 + resolution: "core-js@npm:3.42.0" + checksum: 10c0/2913d3d5452d54ad92f058d66046782d608c05e037bcc523aab79c04454fe640998f94e6011292969d66dfa472f398b085ce843dcb362056532a5799c627184e languageName: node linkType: hard From e3f0b955b8bc47eb4b3a81d2a896fbc473dc3b0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Rzucid=C5=82o?= Date: Wed, 30 Apr 2025 14:27:37 +0200 Subject: [PATCH 072/349] Fix directory scroll position reset (#34560) --- app/javascript/mastodon/components/load_more.tsx | 12 ++++++++++-- app/javascript/mastodon/features/directory/index.tsx | 9 +++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/javascript/mastodon/components/load_more.tsx b/app/javascript/mastodon/components/load_more.tsx index 8b5746ad30..aee235bb09 100644 --- a/app/javascript/mastodon/components/load_more.tsx +++ b/app/javascript/mastodon/components/load_more.tsx @@ -1,24 +1,32 @@ import { FormattedMessage } from 'react-intl'; +import { LoadingIndicator } from './loading_indicator'; + interface Props { onClick: (event: React.MouseEvent) => void; disabled?: boolean; visible?: boolean; + loading?: boolean; } export const LoadMore: React.FC = ({ onClick, disabled, visible = true, + loading = false, }) => { return ( ); }; diff --git a/app/javascript/mastodon/features/directory/index.tsx b/app/javascript/mastodon/features/directory/index.tsx index 1374f99235..a29febcd1a 100644 --- a/app/javascript/mastodon/features/directory/index.tsx +++ b/app/javascript/mastodon/features/directory/index.tsx @@ -130,6 +130,7 @@ export const Directory: React.FC<{ }, [dispatch, order, local]); const pinned = !!columnId; + const initialLoad = isLoading && accountIds.size === 0; const scrollableArea = (
    @@ -170,7 +171,7 @@ export const Directory: React.FC<{
    - {isLoading ? ( + {initialLoad ? ( ) : ( accountIds.map((accountId) => ( @@ -179,7 +180,11 @@ export const Directory: React.FC<{ )}
    - +
    ); From 4354f84c5c824084200c926dff5d3f58a5f23227 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Fri, 2 May 2025 02:33:20 -0400 Subject: [PATCH 073/349] Update `rspec-rails` to version 8.0.0 (#34588) --- Gemfile | 2 +- Gemfile.lock | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Gemfile b/Gemfile index b55ec1d730..44c4c9a54d 100644 --- a/Gemfile +++ b/Gemfile @@ -212,7 +212,7 @@ group :development, :test do gem 'test-prof', require: false # RSpec runner for rails - gem 'rspec-rails', '~> 7.0' + gem 'rspec-rails', '~> 8.0' end group :production do diff --git a/Gemfile.lock b/Gemfile.lock index e9cdfa2e7d..8f5d3b021c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -435,7 +435,7 @@ GEM mutex_m (0.3.0) net-http (0.6.0) uri - net-imap (0.5.6) + net-imap (0.5.8) date net-protocol net-ldap (0.19.0) @@ -721,18 +721,18 @@ GEM rspec-mocks (~> 3.13.0) rspec-core (3.13.3) rspec-support (~> 3.13.0) - rspec-expectations (3.13.3) + rspec-expectations (3.13.4) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-github (3.0.0) rspec-core (~> 3.0) - rspec-mocks (3.13.2) + rspec-mocks (3.13.3) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-rails (7.1.1) - actionpack (>= 7.0) - activesupport (>= 7.0) - railties (>= 7.0) + rspec-rails (8.0.0) + actionpack (>= 7.2) + activesupport (>= 7.2) + railties (>= 7.2) rspec-core (~> 3.13) rspec-expectations (~> 3.13) rspec-mocks (~> 3.13) @@ -742,7 +742,7 @@ GEM rspec-expectations (~> 3.0) rspec-mocks (~> 3.0) sidekiq (>= 5, < 9) - rspec-support (3.13.2) + rspec-support (3.13.3) rubocop (1.75.4) json (~> 2.3) language_server-protocol (~> 3.17.0.2) @@ -842,7 +842,7 @@ GEM base64 stoplight (4.1.1) redlock (~> 1.0) - stringio (3.1.6) + stringio (3.1.7) strong_migrations (2.3.0) activerecord (>= 7) swd (2.0.3) @@ -1045,7 +1045,7 @@ DEPENDENCIES redis-namespace (~> 1.10) rqrcode (~> 3.0) rspec-github (~> 3.0) - rspec-rails (~> 7.0) + rspec-rails (~> 8.0) rspec-sidekiq (~> 5.0) rubocop rubocop-capybara From 94fa5b7168c4dd28ddbffaf6bba305169a11b3e9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 2 May 2025 08:59:30 +0200 Subject: [PATCH 074/349] New Crowdin Translations (automated) (#34587) Co-authored-by: GitHub Actions --- app/javascript/mastodon/locales/da.json | 1 + app/javascript/mastodon/locales/de.json | 12 ++++++------ app/javascript/mastodon/locales/es.json | 2 +- app/javascript/mastodon/locales/kab.json | 5 +++++ app/javascript/mastodon/locales/ko.json | 1 + app/javascript/mastodon/locales/lv.json | 3 +++ app/javascript/mastodon/locales/nn.json | 12 +++++++++--- app/javascript/mastodon/locales/uk.json | 1 + app/javascript/mastodon/locales/zh-TW.json | 2 +- config/locales/kab.yml | 6 ++++++ config/locales/nn.yml | 8 +++++--- config/locales/zh-TW.yml | 2 +- 12 files changed, 40 insertions(+), 15 deletions(-) diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index cd4bb8f223..143734a38c 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Advisér mig, når @{name} poster", "account.endorse": "Fremhæv på profil", "account.featured": "Fremhævet", + "account.featured.accounts": "Profiler", "account.featured.hashtags": "Hashtags", "account.featured.posts": "Indlæg", "account.featured_tags.last_status_at": "Seneste indlæg {date}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 7eadf7e15c..cf6f4786e7 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -429,7 +429,7 @@ "home.show_announcements": "Ankündigungen anzeigen", "ignore_notifications_modal.disclaimer": "Mastodon kann anderen Nutzer*innen nicht mitteilen, dass du deren Benachrichtigungen ignorierst. Das Ignorieren von Benachrichtigungen wird nicht das Absenden der Nachricht selbst unterbinden.", "ignore_notifications_modal.filter_instead": "Stattdessen filtern", - "ignore_notifications_modal.filter_to_act_users": "Du wirst weiterhin die Möglichkeit haben, andere Nutzer*innen zu genehmigen, abzulehnen oder zu melden", + "ignore_notifications_modal.filter_to_act_users": "Du wirst weiterhin die Möglichkeit haben, andere Nutzer*innen zu akzeptieren, abzulehnen oder zu melden", "ignore_notifications_modal.filter_to_avoid_confusion": "Filtern hilft, mögliches Durcheinander zu vermeiden", "ignore_notifications_modal.filter_to_review_separately": "Gefilterte Benachrichtigungen können separat überprüft werden", "ignore_notifications_modal.ignore": "Benachrichtigungen ignorieren", @@ -613,11 +613,11 @@ "notification.relationships_severance_event.user_domain_block": "Du hast {target} blockiert – {followersCount} deiner Follower und {followingCount, plural, one {# Konto, dem} other {# Konten, denen}} du folgst, wurden entfernt.", "notification.status": "{name} postete …", "notification.update": "{name} bearbeitete einen Beitrag", - "notification_requests.accept": "Genehmigen", - "notification_requests.accept_multiple": "{count, plural, one {# Anfrage genehmigen …} other {# Anfragen genehmigen …}}", - "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Anfrage genehmigen} other {Anfragen genehmigen}}", - "notification_requests.confirm_accept_multiple.message": "Du bist dabei, {{count, plural, one {eine Benachrichtigungsanfrage} other {# Benachrichtigungsanfragen}} zu genehmigen. Möchtest du wirklich fortfahren?", - "notification_requests.confirm_accept_multiple.title": "Benachrichtigungsanfragen genehmigen?", + "notification_requests.accept": "Akzeptieren", + "notification_requests.accept_multiple": "{count, plural, one {# Anfrage akzeptieren …} other {# Anfragen akzeptieren …}}", + "notification_requests.confirm_accept_multiple.button": "{count, plural, one {Anfrage akzeptieren} other {Anfragen akzeptieren}}", + "notification_requests.confirm_accept_multiple.message": "Du bist dabei, {{count, plural, one {eine Benachrichtigungsanfrage} other {# Benachrichtigungsanfragen}} zu akzeptieren. Möchtest du wirklich fortfahren?", + "notification_requests.confirm_accept_multiple.title": "Benachrichtigungsanfragen akzeptieren?", "notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Anfrage ablehnen} other {Anfragen ablehnen}}", "notification_requests.confirm_dismiss_multiple.message": "Du bist dabei, {count, plural, one {eine Benachrichtigungsanfrage} other {# Benachrichtigungsanfragen}} abzulehnen. Du wirst nicht mehr ohne Weiteres auf {count, plural, one {sie} other {sie}} zugreifen können. Möchtest du wirklich fortfahren?", "notification_requests.confirm_dismiss_multiple.title": "Benachrichtigungsanfragen ablehnen?", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 4b033ae181..9116c04360 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -584,7 +584,7 @@ "notification.favourite_pm": "{name} ha marcado como favorita tu mención privada", "notification.favourite_pm.name_and_others_with_link": "{name} y {count, plural, one {# más} other {# más}} han marcado como favorita tu mención privada", "notification.follow": "{name} te empezó a seguir", - "notification.follow.name_and_others": "{name} y {count, plural, one {# otro} other {# otros}} te siguieron", + "notification.follow.name_and_others": "{name} y {count, plural, one {# otro} other {otros #}} te siguieron", "notification.follow_request": "{name} ha solicitado seguirte", "notification.follow_request.name_and_others": "{name} y {count, plural, one {# más} other {# más}} han solicitado seguirte", "notification.label.mention": "Mención", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index 3757fdabaf..a8fc8b015c 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -24,6 +24,7 @@ "account.edit_profile": "Ẓreg amaɣnu", "account.enable_notifications": "Azen-iyi-d ilɣa mi ara d-isuffeɣ @{name}", "account.endorse": "Welleh fell-as deg umaɣnu-inek", + "account.featured.accounts": "Imeɣna", "account.featured.hashtags": "Ihacṭagen", "account.featured.posts": "Tisuffaɣ", "account.featured_tags.last_status_at": "Tasuffeɣt taneggarut ass n {date}", @@ -36,6 +37,7 @@ "account.following": "Yeṭṭafaṛ", "account.following_counter": "{count, plural, one {{counter} yettwaḍfaren} other {{counter} yettwaḍfaren}}", "account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.", + "account.follows_you": "Yeṭṭafaṛ-ik·em-id", "account.go_to_profile": "Ddu ɣer umaɣnu", "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}", "account.joined_short": "Izeddi da seg ass n", @@ -415,6 +417,7 @@ "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.", "notification.admin.report": "Yemla-t-id {name} {target}", "notification.admin.sign_up": "Ijerred {name}", + "notification.annual_report.view": "Wali #Wrapstodon", "notification.favourite": "{name} yesmenyaf addad-ik·im", "notification.follow": "iṭṭafar-ik·em-id {name}", "notification.follow.name_and_others": "{name} akked {count, plural, one {# nniḍen} other {# nniḍen}} iḍfeṛ-k·m-id", @@ -466,6 +469,7 @@ "notifications.group": "{count} n yilɣa", "notifications.mark_as_read": "Creḍ akk ilɣa am wakken ttwaɣran", "notifications.permission_denied": "D awezɣi ad yili wermad n yilɣa n tnarit axateṛ turagt tettwagdel", + "notifications.policy.accept": "Qbel", "notifications.policy.drop": "Anef-as", "notifications.policy.filter": "Sizdeg", "notifications.policy.filter_new_accounts.hint": "Imiḍanen imaynuten i d-yennulfan deg {days, plural, one {yiwen n wass} other {# n wussan}} yezrin", @@ -580,6 +584,7 @@ "search_results.all": "Akk", "search_results.hashtags": "Ihacṭagen", "search_results.no_results": "Ulac igemmaḍ.", + "search_results.no_search_yet": "Ɛreḍ ad d-tnadiḍ ɣef iznan, imaɣnuten neɣ ihacṭagen.", "search_results.see_all": "Wali-ten akk", "search_results.statuses": "Tisuffaɣ", "search_results.title": "Igemmaḍ n unadi ɣef \"{q}\"", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 039051959e..4e60a84016 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -29,6 +29,7 @@ "account.enable_notifications": "@{name} 의 게시물 알림 켜기", "account.endorse": "프로필에 추천하기", "account.featured": "추천", + "account.featured.accounts": "프로필", "account.featured.hashtags": "해시태그", "account.featured.posts": "게시물", "account.featured_tags.last_status_at": "{date}에 마지막으로 게시", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index 8625eaa4e7..0c164fa765 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -26,6 +26,7 @@ "account.edit_profile": "Labot profilu", "account.enable_notifications": "Paziņot man, kad @{name} izveido ierakstu", "account.endorse": "Izcelts profilā", + "account.featured.accounts": "Profili", "account.featured.hashtags": "Tēmturi", "account.featured.posts": "Ieraksti", "account.featured_tags.last_status_at": "Pēdējais ieraksts {date}", @@ -369,7 +370,9 @@ "hashtag.counter_by_accounts": "{count, plural, zero{{counter} dalībnieku} one {{counter} dalībnieks} other {{counter} dalībnieki}}", "hashtag.counter_by_uses": "{count, plural, zero {{counter} ierakstu} one {{counter} ieraksts} other {{counter} ieraksti}}", "hashtag.counter_by_uses_today": "{count, plural, zero {{counter} ierakstu} one {{counter} ieraksts} other {{counter} ieraksti}} šodien", + "hashtag.feature": "Attēlot profilā", "hashtag.follow": "Sekot tēmturim", + "hashtag.unfeature": "Neattēlot profilā", "hashtag.unfollow": "Pārstāt sekot tēmturim", "hashtags.and_other": "… un {count, plural, other {vēl #}}", "hints.profiles.see_more_followers": "Skatīt vairāk sekotāju {domain}", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 1c5c645ff6..ab37b0fe27 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -29,6 +29,7 @@ "account.enable_notifications": "Varsle meg når @{name} skriv innlegg", "account.endorse": "Vis på profilen", "account.featured": "Utvald", + "account.featured.accounts": "Profilar", "account.featured.hashtags": "Emneknaggar", "account.featured.posts": "Innlegg", "account.featured_tags.last_status_at": "Sist nytta {date}", @@ -168,6 +169,7 @@ "column.lists": "Lister", "column.mutes": "Målbundne brukarar", "column.notifications": "Varsel", + "column.pins": "Utvalde innlegg", "column.public": "Samla tidsline", "column_back_button.label": "Attende", "column_header.hide_settings": "Gøym innstillingane", @@ -303,9 +305,9 @@ "emoji_button.search_results": "Søkeresultat", "emoji_button.symbols": "Symbol", "emoji_button.travel": "Reise & stader", - "empty_column.account_featured.me": "Du har ikkje framheva noko enno. Visste du at du kan framheva innlegg, merkelappar du bruker mykje, og til og med venekontoar på profilen din?", - "empty_column.account_featured.other": "{acct} har ikkje framheva noko enno. Visste du at du kan framheva innlegg, merkelappar du bruker mykje, og til og med venekontoar på profilen din?", - "empty_column.account_featured_other.unknown": "Denne kontoen har ikkje framheva noko enno.", + "empty_column.account_featured.me": "Du har ikkje valt ut noko enno. Visste du at du kan velja ut innlegg, merkelappar du bruker mykje, og til og med venekontoar på profilen din?", + "empty_column.account_featured.other": "{acct} har ikkje valt ut noko enno. Visste du at du kan velja ut innlegg, merkelappar du bruker mykje, og til og med venekontoar på profilen din?", + "empty_column.account_featured_other.unknown": "Denne kontoen har ikkje valt ut noko enno.", "empty_column.account_hides_collections": "Denne brukaren har valt å ikkje gjere denne informasjonen tilgjengeleg", "empty_column.account_suspended": "Kontoen er utestengd", "empty_column.account_timeline": "Ingen tut her!", @@ -478,6 +480,7 @@ "keyboard_shortcuts.my_profile": "Opne profilen din", "keyboard_shortcuts.notifications": "Opne varselkolonna", "keyboard_shortcuts.open_media": "Opne media", + "keyboard_shortcuts.pinned": "Opne lista over utvalde innlegg", "keyboard_shortcuts.profile": "Opne forfattaren sin profil", "keyboard_shortcuts.reply": "Svar på innlegg", "keyboard_shortcuts.requests": "Opne lista med fylgjeførespurnader", @@ -561,6 +564,7 @@ "navigation_bar.mutes": "Målbundne brukarar", "navigation_bar.opened_in_classic_interface": "Innlegg, kontoar, og enkelte andre sider blir opna som standard i det klassiske webgrensesnittet.", "navigation_bar.personal": "Personleg", + "navigation_bar.pins": "Utvalde innlegg", "navigation_bar.preferences": "Innstillingar", "navigation_bar.public_timeline": "Føderert tidsline", "navigation_bar.search": "Søk", @@ -856,6 +860,7 @@ "status.mute": "Demp @{name}", "status.mute_conversation": "Demp samtale", "status.open": "Utvid denne statusen", + "status.pin": "Vis på profilen", "status.read_more": "Les meir", "status.reblog": "Framhev", "status.reblog_private": "Framhev til dei originale mottakarane", @@ -880,6 +885,7 @@ "status.translated_from_with": "Omsett frå {lang} ved bruk av {provider}", "status.uncached_media_warning": "Førehandsvisning er ikkje tilgjengeleg", "status.unmute_conversation": "Opphev demping av samtalen", + "status.unpin": "Ikkje vis på profilen", "subscribed_languages.lead": "Kun innlegg på valde språk vil bli dukke opp i heimestraumen din og i listene dine etter denne endringa. For å motta innlegg på alle språk, la vere å velje nokon.", "subscribed_languages.save": "Lagre endringar", "subscribed_languages.target": "Endre abonnerte språk for {target}", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index e97f9dc918..ff3ff3dab8 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -27,6 +27,7 @@ "account.enable_notifications": "Повідомляти мене про дописи @{name}", "account.endorse": "Рекомендувати у моєму профілі", "account.featured": "Рекомендоване", + "account.featured.accounts": "Профілі", "account.featured.hashtags": "Хештеги", "account.featured.posts": "Дописи", "account.featured_tags.last_status_at": "Останній допис {date}", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 3021727955..257cf5b599 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -528,7 +528,7 @@ "lists.replies_policy.none": "沒有人", "lists.save": "儲存", "lists.search": "搜尋", - "lists.show_replies_to": "包含來自列表成員的回覆到", + "lists.show_replies_to": "包含來自列表成員的回覆至", "load_pending": "{count, plural, other {# 個新項目}}", "loading_indicator.label": "正在載入...", "media_gallery.hide": "隱藏", diff --git a/config/locales/kab.yml b/config/locales/kab.yml index bc13fc56b5..4860655c90 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -275,6 +275,10 @@ kab: ip: Tansa IP providers: delete: Kkes + name: Isem + providers: Asaǧǧaw + registrations: + confirm: Sentem save: Sekles title: FASP follow_recommendations: @@ -387,6 +391,7 @@ kab: everyone: Tisirag timezwura privileges: administrator: Anedbal + manage_settings: Asefrek n iɣewwaṛen view_dashboard: Timẓriwt n tfelwit rules: add_new: Rnu alugen @@ -451,6 +456,7 @@ kab: changelog: Amaynut draft: Arewway history: Amazray + live: Srid publish: Asuffeɣ save_draft: Sekles arewway title: Tiwtilin n useqdec diff --git a/config/locales/nn.yml b/config/locales/nn.yml index 30ddcaeb6a..363b9d4e0a 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -903,6 +903,8 @@ nn: system_checks: database_schema_check: message_html: Det venter på databaseoverføringer. Vennligst kjør disse for å sikre at applikasjonen oppfører seg som forventet + elasticsearch_analysis_index_mismatch: + message_html: Indeksanalyseinnstillingane til Elasticsearch er utdaterte. Køyr tootctl search deploy --only-mapping --only=%{value} elasticsearch_health_red: message_html: Elasticsearch-klynga er usunn (raud status), og søkjefunksjonane er utilgjengelege elasticsearch_health_yellow: @@ -1367,8 +1369,8 @@ nn: featured_tags: add_new: Legg til ny errors: - limit: Du har allereie framheva så mange emneknaggar som det går an å gjera - hint_html: "Hva er utvalgte emneknagger? De vises frem tydelig på din offentlige profil, og lar folk bla i dine offentlige innlegg som spesifikt har de emneknaggene. De er et bra verktøy for å holde styr på kreative verk eller langtidsprosjekter." + limit: Du har allereie valt ut så mange emneknaggar som det går an å gjera + hint_html: "Vel ut dei viktigaste emneknaggane på profilen din. Utvalde emneknaggar er eit flott verkty for å halda oversikt over kreativt arbeid og langtidsprosjekt. Dei er lette å sjå på profilen din, og gjev deg rask tilgang til dine eigne innlegg." filters: contexts: account: Profiler @@ -1805,7 +1807,7 @@ nn: development: Utvikling edit_profile: Endr profil export: Eksporter - featured_tags: Utvalgte emneknagger + featured_tags: Utvalde emneknaggar import: Hent inn import_and_export: Importer og eksporter migrate: Kontoflytting diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 8281ae8dc1..eddb113ed3 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1628,7 +1628,7 @@ zh-TW: thousand: K trillion: T otp_authentication: - code_hint: 請輸入您驗證應用程式所產生的代碼以確認 + code_hint: 請輸入您驗證應用程式所產生之 token 以確認 description_html: 若您啟用使用驗證應用程式的兩階段驗證,您每次登入都需要輸入由您的手機所產生之 Token。 enable: 啟用 instructions_html: "請用您手機上的 Google Authenticator 或類似的 TOTP 應用程式掃描此 QR code。從現在開始,該應用程式將會產生您每次登入都必須輸入的 token。" From 24c25ec4f503eb1b27b4e417d15ea62b5b9ee9fb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 2 May 2025 16:45:49 +0200 Subject: [PATCH 075/349] fix(deps): update babel monorepo to v7.27.1 (#34592) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 1278 ++++++++++++++++++++++++++--------------------------- 1 file changed, 633 insertions(+), 645 deletions(-) diff --git a/yarn.lock b/yarn.lock index fb65f06a81..530c93fcb1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -55,119 +55,119 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.26.2": - version: 7.26.2 - resolution: "@babel/code-frame@npm:7.26.2" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/code-frame@npm:7.27.1" dependencies: - "@babel/helper-validator-identifier": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.27.1" js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 10c0/7d79621a6849183c415486af99b1a20b84737e8c11cd55b6544f688c51ce1fd710e6d869c3dd21232023da272a79b91efb3e83b5bc2dc65c1187c5fcd1b72ea8 + picocolors: "npm:^1.1.1" + checksum: 10c0/5dd9a18baa5fce4741ba729acc3a3272c49c25cb8736c4b18e113099520e7ef7b545a4096a26d600e4416157e63e87d66db46aa3fbf0a5f2286da2705c12da00 languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.26.5, @babel/compat-data@npm:^7.26.8": - version: 7.26.8 - resolution: "@babel/compat-data@npm:7.26.8" - checksum: 10c0/66408a0388c3457fff1c2f6c3a061278dd7b3d2f0455ea29bb7b187fa52c60ae8b4054b3c0a184e21e45f0eaac63cf390737bc7504d1f4a088a6e7f652c068ca +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/compat-data@npm:7.27.1" + checksum: 10c0/03e3a01b6772858dc5064f332ad4dc16fbbc0353f2180fd663a2651e8305058e35b6db57114e345d925def9b73cd7a322e95a45913428b8db705a098fd3dd289 languageName: node linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.22.1, @babel/core@npm:^7.24.4, @babel/core@npm:^7.26.10": - version: 7.26.10 - resolution: "@babel/core@npm:7.26.10" + version: 7.27.1 + resolution: "@babel/core@npm:7.27.1" dependencies: "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.26.2" - "@babel/generator": "npm:^7.26.10" - "@babel/helper-compilation-targets": "npm:^7.26.5" - "@babel/helper-module-transforms": "npm:^7.26.0" - "@babel/helpers": "npm:^7.26.10" - "@babel/parser": "npm:^7.26.10" - "@babel/template": "npm:^7.26.9" - "@babel/traverse": "npm:^7.26.10" - "@babel/types": "npm:^7.26.10" + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.27.1" + "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helpers": "npm:^7.27.1" + "@babel/parser": "npm:^7.27.1" + "@babel/template": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/e046e0e988ab53841b512ee9d263ca409f6c46e2a999fe53024688b92db394346fa3aeae5ea0866331f62133982eee05a675d22922a4603c3f603aa09a581d62 + checksum: 10c0/0fc31f87f5401ac5d375528cb009f4ea5527fc8c5bb5b64b5b22c033b60fd0ad723388933a5f3f5db14e1edd13c958e9dd7e5c68f9b68c767aeb496199c8a4bb languageName: node linkType: hard -"@babel/generator@npm:^7.26.10, @babel/generator@npm:^7.27.0, @babel/generator@npm:^7.7.2": - version: 7.27.0 - resolution: "@babel/generator@npm:7.27.0" +"@babel/generator@npm:^7.27.1, @babel/generator@npm:^7.7.2": + version: 7.27.1 + resolution: "@babel/generator@npm:7.27.1" dependencies: - "@babel/parser": "npm:^7.27.0" - "@babel/types": "npm:^7.27.0" + "@babel/parser": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" jsesc: "npm:^3.0.2" - checksum: 10c0/7cb10693d2b365c278f109a745dc08856cae139d262748b77b70ce1d97da84627f79648cab6940d847392c0e5d180441669ed958b3aee98d9c7d274b37c553bd + checksum: 10c0/c4156434b21818f558ebd93ce45f027c53ee570ce55a84fd2d9ba45a79ad204c17e0bff753c886fb6c07df3385445a9e34dc7ccb070d0ac7e80bb91c8b57f423 languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-annotate-as-pure@npm:7.25.9" +"@babel/helper-annotate-as-pure@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-annotate-as-pure@npm:7.27.1" dependencies: - "@babel/types": "npm:^7.25.9" - checksum: 10c0/095b6ba50489d797733abebc4596a81918316a99e3632755c9f02508882912b00c2ae5e468532a25a5c2108d109ddbe9b7da78333ee7cc13817fc50c00cf06fe + "@babel/types": "npm:^7.27.1" + checksum: 10c0/fc4751b59c8f5417e1acb0455d6ffce53fa5e79b3aca690299fbbf73b1b65bfaef3d4a18abceb190024c5836bb6cfbc3711e83888648df93df54e18152a1196c languageName: node linkType: hard -"@babel/helper-builder-react-jsx@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-builder-react-jsx@npm:7.25.9" +"@babel/helper-builder-react-jsx@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-builder-react-jsx@npm:7.27.1" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/99d6e87eede0971f25b5e638220f5f966c56c03f6a6278a693c73ac0a31acddb86110208a89d948aa337c8cf7998fb317c00e8baf2e9fa0a42b9207b977dc9c6 + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/5c0319f6b9e3153623afc4d1ede3802a7d153f5a4491dcea2cc9dddb409ccc1529812edcecf740a5c23054e19b5671ed52c926a2383fe05a4b6148d919a75e59 languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.25.9, @babel/helper-compilation-targets@npm:^7.26.5": - version: 7.26.5 - resolution: "@babel/helper-compilation-targets@npm:7.26.5" +"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-compilation-targets@npm:7.27.1" dependencies: - "@babel/compat-data": "npm:^7.26.5" - "@babel/helper-validator-option": "npm:^7.25.9" + "@babel/compat-data": "npm:^7.27.1" + "@babel/helper-validator-option": "npm:^7.27.1" browserslist: "npm:^4.24.0" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 10c0/9da5c77e5722f1a2fcb3e893049a01d414124522bbf51323bb1a0c9dcd326f15279836450fc36f83c9e8a846f3c40e88be032ed939c5a9840922bed6073edfb4 + checksum: 10c0/1cfd3760a1bf1e367ea4a91214c041be7076197ba7a4f3c0710cab00fb5734eb010a2946efe6ecfb1ca9dc63e6c69644a1afa399db4082f374b9311e129f6f0b languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.25.9, @babel/helper-create-class-features-plugin@npm:^7.27.0": - version: 7.27.0 - resolution: "@babel/helper-create-class-features-plugin@npm:7.27.0" +"@babel/helper-create-class-features-plugin@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-create-class-features-plugin@npm:7.27.1" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/helper-member-expression-to-functions": "npm:^7.25.9" - "@babel/helper-optimise-call-expression": "npm:^7.25.9" - "@babel/helper-replace-supers": "npm:^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" - "@babel/traverse": "npm:^7.27.0" + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-member-expression-to-functions": "npm:^7.27.1" + "@babel/helper-optimise-call-expression": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/c4945903136d934050e070f69a4d72ec425f1f70634e0ddf14ad36695f935125a6df559f8d5b94cc1ed49abd4ce9c5be8ef3ba033fa8d09c5dd78d1a9b97d8cc + checksum: 10c0/4ee199671d6b9bdd4988aa2eea4bdced9a73abfc831d81b00c7634f49a8fc271b3ceda01c067af58018eb720c6151322015d463abea7072a368ee13f35adbb4c languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.25.9" +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.27.1" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - regexpu-core: "npm:^6.1.1" + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + regexpu-core: "npm:^6.2.0" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/3adc60a758febbf07d65a15eaccab1f7b9fcc55e7141e59122f13c9f81fc0d1cce4525b7f4af50285d27c93b34c859fd2c39c39820c5fb92211898c3bbdc77ef + checksum: 10c0/591fe8bd3bb39679cc49588889b83bd628d8c4b99c55bafa81e80b1e605a348b64da955e3fd891c4ba3f36fd015367ba2eadea22af6a7de1610fbb5bcc2d3df0 languageName: node linkType: hard @@ -186,200 +186,200 @@ __metadata: languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-member-expression-to-functions@npm:7.25.9" +"@babel/helper-member-expression-to-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-member-expression-to-functions@npm:7.27.1" dependencies: - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/e08c7616f111e1fb56f398365e78858e26e466d4ac46dff25921adc5ccae9b232f66e952a2f4162bbe336627ba336c7fd9eca4835b6548935973d3380d77eaff + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/5762ad009b6a3d8b0e6e79ff6011b3b8fdda0fefad56cfa8bfbe6aa02d5a8a8a9680a45748fe3ac47e735a03d2d88c0a676e3f9f59f20ae9fadcc8d51ccd5a53 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.0.0-beta.49, @babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-module-imports@npm:7.25.9" +"@babel/helper-module-imports@npm:^7.0.0-beta.49, @babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-module-imports@npm:7.27.1" dependencies: - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/078d3c2b45d1f97ffe6bb47f61961be4785d2342a4156d8b42c92ee4e1b7b9e365655dd6cb25329e8fe1a675c91eeac7e3d04f0c518b67e417e29d6e27b6aa70 + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/e00aace096e4e29290ff8648455c2bc4ed982f0d61dbf2db1b5e750b9b98f318bf5788d75a4f974c151bd318fd549e81dbcab595f46b14b81c12eda3023f51e8 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.25.9, @babel/helper-module-transforms@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/helper-module-transforms@npm:7.26.0" +"@babel/helper-module-transforms@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-module-transforms@npm:7.27.1" dependencies: - "@babel/helper-module-imports": "npm:^7.25.9" - "@babel/helper-validator-identifier": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/ee111b68a5933481d76633dad9cdab30c41df4479f0e5e1cc4756dc9447c1afd2c9473b5ba006362e35b17f4ebddd5fca090233bef8dfc84dca9d9127e56ec3a + checksum: 10c0/196ab29635fe6eb5ba6ead2972d41b1c0d40f400f99bd8fc109cef21440de24c26c972fabf932585e618694d590379ab8d22def8da65a54459d38ec46112ead7 languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-optimise-call-expression@npm:7.25.9" +"@babel/helper-optimise-call-expression@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-optimise-call-expression@npm:7.27.1" dependencies: - "@babel/types": "npm:^7.25.9" - checksum: 10c0/90203e6607edeadd2a154940803fd616c0ed92c1013d6774c4b8eb491f1a5a3448b68faae6268141caa5c456e55e3ee49a4ed2bd7ddaf2365daea321c435914c + "@babel/types": "npm:^7.27.1" + checksum: 10c0/6b861e7fcf6031b9c9fc2de3cd6c005e94a459d6caf3621d93346b52774925800ca29d4f64595a5ceacf4d161eb0d27649ae385110ed69491d9776686fa488e6 languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.26.5, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.26.5 - resolution: "@babel/helper-plugin-utils@npm:7.26.5" - checksum: 10c0/cdaba71d4b891aa6a8dfbe5bac2f94effb13e5fa4c2c487667fdbaa04eae059b78b28d85a885071f45f7205aeb56d16759e1bed9c118b94b16e4720ef1ab0f65 +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.26.5, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.27.1 + resolution: "@babel/helper-plugin-utils@npm:7.27.1" + checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.25.9" +"@babel/helper-remap-async-to-generator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-remap-async-to-generator@npm:7.27.1" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/helper-wrap-function": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-wrap-function": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/6798b562f2788210980f29c5ee96056d90dc73458c88af5bd32f9c82e28e01975588aa2a57bb866c35556bd9b76bac937e824ee63ba472b6430224b91b4879e9 + checksum: 10c0/5ba6258f4bb57c7c9fa76b55f416b2d18c867b48c1af4f9f2f7cd7cc933fe6da7514811d08ceb4972f1493be46f4b69c40282b811d1397403febae13c2ec57b5 languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.25.9, @babel/helper-replace-supers@npm:^7.26.5": - version: 7.26.5 - resolution: "@babel/helper-replace-supers@npm:7.26.5" +"@babel/helper-replace-supers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-replace-supers@npm:7.27.1" dependencies: - "@babel/helper-member-expression-to-functions": "npm:^7.25.9" - "@babel/helper-optimise-call-expression": "npm:^7.25.9" - "@babel/traverse": "npm:^7.26.5" + "@babel/helper-member-expression-to-functions": "npm:^7.27.1" + "@babel/helper-optimise-call-expression": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/b19b1245caf835207aaaaac3a494f03a16069ae55e76a2e1350b5acd560e6a820026997a8160e8ebab82ae873e8208759aa008eb8422a67a775df41f0a4633d4 + checksum: 10c0/4f2eaaf5fcc196580221a7ccd0f8873447b5d52745ad4096418f6101a1d2e712e9f93722c9a32bc9769a1dc197e001f60d6f5438d4dfde4b9c6a9e4df719354c languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.25.9" +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.27.1" dependencies: - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/09ace0c6156961624ac9524329ce7f45350bab94bbe24335cbe0da7dfaa1448e658771831983cb83fe91cf6635b15d0a3cab57c03b92657480bfb49fb56dd184 + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/f625013bcdea422c470223a2614e90d2c1cc9d832e97f32ca1b4f82b34bb4aa67c3904cb4b116375d3b5b753acfb3951ed50835a1e832e7225295c7b0c24dff7 languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-string-parser@npm:7.25.9" - checksum: 10c0/7244b45d8e65f6b4338a6a68a8556f2cb161b782343e97281a5f2b9b93e420cad0d9f5773a59d79f61d0c448913d06f6a2358a87f2e203cf112e3c5b53522ee6 +"@babel/helper-string-parser@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-string-parser@npm:7.27.1" + checksum: 10c0/8bda3448e07b5583727c103560bcf9c4c24b3c1051a4c516d4050ef69df37bb9a4734a585fe12725b8c2763de0a265aa1e909b485a4e3270b7cfd3e4dbe4b602 languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-validator-identifier@npm:7.25.9" - checksum: 10c0/4fc6f830177b7b7e887ad3277ddb3b91d81e6c4a24151540d9d1023e8dc6b1c0505f0f0628ae653601eb4388a8db45c1c14b2c07a9173837aef7e4116456259d +"@babel/helper-validator-identifier@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-identifier@npm:7.27.1" + checksum: 10c0/c558f11c4871d526498e49d07a84752d1800bf72ac0d3dad100309a2eaba24efbf56ea59af5137ff15e3a00280ebe588560534b0e894a4750f8b1411d8f78b84 languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-validator-option@npm:7.25.9" - checksum: 10c0/27fb195d14c7dcb07f14e58fe77c44eea19a6a40a74472ec05c441478fa0bb49fa1c32b2d64be7a38870ee48ef6601bdebe98d512f0253aea0b39756c4014f3e +"@babel/helper-validator-option@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-option@npm:7.27.1" + checksum: 10c0/6fec5f006eba40001a20f26b1ef5dbbda377b7b68c8ad518c05baa9af3f396e780bdfded24c4eef95d14bb7b8fd56192a6ed38d5d439b97d10efc5f1a191d148 languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-wrap-function@npm:7.25.9" +"@babel/helper-wrap-function@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-wrap-function@npm:7.27.1" dependencies: - "@babel/template": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/b6627d83291e7b80df020f8ee2890c52b8d49272962cac0114ef90f189889c90f1027985873d1b5261a4e986e109b2754292dc112392f0b1fcbfc91cc08bd003 + "@babel/template": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/c472f75c0951bc657ab0a117538c7c116566ae7579ed47ac3f572c42dc78bd6f1e18f52ebe80d38300c991c3fcaa06979e2f8864ee919369dabd59072288de30 languageName: node linkType: hard -"@babel/helpers@npm:^7.26.10": - version: 7.26.10 - resolution: "@babel/helpers@npm:7.26.10" +"@babel/helpers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helpers@npm:7.27.1" dependencies: - "@babel/template": "npm:^7.26.9" - "@babel/types": "npm:^7.26.10" - checksum: 10c0/f99e1836bcffce96db43158518bb4a24cf266820021f6461092a776cba2dc01d9fc8b1b90979d7643c5c2ab7facc438149064463a52dd528b21c6ab32509784f + "@babel/template": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/e078257b9342dae2c041ac050276c5a28701434ad09478e6dc6976abd99f721a5a92e4bebddcbca6b1c3a7e8acace56a946340c701aad5e7507d2c87446459ba languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.27.0": - version: 7.27.0 - resolution: "@babel/parser@npm:7.27.0" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/parser@npm:7.27.1" dependencies: - "@babel/types": "npm:^7.27.0" + "@babel/types": "npm:^7.27.1" bin: parser: ./bin/babel-parser.js - checksum: 10c0/ba2ed3f41735826546a3ef2a7634a8d10351df221891906e59b29b0a0cd748f9b0e7a6f07576858a9de8e77785aad925c8389ddef146de04ea2842047c9d2859 + checksum: 10c0/ae4a5eda3ada3fd54c9942d9f14385df7a18e71b386cf2652505bb9a40a32250dfde3bdda71fb08af00b1e154f0a6213e6cdaaa88e9941229ec0003f7fead759 languageName: node linkType: hard -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.25.9" +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/7aab47fcbb8c1ddc195a3cd66609edcad54c5022f018db7de40185f0182950389690e953e952f117a1737b72f665ff02ad30de6c02b49b97f1d8f4ccdffedc34 + checksum: 10c0/7dfffa978ae1cd179641a7c4b4ad688c6828c2c58ec96b118c2fb10bc3715223de6b88bff1ebff67056bb5fccc568ae773e3b83c592a1b843423319f80c99ebd languageName: node linkType: hard -"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.25.9" +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/3a652b3574ca62775c5f101f8457950edc540c3581226579125da535d67765f41ad7f0e6327f8efeb2540a5dad5bb0c60a89fb934af3f67472e73fb63612d004 + checksum: 10c0/2cd7a55a856e5e59bbd9484247c092a41e0d9f966778e7019da324d9e0928892d26afc4fbb2ac3d76a3c5a631cd3cf0d72dd2653b44f634f6c663b9e6f80aacd languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.25.9" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/18fc9004104a150f9f5da9f3307f361bc3104d16778bb593b7523d5110f04a8df19a2587e6bdd5e726fb1d397191add45223f4f731bb556c33f14f2779d596e8 + checksum: 10c0/cf29835498c4a25bd470908528919729a0799b2ec94e89004929a5532c94a5e4b1a49bc5d6673a22e5afe05d08465873e14ee3b28c42eb3db489cdf5ca47c680 languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.25.9" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" - "@babel/plugin-transform-optional-chaining": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/plugin-transform-optional-chaining": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.13.0 - checksum: 10c0/3f6c8781a2f7aa1791a31d2242399ca884df2ab944f90c020b6f112fb19f05fa6dad5be143d274dad1377e40415b63d24d5489faf5060b9c4a99e55d8f0c317c + checksum: 10c0/eddcd056f76e198868cbff883eb148acfade8f0890973ab545295df0c08e39573a72e65372bcc0b0bfadba1b043fe1aea6b0907d0b4889453ac154c404194ebc languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.25.9" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/02b365f0cc4df8b8b811c68697c93476da387841e5f153fe42766f34241b685503ea51110d5ed6df7132759820b93e48d9fa3743cffc091eed97c19f7e5fe272 + checksum: 10c0/b94e6c3fc019e988b1499490829c327a1067b4ddea8ad402f6d0554793c9124148c2125338c723661b6dff040951abc1f092afbf3f2d234319cd580b68e52445 languageName: node linkType: hard @@ -425,25 +425,25 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.26.0" +"@babel/plugin-syntax-import-assertions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/525b174e60b210d96c1744c1575fc2ddedcc43a479cba64a5344cf77bd0541754fc58120b5a11ff832ba098437bb05aa80900d1f49bb3d888c5e349a4a3a356e + checksum: 10c0/06a954ee672f7a7c44d52b6e55598da43a7064e80df219765c51c37a0692641277e90411028f7cae4f4d1dedeed084f0c453576fa421c35a81f1603c5e3e0146 languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.26.0" +"@babel/plugin-syntax-import-attributes@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/e594c185b12bfe0bbe7ca78dfeebe870e6d569a12128cac86f3164a075fe0ff70e25ddbd97fd0782906b91f65560c9dc6957716b7b4a68aba2516c9b7455e352 + checksum: 10c0/e66f7a761b8360419bbb93ab67d87c8a97465ef4637a985ff682ce7ba6918b34b29d81190204cf908d0933058ee7b42737423cd8a999546c21b3aabad4affa9a languageName: node linkType: hard @@ -469,14 +469,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.25.9, @babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.25.9 - resolution: "@babel/plugin-syntax-jsx@npm:7.25.9" +"@babel/plugin-syntax-jsx@npm:^7.25.9, @babel/plugin-syntax-jsx@npm:^7.27.1, @babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.27.1 + resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/d56597aff4df39d3decda50193b6dfbe596ca53f437ff2934622ce19a743bf7f43492d3fb3308b0289f5cee2b825d99ceb56526a2b9e7b68bf04901546c5618c + checksum: 10c0/bc5afe6a458d5f0492c02a54ad98c5756a0c13bd6d20609aae65acd560a9e141b0876da5f358dce34ea136f271c1016df58b461184d7ae9c4321e0f98588bc84 languageName: node linkType: hard @@ -557,14 +557,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.25.9, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.25.9 - resolution: "@babel/plugin-syntax-typescript@npm:7.25.9" +"@babel/plugin-syntax-typescript@npm:^7.27.1, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.27.1 + resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/5192ebe11bd46aea68b7a60fd9555465c59af7e279e71126788e59121b86e00b505816685ab4782abe159232b0f73854e804b54449820b0d950b397ee158caa2 + checksum: 10c0/11589b4c89c66ef02d57bf56c6246267851ec0c361f58929327dc3e070b0dab644be625bbe7fb4c4df30c3634bfdfe31244e1f517be397d2def1487dbbe3c37d languageName: node linkType: hard @@ -580,452 +580,452 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.25.9" +"@babel/plugin-transform-arrow-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/851fef9f58be60a80f46cc0ce1e46a6f7346a6f9d50fa9e0fa79d46ec205320069d0cc157db213e2bea88ef5b7d9bd7618bb83f0b1996a836e2426c3a3a1f622 + checksum: 10c0/19abd7a7d11eef58c9340408a4c2594503f6c4eaea1baa7b0e5fbdda89df097e50663edb3448ad2300170b39efca98a75e5767af05cad3b0facb4944326896a3 languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.26.8": - version: 7.26.8 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.26.8" +"@babel/plugin-transform-async-generator-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.26.5" - "@babel/helper-remap-async-to-generator": "npm:^7.25.9" - "@babel/traverse": "npm:^7.26.8" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-remap-async-to-generator": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/f6fefce963fe2e6268dde1958975d7adbce65fba94ca6f4bc554c90da03104ad1dd2e66d03bc0462da46868498428646e30b03a218ef0e5a84bfc87a7e375cec + checksum: 10c0/772e449c69ee42a466443acefb07083bd89efb1a1d95679a4dc99ea3be9d8a3c43a2b74d2da95d7c818e9dd9e0b72bfa7c03217a1feaf108f21b7e542f0943c0 languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.25.9" +"@babel/plugin-transform-async-to-generator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.27.1" dependencies: - "@babel/helper-module-imports": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-remap-async-to-generator": "npm:^7.25.9" + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-remap-async-to-generator": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c443d9e462ddef733ae56360064f32fc800105803d892e4ff32d7d6a6922b3765fa97b9ddc9f7f1d3f9d8c2d95721d85bef9dbf507804214c6cf6466b105c168 + checksum: 10c0/e76b1f6f9c3bbf72e17d7639406d47f09481806de4db99a8de375a0bb40957ea309b20aa705f0c25ab1d7c845e3f365af67eafa368034521151a0e352a03ef2f languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.26.5": - version: 7.26.5 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.26.5" +"@babel/plugin-transform-block-scoped-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/2f3060800ead46b09971dd7bf830d66383b7bc61ced9945633b4ef9bf87787956ea83fcf49b387cecb377812588c6b81681714c760f9cf89ecba45edcbab1192 + checksum: 10c0/3313130ba3bf0699baad0e60da1c8c3c2f0c2c0a7039cd0063e54e72e739c33f1baadfc9d8c73b3fea8c85dd7250c3964fb09c8e1fa62ba0b24a9fefe0a8dbde languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-block-scoping@npm:7.25.9" +"@babel/plugin-transform-block-scoping@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-block-scoping@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/a76e30becb6c75b4d87a2cd53556fddb7c88ddd56bfadb965287fd944810ac159aa8eb5705366fc37336041f63154ed9fab3862fb10482a45bf5ede63fd55fda + checksum: 10c0/d3f357beeb92fbdf3045aea2ba286a60dafc9c2d2a9f89065bb3c4bea9cc48934ee6689df3db0439d9ec518eda5e684f3156cab792b7c38c33ece2f8204ddee8 languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-class-properties@npm:7.25.9" +"@babel/plugin-transform-class-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/f0603b6bd34d8ba62c03fc0572cb8bbc75874d097ac20cc7c5379e001081210a84dba1749e7123fca43b978382f605bb9973c99caf2c5b4c492d5c0a4a441150 + checksum: 10c0/cc0662633c0fe6df95819fef223506ddf26c369c8d64ab21a728d9007ec866bf9436a253909819216c24a82186b6ccbc1ec94d7aaf3f82df227c7c02fa6a704b languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/plugin-transform-class-static-block@npm:7.26.0" +"@babel/plugin-transform-class-static-block@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-class-static-block@npm:7.27.1" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.12.0 - checksum: 10c0/cdcf5545ae6514ed75fbd73cccfa209c6a5dfdf0c2bb7bb62c0fb4ec334a32281bcf1bc16ace494d9dbe93feb8bdc0bd3cf9d9ccb6316e634a67056fa13b741b + checksum: 10c0/396997dd81fc1cf242b921e337d25089d6b9dc3596e81322ff11a6359326dc44f2f8b82dcc279c2e514cafaf8964dc7ed39e9fab4b8af1308b57387d111f6a20 languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-classes@npm:7.25.9" +"@babel/plugin-transform-classes@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-classes@npm:7.27.1" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/helper-compilation-targets": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-replace-supers": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" globals: "npm:^11.1.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/02742ea7cd25be286c982e672619effca528d7a931626a6f3d6cea11852951b7ee973276127eaf6418ac0e18c4d749a16b520709c707e86a67012bd23ff2927d + checksum: 10c0/1071f4cb1ed5deb5e6f8d0442f2293a540cac5caa5ab3c25ad0571aadcbf961f61e26d367a67894976165a543e02f3a19e40b63b909afbed6e710801a590635c languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-computed-properties@npm:7.25.9" +"@babel/plugin-transform-computed-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-computed-properties@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/template": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/template": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/948c0ae3ce0ba2375241d122a9bc7cda4a7ac8110bd8a62cd804bc46a5fdb7a7a42c7799c4cd972e14e0a579d2bd0999b92e53177b73f240bb0d4b09972c758b + checksum: 10c0/e09a12f8c8ae0e6a6144c102956947b4ec05f6c844169121d0ec4529c2d30ad1dc59fee67736193b87a402f44552c888a519a680a31853bdb4d34788c28af3b0 languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-destructuring@npm:7.25.9" +"@babel/plugin-transform-destructuring@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-destructuring@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7beec5fda665d108f69d5023aa7c298a1e566b973dd41290faa18aeea70f6f571295c1ece0a058f3ceb6c6c96de76de7cd34f5a227fbf09a1b8d8a735d28ca49 + checksum: 10c0/56afda7a0b205f8d1af727daef4c529fc2e756887408affd39033ae4476e54d586d3d9dc1e72cfb15c74a2a5ca0653ab13dbaa8cbf79fbb2a3a746d0f107cb86 languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.25.9" +"@babel/plugin-transform-dotall-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.27.1" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7c3471ae5cf7521fd8da5b03e137e8d3733fc5ee4524ce01fb0c812f0bb77cb2c9657bc8a6253186be3a15bb4caa8974993c7ddc067f554ecc6a026f0a3b5e12 + checksum: 10c0/f9caddfad9a551b4dabe0dcb7c040f458fbaaa7bbb44200c20198b32c8259be8e050e58d2c853fdac901a4cfe490b86aa857036d8d461b192dd010d0e242dedb languageName: node linkType: hard -"@babel/plugin-transform-duplicate-keys@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.25.9" +"@babel/plugin-transform-duplicate-keys@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/d0c74894b9bf6ff2a04189afffb9cd43d87ebd7b7943e51a827c92d2aaa40fa89ac81565a2fd6fbeabf9e38413a9264c45862eee2b017f1d49046cc3c8ff06b4 + checksum: 10c0/22a822e5342b7066f83eaedc4fd9bb044ac6bc68725484690b33ba04a7104980e43ea3229de439286cb8db8e7db4a865733a3f05123ab58a10f189f03553746f languageName: node linkType: hard -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.25.9" +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.27.1" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/a8039a6d2b90e011c7b30975edee47b5b1097cf3c2f95ec1f5ddd029898d783a995f55f7d6eb8d6bb8873c060fb64f9f1ccba938dfe22d118d09cf68e0cd3bf6 + checksum: 10c0/121502a252b3206913e1e990a47fea34397b4cbf7804d4cd872d45961bc45b603423f60ca87f3a3023a62528f5feb475ac1c9ec76096899ec182fcb135eba375 languageName: node linkType: hard -"@babel/plugin-transform-dynamic-import@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-dynamic-import@npm:7.25.9" +"@babel/plugin-transform-dynamic-import@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/5e643a8209072b668350f5788f23c64e9124f81f958b595c80fecca6561086d8ef346c04391b9e5e4cad8b8cbe22c258f0cd5f4ea89b97e74438e7d1abfd98cf + checksum: 10c0/8dcd3087aca134b064fc361d2cc34eec1f900f6be039b6368104afcef10bb75dea726bb18cabd046716b89b0edaa771f50189fa16bc5c5914a38cbcf166350f7 languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.26.3": - version: 7.26.3 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.26.3" +"@babel/plugin-transform-exponentiation-operator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/cac922e851c6a0831fdd2e3663564966916015aeff7f4485825fc33879cbc3a313ceb859814c9200248e2875d65bb13802a723e5d7d7b40a2e90da82a5a1e15c + checksum: 10c0/953d21e01fed76da8e08fb5094cade7bf8927c1bb79301916bec2db0593b41dbcfbca1024ad5db886b72208a93ada8f57a219525aad048cf15814eeb65cf760d languageName: node linkType: hard -"@babel/plugin-transform-export-namespace-from@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-export-namespace-from@npm:7.25.9" +"@babel/plugin-transform-export-namespace-from@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/f291ea2ec5f36de9028a00cbd5b32f08af281b8183bf047200ff001f4cb260be56f156b2449f42149448a4a033bd6e86a3a7f06d0c2825532eb0ae6b03058dfb + checksum: 10c0/d7165cad11f571a54c8d9263d6c6bf2b817aff4874f747cb51e6e49efb32f2c9b37a6850cdb5e3b81e0b638141bb77dc782a6ec1a94128859fbdf7767581e07c languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.26.9": - version: 7.26.9 - resolution: "@babel/plugin-transform-for-of@npm:7.26.9" +"@babel/plugin-transform-for-of@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-for-of@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/e28a521521cf9f84ddd69ca8da7c89fb9f7aa38e4dea35742fe973e4e1d7c23f9cee1a4861a2fdd9e9f18ff945886a44d7335cea1c603b96bfcb1c7c8791ef09 + checksum: 10c0/4635763173a23aae24480681f2b0996b4f54a0cb2368880301a1801638242e263132d1e8adbe112ab272913d1d900ee0d6f7dea79443aef9d3325168cd88b3fb languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-function-name@npm:7.25.9" +"@babel/plugin-transform-function-name@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-function-name@npm:7.27.1" dependencies: - "@babel/helper-compilation-targets": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" + "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/8e67fbd1dd367927b8b6afdf0a6e7cb3a3fd70766c52f700ca77428b6d536f6c9d7ec643e7762d64b23093233765c66bffa40e31aabe6492682879bcb45423e1 + checksum: 10c0/5abdc7b5945fbd807269dcc6e76e52b69235056023b0b35d311e8f5dfd6c09d9f225839798998fc3b663f50cf701457ddb76517025a0d7a5474f3fe56e567a4c languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-json-strings@npm:7.25.9" +"@babel/plugin-transform-json-strings@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-json-strings@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/00bc2d4751dfc9d44ab725be16ee534de13cfd7e77dfb386e5dac9e48101ce8fcbc5971df919dc25b3f8a0fa85d6dc5f2a0c3cf7ec9d61c163d9823c091844f0 + checksum: 10c0/2379714aca025516452a7c1afa1ca42a22b9b51a5050a653cc6198a51665ab82bdecf36106d32d731512706a1e373c5637f5ff635737319aa42f3827da2326d6 languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-literals@npm:7.25.9" +"@babel/plugin-transform-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-literals@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/00b14e9c14cf1e871c1f3781bf6334cac339c360404afd6aba63d2f6aca9270854d59a2b40abff1c4c90d4ffdca614440842d3043316c2f0ceb155fdf7726b3b + checksum: 10c0/c40dc3eb2f45a92ee476412314a40e471af51a0f51a24e91b85cef5fc59f4fe06758088f541643f07f949d2c67ee7bdce10e11c5ec56791ae09b15c3b451eeca languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.25.9" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/6e2051e10b2d6452980fc4bdef9da17c0d6ca48f81b8529e8804b031950e4fff7c74a7eb3de4a2b6ad22ffb631d0b67005425d232cce6e2b29ce861c78ed04f5 + checksum: 10c0/5b0abc7c0d09d562bf555c646dce63a30288e5db46fd2ce809a61d064415da6efc3b2b3c59b8e4fe98accd072c89a2f7c3765b400e4bf488651735d314d9feeb languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.25.9" +"@babel/plugin-transform-member-expression-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/91d17b451bcc5ea9f1c6f8264144057ade3338d4b92c0b248366e4db3a7790a28fd59cc56ac433a9627a9087a17a5684e53f4995dd6ae92831cb72f1bd540b54 + checksum: 10c0/0874ccebbd1c6a155e5f6b3b29729fade1221b73152567c1af1e1a7c12848004dffecbd7eded6dc463955120040ae57c17cb586b53fb5a7a27fcd88177034c30 languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-modules-amd@npm:7.25.9" +"@babel/plugin-transform-modules-amd@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-amd@npm:7.27.1" dependencies: - "@babel/helper-module-transforms": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/849957d9484d0a2d93331226ed6cf840cee7d57454549534c447c93f8b839ef8553eae9877f8f550e3c39f14d60992f91244b2e8e7502a46064b56c5d68ba855 + checksum: 10c0/76e86cd278b6a3c5b8cca8dfb3428e9cd0c81a5df7096e04c783c506696b916a9561386d610a9d846ef64804640e0bd818ea47455fed0ee89b7f66c555b29537 languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.26.3": - version: 7.26.3 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.26.3" +"@babel/plugin-transform-modules-commonjs@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1" dependencies: - "@babel/helper-module-transforms": "npm:^7.26.0" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/82e59708f19f36da29531a64a7a94eabbf6ff46a615e0f5d9b49f3f59e8ef10e2bac607d749091508d3fa655146c9e5647c3ffeca781060cdabedb4c7a33c6f2 + checksum: 10c0/4def972dcd23375a266ea1189115a4ff61744b2c9366fc1de648b3fab2c650faf1a94092de93a33ff18858d2e6c4dddeeee5384cb42ba0129baeab01a5cdf1e2 languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.25.9" +"@babel/plugin-transform-modules-systemjs@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.27.1" dependencies: - "@babel/helper-module-transforms": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-validator-identifier": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/8299e3437542129c2684b86f98408c690df27db4122a79edded4782cf04e755d6ecb05b1e812c81a34224a81e664303392d5f3c36f3d2d51fdc99bb91c881e9a + checksum: 10c0/f16fca62d144d9cbf558e7b5f83e13bb6d0f21fdeff3024b0cecd42ffdec0b4151461da42bd0963512783ece31aafa5ffe03446b4869220ddd095b24d414e2b5 languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-modules-umd@npm:7.25.9" +"@babel/plugin-transform-modules-umd@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-umd@npm:7.27.1" dependencies: - "@babel/helper-module-transforms": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/fa11a621f023e2ac437b71d5582f819e667c94306f022583d77da9a8f772c4128861a32bbb63bef5cba581a70cd7dbe87a37238edaafcfacf889470c395e7076 + checksum: 10c0/e5962a8874889da2ab1aa32eb93ec21d419c7423c766e4befb39b4bb512b9ad44b47837b6cd1c8f1065445cbbcc6dc2be10298ac6e734e5ca1059fc23698daed languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.25.9" +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.27.1" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/32b14fda5c885d1706863f8af2ee6c703d39264355b57482d3a24fce7f6afbd4c7a0896e501c0806ed2b0759beb621bf7f3f7de1fbbc82026039a98d961e78ef + checksum: 10c0/8eaa8c9aee00a00f3bd8bd8b561d3f569644d98cb2cfe3026d7398aabf9b29afd62f24f142b4112fa1f572d9b0e1928291b099cde59f56d6b59f4d565e58abf2 languageName: node linkType: hard -"@babel/plugin-transform-new-target@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-new-target@npm:7.25.9" +"@babel/plugin-transform-new-target@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-new-target@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7b5f1b7998f1cf183a7fa646346e2f3742e5805b609f28ad5fee22d666a15010f3e398b7e1ab78cddb7901841a3d3f47135929af23d54e8bf4ce69b72051f71e + checksum: 10c0/9b0581412fcc5ab1b9a2d86a0c5407bd959391f0a1e77a46953fef9f7a57f3f4020d75f71098c5f9e5dcc680a87f9fd99b3205ab12e25ef8c19eed038c1e4b28 languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.26.6": - version: 7.26.6 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.26.6" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.3, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/574d6db7cbc5c092db5d1dece8ce26195e642b9c40dbfeaf3082058a78ad7959c1c333471cdd45f38b784ec488850548075d527b178c5010ee9bff7aa527cc7a + checksum: 10c0/a435fc03aaa65c6ef8e99b2d61af0994eb5cdd4a28562d78c3b0b0228ca7e501aa255e1dff091a6996d7d3ea808eb5a65fd50ecd28dfb10687a8a1095dcadc7a languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.25.9" +"@babel/plugin-transform-numeric-separator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/ad63ad341977844b6f9535fcca15ca0d6d6ad112ed9cc509d4f6b75e9bf4b1b1a96a0bcb1986421a601505d34025373608b5f76d420d924b4e21f86b1a1f2749 + checksum: 10c0/b72cbebbfe46fcf319504edc1cf59f3f41c992dd6840db766367f6a1d232cd2c52143c5eaf57e0316710bee251cae94be97c6d646b5022fcd9274ccb131b470c languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.25.9" +"@babel/plugin-transform-object-rest-spread@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.27.1" dependencies: - "@babel/helper-compilation-targets": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/plugin-transform-parameters": "npm:^7.25.9" + "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-transform-parameters": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/02077d8abd83bf6a48ff0b59e98d7561407cf75b591cffd3fdc5dc5e9a13dec1c847a7a690983762a3afecddb244831e897e0515c293e7c653b262c30cd614af + checksum: 10c0/ac73caea178b51a64cc1c5e5ce1a67bacf89c1af664ef219aa1403d54258804113d6f267820c211768460e056f3aeb642c98ee14842c4fb548974c82f7dbe7dd languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-object-super@npm:7.25.9" +"@babel/plugin-transform-object-super@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-object-super@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-replace-supers": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/0348d00e76f1f15ada44481a76e8c923d24cba91f6e49ee9b30d6861eb75344e7f84d62a18df8a6f9e9a7eacf992f388174b7f9cc4ce48287bcefca268c07600 + checksum: 10c0/efa2d092ef55105deb06d30aff4e460c57779b94861188128489b72378bf1f0ab0f06a4a4d68b9ae2a59a79719fbb2d148b9a3dca19ceff9c73b1f1a95e0527c languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.25.9" +"@babel/plugin-transform-optional-catch-binding@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/722fd5ee12ab905309d4e84421584fce4b6d9e6b639b06afb20b23fa809e6ab251e908a8d5e8b14d066a28186b8ef8f58d69fd6eca9ce1b9ef7af08333378f6c + checksum: 10c0/807a4330f1fac08e2682d57bc82e714868fc651c8876f9a8b3a3fd8f53c129e87371f8243e712ac7dae11e090b737a2219a02fe1b6459a29e664fa073c3277bb languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.25.9" +"@babel/plugin-transform-optional-chaining@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/041ad2beae5affb8e68a0bcb6882a2dadb758db3c629a0e012f57488ab43a822ac1ea17a29db8ef36560a28262a5dfa4dbbbf06ed6e431db55abe024b7cd3961 + checksum: 10c0/5b18ff5124e503f0a25d6b195be7351a028b3992d6f2a91fb4037e2a2c386400d66bc1df8f6df0a94c708524f318729e81a95c41906e5a7919a06a43e573a525 languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-parameters@npm:7.25.9" +"@babel/plugin-transform-parameters@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-parameters@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/aecb446754b9e09d6b6fa95fd09e7cf682f8aaeed1d972874ba24c0a30a7e803ad5f014bb1fffc7bfeed22f93c0d200947407894ea59bf7687816f2f464f8df3 + checksum: 10c0/453a9618735eeff5551d4c7f02c250606586fe1dd210ec9f69a4f15629ace180cd944339ebff2b0f11e1a40567d83a229ba1c567620e70b2ebedea576e12196a languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-private-methods@npm:7.25.9" +"@babel/plugin-transform-private-methods@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-private-methods@npm:7.27.1" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/64bd71de93d39daefa3e6c878d6f2fd238ed7d4ecfb13b0e771ddbbc131487def3ceb405b62b534a5cbb5043046b504e1b189b0a45229cc75af979a9fbcaa7bd + checksum: 10c0/232bedfe9d28df215fb03cc7623bdde468b1246bdd6dc24465ff4bf9cc5f5a256ae33daea1fafa6cc59705e4d29da9024bb79baccaa5cd92811ac5db9b9244f2 languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.25.9" +"@babel/plugin-transform-private-property-in-object@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.27.1" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/helper-create-class-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/d4965de19d9f204e692cc74dbc39f0bb469e5f29df96dd4457ea23c5e5596fba9d5af76eaa96f9d48a9fc20ec5f12a94c679285e36b8373406868ea228109e27 + checksum: 10c0/a8c4536273ca716dcc98e74ea25ca76431528554922f184392be3ddaf1761d4aa0e06f1311577755bd1613f7054fb51d29de2ada1130f743d329170a1aa1fe56 languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-property-literals@npm:7.25.9" +"@babel/plugin-transform-property-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-property-literals@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1639e35b2438ccf3107af760d34e6a8e4f9acdd3ae6186ae771a6e3029bd59dfe778e502d67090f1185ecda5c16addfed77561e39c518a3f51ff10d41790e106 + checksum: 10c0/15713a87edd6db620d6e66eb551b4fbfff5b8232c460c7c76cedf98efdc5cd21080c97040231e19e06594c6d7dfa66e1ab3d0951e29d5814fb25e813f6d6209c languageName: node linkType: hard @@ -1040,303 +1040,302 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-react-display-name@npm:7.25.9" +"@babel/plugin-transform-react-display-name@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-display-name@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/63a0f962d64e71baf87c212755419e25c637d2d95ea6fdc067df26b91e606ae186442ae815b99a577eca9bf5404d9577ecad218a3cf42d0e9e286ca7b003a992 + checksum: 10c0/6cd474b5fb30a2255027d8fc19975aee1c1da54dd8bc8b79802676096182ca4136302ce65a24fbb277f8fe30f266006bbf327ef6be2846d3681eb57509744125 languageName: node linkType: hard "@babel/plugin-transform-react-inline-elements@npm:^7.21.0": - version: 7.25.9 - resolution: "@babel/plugin-transform-react-inline-elements@npm:7.25.9" + version: 7.27.1 + resolution: "@babel/plugin-transform-react-inline-elements@npm:7.27.1" dependencies: - "@babel/helper-builder-react-jsx": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-builder-react-jsx": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/d745bcfa8e51acc497b5ea2ff2fc4215cd39ebdb54703f2973962e3818a4829081ebc9e7818db28f90d1295e0b02e140986509ba48eef8aaa9de8c09b9434646 + checksum: 10c0/92a50ae593942a0f9882966fbd8cdc3254ed7281e4aefa3645eafe970f8959b40d4fa5ced99d9f3f2d0ca60628428186de8c8a47a8aae66d42a1bdf0749f8844 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-development@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.25.9" +"@babel/plugin-transform-react-jsx-development@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.27.1" dependencies: - "@babel/plugin-transform-react-jsx": "npm:^7.25.9" + "@babel/plugin-transform-react-jsx": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c0b92ff9eb029620abf320ff74aae182cea87524723d740fb48a4373d0d16bddf5edbe1116e7ba341332a5337e55c2ceaee8b8cad5549e78af7f4b3cfe77debb + checksum: 10c0/eb8c4b6a79dc5c49b41e928e2037e1ee0bbfa722e4fd74c0b7c0d11103c82c2c25c434000e1b051d534c7261ab5c92b6d1e85313bf1b26e37db3f051ae217b58 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-react-jsx@npm:7.25.9" +"@babel/plugin-transform-react-jsx@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-jsx@npm:7.27.1" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/helper-module-imports": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/plugin-syntax-jsx": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-syntax-jsx": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/5c9947e8ed141f7606f54da3e05eea1074950c5b8354c39df69cb7f43cb5a83c6c9d7973b24bc3d89341c8611f8ad50830a98ab10d117d850e6bdd8febdce221 + checksum: 10c0/1a08637c39fc78c9760dd4a3ed363fdbc762994bf83ed7872ad5bda0232fcd0fc557332f2ce36b522c0226dfd9cc8faac6b88eddda535f24825198a689e571af languageName: node linkType: hard -"@babel/plugin-transform-react-pure-annotations@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.25.9" +"@babel/plugin-transform-react-pure-annotations@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.27.1" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/7c8eac04644ad19dcd71bb8e949b0ae22b9e548fa4a58e545d3d0342f647fb89db7f8789a7c5b8074d478ce6d3d581eaf47dd4b36027e16fd68211c383839abc + checksum: 10c0/34bc090f4a7e460d82a851971b4d0f32e4bb519bafb927154f4174506283fe02b0f471fc20655c6050a8bf7b748bfa31c7e8f7d688849476d8266623554fbb28 languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-regenerator@npm:7.25.9" +"@babel/plugin-transform-regenerator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-regenerator@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - regenerator-transform: "npm:^0.15.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/eef3ffc19f7d291b863635f32b896ad7f87806d9219a0d3404a470219abcfc5b43aabecd691026c48e875b965760d9c16abee25e6447272233f30cd07f453ec7 + checksum: 10c0/42395908899310bb107d9ca31ebd4c302e14c582e3ad3ebfe1498fabafc43155c8f10850265c1e686a2afcf50d1f402cc5c5218fba72e167852607a4d8d6492e languageName: node linkType: hard -"@babel/plugin-transform-regexp-modifiers@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.26.0" +"@babel/plugin-transform-regexp-modifiers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.27.1" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/4abc1db6c964efafc7a927cda814c7275275afa4b530483e0936fd614de23cb5802f7ca43edaa402008a723d4e7eac282b6f5283aa2eeb3b27da6d6c1dd7f8ed + checksum: 10c0/31ae596ab56751cf43468a6c0a9d6bc3521d306d2bee9c6957cdb64bea53812ce24bd13a32f766150d62b737bca5b0650b2c62db379382fff0dccbf076055c33 languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-reserved-words@npm:7.25.9" +"@babel/plugin-transform-reserved-words@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-reserved-words@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/8b028b80d1983e3e02f74e21924323cc66ba930e5c5758909a122aa7d80e341b8b0f42e1698e42b50d47a6ba911332f584200b28e1a4e2104b7514d9dc011e96 + checksum: 10c0/e1a87691cce21a644a474d7c9a8107d4486c062957be32042d40f0a3d0cc66e00a3150989655019c255ff020d2640ac16aaf544792717d586f219f3bad295567 languageName: node linkType: hard "@babel/plugin-transform-runtime@npm:^7.22.4": - version: 7.26.10 - resolution: "@babel/plugin-transform-runtime@npm:7.26.10" + version: 7.27.1 + resolution: "@babel/plugin-transform-runtime@npm:7.27.1" dependencies: - "@babel/helper-module-imports": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" babel-plugin-polyfill-corejs2: "npm:^0.4.10" babel-plugin-polyfill-corejs3: "npm:^0.11.0" babel-plugin-polyfill-regenerator: "npm:^0.6.1" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/4b70a63b904a3f7faa6ca95f9034d2f29330764820b06cf1814dda4ab0482b233a28241e98d8497bc1690dd31972e72861d8534ae0e37f26e04637e7d615e43d + checksum: 10c0/7abbae60a6441ba8546dee3fcbc00b38038304250ba2419adaf0c76267bff43420ff75b7049003a24a829e01d9fde2ac8a422352af6d88aebd31996a83f04c2f languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.25.9" +"@babel/plugin-transform-shorthand-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/05a20d45f0fb62567644c507ccd4e379c1a74dacf887d2b2cac70247415e3f6d7d3bf4850c8b336053144715fedb6200fc38f7130c4b76c94eec9b9c0c2a8e9b + checksum: 10c0/bd5544b89520a22c41a6df5ddac9039821d3334c0ef364d18b0ba9674c5071c223bcc98be5867dc3865cb10796882b7594e2c40dedaff38e1b1273913fe353e1 languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-spread@npm:7.25.9" +"@babel/plugin-transform-spread@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-spread@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/996c8fed238efc30e0664f9f58bd7ec8c148f4659f84425f68923a094fe891245711d26eb10d1f815f50c124434e076e860dbe9662240844d1b77cd09907dcdf + checksum: 10c0/b34fc58b33bd35b47d67416655c2cbc8578fbb3948b4592bc15eb6d8b4046986e25c06e3b9929460fa4ab08e9653582415e7ef8b87d265e1239251bdf5a4c162 languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.25.9" +"@babel/plugin-transform-sticky-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/e9612b0615dab4c4fba1c560769616a9bd7b9226c73191ef84b6c3ee185c8b719b4f887cdd8336a0a13400ce606ab4a0d33bc8fa6b4fcdb53e2896d07f2568f6 + checksum: 10c0/5698df2d924f0b1b7bdb7ef370e83f99ed3f0964eb3b9c27d774d021bee7f6d45f9a73e2be369d90b4aff1603ce29827f8743f091789960e7669daf9c3cda850 languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.26.8": - version: 7.26.8 - resolution: "@babel/plugin-transform-template-literals@npm:7.26.8" +"@babel/plugin-transform-template-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-template-literals@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/205a938ded9554857a604416d369023a961334b6c20943bd861b45f0e5dbbeca1cf6fda1c2049126e38a0d18865993433fdc78eae3028e94836b3b643c08ba0d + checksum: 10c0/c90f403e42ef062b60654d1c122c70f3ec6f00c2f304b0931ebe6d0b432498ef8a5ef9266ddf00debc535f8390842207e44d3900eff1d2bab0cc1a700f03e083 languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.26.7": - version: 7.26.7 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.26.7" +"@babel/plugin-transform-typeof-symbol@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.26.5" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/d5640e3457637e6eee1d7205d255602ccca124ed30e4de10ec75ba179d167e0a826ceeab424e119921f5c995dfddf39ef1f2c91efd2dcbf3f0dc1e7931dfd1d1 + checksum: 10c0/a13c68015311fefa06a51830bc69d5badd06c881b13d5cf9ba04bf7c73e3fc6311cc889e18d9645ce2a64a79456dc9c7be88476c0b6802f62a686cb6f662ecd6 languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.27.0": - version: 7.27.0 - resolution: "@babel/plugin-transform-typescript@npm:7.27.0" +"@babel/plugin-transform-typescript@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-typescript@npm:7.27.1" dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/helper-create-class-features-plugin": "npm:^7.27.0" - "@babel/helper-plugin-utils": "npm:^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" - "@babel/plugin-syntax-typescript": "npm:^7.25.9" + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/plugin-syntax-typescript": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/028e75dd6195495dc2d105ca8ded19d62aef90a215d597451cee57c35325960a87963913aa9a21b8ade190c638b588422292ea7e23b21565baf53c469254dbd4 + checksum: 10c0/48f1db5de17a0f9fc365ff4fb046010aedc7aad813a7aa42fb73fcdab6442f9e700dde2cc0481086e01b0dae662ae4d3e965a52cde154f0f146d243a8ac68e93 languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.25.9" +"@babel/plugin-transform-unicode-escapes@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/615c84d7c53e1575d54ba9257e753e0b98c5de1e3225237d92f55226eaab8eb5bceb74df43f50f4aa162b0bbcc934ed11feafe2b60b8ec4934ce340fad4b8828 + checksum: 10c0/a6809e0ca69d77ee9804e0c1164e8a2dea5e40718f6dcf234aeddf7292e7414f7ee331d87f17eb6f160823a329d1d6751bd49b35b392ac4a6efc032e4d3038d8 languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.25.9" +"@babel/plugin-transform-unicode-property-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.27.1" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/1685836fc38af4344c3d2a9edbd46f7c7b28d369b63967d5b83f2f6849ec45b97223461cea3d14cc3f0be6ebb284938e637a5ca3955c0e79c873d62f593d615c + checksum: 10c0/a332bc3cb3eeea67c47502bc52d13a0f8abae5a7bfcb08b93a8300ddaff8d9e1238f912969494c1b494c1898c6f19687054440706700b6d12cb0b90d88beb4d0 languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.25.9" +"@babel/plugin-transform-unicode-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.27.1" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/448004f978279e726af26acd54f63f9002c9e2582ecd70d1c5c4436f6de490fcd817afb60016d11c52f5ef17dbaac2590e8cc7bfaf4e91b58c452cf188c7920f + checksum: 10c0/6abda1bcffb79feba6f5c691859cdbe984cc96481ea65d5af5ba97c2e843154005f0886e25006a37a2d213c0243506a06eaeafd93a040dbe1f79539016a0d17a languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.25.9" +"@babel/plugin-transform-unicode-sets-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.27.1" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.25.9" - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/56ee04fbe236b77cbcd6035cbf0be7566d1386b8349154ac33244c25f61170c47153a9423cd1d92855f7d6447b53a4a653d9e8fd1eaeeee14feb4b2baf59bd9f + checksum: 10c0/236645f4d0a1fba7c18dc8ffe3975933af93e478f2665650c2d91cf528cfa1587cde5cfe277e0e501fc03b5bf57638369575d6539cef478632fb93bd7d7d7178 languageName: node linkType: hard "@babel/preset-env@npm:^7.11.0, @babel/preset-env@npm:^7.12.1, @babel/preset-env@npm:^7.22.4": - version: 7.26.9 - resolution: "@babel/preset-env@npm:7.26.9" + version: 7.27.1 + resolution: "@babel/preset-env@npm:7.27.1" dependencies: - "@babel/compat-data": "npm:^7.26.8" - "@babel/helper-compilation-targets": "npm:^7.26.5" - "@babel/helper-plugin-utils": "npm:^7.26.5" - "@babel/helper-validator-option": "npm:^7.25.9" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.25.9" - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.25.9" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.25.9" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.25.9" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.25.9" + "@babel/compat-data": "npm:^7.27.1" + "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-option": "npm:^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.27.1" + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.27.1" "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions": "npm:^7.26.0" - "@babel/plugin-syntax-import-attributes": "npm:^7.26.0" + "@babel/plugin-syntax-import-assertions": "npm:^7.27.1" + "@babel/plugin-syntax-import-attributes": "npm:^7.27.1" "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" - "@babel/plugin-transform-arrow-functions": "npm:^7.25.9" - "@babel/plugin-transform-async-generator-functions": "npm:^7.26.8" - "@babel/plugin-transform-async-to-generator": "npm:^7.25.9" - "@babel/plugin-transform-block-scoped-functions": "npm:^7.26.5" - "@babel/plugin-transform-block-scoping": "npm:^7.25.9" - "@babel/plugin-transform-class-properties": "npm:^7.25.9" - "@babel/plugin-transform-class-static-block": "npm:^7.26.0" - "@babel/plugin-transform-classes": "npm:^7.25.9" - "@babel/plugin-transform-computed-properties": "npm:^7.25.9" - "@babel/plugin-transform-destructuring": "npm:^7.25.9" - "@babel/plugin-transform-dotall-regex": "npm:^7.25.9" - "@babel/plugin-transform-duplicate-keys": "npm:^7.25.9" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.25.9" - "@babel/plugin-transform-dynamic-import": "npm:^7.25.9" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.26.3" - "@babel/plugin-transform-export-namespace-from": "npm:^7.25.9" - "@babel/plugin-transform-for-of": "npm:^7.26.9" - "@babel/plugin-transform-function-name": "npm:^7.25.9" - "@babel/plugin-transform-json-strings": "npm:^7.25.9" - "@babel/plugin-transform-literals": "npm:^7.25.9" - "@babel/plugin-transform-logical-assignment-operators": "npm:^7.25.9" - "@babel/plugin-transform-member-expression-literals": "npm:^7.25.9" - "@babel/plugin-transform-modules-amd": "npm:^7.25.9" - "@babel/plugin-transform-modules-commonjs": "npm:^7.26.3" - "@babel/plugin-transform-modules-systemjs": "npm:^7.25.9" - "@babel/plugin-transform-modules-umd": "npm:^7.25.9" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.25.9" - "@babel/plugin-transform-new-target": "npm:^7.25.9" - "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.26.6" - "@babel/plugin-transform-numeric-separator": "npm:^7.25.9" - "@babel/plugin-transform-object-rest-spread": "npm:^7.25.9" - "@babel/plugin-transform-object-super": "npm:^7.25.9" - "@babel/plugin-transform-optional-catch-binding": "npm:^7.25.9" - "@babel/plugin-transform-optional-chaining": "npm:^7.25.9" - "@babel/plugin-transform-parameters": "npm:^7.25.9" - "@babel/plugin-transform-private-methods": "npm:^7.25.9" - "@babel/plugin-transform-private-property-in-object": "npm:^7.25.9" - "@babel/plugin-transform-property-literals": "npm:^7.25.9" - "@babel/plugin-transform-regenerator": "npm:^7.25.9" - "@babel/plugin-transform-regexp-modifiers": "npm:^7.26.0" - "@babel/plugin-transform-reserved-words": "npm:^7.25.9" - "@babel/plugin-transform-shorthand-properties": "npm:^7.25.9" - "@babel/plugin-transform-spread": "npm:^7.25.9" - "@babel/plugin-transform-sticky-regex": "npm:^7.25.9" - "@babel/plugin-transform-template-literals": "npm:^7.26.8" - "@babel/plugin-transform-typeof-symbol": "npm:^7.26.7" - "@babel/plugin-transform-unicode-escapes": "npm:^7.25.9" - "@babel/plugin-transform-unicode-property-regex": "npm:^7.25.9" - "@babel/plugin-transform-unicode-regex": "npm:^7.25.9" - "@babel/plugin-transform-unicode-sets-regex": "npm:^7.25.9" + "@babel/plugin-transform-arrow-functions": "npm:^7.27.1" + "@babel/plugin-transform-async-generator-functions": "npm:^7.27.1" + "@babel/plugin-transform-async-to-generator": "npm:^7.27.1" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.27.1" + "@babel/plugin-transform-block-scoping": "npm:^7.27.1" + "@babel/plugin-transform-class-properties": "npm:^7.27.1" + "@babel/plugin-transform-class-static-block": "npm:^7.27.1" + "@babel/plugin-transform-classes": "npm:^7.27.1" + "@babel/plugin-transform-computed-properties": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.27.1" + "@babel/plugin-transform-dotall-regex": "npm:^7.27.1" + "@babel/plugin-transform-duplicate-keys": "npm:^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-dynamic-import": "npm:^7.27.1" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.27.1" + "@babel/plugin-transform-export-namespace-from": "npm:^7.27.1" + "@babel/plugin-transform-for-of": "npm:^7.27.1" + "@babel/plugin-transform-function-name": "npm:^7.27.1" + "@babel/plugin-transform-json-strings": "npm:^7.27.1" + "@babel/plugin-transform-literals": "npm:^7.27.1" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.27.1" + "@babel/plugin-transform-member-expression-literals": "npm:^7.27.1" + "@babel/plugin-transform-modules-amd": "npm:^7.27.1" + "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" + "@babel/plugin-transform-modules-systemjs": "npm:^7.27.1" + "@babel/plugin-transform-modules-umd": "npm:^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-new-target": "npm:^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.27.1" + "@babel/plugin-transform-numeric-separator": "npm:^7.27.1" + "@babel/plugin-transform-object-rest-spread": "npm:^7.27.1" + "@babel/plugin-transform-object-super": "npm:^7.27.1" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.27.1" + "@babel/plugin-transform-optional-chaining": "npm:^7.27.1" + "@babel/plugin-transform-parameters": "npm:^7.27.1" + "@babel/plugin-transform-private-methods": "npm:^7.27.1" + "@babel/plugin-transform-private-property-in-object": "npm:^7.27.1" + "@babel/plugin-transform-property-literals": "npm:^7.27.1" + "@babel/plugin-transform-regenerator": "npm:^7.27.1" + "@babel/plugin-transform-regexp-modifiers": "npm:^7.27.1" + "@babel/plugin-transform-reserved-words": "npm:^7.27.1" + "@babel/plugin-transform-shorthand-properties": "npm:^7.27.1" + "@babel/plugin-transform-spread": "npm:^7.27.1" + "@babel/plugin-transform-sticky-regex": "npm:^7.27.1" + "@babel/plugin-transform-template-literals": "npm:^7.27.1" + "@babel/plugin-transform-typeof-symbol": "npm:^7.27.1" + "@babel/plugin-transform-unicode-escapes": "npm:^7.27.1" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.27.1" "@babel/preset-modules": "npm:0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2: "npm:^0.4.10" babel-plugin-polyfill-corejs3: "npm:^0.11.0" @@ -1345,7 +1344,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/6812ca76bd38165a58fe8354bab5e7204e1aa17d8b9270bd8f8babb08cc7fa94cd29525fe41b553f2ba0e84033d566f10da26012b8ee0f81897005c5225d0051 + checksum: 10c0/893b269f5e7e2084ee7fb60d3a1f154470c89169475170a8a595f1910cade9c9978b42df5405a46a699529dfdb1c6b0135cc4c0aa8f9e685ae230b1cb0172ad9 languageName: node linkType: hard @@ -1363,33 +1362,33 @@ __metadata: linkType: hard "@babel/preset-react@npm:^7.12.5, @babel/preset-react@npm:^7.22.3": - version: 7.26.3 - resolution: "@babel/preset-react@npm:7.26.3" + version: 7.27.1 + resolution: "@babel/preset-react@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - "@babel/helper-validator-option": "npm:^7.25.9" - "@babel/plugin-transform-react-display-name": "npm:^7.25.9" - "@babel/plugin-transform-react-jsx": "npm:^7.25.9" - "@babel/plugin-transform-react-jsx-development": "npm:^7.25.9" - "@babel/plugin-transform-react-pure-annotations": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-option": "npm:^7.27.1" + "@babel/plugin-transform-react-display-name": "npm:^7.27.1" + "@babel/plugin-transform-react-jsx": "npm:^7.27.1" + "@babel/plugin-transform-react-jsx-development": "npm:^7.27.1" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/b470dcba11032ef6c832066f4af5c75052eaed49feb0f445227231ef1b5c42aacd6e216988c0bd469fd5728cd27b6b059ca307c9ecaa80c6bb5da4bf1c833e12 + checksum: 10c0/a80b02ef08b026cb9830d6512d08c7cd378eef4c0631dacba4aa1106240d9bb76af6373463f0255f4bbdbfcce40375a61e92735375906ba5871629b0c314bc45 languageName: node linkType: hard "@babel/preset-typescript@npm:^7.21.5": - version: 7.27.0 - resolution: "@babel/preset-typescript@npm:7.27.0" + version: 7.27.1 + resolution: "@babel/preset-typescript@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.26.5" - "@babel/helper-validator-option": "npm:^7.25.9" - "@babel/plugin-syntax-jsx": "npm:^7.25.9" - "@babel/plugin-transform-modules-commonjs": "npm:^7.26.3" - "@babel/plugin-transform-typescript": "npm:^7.27.0" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-option": "npm:^7.27.1" + "@babel/plugin-syntax-jsx": "npm:^7.27.1" + "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" + "@babel/plugin-transform-typescript": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/986b20edab3c18727d911a6e1a14095c1271afc6cc625b02f42b371f06c1e041e5d7c1baf2afe8b0029b60788a06f02fd6844dedfe54183b148ab9a7429438a9 + checksum: 10c0/cba6ca793d915f8aff9fe2f13b0dfbf5fd3f2e9a17f17478ec9878e9af0d206dcfe93154b9fd353727f16c1dca7c7a3ceb4943f8d28b216235f106bc0fbbcaa3 languageName: node linkType: hard @@ -1402,48 +1401,46 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.22.3, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.27.0 - resolution: "@babel/runtime@npm:7.27.0" - dependencies: - regenerator-runtime: "npm:^0.14.0" - checksum: 10c0/35091ea9de48bd7fd26fb177693d64f4d195eb58ab2b142b893b7f3fa0f1d7c677604d36499ae0621a3703f35ba0c6a8f6c572cc8f7dc0317213841e493cf663 +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.22.3, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": + version: 7.27.1 + resolution: "@babel/runtime@npm:7.27.1" + checksum: 10c0/530a7332f86ac5a7442250456823a930906911d895c0b743bf1852efc88a20a016ed4cd26d442d0ca40ae6d5448111e02a08dd638a4f1064b47d080e2875dc05 languageName: node linkType: hard -"@babel/template@npm:^7.25.9, @babel/template@npm:^7.26.9, @babel/template@npm:^7.27.0, @babel/template@npm:^7.3.3": - version: 7.27.0 - resolution: "@babel/template@npm:7.27.0" +"@babel/template@npm:^7.27.1, @babel/template@npm:^7.3.3": + version: 7.27.1 + resolution: "@babel/template@npm:7.27.1" dependencies: - "@babel/code-frame": "npm:^7.26.2" - "@babel/parser": "npm:^7.27.0" - "@babel/types": "npm:^7.27.0" - checksum: 10c0/13af543756127edb5f62bf121f9b093c09a2b6fe108373887ccffc701465cfbcb17e07cf48aa7f440415b263f6ec006e9415c79dfc2e8e6010b069435f81f340 + "@babel/code-frame": "npm:^7.27.1" + "@babel/parser": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/155a8e056e82f1f1e2413b7bf9d96890e371d617c7f77f25621fb0ddb32128958d86bc5c3356f00be266e9f8c121d886de5b4143dbb72eac362377f53aba72a2 languageName: node linkType: hard -"@babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.10, @babel/traverse@npm:^7.26.5, @babel/traverse@npm:^7.26.8, @babel/traverse@npm:^7.27.0": - version: 7.27.0 - resolution: "@babel/traverse@npm:7.27.0" +"@babel/traverse@npm:^7.26.10, @babel/traverse@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/traverse@npm:7.27.1" dependencies: - "@babel/code-frame": "npm:^7.26.2" - "@babel/generator": "npm:^7.27.0" - "@babel/parser": "npm:^7.27.0" - "@babel/template": "npm:^7.27.0" - "@babel/types": "npm:^7.27.0" + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.27.1" + "@babel/parser": "npm:^7.27.1" + "@babel/template": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 10c0/c7af29781960dacaae51762e8bc6c4b13d6ab4b17312990fbca9fc38e19c4ad7fecaae24b1cf52fb844e8e6cdc76c70ad597f90e496bcb3cc0a1d66b41a0aa5b + checksum: 10c0/d912110037b03b1d70a2436cfd51316d930366a5f54252da2bced1ba38642f644f848240a951e5caf12f1ef6c40d3d96baa92ea6e84800f2e891c15e97b25d50 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.10, @babel/types@npm:^7.27.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.27.0 - resolution: "@babel/types@npm:7.27.0" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.26.10, @babel/types@npm:^7.27.1, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.27.1 + resolution: "@babel/types@npm:7.27.1" dependencies: - "@babel/helper-string-parser": "npm:^7.25.9" - "@babel/helper-validator-identifier": "npm:^7.25.9" - checksum: 10c0/6f1592eabe243c89a608717b07b72969be9d9d2fce1dee21426238757ea1fa60fdfc09b29de9e48d8104311afc6e6fb1702565a9cc1e09bc1e76f2b2ddb0f6e1 + "@babel/helper-string-parser": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + checksum: 10c0/ed736f14db2fdf0d36c539c8e06b6bb5e8f9649a12b5c0e1c516fed827f27ef35085abe08bf4d1302a4e20c9a254e762eed453bce659786d4a6e01ba26a91377 languageName: node linkType: hard @@ -15268,15 +15265,6 @@ __metadata: languageName: node linkType: hard -"regenerator-transform@npm:^0.15.2": - version: 0.15.2 - resolution: "regenerator-transform@npm:0.15.2" - dependencies: - "@babel/runtime": "npm:^7.8.4" - checksum: 10c0/7cfe6931ec793269701994a93bab89c0cc95379191fad866270a7fea2adfec67ea62bb5b374db77058b60ba4509319d9b608664d0d288bd9989ca8dbd08fae90 - languageName: node - linkType: hard - "regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": version: 1.0.2 resolution: "regex-not@npm:1.0.2" @@ -15301,17 +15289,17 @@ __metadata: languageName: node linkType: hard -"regexpu-core@npm:^6.1.1": - version: 6.1.1 - resolution: "regexpu-core@npm:6.1.1" +"regexpu-core@npm:^6.2.0": + version: 6.2.0 + resolution: "regexpu-core@npm:6.2.0" dependencies: regenerate: "npm:^1.4.2" regenerate-unicode-properties: "npm:^10.2.0" regjsgen: "npm:^0.8.0" - regjsparser: "npm:^0.11.0" + regjsparser: "npm:^0.12.0" unicode-match-property-ecmascript: "npm:^2.0.0" unicode-match-property-value-ecmascript: "npm:^2.1.0" - checksum: 10c0/07d49697e20f9b65977535abba4858b7f5171c13f7c366be53ec1886d3d5f69f1b98cc6a6e63cf271adda077c3366a4c851c7473c28bbd69cf5a6b6b008efc3e + checksum: 10c0/bbcb83a854bf96ce4005ee4e4618b71c889cda72674ce6092432f0039b47890c2d0dfeb9057d08d440999d9ea03879ebbb7f26ca005ccf94390e55c348859b98 languageName: node linkType: hard @@ -15322,14 +15310,14 @@ __metadata: languageName: node linkType: hard -"regjsparser@npm:^0.11.0": - version: 0.11.0 - resolution: "regjsparser@npm:0.11.0" +"regjsparser@npm:^0.12.0": + version: 0.12.0 + resolution: "regjsparser@npm:0.12.0" dependencies: jsesc: "npm:~3.0.2" bin: regjsparser: bin/parser - checksum: 10c0/155143a8f2c95e3170df4fff10ddf3f16a351b5d2b8cbb257e9f4a50abb9a980a28af0936b5bf850fee767537ffa8eb77c6b211fe8be19834dbe584dfd950c62 + checksum: 10c0/99d3e4e10c8c7732eb7aa843b8da2fd8b647fe144d3711b480e4647dc3bff4b1e96691ccf17f3ace24aa866a50b064236177cb25e6e4fbbb18285d99edaed83b languageName: node linkType: hard From b4394ec12954414b7d601473ecb21a49d9558082 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 2 May 2025 18:15:00 +0200 Subject: [PATCH 076/349] Change design of audio player in web UI (#34520) --- app/javascript/mastodon/blurhash.ts | 10 +- .../picture_in_picture_placeholder.jsx | 37 - .../picture_in_picture_placeholder.tsx | 46 + app/javascript/mastodon/components/status.jsx | 5 +- .../mastodon/containers/media_container.jsx | 2 +- .../features/alt_text_modal/index.tsx | 4 +- .../mastodon/features/audio/index.jsx | 588 ------------ .../mastodon/features/audio/index.tsx | 840 ++++++++++++++++++ .../mastodon/features/audio/visualizer.js | 136 --- .../components/embedded_status.tsx | 5 +- .../components/notification_mention.tsx | 3 +- .../picture_in_picture/components/footer.jsx | 195 ---- .../picture_in_picture/components/footer.tsx | 255 ++++++ .../features/picture_in_picture/index.tsx | 14 +- .../status/components/detailed_status.tsx | 18 +- .../features/ui/components/audio_modal.jsx | 74 -- .../features/ui/components/audio_modal.tsx | 78 ++ .../features/ui/components/media_modal.jsx | 2 +- .../features/ui/components/video_modal.jsx | 2 +- .../mastodon/features/video/index.tsx | 6 +- .../mastodon/hooks/useAudioVisualizer.ts | 112 +++ app/javascript/mastodon/reducers/statuses.js | 3 +- .../material-icons/400-24px/pip_exit-fill.svg | 1 + .../material-icons/400-24px/pip_exit.svg | 1 + .../styles/mastodon/components.scss | 125 ++- .../styles/mastodon/css_variables.scss | 2 +- 26 files changed, 1476 insertions(+), 1088 deletions(-) delete mode 100644 app/javascript/mastodon/components/picture_in_picture_placeholder.jsx create mode 100644 app/javascript/mastodon/components/picture_in_picture_placeholder.tsx delete mode 100644 app/javascript/mastodon/features/audio/index.jsx create mode 100644 app/javascript/mastodon/features/audio/index.tsx delete mode 100644 app/javascript/mastodon/features/audio/visualizer.js delete mode 100644 app/javascript/mastodon/features/picture_in_picture/components/footer.jsx create mode 100644 app/javascript/mastodon/features/picture_in_picture/components/footer.tsx delete mode 100644 app/javascript/mastodon/features/ui/components/audio_modal.jsx create mode 100644 app/javascript/mastodon/features/ui/components/audio_modal.tsx create mode 100644 app/javascript/mastodon/hooks/useAudioVisualizer.ts create mode 100644 app/javascript/material-icons/400-24px/pip_exit-fill.svg create mode 100644 app/javascript/material-icons/400-24px/pip_exit.svg diff --git a/app/javascript/mastodon/blurhash.ts b/app/javascript/mastodon/blurhash.ts index cafe7b12dc..a1d1a0f4e1 100644 --- a/app/javascript/mastodon/blurhash.ts +++ b/app/javascript/mastodon/blurhash.ts @@ -96,13 +96,19 @@ export const decode83 = (str: string) => { return value; }; -export const intToRGB = (int: number) => ({ +export interface RGB { + r: number; + g: number; + b: number; +} + +export const intToRGB = (int: number): RGB => ({ r: Math.max(0, int >> 16), g: Math.max(0, (int >> 8) & 255), b: Math.max(0, int & 255), }); -export const getAverageFromBlurhash = (blurhash: string) => { +export const getAverageFromBlurhash = (blurhash: string | null) => { if (!blurhash) { return null; } diff --git a/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx b/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx deleted file mode 100644 index 50f91a9275..0000000000 --- a/app/javascript/mastodon/components/picture_in_picture_placeholder.jsx +++ /dev/null @@ -1,37 +0,0 @@ -import PropTypes from 'prop-types'; -import { PureComponent } from 'react'; - -import { FormattedMessage } from 'react-intl'; - -import { connect } from 'react-redux'; - -import CancelPresentationIcon from '@/material-icons/400-24px/cancel_presentation.svg?react'; -import { removePictureInPicture } from 'mastodon/actions/picture_in_picture'; -import { Icon } from 'mastodon/components/icon'; - -class PictureInPicturePlaceholder extends PureComponent { - - static propTypes = { - dispatch: PropTypes.func.isRequired, - aspectRatio: PropTypes.string, - }; - - handleClick = () => { - const { dispatch } = this.props; - dispatch(removePictureInPicture()); - }; - - render () { - const { aspectRatio } = this.props; - - return ( -
    - - -
    - ); - } - -} - -export default connect()(PictureInPicturePlaceholder); diff --git a/app/javascript/mastodon/components/picture_in_picture_placeholder.tsx b/app/javascript/mastodon/components/picture_in_picture_placeholder.tsx new file mode 100644 index 0000000000..829ab5febd --- /dev/null +++ b/app/javascript/mastodon/components/picture_in_picture_placeholder.tsx @@ -0,0 +1,46 @@ +import { useCallback } from 'react'; + +import { FormattedMessage } from 'react-intl'; + +import PipExitIcon from '@/material-icons/400-24px/pip_exit.svg?react'; +import { removePictureInPicture } from 'mastodon/actions/picture_in_picture'; +import { Icon } from 'mastodon/components/icon'; +import { useAppDispatch } from 'mastodon/store'; + +export const PictureInPicturePlaceholder: React.FC<{ aspectRatio: string }> = ({ + aspectRatio, +}) => { + const dispatch = useAppDispatch(); + + const handleClick = useCallback(() => { + dispatch(removePictureInPicture()); + }, [dispatch]); + + const handleKeyDown = useCallback( + (e: React.KeyboardEvent) => { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + e.stopPropagation(); + handleClick(); + } + }, + [handleClick], + ); + + return ( +
    + + +
    + ); +}; diff --git a/app/javascript/mastodon/components/status.jsx b/app/javascript/mastodon/components/status.jsx index c45942dde4..21d596a58c 100644 --- a/app/javascript/mastodon/components/status.jsx +++ b/app/javascript/mastodon/components/status.jsx @@ -17,7 +17,7 @@ import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react'; import { ContentWarning } from 'mastodon/components/content_warning'; import { FilterWarning } from 'mastodon/components/filter_warning'; import { Icon } from 'mastodon/components/icon'; -import PictureInPicturePlaceholder from 'mastodon/components/picture_in_picture_placeholder'; +import { PictureInPicturePlaceholder } from 'mastodon/components/picture_in_picture_placeholder'; import { withOptionalRouter, WithOptionalRouterPropTypes } from 'mastodon/utils/react_router'; import Card from '../features/status/components/card'; @@ -484,9 +484,6 @@ class Status extends ImmutablePureComponent { foregroundColor={attachment.getIn(['meta', 'colors', 'foreground'])} accentColor={attachment.getIn(['meta', 'colors', 'accent'])} duration={attachment.getIn(['meta', 'original', 'duration'], 0)} - width={this.props.cachedMediaWidth} - height={110} - cacheWidth={this.props.cacheMediaWidth} deployPictureInPicture={pictureInPicture.get('available') ? this.handleDeployPictureInPicture : undefined} sensitive={status.get('sensitive')} blurhash={attachment.get('blurhash')} diff --git a/app/javascript/mastodon/containers/media_container.jsx b/app/javascript/mastodon/containers/media_container.jsx index 9c07341faa..e826dbfa96 100644 --- a/app/javascript/mastodon/containers/media_container.jsx +++ b/app/javascript/mastodon/containers/media_container.jsx @@ -8,7 +8,7 @@ import { ImmutableHashtag as Hashtag } from 'mastodon/components/hashtag'; import MediaGallery from 'mastodon/components/media_gallery'; import ModalRoot from 'mastodon/components/modal_root'; import { Poll } from 'mastodon/components/poll'; -import Audio from 'mastodon/features/audio'; +import { Audio } from 'mastodon/features/audio'; import Card from 'mastodon/features/status/components/card'; import MediaModal from 'mastodon/features/ui/components/media_modal'; import { Video } from 'mastodon/features/video'; diff --git a/app/javascript/mastodon/features/alt_text_modal/index.tsx b/app/javascript/mastodon/features/alt_text_modal/index.tsx index e2d05a99ca..08e4a8917c 100644 --- a/app/javascript/mastodon/features/alt_text_modal/index.tsx +++ b/app/javascript/mastodon/features/alt_text_modal/index.tsx @@ -27,7 +27,7 @@ import { Button } from 'mastodon/components/button'; import { GIFV } from 'mastodon/components/gifv'; import { LoadingIndicator } from 'mastodon/components/loading_indicator'; import { Skeleton } from 'mastodon/components/skeleton'; -import Audio from 'mastodon/features/audio'; +import { Audio } from 'mastodon/features/audio'; import { CharacterCounter } from 'mastodon/features/compose/components/character_counter'; import { Tesseract as fetchTesseract } from 'mastodon/features/ui/util/async-components'; import { Video, getPointerPosition } from 'mastodon/features/video'; @@ -212,11 +212,11 @@ const Preview: React.FC<{ return (