Merge remote-tracking branch 'parent/main' into upstream-20240403

This commit is contained in:
KMY 2024-04-03 12:12:09 +09:00
commit 479c4fecc1
63 changed files with 831 additions and 391 deletions

View file

@ -13,6 +13,6 @@ linters:
MiddleDot: MiddleDot:
enabled: true enabled: true
LineLength: LineLength:
max: 320 max: 300
ViewLength: ViewLength:
max: 200 # Override default value of 100 inherited from rubocop max: 200 # Override default value of 100 inherited from rubocop

View file

@ -39,7 +39,7 @@ Layout/FirstHashElementIndentation:
# Reason: Currently disabled in .rubocop_todo.yml # Reason: Currently disabled in .rubocop_todo.yml
# https://docs.rubocop.org/rubocop/cops_layout.html#layoutlinelength # https://docs.rubocop.org/rubocop/cops_layout.html#layoutlinelength
Layout/LineLength: Layout/LineLength:
Max: 320 # Default of 120 causes a duplicate entry in generated todo file Max: 300 # Default of 120 causes a duplicate entry in generated todo file
## Disable most Metrics/*Length cops ## Disable most Metrics/*Length cops
# Reason: those are often triggered and force significant refactors when this happend # Reason: those are often triggered and force significant refactors when this happend
@ -154,11 +154,6 @@ RSpec/NamedSubject:
RSpec/NotToNot: RSpec/NotToNot:
EnforcedStyle: to_not EnforcedStyle: to_not
# Reason: Prevailing style uses numeric status codes, matches Rails/HttpStatus
# https://docs.rubocop.org/rubocop-rspec/cops_rspec_rails.html#rspecrailshttpstatus
RSpec/Rails/HttpStatus:
EnforcedStyle: numeric
# Reason: Match overrides from Rspec/FilePath rule above # Reason: Match overrides from Rspec/FilePath rule above
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecspecfilepathformat # https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecspecfilepathformat
RSpec/SpecFilePathFormat: RSpec/SpecFilePathFormat:
@ -169,6 +164,11 @@ RSpec/SpecFilePathFormat:
OEmbedController: oembed_controller OEmbedController: oembed_controller
OStatus: ostatus OStatus: ostatus
# Reason: Prevailing style uses numeric status codes, matches Rails/HttpStatus
# https://docs.rubocop.org/rubocop-rspec/cops_rspec_rails.html#rspecrailshttpstatus
RSpecRails/HttpStatus:
EnforcedStyle: numeric
# Reason: # Reason:
# https://docs.rubocop.org/rubocop/cops_style.html#styleclassandmodulechildren # https://docs.rubocop.org/rubocop/cops_style.html#styleclassandmodulechildren
Style/ClassAndModuleChildren: Style/ClassAndModuleChildren:

View file

@ -1,6 +1,6 @@
# This configuration was generated by # This configuration was generated by
# `rubocop --auto-gen-config --auto-gen-only-exclude --no-exclude-limit --no-offense-counts --no-auto-gen-timestamp` # `rubocop --auto-gen-config --auto-gen-only-exclude --no-exclude-limit --no-offense-counts --no-auto-gen-timestamp`
# using RuboCop version 1.60.2. # using RuboCop version 1.62.1.
# The point is for the user to remove these configuration records # The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base. # one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new # Note that changes in the inspected code, or installation of new
@ -36,7 +36,7 @@ Metrics/PerceivedComplexity:
# Configuration parameters: CountAsOne. # Configuration parameters: CountAsOne.
RSpec/ExampleLength: RSpec/ExampleLength:
Max: 20 # Override default of 5 Max: 18
RSpec/MultipleExpectations: RSpec/MultipleExpectations:
Max: 7 Max: 7
@ -91,7 +91,6 @@ Style/FetchEnvVar:
Exclude: Exclude:
- 'app/lib/redis_configuration.rb' - 'app/lib/redis_configuration.rb'
- 'app/lib/translation_service.rb' - 'app/lib/translation_service.rb'
- 'config/environments/development.rb'
- 'config/environments/production.rb' - 'config/environments/production.rb'
- 'config/initializers/2_limited_federation_mode.rb' - 'config/initializers/2_limited_federation_mode.rb'
- 'config/initializers/3_omniauth.rb' - 'config/initializers/3_omniauth.rb'
@ -147,7 +146,6 @@ Style/GuardClause:
- 'lib/mastodon/cli/accounts.rb' - 'lib/mastodon/cli/accounts.rb'
- 'lib/mastodon/cli/maintenance.rb' - 'lib/mastodon/cli/maintenance.rb'
- 'lib/mastodon/cli/media.rb' - 'lib/mastodon/cli/media.rb'
- 'lib/paperclip/attachment_extensions.rb'
- 'lib/tasks/repo.rake' - 'lib/tasks/repo.rake'
# This cop supports safe autocorrection (--autocorrect). # This cop supports safe autocorrection (--autocorrect).

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1.4 # syntax=docker/dockerfile:1.7
# Please see https://docs.docker.com/engine/reference/builder for information about # Please see https://docs.docker.com/engine/reference/builder for information about
# the extended buildx capabilities used in this file. # the extended buildx capabilities used in this file.

View file

@ -69,7 +69,6 @@ gem 'nsa'
gem 'oj', '~> 3.14' gem 'oj', '~> 3.14'
gem 'ox', '~> 2.14' gem 'ox', '~> 2.14'
gem 'parslet' gem 'parslet'
gem 'posix-spawn'
gem 'public_suffix', '~> 5.0' gem 'public_suffix', '~> 5.0'
gem 'pundit', '~> 2.3' gem 'pundit', '~> 2.3'
gem 'premailer-rails' gem 'premailer-rails'
@ -89,7 +88,7 @@ gem 'sidekiq-unique-jobs', '~> 7.1'
gem 'sidekiq-bulk', '~> 0.2.0' gem 'sidekiq-bulk', '~> 0.2.0'
gem 'simple-navigation', '~> 4.4' gem 'simple-navigation', '~> 4.4'
gem 'simple_form', '~> 5.2' gem 'simple_form', '~> 5.2'
gem 'stoplight', '~> 3.0.1' gem 'stoplight', '~> 4.1'
gem 'strong_migrations', '1.8.0' gem 'strong_migrations', '1.8.0'
gem 'tty-prompt', '~> 0.23', require: false gem 'tty-prompt', '~> 0.23', require: false
gem 'twitter-text', '~> 3.1.0' gem 'twitter-text', '~> 3.1.0'

View file

@ -103,7 +103,7 @@ GEM
awrence (1.2.1) awrence (1.2.1)
aws-eventstream (1.3.0) aws-eventstream (1.3.0)
aws-partitions (1.899.0) aws-partitions (1.899.0)
aws-sdk-core (3.191.4) aws-sdk-core (3.191.5)
aws-eventstream (~> 1, >= 1.3.0) aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0) aws-partitions (~> 1, >= 1.651.0)
aws-sigv4 (~> 1.8) aws-sigv4 (~> 1.8)
@ -111,7 +111,7 @@ GEM
aws-sdk-kms (1.78.0) aws-sdk-kms (1.78.0)
aws-sdk-core (~> 3, >= 3.191.0) aws-sdk-core (~> 3, >= 3.191.0)
aws-sigv4 (~> 1.1) aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.146.0) aws-sdk-s3 (1.146.1)
aws-sdk-core (~> 3, >= 3.191.0) aws-sdk-core (~> 3, >= 3.191.0)
aws-sdk-kms (~> 1) aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.8) aws-sigv4 (~> 1.8)
@ -245,7 +245,7 @@ GEM
tzinfo tzinfo
excon (0.110.0) excon (0.110.0)
fabrication (2.31.0) fabrication (2.31.0)
faker (3.3.0) faker (3.3.1)
i18n (>= 1.8.11, < 2) i18n (>= 1.8.11, < 2)
faraday (1.10.3) faraday (1.10.3)
faraday-em_http (~> 1.0) faraday-em_http (~> 1.0)
@ -273,7 +273,7 @@ GEM
faraday_middleware (1.2.0) faraday_middleware (1.2.0)
faraday (~> 1.0) faraday (~> 1.0)
fast_blank (1.0.1) fast_blank (1.0.1)
fastimage (2.3.0) fastimage (2.3.1)
ffi (1.16.3) ffi (1.16.3)
ffi-compiler (1.0.1) ffi-compiler (1.0.1)
ffi (>= 1.0.0) ffi (>= 1.0.0)
@ -398,8 +398,8 @@ GEM
language_server-protocol (3.17.0.3) language_server-protocol (3.17.0.3)
launchy (2.5.2) launchy (2.5.2)
addressable (~> 2.8) addressable (~> 2.8)
letter_opener (1.8.1) letter_opener (1.10.0)
launchy (>= 2.2, < 3) launchy (>= 2.2, < 4)
letter_opener_web (2.0.0) letter_opener_web (2.0.0)
actionmailer (>= 5.2) actionmailer (>= 5.2)
letter_opener (~> 1.7) letter_opener (~> 1.7)
@ -509,7 +509,6 @@ GEM
pg (1.5.6) pg (1.5.6)
pghero (3.4.1) pghero (3.4.1)
activerecord (>= 6) activerecord (>= 6)
posix-spawn (0.3.15)
premailer (1.23.0) premailer (1.23.0)
addressable addressable
css_parser (>= 1.12.0) css_parser (>= 1.12.0)
@ -526,7 +525,7 @@ GEM
railties (>= 7.0.0) railties (>= 7.0.0)
psych (5.1.2) psych (5.1.2)
stringio stringio
public_suffix (5.0.4) public_suffix (5.0.5)
puma (6.4.2) puma (6.4.2)
nio4r (~> 2.0) nio4r (~> 2.0)
pundit (2.3.1) pundit (2.3.1)
@ -666,18 +665,21 @@ GEM
rubocop (~> 1.41) rubocop (~> 1.41)
rubocop-factory_bot (2.25.1) rubocop-factory_bot (2.25.1)
rubocop (~> 1.41) rubocop (~> 1.41)
rubocop-performance (1.20.2) rubocop-performance (1.21.0)
rubocop (>= 1.48.1, < 2.0) rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.30.0, < 2.0) rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rails (2.24.1) rubocop-rails (2.24.1)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
rack (>= 1.1) rack (>= 1.1)
rubocop (>= 1.33.0, < 2.0) rubocop (>= 1.33.0, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0) rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rspec (2.27.1) rubocop-rspec (2.28.0)
rubocop (~> 1.40) rubocop (~> 1.40)
rubocop-capybara (~> 2.17) rubocop-capybara (~> 2.17)
rubocop-factory_bot (~> 2.22) rubocop-factory_bot (~> 2.22)
rubocop-rspec_rails (~> 2.28)
rubocop-rspec_rails (2.28.2)
rubocop (~> 1.40)
ruby-prof (1.7.0) ruby-prof (1.7.0)
ruby-progressbar (1.13.0) ruby-progressbar (1.13.0)
ruby-saml (1.15.0) ruby-saml (1.15.0)
@ -695,7 +697,7 @@ GEM
scenic (1.7.0) scenic (1.7.0)
activerecord (>= 4.0.0) activerecord (>= 4.0.0)
railties (>= 4.0.0) railties (>= 4.0.0)
selenium-webdriver (4.18.1) selenium-webdriver (4.19.0)
base64 (~> 0.2) base64 (~> 0.2)
rexml (~> 3.2, >= 3.2.5) rexml (~> 3.2, >= 3.2.5)
rubyzip (>= 1.2.2, < 3.0) rubyzip (>= 1.2.2, < 3.0)
@ -732,7 +734,7 @@ GEM
smart_properties (1.17.0) smart_properties (1.17.0)
stackprof (0.2.26) stackprof (0.2.26)
statsd-ruby (1.5.0) statsd-ruby (1.5.0)
stoplight (3.0.2) stoplight (4.1.0)
redlock (~> 1.0) redlock (~> 1.0)
stringio (3.1.0) stringio (3.1.0)
strong_migrations (1.8.0) strong_migrations (1.8.0)
@ -898,7 +900,6 @@ DEPENDENCIES
parslet parslet
pg (~> 1.5) pg (~> 1.5)
pghero pghero
posix-spawn
premailer-rails premailer-rails
private_address_check (~> 0.5) private_address_check (~> 0.5)
propshaft propshaft
@ -941,7 +942,7 @@ DEPENDENCIES
simplecov (~> 0.22) simplecov (~> 0.22)
simplecov-lcov (~> 0.8) simplecov-lcov (~> 0.8)
stackprof stackprof
stoplight (~> 3.0.1) stoplight (~> 4.1)
strong_migrations (= 1.8.0) strong_migrations (= 1.8.0)
test-prof test-prof
thor (~> 1.2) thor (~> 1.2)

View file

@ -38,7 +38,12 @@ class Api::V1::AccountsController < Api::BaseController
def follow def follow
follow = FollowService.new.call(current_user.account, @account, reblogs: params.key?(:reblogs) ? truthy_param?(:reblogs) : nil, notify: params.key?(:notify) ? truthy_param?(:notify) : nil, languages: params.key?(:languages) ? params[:languages] : nil, with_rate_limit: true) follow = FollowService.new.call(current_user.account, @account, reblogs: params.key?(:reblogs) ? truthy_param?(:reblogs) : nil, notify: params.key?(:notify) ? truthy_param?(:notify) : nil, languages: params.key?(:languages) ? params[:languages] : nil, with_rate_limit: true)
options = @account.locked? || current_user.account.silenced? || (current_user.account.bot? && @account.user&.setting_lock_follow_from_bot) ? {} : { following_map: { @account.id => { reblogs: follow.show_reblogs?, notify: follow.notify?, languages: follow.languages } }, requested_map: { @account.id => false } } options = if @account.locked? || current_user.account.silenced? || (current_user.account.bot? && @account.user&.setting_lock_follow_from_bot)
{}
else
{ following_map: { @account.id => { reblogs: follow.show_reblogs?, notify: follow.notify?, languages: follow.languages } },
requested_map: { @account.id => false } }
end
render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships(**options) render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships(**options)
end end

View file

@ -66,7 +66,7 @@ module SignatureVerification
compare_signed_string = build_signed_string(include_query_string: false) compare_signed_string = build_signed_string(include_query_string: false)
return actor unless verify_signature(actor, signature, compare_signed_string).nil? return actor unless verify_signature(actor, signature, compare_signed_string).nil?
actor = stoplight_wrap_request { actor_refresh_key!(actor) } actor = stoplight_wrapper.run { actor_refresh_key!(actor) }
raise SignatureVerificationError, "Could not refresh public key #{signature_params['keyId']}" if actor.nil? raise SignatureVerificationError, "Could not refresh public key #{signature_params['keyId']}" if actor.nil?
@ -226,10 +226,10 @@ module SignatureVerification
end end
if key_id.start_with?('acct:') if key_id.start_with?('acct:')
stoplight_wrap_request { ResolveAccountService.new.call(key_id.delete_prefix('acct:'), suppress_errors: false) } stoplight_wrapper.run { ResolveAccountService.new.call(key_id.delete_prefix('acct:'), suppress_errors: false) }
elsif !ActivityPub::TagManager.instance.local_uri?(key_id) elsif !ActivityPub::TagManager.instance.local_uri?(key_id)
account = ActivityPub::TagManager.instance.uri_to_actor(key_id) account = ActivityPub::TagManager.instance.uri_to_actor(key_id)
account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, suppress_errors: false) } account ||= stoplight_wrapper.run { ActivityPub::FetchRemoteKeyService.new.call(key_id, suppress_errors: false) }
account account
end end
rescue Mastodon::PrivateNetworkAddressError => e rescue Mastodon::PrivateNetworkAddressError => e
@ -238,12 +238,11 @@ module SignatureVerification
raise SignatureVerificationError, e.message raise SignatureVerificationError, e.message
end end
def stoplight_wrap_request(&block) def stoplight_wrapper
Stoplight("source:#{request.remote_ip}", &block) Stoplight("source:#{request.remote_ip}")
.with_threshold(1) .with_threshold(1)
.with_cool_off_time(5.minutes.seconds) .with_cool_off_time(5.minutes.seconds)
.with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) } .with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) }
.run
end end
def actor_refresh_key!(actor) def actor_refresh_key!(actor)

View file

@ -0,0 +1,22 @@
// See app/serializers/rest/media_attachment_serializer.rb
export type MediaAttachmentType =
| 'image'
| 'gifv'
| 'video'
| 'unknown'
| 'audio';
export interface ApiMediaAttachmentJSON {
id: string;
type: MediaAttachmentType;
url: string;
preview_url: string;
remoteUrl: string;
preview_remote_url: string;
text_url: string;
// TODO: how to define this?
meta: unknown;
description?: string;
blurhash: string;
}

View file

@ -0,0 +1,23 @@
import type { ApiCustomEmojiJSON } from './custom_emoji';
// See app/serializers/rest/poll_serializer.rb
export interface ApiPollOptionJSON {
title: string;
votes_count: number;
}
export interface ApiPollJSON {
id: string;
expires_at: string;
expired: boolean;
multiple: boolean;
votes_count: number;
voters_count: number;
options: ApiPollOptionJSON[];
emojis: ApiCustomEmojiJSON[];
voted: boolean;
own_votes: number[];
}

View file

@ -0,0 +1,97 @@
// See app/serializers/rest/status_serializer.rb
import type { ApiAccountJSON } from './accounts';
import type { ApiCustomEmojiJSON } from './custom_emoji';
import type { ApiMediaAttachmentJSON } from './media_attachments';
import type { ApiPollJSON } from './polls';
// See app/modals/status.rb visibility+limited_scope
export type StatusVisibility =
| 'public'
| 'unlisted'
| 'private'
| 'direct'
| 'public_unlisted'
| 'login'
| 'mutual'
| 'circle'
| 'personal'
| 'reply'
| 'limited';
export interface ApiStatusApplicationJSON {
name: string;
website: string;
}
export interface ApiTagJSON {
name: string;
url: string;
}
export interface ApiMentionJSON {
id: string;
username: string;
url: string;
acct: string;
}
export interface ApiPreviewCardJSON {
url: string;
title: string;
description: string;
language: string;
type: string;
author_name: string;
author_url: string;
provider_name: string;
provider_url: string;
html: string;
width: number;
height: number;
image: string;
image_description: string;
embed_url: string;
blurhash: string;
published_at: string;
}
export interface ApiStatusJSON {
id: string;
created_at: string;
in_reply_to_id?: string;
in_reply_to_account_id?: string;
sensitive: boolean;
spoiler_text?: string;
visibility: StatusVisibility;
language: string;
uri: string;
url: string;
replies_count: number;
reblogs_count: number;
favorites_count: number;
edited_at?: string;
favorited?: boolean;
reblogged?: boolean;
muted?: boolean;
bookmarked?: boolean;
pinned?: boolean;
// filtered: FilterResult[]
filtered: unknown; // TODO
content?: string;
text?: string;
reblog?: ApiStatusJSON;
application?: ApiStatusApplicationJSON;
account: ApiAccountJSON;
media_attachments: ApiMediaAttachmentJSON[];
mentions: ApiMentionJSON[];
tags: ApiTagJSON[];
emojis: ApiCustomEmojiJSON[];
card?: ApiPreviewCardJSON;
poll?: ApiPollJSON;
}

View file

@ -27,7 +27,7 @@ export const FilteredNotificationsBanner = () => {
}; };
}, [dispatch]); }, [dispatch]);
if (policy === null || policy.getIn(['summary', 'pending_notifications_count']) * 1 === 0) { if (policy === null || policy.getIn(['summary', 'pending_notifications_count']) === 0) {
return null; return null;
} }

View file

@ -92,7 +92,11 @@
"block_modal.remote_users_caveat": "Serverile {domain} edastatakse palve otsust järgida. Ometi pole see tagatud, kuna mõned serverid võivad blokeeringuid käsitleda omal moel. Avalikud postitused võivad tuvastamata kasutajatele endiselt näha olla.", "block_modal.remote_users_caveat": "Serverile {domain} edastatakse palve otsust järgida. Ometi pole see tagatud, kuna mõned serverid võivad blokeeringuid käsitleda omal moel. Avalikud postitused võivad tuvastamata kasutajatele endiselt näha olla.",
"block_modal.show_less": "Kuva vähem", "block_modal.show_less": "Kuva vähem",
"block_modal.show_more": "Kuva rohkem", "block_modal.show_more": "Kuva rohkem",
"block_modal.they_cant_mention": "Ta ei saa mainida sind ega jälgida.",
"block_modal.they_cant_see_posts": "Ta ei näe sinu postitusi ja sa ei näe tema omi.",
"block_modal.they_will_know": "Ta näeb, et ta on blokeeritud.",
"block_modal.title": "Blokeeri kasutaja?", "block_modal.title": "Blokeeri kasutaja?",
"block_modal.you_wont_see_mentions": "Sa ei näe postitusi, mis mainivad teda.",
"boost_modal.combo": "Vajutades {combo}, saab selle edaspidi vahele jätta", "boost_modal.combo": "Vajutades {combo}, saab selle edaspidi vahele jätta",
"bundle_column_error.copy_stacktrace": "Kopeeri veateade", "bundle_column_error.copy_stacktrace": "Kopeeri veateade",
"bundle_column_error.error.body": "Soovitud lehte ei õnnestunud esitada. See võib olla meie koodiviga või probleem brauseri ühilduvusega.", "bundle_column_error.error.body": "Soovitud lehte ei õnnestunud esitada. See võib olla meie koodiviga või probleem brauseri ühilduvusega.",
@ -206,8 +210,26 @@
"dismissable_banner.explore_tags": "Need sildid siit ja teistes serveritest detsentraliseeritud võrgus koguvad tähelepanu just praegu selles serveris.", "dismissable_banner.explore_tags": "Need sildid siit ja teistes serveritest detsentraliseeritud võrgus koguvad tähelepanu just praegu selles serveris.",
"dismissable_banner.public_timeline": "Need on kõige uuemad avalikud postitused inimestelt sotsiaalvõrgustikus, mida {domain} inimesed jälgivad.", "dismissable_banner.public_timeline": "Need on kõige uuemad avalikud postitused inimestelt sotsiaalvõrgustikus, mida {domain} inimesed jälgivad.",
"domain_block_modal.block": "Blokeeri server", "domain_block_modal.block": "Blokeeri server",
"domain_block_modal.block_account_instead": "Selle asemel blokeeri @{name}",
"domain_block_modal.they_can_interact_with_old_posts": "Inimesed sellest serverist saavad interakteeruda sinu vanade postitustega.",
"domain_block_modal.they_cant_follow": "Sellest serverist ei saa keegi sind jälgida.",
"domain_block_modal.they_wont_know": "Nad ei tea, et nad on blokeeritud.",
"domain_block_modal.title": "Blokeerida domeen?",
"domain_block_modal.you_will_lose_followers": "Kõik sinu sellest serverist pärit jälgijad eemaldatakse.",
"domain_block_modal.you_wont_see_posts": "Sa ei näe selle serveri kasutajate postitusi ega teavitusi.",
"domain_pill.activitypub_lets_connect": "See võimaldab sul ühenduda inimestega ja nendega suhelda mitte ainult Mastodonis, vaid ka teistes suhtlusrakendustes.",
"domain_pill.activitypub_like_language": "ActivityPub on nagu keel, mida Mastodon räägib teiste suhtlusvõrgustikega.",
"domain_pill.server": "Server", "domain_pill.server": "Server",
"domain_pill.their_handle": "Tema tunnus:",
"domain_pill.their_server": "Tema digitaalne kodu, kus kõik tema postitused on.",
"domain_pill.their_username": "Tema unikaalne tunnus tema serveris. On võimalik, et mingites teistes serverites on sama kasutajanimega kasutajaid.",
"domain_pill.username": "Kasutajanimi", "domain_pill.username": "Kasutajanimi",
"domain_pill.whats_in_a_handle": "Mis on tunnuses?",
"domain_pill.who_they_are": "Kuna tunnus ütleb, kes keegi on ja kus, saad suhelda inimestega üle <button>ActivityPub-poolt toetatud sotsiaalvõrkude platvormide</button>.",
"domain_pill.who_you_are": "Kuna tunnus ütleb, kes sa oled ja kus, saavad inimesed sinuga suhelda üle <button>ActivityPub-poolt toetatud sotsiaalvõrkude platvormide</button>.",
"domain_pill.your_handle": "Sinu tunnus:",
"domain_pill.your_server": "Sinu digitaalne kodu, kus on kõik sinu postitused. Sulle ei meeldi see? Vaheta mistahes ajal serverit ja võta jälgijad ka.",
"domain_pill.your_username": "Sinu unikaalne identifikaator siin serveris. On võimalik, et leiad teistes serverites samasuguse kasutajanimega kasutajaid.",
"embed.instructions": "Lisa see postitus oma veebilehele, kopeerides alloleva koodi.", "embed.instructions": "Lisa see postitus oma veebilehele, kopeerides alloleva koodi.",
"embed.preview": "Nii näeb see välja:", "embed.preview": "Nii näeb see välja:",
"emoji_button.activity": "Tegevus", "emoji_button.activity": "Tegevus",
@ -244,6 +266,7 @@
"empty_column.list": "Siin loetelus pole veel midagi. Kui loetelu liikmed teevad uusi postitusi, näed neid siin.", "empty_column.list": "Siin loetelus pole veel midagi. Kui loetelu liikmed teevad uusi postitusi, näed neid siin.",
"empty_column.lists": "Pole veel ühtegi nimekirja. Kui lood mõne, näed neid siin.", "empty_column.lists": "Pole veel ühtegi nimekirja. Kui lood mõne, näed neid siin.",
"empty_column.mutes": "Sa pole veel ühtegi kasutajat vaigistanud.", "empty_column.mutes": "Sa pole veel ühtegi kasutajat vaigistanud.",
"empty_column.notification_requests": "Kõik tühi! Siin pole mitte midagi. Kui saad uusi teavitusi, ilmuvad need siin vastavalt sinu seadistustele.",
"empty_column.notifications": "Ei ole veel teateid. Kui keegi suhtleb sinuga, näed seda siin.", "empty_column.notifications": "Ei ole veel teateid. Kui keegi suhtleb sinuga, näed seda siin.",
"empty_column.public": "Siin pole midagi! Kirjuta midagi avalikku või jälgi ise kasutajaid täitmaks seda ruumi", "empty_column.public": "Siin pole midagi! Kirjuta midagi avalikku või jälgi ise kasutajaid täitmaks seda ruumi",
"error.unexpected_crash.explanation": "Meie poolse probleemi või veebilehitseja ühilduvusprobleemi tõttu ei suutnud me seda lehekülge korrektselt näidata.", "error.unexpected_crash.explanation": "Meie poolse probleemi või veebilehitseja ühilduvusprobleemi tõttu ei suutnud me seda lehekülge korrektselt näidata.",
@ -275,6 +298,8 @@
"filter_modal.select_filter.title": "Filtreeri seda postitust", "filter_modal.select_filter.title": "Filtreeri seda postitust",
"filter_modal.title.status": "Postituse filtreerimine", "filter_modal.title.status": "Postituse filtreerimine",
"filtered_notifications_banner.pending_requests": "Teateid {count, plural, =0 {mitte üheltki} one {ühelt} other {#}} inimeselt, keda võid teada", "filtered_notifications_banner.pending_requests": "Teateid {count, plural, =0 {mitte üheltki} one {ühelt} other {#}} inimeselt, keda võid teada",
"filtered_notifications_banner.private_mentions": "{count, plural, one {privaatne teavitus} other {privaatsed teavitused}}",
"filtered_notifications_banner.title": "Filtreeritud teavitused",
"firehose.all": "Kõik", "firehose.all": "Kõik",
"firehose.local": "See server", "firehose.local": "See server",
"firehose.remote": "Teised serverid", "firehose.remote": "Teised serverid",
@ -403,8 +428,15 @@
"loading_indicator.label": "Laadimine…", "loading_indicator.label": "Laadimine…",
"media_gallery.toggle_visible": "{number, plural, one {Varja pilt} other {Varja pildid}}", "media_gallery.toggle_visible": "{number, plural, one {Varja pilt} other {Varja pildid}}",
"moved_to_account_banner.text": "Kontot {disabledAccount} ei ole praegu võimalik kasutada, sest kolisid kontole {movedToAccount}.", "moved_to_account_banner.text": "Kontot {disabledAccount} ei ole praegu võimalik kasutada, sest kolisid kontole {movedToAccount}.",
"mute_modal.hide_from_notifications": "Peida teavituste hulgast",
"mute_modal.hide_options": "Peida valikud", "mute_modal.hide_options": "Peida valikud",
"mute_modal.indefinite": "Kuni eemaldan neilt vaigistuse",
"mute_modal.show_options": "Kuva valikud", "mute_modal.show_options": "Kuva valikud",
"mute_modal.they_can_mention_and_follow": "Ta saab sind mainida ja sind jälgida, kuid sa ei näe teda.",
"mute_modal.they_wont_know": "Ta ei tea, et ta on vaigistatud.",
"mute_modal.title": "Vaigistada kasutaja?",
"mute_modal.you_wont_see_mentions": "Sa ei näe postitusi, mis teda mainivad.",
"mute_modal.you_wont_see_posts": "Ta näeb jätkuvalt sinu postitusi, kuid sa ei näe tema omi.",
"navigation_bar.about": "Teave", "navigation_bar.about": "Teave",
"navigation_bar.advanced_interface": "Ava kohandatud veebiliides", "navigation_bar.advanced_interface": "Ava kohandatud veebiliides",
"navigation_bar.blocks": "Blokeeritud kasutajad", "navigation_bar.blocks": "Blokeeritud kasutajad",
@ -440,6 +472,10 @@
"notification.own_poll": "Su küsitlus on lõppenud", "notification.own_poll": "Su küsitlus on lõppenud",
"notification.poll": "Küsitlus, milles osalesid, on lõppenud", "notification.poll": "Küsitlus, milles osalesid, on lõppenud",
"notification.reblog": "{name} jagas edasi postitust", "notification.reblog": "{name} jagas edasi postitust",
"notification.relationships_severance_event": "Kadunud ühendus kasutajaga {name}",
"notification.relationships_severance_event.account_suspension": "{from} admin on kustutanud {target}, mis tähendab, et sa ei saa enam neilt uuendusi või suhelda nendega.",
"notification.relationships_severance_event.domain_block": "{from} admin on blokeerinud {target}, sealhulgas {followersCount} sinu jälgijat ja {followingCount, plural, one {# konto} other {# kontot}}, mida jälgid.",
"notification.relationships_severance_event.learn_more": "Saa rohkem teada",
"notification.status": "{name} just postitas", "notification.status": "{name} just postitas",
"notification.update": "{name} muutis postitust", "notification.update": "{name} muutis postitust",
"notification_requests.accept": "Nõus", "notification_requests.accept": "Nõus",
@ -450,6 +486,8 @@
"notifications.column_settings.admin.sign_up": "Uued kasutajad:", "notifications.column_settings.admin.sign_up": "Uued kasutajad:",
"notifications.column_settings.alert": "Töölauateated", "notifications.column_settings.alert": "Töölauateated",
"notifications.column_settings.favourite": "Lemmikud:", "notifications.column_settings.favourite": "Lemmikud:",
"notifications.column_settings.filter_bar.advanced": "Näita kõiki kategooriaid",
"notifications.column_settings.filter_bar.category": "Kiirfiltri riba",
"notifications.column_settings.follow": "Uued jälgijad:", "notifications.column_settings.follow": "Uued jälgijad:",
"notifications.column_settings.follow_request": "Uued jälgimistaotlused:", "notifications.column_settings.follow_request": "Uued jälgimistaotlused:",
"notifications.column_settings.mention": "Mainimised:", "notifications.column_settings.mention": "Mainimised:",
@ -475,6 +513,7 @@
"notifications.permission_denied": "Töölauamärguanded pole saadaval, kuna eelnevalt keelduti lehitsejale teavituste luba andmast", "notifications.permission_denied": "Töölauamärguanded pole saadaval, kuna eelnevalt keelduti lehitsejale teavituste luba andmast",
"notifications.permission_denied_alert": "Töölaua märguandeid ei saa lubada, kuna brauseri luba on varem keeldutud", "notifications.permission_denied_alert": "Töölaua märguandeid ei saa lubada, kuna brauseri luba on varem keeldutud",
"notifications.permission_required": "Töölaua märguanded ei ole saadaval, kuna vajalik luba pole antud.", "notifications.permission_required": "Töölaua märguanded ei ole saadaval, kuna vajalik luba pole antud.",
"notifications.policy.filter_new_accounts.hint": "Loodud viimase {days, plural, one {ühe päeva} other {# päeva}} jooksul",
"notifications.policy.filter_new_accounts_title": "Uued kontod", "notifications.policy.filter_new_accounts_title": "Uued kontod",
"notifications_permission_banner.enable": "Luba töölaua märguanded", "notifications_permission_banner.enable": "Luba töölaua märguanded",
"notifications_permission_banner.how_to_control": "Et saada teateid, ajal mil Mastodon pole avatud, luba töölauamärguanded. Saad täpselt määrata, mis tüüpi tegevused tekitavad märguandeid, kasutates peale teadaannete sisse lülitamist üleval olevat nuppu {icon}.", "notifications_permission_banner.how_to_control": "Et saada teateid, ajal mil Mastodon pole avatud, luba töölauamärguanded. Saad täpselt määrata, mis tüüpi tegevused tekitavad märguandeid, kasutates peale teadaannete sisse lülitamist üleval olevat nuppu {icon}.",

View file

@ -3,15 +3,15 @@
"about.contact": "Contacto:", "about.contact": "Contacto:",
"about.disclaimer": "Mastodon es software libere, de codice aperte, e un marca de Mastodon gGmbH.", "about.disclaimer": "Mastodon es software libere, de codice aperte, e un marca de Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Ration non disponibile", "about.domain_blocks.no_reason_available": "Ration non disponibile",
"about.domain_blocks.preamble": "Mastodon generalmente permitte vider contento ab e interacter con usatores ab ulle altere servitor in le fediverso. Iste es le exceptiones que ha essite facite in iste servitor particular.", "about.domain_blocks.preamble": "Mastodon generalmente permitte vider le contento de, e interager con, usatores de qualcunque altere servitor in le fediverso. Istes es le exceptiones que ha essite facite sur iste servitor particular.",
"about.domain_blocks.silenced.explanation": "Generalmente non videras perfiles e contento de iste servitor, a minus que tu expressemente lo cerca o opta pro lo per sequer.", "about.domain_blocks.silenced.explanation": "Generalmente, tu non videra le profilos e le contento de iste servitor, excepte si tu expressemente cerca le contento o seque le profilos.",
"about.domain_blocks.silenced.title": "Limitate", "about.domain_blocks.silenced.title": "Limitate",
"about.domain_blocks.suspended.explanation": "Nulle data de iste servitor essera processate, immagazinate o scambiate, faciente qualcunque interaction o communication con usatores de iste servitor impossibile.", "about.domain_blocks.suspended.explanation": "Nulle datos de iste servitor essera processate, immagazinate o excambiate, rendente omne interaction o communication con usatores de iste servitor impossibile.",
"about.domain_blocks.suspended.title": "Suspendite", "about.domain_blocks.suspended.title": "Suspendite",
"about.not_available": "Iste information non faceva disponibile in iste servitor.", "about.not_available": "Iste information non ha essite rendite disponibile sur iste servitor.",
"about.rules": "Regulas del servitor", "about.rules": "Regulas del servitor",
"account.account_note_header": "Nota", "account.account_note_header": "Nota",
"account.add_or_remove_from_list": "Adder o remover ab listas", "account.add_or_remove_from_list": "Adder a, o remover de listas",
"account.badges.group": "Gruppo", "account.badges.group": "Gruppo",
"account.block": "Blocar @{name}", "account.block": "Blocar @{name}",
"account.block_domain": "Blocar dominio {domain}", "account.block_domain": "Blocar dominio {domain}",
@ -19,31 +19,31 @@
"account.blocked": "Blocate", "account.blocked": "Blocate",
"account.browse_more_on_origin_server": "Navigar plus sur le profilo original", "account.browse_more_on_origin_server": "Navigar plus sur le profilo original",
"account.copy": "Copiar ligamine a profilo", "account.copy": "Copiar ligamine a profilo",
"account.direct": "Mentionar privatemente a @{name}", "account.direct": "Mentionar privatemente @{name}",
"account.disable_notifications": "Stoppar le notificationes quando @{name} publica", "account.disable_notifications": "Non plus notificar me quando @{name} publica",
"account.domain_blocked": "Dominio blocate", "account.domain_blocked": "Dominio blocate",
"account.edit_profile": "Modificar profilo", "account.edit_profile": "Modificar profilo",
"account.enable_notifications": "Notifica me quando @{name} publica", "account.enable_notifications": "Notificar me quando @{name} publica",
"account.endorse": "Evidentiar sur le profilo", "account.endorse": "Evidentiar sur le profilo",
"account.featured_tags.last_status_at": "Ultime message in {date}", "account.featured_tags.last_status_at": "Ultime message publicate le {date}",
"account.featured_tags.last_status_never": "Necun messages", "account.featured_tags.last_status_never": "Necun messages",
"account.featured_tags.title": "Hashtags eminente de {name}", "account.featured_tags.title": "Hashtags eminente de {name}",
"account.follow": "Sequer", "account.follow": "Sequer",
"account.follow_back": "Sequer etiam", "account.follow_back": "Sequer in retorno",
"account.followers": "Sequitores", "account.followers": "Sequitores",
"account.followers.empty": "Iste usator ancora non ha sequitores.", "account.followers.empty": "Necuno seque ancora iste usator.",
"account.followers_counter": "{count, plural, one {{counter} sequitor} other {{counter} sequitores}}", "account.followers_counter": "{count, plural, one {{counter} sequitor} other {{counter} sequitores}}",
"account.following": "Sequente", "account.following": "Sequente",
"account.follows.empty": "Iste usator ancora non seque nemo.", "account.follows.empty": "Iste usator non seque ancora alcuno.",
"account.go_to_profile": "Vader al profilo", "account.go_to_profile": "Vader al profilo",
"account.hide_reblogs": "Celar boosts de @{name}", "account.hide_reblogs": "Celar boosts de @{name}",
"account.in_memoriam": "In Memoriam.", "account.in_memoriam": "In memoriam.",
"account.languages": "Cambiar le linguas subscribite", "account.languages": "Cambiar le linguas subscribite",
"account.link_verified_on": "Le proprietate de iste ligamine esseva verificate le {date}", "account.link_verified_on": "Le proprietate de iste ligamine ha essite verificate le {date}",
"account.locked_info": "Le stato de confidentialitate de iste conto es definite a blocate. Le proprietario revisa manualmente qui pote sequer lo.", "account.locked_info": "Le stato de confidentialitate de iste conto es definite como serrate. Le proprietario determina manualmente qui pote sequer le.",
"account.media": "Multimedia", "account.media": "Multimedia",
"account.mention": "Mentionar @{name}", "account.mention": "Mentionar @{name}",
"account.moved_to": "{name} indicava que lor nove conto ora es:", "account.moved_to": "{name} ha indicate que su nove conto ora es:",
"account.mute": "Silentiar @{name}", "account.mute": "Silentiar @{name}",
"account.mute_notifications_short": "Silentiar le notificationes", "account.mute_notifications_short": "Silentiar le notificationes",
"account.mute_short": "Silentiar", "account.mute_short": "Silentiar",
@ -53,9 +53,9 @@
"account.posts": "Messages", "account.posts": "Messages",
"account.posts_with_replies": "Messages e responsas", "account.posts_with_replies": "Messages e responsas",
"account.requested": "Attendente le approbation. Clicca pro cancellar le requesta de sequer", "account.requested": "Attendente le approbation. Clicca pro cancellar le requesta de sequer",
"account.requested_follow": "{name} habeva requestate sequer te", "account.requested_follow": "{name} ha requestate de sequer te",
"account.share": "Compartir profilo de @{name}", "account.share": "Compartir profilo de @{name}",
"account.show_reblogs": "Monstrar responsas de @{name}", "account.show_reblogs": "Monstrar impulsos de @{name}",
"account.statuses_counter": "{count, plural, one {{counter} message} other {{counter} messages}}", "account.statuses_counter": "{count, plural, one {{counter} message} other {{counter} messages}}",
"account.unblock": "Disblocar @{name}", "account.unblock": "Disblocar @{name}",
"account.unblock_domain": "Disblocar dominio {domain}", "account.unblock_domain": "Disblocar dominio {domain}",
@ -66,23 +66,26 @@
"account.unmute_notifications_short": "Non plus silentiar le notificationes", "account.unmute_notifications_short": "Non plus silentiar le notificationes",
"account.unmute_short": "Non plus silentiar", "account.unmute_short": "Non plus silentiar",
"account_note.placeholder": "Clicca pro adder un nota", "account_note.placeholder": "Clicca pro adder un nota",
"admin.dashboard.retention.average": "Median", "admin.dashboard.retention.average": "Media",
"admin.dashboard.retention.cohort_size": "Nove usatores", "admin.dashboard.retention.cohort_size": "Nove usatores",
"admin.impact_report.instance_followers": "Sequitores que nostre usatores poterea perder", "admin.impact_report.instance_followers": "Sequitores que nostre usatores perderea",
"admin.impact_report.instance_follows": "Sequitores que lor usatores poterea perder", "admin.impact_report.instance_follows": "Sequitores que lor usatores perderea",
"alert.rate_limited.message": "Retenta depost {retry_time, time, medium}.", "alert.rate_limited.message": "Per favor retenta post {retry_time, time, medium}.",
"alert.unexpected.message": "Ocurreva un error inexpectate.", "alert.unexpected.message": "Un error inexpectate ha occurrite.",
"announcement.announcement": "Annuncio", "announcement.announcement": "Annuncio",
"audio.hide": "Celar audio", "audio.hide": "Celar audio",
"bundle_column_error.error.title": "Oh, non!", "block_modal.show_less": "Monstrar minus",
"block_modal.show_more": "Monstrar plus",
"block_modal.title": "Blocar usator?",
"bundle_column_error.error.title": "Oh, no!",
"bundle_column_error.network.title": "Error de rete", "bundle_column_error.network.title": "Error de rete",
"bundle_column_error.retry": "Tentar novemente", "bundle_column_error.retry": "Tentar novemente",
"bundle_column_error.return": "Retornar al initio", "bundle_column_error.return": "Retornar al initio",
"bundle_modal_error.close": "Clauder", "bundle_modal_error.close": "Clauder",
"bundle_modal_error.retry": "Tentar novemente", "bundle_modal_error.retry": "Tentar novemente",
"closed_registrations_modal.description": "Crear un conto in {domain} actualmente non es possibile, ma considera que tu non besonia un conto specific in {domain} pro usar Mastodon.", "closed_registrations_modal.description": "Crear un conto in {domain} actualmente non es possibile, ma considera que non es necessari haber un conto specificamente sur {domain} pro usar Mastodon.",
"closed_registrations_modal.find_another_server": "Trovar altere servitor", "closed_registrations_modal.find_another_server": "Cercar un altere servitor",
"column.about": "A proposito de", "column.about": "A proposito",
"column.blocks": "Usatores blocate", "column.blocks": "Usatores blocate",
"column.bookmarks": "Marcapaginas", "column.bookmarks": "Marcapaginas",
"column.community": "Chronologia local", "column.community": "Chronologia local",
@ -90,7 +93,7 @@
"column.directory": "Navigar profilos", "column.directory": "Navigar profilos",
"column.domain_blocks": "Dominios blocate", "column.domain_blocks": "Dominios blocate",
"column.favourites": "Favoritos", "column.favourites": "Favoritos",
"column.firehose": "Fluxos in directe", "column.firehose": "Fluxos in directo",
"column.home": "Initio", "column.home": "Initio",
"column.lists": "Listas", "column.lists": "Listas",
"column.mutes": "Usatores silentiate", "column.mutes": "Usatores silentiate",
@ -103,7 +106,7 @@
"column_header.show_settings": "Monstrar le parametros", "column_header.show_settings": "Monstrar le parametros",
"column_subheading.settings": "Parametros", "column_subheading.settings": "Parametros",
"community.column_settings.local_only": "Solmente local", "community.column_settings.local_only": "Solmente local",
"community.column_settings.media_only": "Solmente medios", "community.column_settings.media_only": "Solmente multimedia",
"compose.language.change": "Cambiar le lingua", "compose.language.change": "Cambiar le lingua",
"compose.language.search": "Cercar linguas...", "compose.language.search": "Cercar linguas...",
"compose.published.body": "Message publicate.", "compose.published.body": "Message publicate.",
@ -111,14 +114,14 @@
"compose.saved.body": "Message salvate.", "compose.saved.body": "Message salvate.",
"compose_form.direct_message_warning_learn_more": "Apprender plus", "compose_form.direct_message_warning_learn_more": "Apprender plus",
"compose_form.lock_disclaimer": "Tu conto non es {locked}. Quicunque pote sequer te pro vider tu messages solo pro sequitores.", "compose_form.lock_disclaimer": "Tu conto non es {locked}. Quicunque pote sequer te pro vider tu messages solo pro sequitores.",
"compose_form.lock_disclaimer.lock": "blocate", "compose_form.lock_disclaimer.lock": "serrate",
"compose_form.poll.duration": "Duration del inquesta", "compose_form.poll.duration": "Durata del sondage",
"compose_form.poll.multiple": "Selection multiple", "compose_form.poll.multiple": "Selection multiple",
"compose_form.poll.option_placeholder": "Option {number}", "compose_form.poll.option_placeholder": "Option {number}",
"compose_form.poll.single": "Seliger un", "compose_form.poll.single": "Seliger un",
"compose_form.poll.switch_to_multiple": "Cambiar inquesta pro permitter selectiones multiple", "compose_form.poll.switch_to_multiple": "Cambiar le sondage pro permitter selectiones multiple",
"compose_form.poll.switch_to_single": "Cambiar inquesta pro permitter selection singule", "compose_form.poll.switch_to_single": "Cambiar le sondage pro permitter selection singule",
"compose_form.poll.type": "Stylo", "compose_form.poll.type": "Stilo",
"compose_form.publish": "Publicar", "compose_form.publish": "Publicar",
"compose_form.publish_form": "Nove message", "compose_form.publish_form": "Nove message",
"compose_form.reply": "Responder", "compose_form.reply": "Responder",
@ -129,18 +132,19 @@
"confirmation_modal.cancel": "Cancellar", "confirmation_modal.cancel": "Cancellar",
"confirmations.block.confirm": "Blocar", "confirmations.block.confirm": "Blocar",
"confirmations.cancel_follow_request.confirm": "Retirar requesta", "confirmations.cancel_follow_request.confirm": "Retirar requesta",
"confirmations.cancel_follow_request.message": "Es tu secur que tu vole retirar tu requesta a sequer a {name}?", "confirmations.cancel_follow_request.message": "Es tu secur que tu vole retirar tu requesta de sequer {name}?",
"confirmations.delete.confirm": "Deler", "confirmations.delete.confirm": "Deler",
"confirmations.delete.message": "Es tu secur que tu vole deler iste message?", "confirmations.delete.message": "Es tu secur que tu vole deler iste message?",
"confirmations.delete_list.confirm": "Deler", "confirmations.delete_list.confirm": "Deler",
"confirmations.delete_list.message": "Es tu secur que tu vole deler permanentemente iste lista?", "confirmations.delete_list.message": "Es tu secur que tu vole deler permanentemente iste lista?",
"confirmations.domain_block.confirm": "Blocar le servitor",
"confirmations.edit.confirm": "Modificar", "confirmations.edit.confirm": "Modificar",
"confirmations.logout.confirm": "Clauder le session", "confirmations.logout.confirm": "Clauder session",
"confirmations.logout.message": "Es tu secur que tu vole clauder le session?", "confirmations.logout.message": "Es tu secur que tu vole clauder le session?",
"confirmations.mute.confirm": "Silentiar", "confirmations.mute.confirm": "Silentiar",
"confirmations.reply.confirm": "Responder", "confirmations.reply.confirm": "Responder",
"confirmations.unfollow.confirm": "Non plus sequer", "confirmations.unfollow.confirm": "Non plus sequer",
"confirmations.unfollow.message": "Es tu secur que tu vole non plus sequer {name}?", "confirmations.unfollow.message": "Es tu secur que tu vole cessar de sequer {name}?",
"conversation.delete": "Deler conversation", "conversation.delete": "Deler conversation",
"conversation.mark_as_read": "Marcar como legite", "conversation.mark_as_read": "Marcar como legite",
"conversation.open": "Vider conversation", "conversation.open": "Vider conversation",
@ -155,8 +159,11 @@
"disabled_account_banner.account_settings": "Parametros de conto", "disabled_account_banner.account_settings": "Parametros de conto",
"disabled_account_banner.text": "Tu conto {disabledAccount} es actualmente disactivate.", "disabled_account_banner.text": "Tu conto {disabledAccount} es actualmente disactivate.",
"dismissable_banner.dismiss": "Dimitter", "dismissable_banner.dismiss": "Dimitter",
"domain_block_modal.title": "Blocar dominio?",
"domain_block_modal.you_will_lose_followers": "Omne sequitores ab iste servitor essera removite.",
"domain_pill.server": "Servitor",
"domain_pill.username": "Nomine de usator", "domain_pill.username": "Nomine de usator",
"embed.preview": "Hic es como il parera:", "embed.preview": "Ecce como illlo parera:",
"emoji_button.activity": "Activitate", "emoji_button.activity": "Activitate",
"emoji_button.clear": "Rader", "emoji_button.clear": "Rader",
"emoji_button.custom": "Personalisate", "emoji_button.custom": "Personalisate",
@ -170,16 +177,16 @@
"emoji_button.search_results": "Resultatos de recerca", "emoji_button.search_results": "Resultatos de recerca",
"emoji_button.symbols": "Symbolos", "emoji_button.symbols": "Symbolos",
"emoji_button.travel": "Viages e locos", "emoji_button.travel": "Viages e locos",
"empty_column.account_hides_collections": "Le usator ha seligite non facer iste information disponibile", "empty_column.account_hides_collections": "Le usator non ha rendite iste information disponibile",
"empty_column.account_suspended": "Conto suspendite", "empty_column.account_suspended": "Conto suspendite",
"empty_column.account_timeline": "Nulle messages hic!", "empty_column.account_timeline": "Nulle messages hic!",
"empty_column.account_unavailable": "Profilo non disponibile", "empty_column.account_unavailable": "Profilo non disponibile",
"empty_column.blocks": "Tu non ha blocate alcun usator ancora.", "empty_column.blocks": "Tu non ha blocate alcun usator ancora.",
"empty_column.domain_blocks": "Il non ha dominios blocate ancora.", "empty_column.domain_blocks": "Il non ha dominios blocate ancora.",
"empty_column.explore_statuses": "Nihil es in tendentias ora mesme. Retorna postea!", "empty_column.explore_statuses": "Il non ha tendentias in iste momento. Reveni plus tarde!",
"empty_column.favourited_statuses": "Tu non ha necun messages favorite ancora. Quando tu marca un como favorito, ille essera monstrate hic.", "empty_column.favourited_statuses": "Tu non ha alcun message favorite ancora. Quando tu marca un message como favorite, illo apparera hic.",
"empty_column.followed_tags": "Tu ancora non ha sequite necun hashtags. Quando tu lo face, illes essera monstrate hic.", "empty_column.followed_tags": "Tu non ha ancora sequite alcun hashtags. Quando tu lo face, illos apparera hic.",
"empty_column.hashtag": "Ancora non il ha nihil in iste hashtag.", "empty_column.hashtag": "Il non ha ancora alcun cosa in iste hashtag.",
"errors.unexpected_crash.report_issue": "Signalar un defecto", "errors.unexpected_crash.report_issue": "Signalar un defecto",
"explore.search_results": "Resultatos de recerca", "explore.search_results": "Resultatos de recerca",
"explore.suggested_follows": "Personas", "explore.suggested_follows": "Personas",
@ -189,7 +196,7 @@
"explore.trending_tags": "Hashtags", "explore.trending_tags": "Hashtags",
"filter_modal.added.review_and_configure_title": "Parametros de filtro", "filter_modal.added.review_and_configure_title": "Parametros de filtro",
"filter_modal.added.settings_link": "pagina de parametros", "filter_modal.added.settings_link": "pagina de parametros",
"filter_modal.added.short_explanation": "Iste message esseva addite al sequente categoria de filtros: {title}.", "filter_modal.added.short_explanation": "Iste message ha essite addite al sequente categoria de filtros: {title}.",
"filter_modal.added.title": "Filtro addite!", "filter_modal.added.title": "Filtro addite!",
"filter_modal.select_filter.prompt_new": "Nove categoria: {name}", "filter_modal.select_filter.prompt_new": "Nove categoria: {name}",
"filter_modal.select_filter.search": "Cercar o crear", "filter_modal.select_filter.search": "Cercar o crear",
@ -203,9 +210,9 @@
"follow_suggestions.personalized_suggestion": "Suggestion personalisate", "follow_suggestions.personalized_suggestion": "Suggestion personalisate",
"follow_suggestions.popular_suggestion": "Suggestion personalisate", "follow_suggestions.popular_suggestion": "Suggestion personalisate",
"follow_suggestions.view_all": "Vider toto", "follow_suggestions.view_all": "Vider toto",
"footer.about": "A proposito de", "footer.about": "A proposito",
"footer.directory": "Directorio de profilos", "footer.directory": "Directorio de profilos",
"footer.get_app": "Obtene le application", "footer.get_app": "Obtener le application",
"footer.invite": "Invitar personas", "footer.invite": "Invitar personas",
"footer.keyboard_shortcuts": "Accessos directe de claviero", "footer.keyboard_shortcuts": "Accessos directe de claviero",
"footer.privacy_policy": "Politica de confidentialitate", "footer.privacy_policy": "Politica de confidentialitate",
@ -221,24 +228,25 @@
"hashtag.follow": "Sequer hashtag", "hashtag.follow": "Sequer hashtag",
"hashtag.unfollow": "Non sequer plus le hashtag", "hashtag.unfollow": "Non sequer plus le hashtag",
"hashtags.and_other": "…e {count, plural, one {}other {# plus}}", "hashtags.and_other": "…e {count, plural, one {}other {# plus}}",
"home.column_settings.show_reblogs": "Monstrar boosts", "home.column_settings.show_reblogs": "Monstrar impulsos",
"home.column_settings.show_replies": "Monstrar responsas", "home.column_settings.show_replies": "Monstrar responsas",
"home.hide_announcements": "Celar annuncios", "home.hide_announcements": "Celar annuncios",
"home.pending_critical_update.body": "Actualisa tu servitor de Mastodon le plus tosto possibile!", "home.pending_critical_update.body": "Actualisa tu servitor de Mastodon le plus tosto possibile!",
"home.pending_critical_update.link": "Vider actualisationes", "home.pending_critical_update.link": "Vider actualisationes",
"home.pending_critical_update.title": "Actualisation de securitate critic disponibile!", "home.pending_critical_update.title": "Actualisation de securitate critic disponibile!",
"home.show_announcements": "Monstrar annuncios", "home.show_announcements": "Monstrar annuncios",
"interaction_modal.login.prompt": "Dominio de tu servitor, p.e. mastodon.social", "interaction_modal.login.prompt": "Dominio de tu servitor, p.ex. mastodon.social",
"interaction_modal.no_account_yet": "Non sur Mstodon?", "interaction_modal.no_account_yet": "Non sur Mstodon?",
"interaction_modal.on_another_server": "In un servitor differente", "interaction_modal.on_another_server": "Sur un altere servitor",
"interaction_modal.on_this_server": "In iste servitor", "interaction_modal.on_this_server": "Sur iste servitor",
"interaction_modal.title.follow": "Sequer {name}", "interaction_modal.title.follow": "Sequer {name}",
"interaction_modal.title.reblog": "Facer boost al message de {name}", "interaction_modal.title.reblog": "Impulsar le message de {name}",
"interaction_modal.title.reply": "Responder al message de {name}", "interaction_modal.title.reply": "Responder al message de {name}",
"keyboard_shortcuts.blocked": "Aperir lista de usatores blocate", "keyboard_shortcuts.blocked": "Aperir lista de usatores blocate",
"keyboard_shortcuts.boost": "Facer boost al message", "keyboard_shortcuts.boost": "Impulsar le message",
"keyboard_shortcuts.description": "Description", "keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.enter": "Aperir message", "keyboard_shortcuts.enter": "Aperir message",
"keyboard_shortcuts.favourite": "Message favorite",
"keyboard_shortcuts.favourites": "Aperir lista de favoritos", "keyboard_shortcuts.favourites": "Aperir lista de favoritos",
"keyboard_shortcuts.federated": "Aperir le chronologia federate", "keyboard_shortcuts.federated": "Aperir le chronologia federate",
"keyboard_shortcuts.heading": "Accessos directe de claviero", "keyboard_shortcuts.heading": "Accessos directe de claviero",
@ -247,22 +255,22 @@
"keyboard_shortcuts.muted": "Aperir lista de usatores silentiate", "keyboard_shortcuts.muted": "Aperir lista de usatores silentiate",
"keyboard_shortcuts.my_profile": "Aperir tu profilo", "keyboard_shortcuts.my_profile": "Aperir tu profilo",
"keyboard_shortcuts.notifications": "Aperir columna de notificationes", "keyboard_shortcuts.notifications": "Aperir columna de notificationes",
"keyboard_shortcuts.open_media": "Aperir medio", "keyboard_shortcuts.open_media": "Aperir multimedia",
"keyboard_shortcuts.profile": "Aperir le profilo del autor", "keyboard_shortcuts.profile": "Aperir le profilo del autor",
"keyboard_shortcuts.reply": "Responder al message", "keyboard_shortcuts.reply": "Responder al message",
"keyboard_shortcuts.spoilers": "Monstrar/celar le campo CW", "keyboard_shortcuts.spoilers": "Monstrar/celar le campo CW",
"keyboard_shortcuts.toggle_sensitivity": "Monstrar/celar medios", "keyboard_shortcuts.toggle_sensitivity": "Monstrar/celar multimedia",
"keyboard_shortcuts.toot": "Initiar un nove message", "keyboard_shortcuts.toot": "Initiar un nove message",
"lightbox.close": "Clauder", "lightbox.close": "Clauder",
"lightbox.next": "Sequente", "lightbox.next": "Sequente",
"lightbox.previous": "Precedente", "lightbox.previous": "Precedente",
"link_preview.author": "Per {name}", "link_preview.author": "Per {name}",
"lists.account.add": "Adder al lista", "lists.account.add": "Adder al lista",
"lists.account.remove": "Remover ab le lista", "lists.account.remove": "Remover del lista",
"lists.delete": "Deler lista", "lists.delete": "Deler lista",
"lists.edit": "Modificar lista", "lists.edit": "Modificar lista",
"lists.edit.submit": "Cambiar titulo", "lists.edit.submit": "Cambiar titulo",
"lists.exclusive": "Celar iste messages ab le initio", "lists.exclusive": "Celar iste messages sur le pagina de initio",
"lists.new.create": "Adder lista", "lists.new.create": "Adder lista",
"lists.new.title_placeholder": "Nove titulo del lista", "lists.new.title_placeholder": "Nove titulo del lista",
"lists.replies_policy.none": "Nemo", "lists.replies_policy.none": "Nemo",
@ -270,8 +278,10 @@
"lists.subheading": "Tu listas", "lists.subheading": "Tu listas",
"loading_indicator.label": "Cargante…", "loading_indicator.label": "Cargante…",
"media_gallery.toggle_visible": "{number, plural, one {Celar imagine} other {Celar imagines}}", "media_gallery.toggle_visible": "{number, plural, one {Celar imagine} other {Celar imagines}}",
"navigation_bar.about": "A proposito de", "mute_modal.hide_options": "Celar optiones",
"navigation_bar.advanced_interface": "Aperir in un interfacie web avantiate", "mute_modal.title": "Silentiar le usator?",
"navigation_bar.about": "A proposito",
"navigation_bar.advanced_interface": "Aperir in le interfacie web avantiate",
"navigation_bar.blocks": "Usatores blocate", "navigation_bar.blocks": "Usatores blocate",
"navigation_bar.bookmarks": "Marcapaginas", "navigation_bar.bookmarks": "Marcapaginas",
"navigation_bar.community_timeline": "Chronologia local", "navigation_bar.community_timeline": "Chronologia local",
@ -291,14 +301,18 @@
"navigation_bar.public_timeline": "Chronologia federate", "navigation_bar.public_timeline": "Chronologia federate",
"navigation_bar.search": "Cercar", "navigation_bar.search": "Cercar",
"navigation_bar.security": "Securitate", "navigation_bar.security": "Securitate",
"notification.own_poll": "Tu inquesta finiva", "notification.own_poll": "Tu sondage ha finite",
"notification.update": "{name} modificava un message", "notification.relationships_severance_event.learn_more": "Apprender plus",
"notification.update": "{name} ha modificate un message",
"notification_requests.notifications_from": "Notificationes de {name}",
"notifications.clear": "Rader notificationes", "notifications.clear": "Rader notificationes",
"notifications.clear_confirmation": "Es tu secur que tu vole rader permanentemente tote tu notificationes?",
"notifications.column_settings.alert": "Notificationes de scriptorio", "notifications.column_settings.alert": "Notificationes de scriptorio",
"notifications.column_settings.favourite": "Favoritos:", "notifications.column_settings.favourite": "Favoritos:",
"notifications.column_settings.filter_bar.advanced": "Monstrar tote le categorias",
"notifications.column_settings.follow": "Nove sequitores:", "notifications.column_settings.follow": "Nove sequitores:",
"notifications.column_settings.mention": "Mentiones:", "notifications.column_settings.mention": "Mentiones:",
"notifications.column_settings.poll": "Resultatos del inquesta:", "notifications.column_settings.poll": "Resultatos del sondage:",
"notifications.column_settings.push": "Notificationes push", "notifications.column_settings.push": "Notificationes push",
"notifications.column_settings.show": "Monstrar in columna", "notifications.column_settings.show": "Monstrar in columna",
"notifications.column_settings.sound": "Reproducer sono", "notifications.column_settings.sound": "Reproducer sono",
@ -307,10 +321,11 @@
"notifications.filter.all": "Toto", "notifications.filter.all": "Toto",
"notifications.filter.favourites": "Favoritos", "notifications.filter.favourites": "Favoritos",
"notifications.filter.mentions": "Mentiones", "notifications.filter.mentions": "Mentiones",
"notifications.filter.polls": "Resultatos del inquesta", "notifications.filter.polls": "Resultatos del sondage",
"notifications.filter.statuses": "Actualisationes de personas que tu seque", "notifications.filter.statuses": "Actualisationes de personas que tu seque",
"notifications.grant_permission": "Conceder permission.", "notifications.grant_permission": "Conceder permission.",
"notifications.group": "{count} notificationes", "notifications.group": "{count} notificationes",
"notifications.policy.filter_new_accounts_title": "Nove contos",
"notifications_permission_banner.enable": "Activar notificationes de scriptorio", "notifications_permission_banner.enable": "Activar notificationes de scriptorio",
"onboarding.compose.template": "Salute #Mastodon!", "onboarding.compose.template": "Salute #Mastodon!",
"onboarding.profile.save_and_continue": "Salvar e continuar", "onboarding.profile.save_and_continue": "Salvar e continuar",
@ -322,7 +337,7 @@
"onboarding.steps.share_profile.title": "Compartir tu profilo de Mastodon", "onboarding.steps.share_profile.title": "Compartir tu profilo de Mastodon",
"poll.closed": "Claudite", "poll.closed": "Claudite",
"poll.reveal": "Vider le resultatos", "poll.reveal": "Vider le resultatos",
"privacy.change": "Cambiar privacitate del message", "privacy.change": "Cambiar le confidentialitate del message",
"privacy.public.short": "Public", "privacy.public.short": "Public",
"privacy_policy.last_updated": "Ultime actualisation {date}", "privacy_policy.last_updated": "Ultime actualisation {date}",
"privacy_policy.title": "Politica de confidentialitate", "privacy_policy.title": "Politica de confidentialitate",
@ -333,7 +348,7 @@
"report.categories.other": "Alteres", "report.categories.other": "Alteres",
"report.category.title_account": "profilo", "report.category.title_account": "profilo",
"report.category.title_status": "message", "report.category.title_status": "message",
"report.close": "Preste", "report.close": "Facite",
"report.mute": "Silentiar", "report.mute": "Silentiar",
"report.next": "Sequente", "report.next": "Sequente",
"report.placeholder": "Commentos additional", "report.placeholder": "Commentos additional",
@ -358,14 +373,14 @@
"server_banner.learn_more": "Apprender plus", "server_banner.learn_more": "Apprender plus",
"server_banner.server_stats": "Statos del servitor:", "server_banner.server_stats": "Statos del servitor:",
"sign_in_banner.create_account": "Crear un conto", "sign_in_banner.create_account": "Crear un conto",
"sign_in_banner.sign_in": "Initiar le session", "sign_in_banner.sign_in": "Aperir session",
"status.block": "Blocar @{name}", "status.block": "Blocar @{name}",
"status.copy": "Copiar ligamine a message", "status.copy": "Copiar ligamine a message",
"status.delete": "Deler", "status.delete": "Deler",
"status.direct": "Mentionar privatemente a @{name}", "status.direct": "Mentionar privatemente @{name}",
"status.direct_indicator": "Mention private", "status.direct_indicator": "Mention private",
"status.edit": "Modificar", "status.edit": "Modificar",
"status.edited_x_times": "Modificate {count, plural, one {{count} tempore} other {{count} tempores}}", "status.edited_x_times": "Modificate {count, plural, one {{count} vice} other {{count} vices}}",
"status.favourite": "Adder al favoritos", "status.favourite": "Adder al favoritos",
"status.filter": "Filtrar iste message", "status.filter": "Filtrar iste message",
"status.hide": "Celar le message", "status.hide": "Celar le message",
@ -376,20 +391,37 @@
"status.more": "Plus", "status.more": "Plus",
"status.mute_conversation": "Silentiar conversation", "status.mute_conversation": "Silentiar conversation",
"status.read_more": "Leger plus", "status.read_more": "Leger plus",
"status.reblogs.empty": "Necuno ha ancora impulsate iste message. Quando alcuno lo face, le impulsos apparera hic.",
"status.redraft": "Deler e reconciper",
"status.remove_bookmark": "Remover marcapagina",
"status.replied_to": "Respondite a {name}",
"status.reply": "Responder",
"status.replyAll": "Responder al discussion",
"status.report": "Signalar @{name}",
"status.sensitive_warning": "Contento sensibile",
"status.share": "Compartir", "status.share": "Compartir",
"status.show_filter_reason": "Monstrar in omne caso",
"status.show_less": "Monstrar minus", "status.show_less": "Monstrar minus",
"status.show_less_all": "Monstrar minus pro totes",
"status.show_more": "Monstrar plus", "status.show_more": "Monstrar plus",
"status.show_more_all": "Monstrar plus pro totes",
"status.show_original": "Monstrar original",
"status.title.with_attachments": "{user} ha publicate {attachmentCount, plural, one {un annexo} other {{attachmentCount} annexos}}",
"status.translate": "Traducer", "status.translate": "Traducer",
"status.translated_from_with": "Traducite ab {lang} usante {provider}", "status.translated_from_with": "Traducite ab {lang} usante {provider}",
"status.uncached_media_warning": "Previsualisation non disponibile", "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": "Salveguardar le cambiamentos", "subscribed_languages.save": "Salveguardar le cambiamentos",
"subscribed_languages.target": "Cambiar le linguas subscribite pro {target}",
"tabs_bar.home": "Initio", "tabs_bar.home": "Initio",
"tabs_bar.notifications": "Notificationes", "tabs_bar.notifications": "Notificationes",
"timeline_hint.resources.statuses": "Messages ancian", "timeline_hint.resources.statuses": "Messages ancian",
"trends.trending_now": "Ora in tendentias", "trends.trending_now": "Ora in tendentias",
"upload_button.label": "Adde imagines, un video o un file de audio", "upload_button.label": "Adde imagines, un video o un file de audio",
"upload_modal.choose_image": "Seliger un imagine", "upload_modal.choose_image": "Seliger un imagine",
"upload_modal.detect_text": "Deteger texto ab un pictura", "upload_modal.detect_text": "Deteger texto de un imagine",
"video.close": "Clauder le video", "video.close": "Clauder le video",
"video.download": "Discargar le file", "video.download": "Discargar le file",
"video.fullscreen": "Schermo plen", "video.fullscreen": "Schermo plen",

View file

@ -91,6 +91,9 @@
"audio.hide": "Celar audio", "audio.hide": "Celar audio",
"block_modal.show_less": "Monstrar minu", "block_modal.show_less": "Monstrar minu",
"block_modal.show_more": "Monstrar plu", "block_modal.show_more": "Monstrar plu",
"block_modal.they_cant_mention": "Ne posse mentionar ni sequer te.",
"block_modal.they_cant_see_posts": "Ne posse vider tui postas e inversi.",
"block_modal.they_will_know": "Va esser conscient que tu ha bloccat.",
"block_modal.title": "Bloccar usator?", "block_modal.title": "Bloccar usator?",
"block_modal.you_wont_see_mentions": "Tu ne va vider postas mentionant li usator.", "block_modal.you_wont_see_mentions": "Tu ne va vider postas mentionant li usator.",
"boost_modal.combo": "Li proxim vez tu posse pressar {combo} por passar to-ci", "boost_modal.combo": "Li proxim vez tu posse pressar {combo} por passar to-ci",
@ -206,6 +209,16 @@
"dismissable_banner.explore_tags": "Tis-ci es hashtags queles es popular che li social retage hodie. Hashtags usat de plu mult persones diferent es monstrat plu alt.", "dismissable_banner.explore_tags": "Tis-ci es hashtags queles es popular che li social retage hodie. Hashtags usat de plu mult persones diferent es monstrat plu alt.",
"dismissable_banner.public_timeline": "Tis-ci es li max recent public postas de persones che li social retage quem gente che {domain} seque.", "dismissable_banner.public_timeline": "Tis-ci es li max recent public postas de persones che li social retage quem gente che {domain} seque.",
"domain_block_modal.block": "Bloccar servitor", "domain_block_modal.block": "Bloccar servitor",
"domain_block_modal.block_account_instead": "Altrimen, bloccar @{name}",
"domain_block_modal.they_can_interact_with_old_posts": "Persones de ti servitor posse interacter con tui old postas.",
"domain_block_modal.they_cant_follow": "Nequi de ti-ci servitor posse sequer te.",
"domain_pill.activitypub_like_language": "ActivityPub es li lingue usat de Mastodon por parlar con altri social retages.",
"domain_pill.server": "Servitor",
"domain_pill.their_handle": "Identificator:",
"domain_pill.their_server": "Su digital hem e omni su postas.",
"domain_pill.username": "Usator-nómine",
"domain_pill.whats_in_a_handle": "Ex quo consiste un identificator?",
"domain_pill.your_handle": "Tui identificator:",
"embed.instructions": "Inbedar ti-ci posta per copiar li code in infra.", "embed.instructions": "Inbedar ti-ci posta per copiar li code in infra.",
"embed.preview": "Vi qualmen it va aspecter:", "embed.preview": "Vi qualmen it va aspecter:",
"emoji_button.activity": "Activitá", "emoji_button.activity": "Activitá",
@ -242,6 +255,7 @@
"empty_column.list": "Ancor ne hay quocunc in ti-ci liste. Quande membres de ti-ci liste publica nov postas, ili va aparir ci.", "empty_column.list": "Ancor ne hay quocunc in ti-ci liste. Quande membres de ti-ci liste publica nov postas, ili va aparir ci.",
"empty_column.lists": "Tu ancor have null listes. Quande tu crea un, it va aparir ci.", "empty_column.lists": "Tu ancor have null listes. Quande tu crea un, it va aparir ci.",
"empty_column.mutes": "Tu ancor ha silentiat null usatores.", "empty_column.mutes": "Tu ancor ha silentiat null usatores.",
"empty_column.notification_requests": "Omnicos clar! Hay necos ci. Nov notificationes va venir ci quande tu recive les secun tui parametres.",
"empty_column.notifications": "Tu have null notificationes. Quande altri persones interacte con te, tu va vider it ci.", "empty_column.notifications": "Tu have null notificationes. Quande altri persones interacte con te, tu va vider it ci.",
"empty_column.public": "Hay nullcos ci! Scri alquo publicmen, o manualmen seque usatores de altri servitores por plenar to-ci", "empty_column.public": "Hay nullcos ci! Scri alquo publicmen, o manualmen seque usatores de altri servitores por plenar to-ci",
"error.unexpected_crash.explanation": "Pro un error in nor code o un problema de compatibilitá in li navigator, ti-ci págine ne posset esser monstrat correctmen.", "error.unexpected_crash.explanation": "Pro un error in nor code o un problema de compatibilitá in li navigator, ti-ci págine ne posset esser monstrat correctmen.",
@ -272,6 +286,9 @@
"filter_modal.select_filter.subtitle": "Usar un existent categorie o crear nov", "filter_modal.select_filter.subtitle": "Usar un existent categorie o crear nov",
"filter_modal.select_filter.title": "Filtrar ti-ci posta", "filter_modal.select_filter.title": "Filtrar ti-ci posta",
"filter_modal.title.status": "Filtrar un posta", "filter_modal.title.status": "Filtrar un posta",
"filtered_notifications_banner.pending_requests": "Notificationes de {count, plural, =0 {nequi} one {un person} other {# persones}} quel tu possibilmen conosse",
"filtered_notifications_banner.private_mentions": "{count, plural, one {privat mention} other {privat mentiones}}",
"filtered_notifications_banner.title": "Filtrat notificationes",
"firehose.all": "Omno", "firehose.all": "Omno",
"firehose.local": "Ti-ci servitor", "firehose.local": "Ti-ci servitor",
"firehose.remote": "Altri servitores", "firehose.remote": "Altri servitores",
@ -400,6 +417,13 @@
"loading_indicator.label": "Cargant…", "loading_indicator.label": "Cargant…",
"media_gallery.toggle_visible": "{number, plural, one {Celar image} other {Celar images}}", "media_gallery.toggle_visible": "{number, plural, one {Celar image} other {Celar images}}",
"moved_to_account_banner.text": "Tui conto {disabledAccount} es actualmen desactivisat pro que tu movet te a {movedToAccount}.", "moved_to_account_banner.text": "Tui conto {disabledAccount} es actualmen desactivisat pro que tu movet te a {movedToAccount}.",
"mute_modal.hide_from_notifications": "Celar de notificationes",
"mute_modal.hide_options": "Celar optiones",
"mute_modal.indefinite": "Til quande yo dessilentia li usator",
"mute_modal.show_options": "Monstrar optiones",
"mute_modal.they_can_mention_and_follow": "Posse mentionar e sequer te, ma va esser ínvisibil a te.",
"mute_modal.they_wont_know": "Ne va esser conscient pri li silentation.",
"mute_modal.title": "Silentiar usator?",
"navigation_bar.about": "Information", "navigation_bar.about": "Information",
"navigation_bar.advanced_interface": "Aperter in li web-interfacie avansat", "navigation_bar.advanced_interface": "Aperter in li web-interfacie avansat",
"navigation_bar.blocks": "Bloccat usatores", "navigation_bar.blocks": "Bloccat usatores",
@ -435,14 +459,20 @@
"notification.own_poll": "Tui balotation ha finit", "notification.own_poll": "Tui balotation ha finit",
"notification.poll": "Un balotation in quel tu votat ha finit", "notification.poll": "Un balotation in quel tu votat ha finit",
"notification.reblog": "{name} boostat tui posta", "notification.reblog": "{name} boostat tui posta",
"notification.relationships_severance_event.learn_more": "Aprender plu",
"notification.status": "{name} just postat", "notification.status": "{name} just postat",
"notification.update": "{name} modificat un posta", "notification.update": "{name} modificat un posta",
"notification_requests.accept": "Acceptar",
"notification_requests.dismiss": "Demisser",
"notification_requests.notifications_from": "Notificationes de {name}",
"notification_requests.title": "Filtrat notificationes",
"notifications.clear": "Aclarar notificationes", "notifications.clear": "Aclarar notificationes",
"notifications.clear_confirmation": "Vole tu vermen permanentmen aclarar omni tui notificationes?", "notifications.clear_confirmation": "Vole tu vermen permanentmen aclarar omni tui notificationes?",
"notifications.column_settings.admin.report": "Nov raportas:", "notifications.column_settings.admin.report": "Nov raportas:",
"notifications.column_settings.admin.sign_up": "Nov registrationes:", "notifications.column_settings.admin.sign_up": "Nov registrationes:",
"notifications.column_settings.alert": "Notificationes sur li computator", "notifications.column_settings.alert": "Notificationes sur li computator",
"notifications.column_settings.favourite": "Favorites:", "notifications.column_settings.favourite": "Favorites:",
"notifications.column_settings.filter_bar.advanced": "Monstrar omni categories",
"notifications.column_settings.follow": "Nov sequitores:", "notifications.column_settings.follow": "Nov sequitores:",
"notifications.column_settings.follow_request": "Nov petitiones de sequer:", "notifications.column_settings.follow_request": "Nov petitiones de sequer:",
"notifications.column_settings.mention": "Mentiones:", "notifications.column_settings.mention": "Mentiones:",
@ -468,6 +498,15 @@
"notifications.permission_denied": "Notificationes sur li computator es índisponibil pro que on ha previamen rejectet un petition por navigator-permissiones", "notifications.permission_denied": "Notificationes sur li computator es índisponibil pro que on ha previamen rejectet un petition por navigator-permissiones",
"notifications.permission_denied_alert": "Notificationes sur li computator ne posse esser activisat, pro que navigator-permission ha esset previamen rejectet", "notifications.permission_denied_alert": "Notificationes sur li computator ne posse esser activisat, pro que navigator-permission ha esset previamen rejectet",
"notifications.permission_required": "Notificationes sur li computator es índisponibil pro que li besonat permission ne ha esset dat.", "notifications.permission_required": "Notificationes sur li computator es índisponibil pro que li besonat permission ne ha esset dat.",
"notifications.policy.filter_new_accounts.hint": "Creat durant li passat {days, plural, one {un die} other {# dies}}",
"notifications.policy.filter_new_accounts_title": "Nov contos",
"notifications.policy.filter_not_followers_hint": "Includente tis qui ha sequet te minu quam {days, plural, one {un die} other {# dies}}",
"notifications.policy.filter_not_followers_title": "Persones qui ne seque te",
"notifications.policy.filter_not_following_hint": "Til quande tu manualmen aproba",
"notifications.policy.filter_not_following_title": "Persones queles tu ne seque",
"notifications.policy.filter_private_mentions_hint": "Filtrat except si it es un response a tui propri mention o si tu seque li missor",
"notifications.policy.filter_private_mentions_title": "Ínsolicitat privat mentiones",
"notifications.policy.title": "Filtrar notificationes de…",
"notifications_permission_banner.enable": "Activisar notificationes sur li computator", "notifications_permission_banner.enable": "Activisar notificationes sur li computator",
"notifications_permission_banner.how_to_control": "Por reciver notificationes quande Mastodon ne es apert, activisa notificationes sur li computator. Tu posse decider precisimen quel species de interactiones genera notificationes per li buton {icon} in-supra quande ili es activisat.", "notifications_permission_banner.how_to_control": "Por reciver notificationes quande Mastodon ne es apert, activisa notificationes sur li computator. Tu posse decider precisimen quel species de interactiones genera notificationes per li buton {icon} in-supra quande ili es activisat.",
"notifications_permission_banner.title": "Nequande preterlassa quocunc", "notifications_permission_banner.title": "Nequande preterlassa quocunc",
@ -644,9 +683,11 @@
"status.direct": "Privatmen mentionar @{name}", "status.direct": "Privatmen mentionar @{name}",
"status.direct_indicator": "Privat mention", "status.direct_indicator": "Privat mention",
"status.edit": "Modificar", "status.edit": "Modificar",
"status.edited": "Ultimmen actualisat ye {date}",
"status.edited_x_times": "Modificat {count, plural, one {{count} vez} other {{count} vezes}}", "status.edited_x_times": "Modificat {count, plural, one {{count} vez} other {{count} vezes}}",
"status.embed": "Inbedar", "status.embed": "Inbedar",
"status.favourite": "Favoritisar", "status.favourite": "Favoritisar",
"status.favourites": "{count, plural, one {favorit} other {favorites}}",
"status.filter": "Filtrar ti-ci posta", "status.filter": "Filtrar ti-ci posta",
"status.filtered": "Filtrat", "status.filtered": "Filtrat",
"status.hide": "Celar posta", "status.hide": "Celar posta",

View file

@ -174,7 +174,7 @@
"confirmations.delete.confirm": "Elimina", "confirmations.delete.confirm": "Elimina",
"confirmations.delete.message": "Sei sicuro di voler eliminare questo post?", "confirmations.delete.message": "Sei sicuro di voler eliminare questo post?",
"confirmations.delete_list.confirm": "Elimina", "confirmations.delete_list.confirm": "Elimina",
"confirmations.delete_list.message": "Sei sicuro di voler eliminare permanentemente questa lista?", "confirmations.delete_list.message": "Sei sicuro/a di voler eliminare permanentemente questo elenco?",
"confirmations.discard_edit_media.confirm": "Scarta", "confirmations.discard_edit_media.confirm": "Scarta",
"confirmations.discard_edit_media.message": "Hai delle modifiche non salvate alla descrizione o anteprima del media, scartarle comunque?", "confirmations.discard_edit_media.message": "Hai delle modifiche non salvate alla descrizione o anteprima del media, scartarle comunque?",
"confirmations.domain_block.confirm": "Blocca il server", "confirmations.domain_block.confirm": "Blocca il server",
@ -263,8 +263,8 @@
"empty_column.followed_tags": "Non hai ancora seguito alcun hashtag. Quando lo farai, appariranno qui.", "empty_column.followed_tags": "Non hai ancora seguito alcun hashtag. Quando lo farai, appariranno qui.",
"empty_column.hashtag": "Non c'è ancora nulla in questo hashtag.", "empty_column.hashtag": "Non c'è ancora nulla in questo hashtag.",
"empty_column.home": "La cronologia della tua home è vuota! Segui altre persone per riempirla. {suggestions}", "empty_column.home": "La cronologia della tua home è vuota! Segui altre persone per riempirla. {suggestions}",
"empty_column.list": "Non c'è ancora nulla in questa lista. Quando i membri di questa lista pubblicheranno dei nuovi post, appariranno qui.", "empty_column.list": "Non c'è ancora nulla in questo elenco. Quando i membri di questo elenco pubblicheranno nuovi post, appariranno qui.",
"empty_column.lists": "Non hai ancora alcuna lista. Quando ne creerai una, apparirà qui.", "empty_column.lists": "Non hai ancora nessun elenco. Quando ne creerai uno, apparirà qui.",
"empty_column.mutes": "Non hai ancora silenziato alcun utente.", "empty_column.mutes": "Non hai ancora silenziato alcun utente.",
"empty_column.notification_requests": "Tutto chiaro! Non c'è niente qui. Quando ricevi nuove notifiche, verranno visualizzate qui in base alle tue impostazioni.", "empty_column.notification_requests": "Tutto chiaro! Non c'è niente qui. Quando ricevi nuove notifiche, verranno visualizzate qui in base alle tue impostazioni.",
"empty_column.notifications": "Non hai ancora nessuna notifica. Quando altre persone interagiranno con te, le vedrai qui.", "empty_column.notifications": "Non hai ancora nessuna notifica. Quando altre persone interagiranno con te, le vedrai qui.",
@ -410,20 +410,20 @@
"limited_account_hint.action": "Mostra comunque il profilo", "limited_account_hint.action": "Mostra comunque il profilo",
"limited_account_hint.title": "Questo profilo è stato nascosto dai moderatori di {domain}.", "limited_account_hint.title": "Questo profilo è stato nascosto dai moderatori di {domain}.",
"link_preview.author": "Di {name}", "link_preview.author": "Di {name}",
"lists.account.add": "Aggiungi alla lista", "lists.account.add": "Aggiungi all'elenco",
"lists.account.remove": "Togli dalla lista", "lists.account.remove": "Rimuovi dall'elenco",
"lists.delete": "Elimina lista", "lists.delete": "Elimina elenco",
"lists.edit": "Modifica lista", "lists.edit": "Modifica elenco",
"lists.edit.submit": "Cambia il titolo", "lists.edit.submit": "Cambia il titolo",
"lists.exclusive": "Nascondi questi post dalla home", "lists.exclusive": "Nascondi questi post dalla home",
"lists.new.create": "Aggiungi lista", "lists.new.create": "Aggiungi lista",
"lists.new.title_placeholder": "Titolo della nuova lista", "lists.new.title_placeholder": "Titolo del nuovo elenco",
"lists.replies_policy.followed": "Qualsiasi utente seguito", "lists.replies_policy.followed": "Qualsiasi utente seguito",
"lists.replies_policy.list": "Membri della lista", "lists.replies_policy.list": "Membri dell'elenco",
"lists.replies_policy.none": "Nessuno", "lists.replies_policy.none": "Nessuno",
"lists.replies_policy.title": "Mostra risposte a:", "lists.replies_policy.title": "Mostra risposte a:",
"lists.search": "Cerca tra le persone che segui", "lists.search": "Cerca tra le persone che segui",
"lists.subheading": "Le tue liste", "lists.subheading": "I tuoi elenchi",
"load_pending": "{count, plural, one {# nuovo oggetto} other {# nuovi oggetti}}", "load_pending": "{count, plural, one {# nuovo oggetto} other {# nuovi oggetti}}",
"loading_indicator.label": "Caricamento…", "loading_indicator.label": "Caricamento…",
"media_gallery.toggle_visible": "{number, plural, one {Nascondi immagine} other {Nascondi immagini}}", "media_gallery.toggle_visible": "{number, plural, one {Nascondi immagine} other {Nascondi immagini}}",

View file

@ -304,6 +304,19 @@
"domain_block_modal.title": "ドメインをブロックしますか?", "domain_block_modal.title": "ドメインをブロックしますか?",
"domain_block_modal.you_will_lose_followers": "このサーバーのフォロワーはすべてフォロー解除されます。", "domain_block_modal.you_will_lose_followers": "このサーバーのフォロワーはすべてフォロー解除されます。",
"domain_block_modal.you_wont_see_posts": "このサーバーのユーザーからの投稿や通知が閲覧できなくなります。", "domain_block_modal.you_wont_see_posts": "このサーバーのユーザーからの投稿や通知が閲覧できなくなります。",
"domain_pill.activitypub_lets_connect": "Mastodonからほかのソーシャルアプリのユーザーへ、そのまた別のアプリのユーザーへと、それぞれが互いにつながり関わり合うことをこのActivityPubの仕組みが実現しています。",
"domain_pill.activitypub_like_language": "ActivityPubとは、Mastodonがほかのサーバーと会話をするときにしゃべる「言葉」のようなものです。",
"domain_pill.server": "サーバー",
"domain_pill.their_handle": "このユーザーのユーザーID:",
"domain_pill.their_server": "ユーザーの仮想の住所です。そのユーザーIDによるすべての投稿を保持しています。",
"domain_pill.their_username": "ユーザーを識別する名前です。ユーザー名はひとつのサーバー内においては唯一無二の名前ですが、ほかのサーバーには同名のユーザーがいることもあります。",
"domain_pill.username": "ユーザー名",
"domain_pill.whats_in_a_handle": "ユーザーIDについて",
"domain_pill.who_they_are": "そのユーザーが「誰であるか」「どこに住んでいるか」はユーザーIDから知ることができます。これにより<button>いくつものActivityPub対応のプラットフォーム</button>の集まりからなるネットワークを介してそれぞれのユーザーと関わり合うことができます。",
"domain_pill.who_you_are": "ほかのユーザーはあなたが「誰であるか」「どこに住んでいるか」をユーザーIDから認識でき、これにより<button>いくつものActivityPub対応のプラットフォーム</button>の集まりからなるネットワークを介してあなたと関わり合うことができます。",
"domain_pill.your_handle": "あなたのユーザーID:",
"domain_pill.your_server": "あなたの仮想の住所です。投稿した内容はすべてここに保持されます。もし今いるサーバーが気に入っていない場合は、フォロワーを引き継いで別のサーバーに引っ越すこともできます。",
"domain_pill.your_username": "あなたを識別する名前です。ユーザー名はひとつのサーバー内においては唯一無二の名前ですが、ほかのサーバーには同名のユーザーがいることもあります。",
"embed.instructions": "下記のコードをコピーしてウェブサイトに埋め込みます。", "embed.instructions": "下記のコードをコピーしてウェブサイトに埋め込みます。",
"embed.preview": "表示例:", "embed.preview": "表示例:",
"emoji_button.activity": "活動", "emoji_button.activity": "活動",

View file

@ -457,6 +457,7 @@
"notification.own_poll": "Tu anketa eskapo", "notification.own_poll": "Tu anketa eskapo",
"notification.poll": "Anketa en ke votates eskapo", "notification.poll": "Anketa en ke votates eskapo",
"notification.reblog": "{name} repartajo tu publikasyon", "notification.reblog": "{name} repartajo tu publikasyon",
"notification.relationships_severance_event.learn_more": "Ambezate mas",
"notification.status": "{name} publiko algo", "notification.status": "{name} publiko algo",
"notification.update": "{name} edito una publikasyon", "notification.update": "{name} edito una publikasyon",
"notification_requests.accept": "Acheta", "notification_requests.accept": "Acheta",
@ -469,6 +470,8 @@
"notifications.column_settings.admin.sign_up": "Muevas enrejistrasyones:", "notifications.column_settings.admin.sign_up": "Muevas enrejistrasyones:",
"notifications.column_settings.alert": "Avizos de ensimameza", "notifications.column_settings.alert": "Avizos de ensimameza",
"notifications.column_settings.favourite": "Te plazen:", "notifications.column_settings.favourite": "Te plazen:",
"notifications.column_settings.filter_bar.advanced": "Amostra todas las kategorias",
"notifications.column_settings.filter_bar.category": "Vara de filtrado rapido",
"notifications.column_settings.follow": "Muevos suivantes:", "notifications.column_settings.follow": "Muevos suivantes:",
"notifications.column_settings.follow_request": "Muevas solisitudes de segimiento:", "notifications.column_settings.follow_request": "Muevas solisitudes de segimiento:",
"notifications.column_settings.mention": "Enmentaduras:", "notifications.column_settings.mention": "Enmentaduras:",

View file

@ -89,6 +89,14 @@
"announcement.announcement": "Объявление", "announcement.announcement": "Объявление",
"attachments_list.unprocessed": "(не обработан)", "attachments_list.unprocessed": "(не обработан)",
"audio.hide": "Скрыть аудио", "audio.hide": "Скрыть аудио",
"block_modal.remote_users_caveat": "Мы попросим сервер {domain} уважать ваше решение. Однако, соблюдение требований не гарантировано, поскольку некоторые серверы могут работать с блокировками по-разному. Публичные записи по-прежнему могут быть видны неавторизованным пользователям.",
"block_modal.show_less": "Показать меньше",
"block_modal.show_more": "Показать больше",
"block_modal.they_cant_mention": "Он не может упоминать или подписываться на вас.",
"block_modal.they_cant_see_posts": "Он не может видеть ваши сообщения, и вы не увидите его.",
"block_modal.they_will_know": "Он может видеть, что он заблокирован.",
"block_modal.title": "Заблокировать пользователя?",
"block_modal.you_wont_see_mentions": "Вы не увидите записи, которые упоминают его.",
"boost_modal.combo": "{combo}, чтобы пропустить это в следующий раз", "boost_modal.combo": "{combo}, чтобы пропустить это в следующий раз",
"bundle_column_error.copy_stacktrace": "Скопировать отчет об ошибке", "bundle_column_error.copy_stacktrace": "Скопировать отчет об ошибке",
"bundle_column_error.error.body": "Запрошенная страница не может быть отображена. Это может быть вызвано ошибкой в нашем коде или проблемой совместимости браузера.", "bundle_column_error.error.body": "Запрошенная страница не может быть отображена. Это может быть вызвано ошибкой в нашем коде или проблемой совместимости браузера.",
@ -169,6 +177,7 @@
"confirmations.delete_list.message": "Вы действительно хотите навсегда удалить этот список?", "confirmations.delete_list.message": "Вы действительно хотите навсегда удалить этот список?",
"confirmations.discard_edit_media.confirm": "Отменить", "confirmations.discard_edit_media.confirm": "Отменить",
"confirmations.discard_edit_media.message": "У вас есть несохранённые изменения описания мультимедиа или предпросмотра, отменить их?", "confirmations.discard_edit_media.message": "У вас есть несохранённые изменения описания мультимедиа или предпросмотра, отменить их?",
"confirmations.domain_block.confirm": "Заблокировать сервер",
"confirmations.domain_block.message": "Вы точно уверены, что хотите заблокировать {domain} полностью? В большинстве случаев нескольких блокировок и игнорирований вполне достаточно. Вы перестанете видеть публичную ленту и уведомления оттуда. Ваши подписчики из этого домена будут удалены.", "confirmations.domain_block.message": "Вы точно уверены, что хотите заблокировать {domain} полностью? В большинстве случаев нескольких блокировок и игнорирований вполне достаточно. Вы перестанете видеть публичную ленту и уведомления оттуда. Ваши подписчики из этого домена будут удалены.",
"confirmations.edit.confirm": "Редактировать", "confirmations.edit.confirm": "Редактировать",
"confirmations.edit.message": "В данный момент, редактирование перезапишет составляемое вами сообщение. Вы уверены, что хотите продолжить?", "confirmations.edit.message": "В данный момент, редактирование перезапишет составляемое вами сообщение. Вы уверены, что хотите продолжить?",
@ -200,6 +209,27 @@
"dismissable_banner.explore_statuses": "Эти сообщения со связанных серверов сети сейчас набирают популярность.", "dismissable_banner.explore_statuses": "Эти сообщения со связанных серверов сети сейчас набирают популярность.",
"dismissable_banner.explore_tags": "Эти хэштеги привлекают людей на этом и других серверах децентрализованной сети прямо сейчас.", "dismissable_banner.explore_tags": "Эти хэштеги привлекают людей на этом и других серверах децентрализованной сети прямо сейчас.",
"dismissable_banner.public_timeline": "Это самые последние публичные сообщения от людей в социальной сети, за которыми подписались пользователи {domain}.", "dismissable_banner.public_timeline": "Это самые последние публичные сообщения от людей в социальной сети, за которыми подписались пользователи {domain}.",
"domain_block_modal.block": "Заблокировать сервер",
"domain_block_modal.block_account_instead": "Заблокировать @{name} вместо",
"domain_block_modal.they_can_interact_with_old_posts": "Люди с этого сервера могут взаимодействовать с вашими старыми записями.",
"domain_block_modal.they_cant_follow": "Никто из этого сервера не может подписываться на вас.",
"domain_block_modal.they_wont_know": "Он не будет знать, что его заблокировали.",
"domain_block_modal.title": "Заблокировать домен?",
"domain_block_modal.you_will_lose_followers": "Все ваши подписчики с этого сервера будут удалены.",
"domain_block_modal.you_wont_see_posts": "Вы не будете видеть записи или уведомления от пользователей на этом сервере.",
"domain_pill.activitypub_lets_connect": "Это позволяет вам общаться и взаимодействовать с людьми не только на Mastodon, но и в различных социальных приложениях.",
"domain_pill.activitypub_like_language": "ActivityPub как язык Mastodon говорит с другими социальными сетями.",
"domain_pill.server": "Сервер",
"domain_pill.their_handle": "Его бейдж:",
"domain_pill.their_server": "Цифровой дом, где находятся все записи.",
"domain_pill.their_username": "Уникальный идентификатор на сервере. Возможно найти пользователей с одним и тем же именем пользователя на разных серверах.",
"domain_pill.username": "Имя пользователя",
"domain_pill.whats_in_a_handle": "Что такое бейдж?",
"domain_pill.who_they_are": "Поскольку бейджи говорят о том, кто и где находится, вы можете взаимодействовать с людьми в социальной сети <button>платформ, работающих на платформе ActivityPub</button>.",
"domain_pill.who_you_are": "Поскольку ваш бейдж говорит о том, кто вы и где находитесь, люди могут взаимодействовать с вами через социальную сеть <button>платформ, работающих на платформе ActivityPub</button>.",
"domain_pill.your_handle": "Ваш бейдж:",
"domain_pill.your_server": "Сервер, где живут все ваши посты. Этот не нравится? Поменяй сервер в любое время вместе со своими подписчиками.",
"domain_pill.your_username": "Ваш уникальный идентификатор на этом сервере. Вы можете найти пользователей с одним именем пользователя на разных серверах.",
"embed.instructions": "Встройте этот пост на свой сайт, скопировав следующий код:", "embed.instructions": "Встройте этот пост на свой сайт, скопировав следующий код:",
"embed.preview": "Так это будет выглядеть:", "embed.preview": "Так это будет выглядеть:",
"emoji_button.activity": "Занятия", "emoji_button.activity": "Занятия",
@ -236,6 +266,7 @@
"empty_column.list": "В этом списке пока ничего нет.", "empty_column.list": "В этом списке пока ничего нет.",
"empty_column.lists": "У вас ещё нет списков. Созданные вами списки будут показаны здесь.", "empty_column.lists": "У вас ещё нет списков. Созданные вами списки будут показаны здесь.",
"empty_column.mutes": "Вы ещё никого не добавляли в список игнорируемых.", "empty_column.mutes": "Вы ещё никого не добавляли в список игнорируемых.",
"empty_column.notification_requests": "Здесь ничего нет! Когда вы получите новые уведомления, они здесь появятся согласно вашим настройкам.",
"empty_column.notifications": "У вас пока нет уведомлений. Взаимодействуйте с другими, чтобы завести разговор.", "empty_column.notifications": "У вас пока нет уведомлений. Взаимодействуйте с другими, чтобы завести разговор.",
"empty_column.public": "Здесь ничего нет! Опубликуйте что-нибудь или подпишитесь на пользователей с других узлов, чтобы заполнить ленту", "empty_column.public": "Здесь ничего нет! Опубликуйте что-нибудь или подпишитесь на пользователей с других узлов, чтобы заполнить ленту",
"error.unexpected_crash.explanation": "Из-за несовместимого браузера или ошибки в нашем коде, эта страница не может быть корректно отображена.", "error.unexpected_crash.explanation": "Из-за несовместимого браузера или ошибки в нашем коде, эта страница не может быть корректно отображена.",
@ -266,13 +297,22 @@
"filter_modal.select_filter.subtitle": "Используйте существующую категорию или создайте новую", "filter_modal.select_filter.subtitle": "Используйте существующую категорию или создайте новую",
"filter_modal.select_filter.title": "Фильтровать этот пост", "filter_modal.select_filter.title": "Фильтровать этот пост",
"filter_modal.title.status": "Фильтровать пост", "filter_modal.title.status": "Фильтровать пост",
"filtered_notifications_banner.pending_requests": "Уведомления от {count, plural, =0 {никого} one {# человека} other {# других людей, с кем вы можете быть знакомы}}",
"filtered_notifications_banner.private_mentions": "{count, plural, one {личное упоминание} other {личные упоминания}}",
"filtered_notifications_banner.title": "Отфильтрованные уведомления",
"firehose.all": "Все", "firehose.all": "Все",
"firehose.local": "Текущий сервер", "firehose.local": "Текущий сервер",
"firehose.remote": "Другие серверы", "firehose.remote": "Другие серверы",
"follow_request.authorize": "Авторизовать", "follow_request.authorize": "Авторизовать",
"follow_request.reject": "Отказать", "follow_request.reject": "Отказать",
"follow_requests.unlocked_explanation": "Хотя ваша учетная запись не закрыта, команда {domain} подумала, что вы захотите просмотреть запросы от этих учетных записей вручную.", "follow_requests.unlocked_explanation": "Хотя ваша учетная запись не закрыта, команда {domain} подумала, что вы захотите просмотреть запросы от этих учетных записей вручную.",
"follow_suggestions.curated_suggestion": "Выбор администрации",
"follow_suggestions.dismiss": "Больше не показывать", "follow_suggestions.dismiss": "Больше не показывать",
"follow_suggestions.hints.featured": "Этот профиль был вручную выбран командой {domain}.",
"follow_suggestions.hints.friends_of_friends": "Этот профиль популярен среди людей, на которых вы подписаны.",
"follow_suggestions.hints.most_followed": "Этот профиль один из самых отслеживаемых на {domain}.",
"follow_suggestions.hints.most_interactions": "Этот профиль в последнее время привлекает много внимания на {domain}.",
"follow_suggestions.hints.similar_to_recently_followed": "Этот профиль похож на другие профили, на которые вы подписывались в последнее время.",
"follow_suggestions.personalized_suggestion": "Персонализированное предложение", "follow_suggestions.personalized_suggestion": "Персонализированное предложение",
"follow_suggestions.popular_suggestion": "Популярное предложение", "follow_suggestions.popular_suggestion": "Популярное предложение",
"follow_suggestions.view_all": "Посмотреть все", "follow_suggestions.view_all": "Посмотреть все",
@ -388,6 +428,15 @@
"loading_indicator.label": "Загрузка…", "loading_indicator.label": "Загрузка…",
"media_gallery.toggle_visible": "Показать/скрыть {number, plural, =1 {изображение} other {изображения}}", "media_gallery.toggle_visible": "Показать/скрыть {number, plural, =1 {изображение} other {изображения}}",
"moved_to_account_banner.text": "Ваша учетная запись {disabledAccount} в настоящее время заморожена, потому что вы переехали на {movedToAccount}.", "moved_to_account_banner.text": "Ваша учетная запись {disabledAccount} в настоящее время заморожена, потому что вы переехали на {movedToAccount}.",
"mute_modal.hide_from_notifications": "Скрыть из уведомлений",
"mute_modal.hide_options": "Скрыть параметры",
"mute_modal.indefinite": "Пока я не разблокирую их",
"mute_modal.show_options": "Показать опции",
"mute_modal.they_can_mention_and_follow": "Они могут упоминать и следить за вами, но вы не будете их видеть.",
"mute_modal.they_wont_know": "Они не будут знать, что их заглушили.",
"mute_modal.title": "Заглушить пользователя?",
"mute_modal.you_wont_see_mentions": "Вы не увидите постов, которые их упоминают.",
"mute_modal.you_wont_see_posts": "Они по-прежнему смогут видеть ваши посты, но вы не сможете видеть их посты.",
"navigation_bar.about": "О проекте", "navigation_bar.about": "О проекте",
"navigation_bar.advanced_interface": "Включить многоколоночный интерфейс", "navigation_bar.advanced_interface": "Включить многоколоночный интерфейс",
"navigation_bar.blocks": "Заблокированные пользователи", "navigation_bar.blocks": "Заблокированные пользователи",
@ -423,8 +472,17 @@
"notification.own_poll": "Ваш опрос закончился", "notification.own_poll": "Ваш опрос закончился",
"notification.poll": "Опрос, в котором вы приняли участие, завершился", "notification.poll": "Опрос, в котором вы приняли участие, завершился",
"notification.reblog": "{name} продвинул(а) ваш пост", "notification.reblog": "{name} продвинул(а) ваш пост",
"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": "Узнать больше",
"notification.relationships_severance_event.user_domain_block": "Вы заблокировали {target} включая {followersCount} ваших подписчиков и {followingCount, plural, one {# аккаунт} few {# аккаунта} other {# аккаунтов}}, на которые вы подписаны.",
"notification.status": "{name} только что запостил", "notification.status": "{name} только что запостил",
"notification.update": "{name} изменил(а) пост", "notification.update": "{name} изменил(а) пост",
"notification_requests.accept": "Принять",
"notification_requests.dismiss": "Отклонить",
"notification_requests.notifications_from": "Уведомления от {name}",
"notification_requests.title": "Отфильтрованные уведомления",
"notifications.clear": "Очистить уведомления", "notifications.clear": "Очистить уведомления",
"notifications.clear_confirmation": "Вы уверены, что хотите очистить все уведомления?", "notifications.clear_confirmation": "Вы уверены, что хотите очистить все уведомления?",
"notifications.column_settings.admin.report": "Новые жалобы:", "notifications.column_settings.admin.report": "Новые жалобы:",

View file

@ -220,8 +220,15 @@
"domain_pill.activitypub_lets_connect": "Det låter dig ansluta och interagera med människor inte bara på Mastodon, men även på andra sociala appar.", "domain_pill.activitypub_lets_connect": "Det låter dig ansluta och interagera med människor inte bara på Mastodon, men även på andra sociala appar.",
"domain_pill.activitypub_like_language": "ActivityPub är som språket Mastodon talar med andra sociala nätverk.", "domain_pill.activitypub_like_language": "ActivityPub är som språket Mastodon talar med andra sociala nätverk.",
"domain_pill.server": "Server", "domain_pill.server": "Server",
"domain_pill.their_handle": "Deras handtag:",
"domain_pill.their_server": "Deras digitala hem, där alla deras tjänster bor.",
"domain_pill.their_username": "Deras unika identifierare på deras server. Det är möjligt att hitta användare med samma användarnamn på olika servrar.", "domain_pill.their_username": "Deras unika identifierare på deras server. Det är möjligt att hitta användare med samma användarnamn på olika servrar.",
"domain_pill.username": "Användarnamn", "domain_pill.username": "Användarnamn",
"domain_pill.whats_in_a_handle": "Vad finns i ett handtag?",
"domain_pill.who_they_are": "Eftersom handtag säger vem någon är och var de är, kan du interagera med människor på det sociala nätet av <button>ActivityPub-drivna plattformar</button>.",
"domain_pill.who_you_are": "Eftersom handtag säger vem någon är och var de är, kan människor interagera med dig på det sociala nätet av <button>ActivityPub-drivna plattformar</button>.",
"domain_pill.your_handle": "Ditt handtag:",
"domain_pill.your_server": "Ditt digitala hem, där alla dina inlägg bor. Gillar du inte just denna? Byt server när som helst och ta med dina anhängare också.",
"domain_pill.your_username": "Din unika identifierare på denna server. Det är möjligt att hitta användare med samma användarnamn på olika servrar.", "domain_pill.your_username": "Din unika identifierare på denna server. Det är möjligt att hitta användare med samma användarnamn på olika servrar.",
"embed.instructions": "Bädda in detta inlägg på din webbplats genom att kopiera koden nedan.", "embed.instructions": "Bädda in detta inlägg på din webbplats genom att kopiera koden nedan.",
"embed.preview": "Så här kommer det att se ut:", "embed.preview": "Så här kommer det att se ut:",
@ -259,6 +266,7 @@
"empty_column.list": "Det finns inget i denna lista än. När listmedlemmar publicerar nya inlägg kommer de synas här.", "empty_column.list": "Det finns inget i denna lista än. När listmedlemmar publicerar nya inlägg kommer de synas här.",
"empty_column.lists": "Du har inga listor än. När skapar en kommer den dyka upp här.", "empty_column.lists": "Du har inga listor än. När skapar en kommer den dyka upp här.",
"empty_column.mutes": "Du har ännu inte tystat några användare.", "empty_column.mutes": "Du har ännu inte tystat några användare.",
"empty_column.notification_requests": "Allt klart! Det finns inget mer här. När du får nya meddelanden visas de här enligt dina inställningar.",
"empty_column.notifications": "Du har inga meddelanden än. Interagera med andra för att starta konversationen.", "empty_column.notifications": "Du har inga meddelanden än. Interagera med andra för att starta konversationen.",
"empty_column.public": "Det finns inget här! Skriv något offentligt, eller följ manuellt användarna från andra instanser för att fylla på det", "empty_column.public": "Det finns inget här! Skriv något offentligt, eller följ manuellt användarna från andra instanser för att fylla på det",
"error.unexpected_crash.explanation": "På grund av en bugg i vår kod eller kompatiblitetsproblem i webbläsaren kan den här sidan inte visas korrekt.", "error.unexpected_crash.explanation": "På grund av en bugg i vår kod eller kompatiblitetsproblem i webbläsaren kan den här sidan inte visas korrekt.",
@ -289,6 +297,9 @@
"filter_modal.select_filter.subtitle": "Använd en befintlig kategori eller skapa en ny", "filter_modal.select_filter.subtitle": "Använd en befintlig kategori eller skapa en ny",
"filter_modal.select_filter.title": "Filtrera detta inlägg", "filter_modal.select_filter.title": "Filtrera detta inlägg",
"filter_modal.title.status": "Filtrera ett inlägg", "filter_modal.title.status": "Filtrera ett inlägg",
"filtered_notifications_banner.pending_requests": "Aviseringar från {count, plural, =0 {ingen} one {en person} other {# personer}} du kanske känner",
"filtered_notifications_banner.private_mentions": "{count, plural, one {privat omnämnande} other {privat omnämnande}}",
"filtered_notifications_banner.title": "Filtrerade aviseringar",
"firehose.all": "Allt", "firehose.all": "Allt",
"firehose.local": "Denna server", "firehose.local": "Denna server",
"firehose.remote": "Andra servrar", "firehose.remote": "Andra servrar",
@ -417,7 +428,9 @@
"loading_indicator.label": "Laddar…", "loading_indicator.label": "Laddar…",
"media_gallery.toggle_visible": "Växla synlighet", "media_gallery.toggle_visible": "Växla synlighet",
"moved_to_account_banner.text": "Ditt konto {disabledAccount} är för närvarande inaktiverat eftersom du flyttat till {movedToAccount}.", "moved_to_account_banner.text": "Ditt konto {disabledAccount} är för närvarande inaktiverat eftersom du flyttat till {movedToAccount}.",
"mute_modal.hide_from_notifications": "Dölj från aviseringslistan",
"mute_modal.hide_options": "Dölj alternativ", "mute_modal.hide_options": "Dölj alternativ",
"mute_modal.indefinite": "Tills jag avtystar dem",
"mute_modal.show_options": "Visa alternativ", "mute_modal.show_options": "Visa alternativ",
"mute_modal.they_can_mention_and_follow": "De kan nämna och följa dig, men du ser dem inte.", "mute_modal.they_can_mention_and_follow": "De kan nämna och följa dig, men du ser dem inte.",
"mute_modal.they_wont_know": "De vet inte att de har blivit tysta.", "mute_modal.they_wont_know": "De vet inte att de har blivit tysta.",
@ -459,6 +472,9 @@
"notification.own_poll": "Din röstning har avslutats", "notification.own_poll": "Din röstning har avslutats",
"notification.poll": "En omröstning du röstat i har avslutats", "notification.poll": "En omröstning du röstat i har avslutats",
"notification.reblog": "{name} boostade ditt inlägg", "notification.reblog": "{name} boostade ditt inlägg",
"notification.relationships_severance_event": "Förlorade kontakter med {name}",
"notification.relationships_severance_event.account_suspension": "En administratör från {from} har stängt av {target}, vilket innebär att du inte längre kan ta emot uppdateringar från dem eller interagera med dem.",
"notification.relationships_severance_event.domain_block": "En administratör från {from} har blockerat {target}, inklusive {followersCount} av dina följare och {followingCount, plural, one {# konto} other {# konton}} du följer.",
"notification.relationships_severance_event.learn_more": "Läs mer", "notification.relationships_severance_event.learn_more": "Läs mer",
"notification.status": "{name} publicerade just ett inlägg", "notification.status": "{name} publicerade just ett inlägg",
"notification.update": "{name} redigerade ett inlägg", "notification.update": "{name} redigerade ett inlägg",

View file

@ -730,7 +730,7 @@
"status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。", "status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。",
"status.redraft": "刪除並重新編輯", "status.redraft": "刪除並重新編輯",
"status.remove_bookmark": "移除書籤", "status.remove_bookmark": "移除書籤",
"status.replied_to": "回覆 {name}", "status.replied_to": "回覆 {name}",
"status.reply": "回覆", "status.reply": "回覆",
"status.replyAll": "回覆討論串", "status.replyAll": "回覆討論串",
"status.report": "檢舉 @{name}", "status.report": "檢舉 @{name}",

View file

@ -1,15 +1,4 @@
export type StatusVisibility = export type { StatusVisibility } from 'mastodon/api_types/statuses';
| 'public'
| 'unlisted'
| 'private'
| 'direct'
| 'public_unlisted'
| 'login'
| 'mutual'
| 'circle'
| 'personal'
| 'reply'
| 'limited';
// Temporary until we type it correctly // Temporary until we type it correctly
export type Status = Immutable.Map<string, unknown>; export type Status = Immutable.Map<string, unknown>;

View file

@ -30,7 +30,8 @@ function isActionWithmaybeAlertParams(
return isAction(action); return isAction(action);
} }
export const errorsMiddleware: Middleware<Record<string, never>, RootState> = // eslint-disable-next-line @typescript-eslint/ban-types -- we need to use `{}` here to ensure the dispatch types can be merged
export const errorsMiddleware: Middleware<{}, RootState> =
({ dispatch }) => ({ dispatch }) =>
(next) => (next) =>
(action) => { (action) => {

View file

@ -51,7 +51,8 @@ const play = (audio: HTMLAudioElement) => {
}; };
export const soundsMiddleware = (): Middleware< export const soundsMiddleware = (): Middleware<
Record<string, never>, // eslint-disable-next-line @typescript-eslint/ban-types -- we need to use `{}` here to ensure the dispatch types can be merged
{},
RootState RootState
> => { > => {
const soundCache: Record<string, HTMLAudioElement> = {}; const soundCache: Record<string, HTMLAudioElement> = {};

View file

@ -70,10 +70,10 @@ export function roundTo10(num: number): number {
return Math.round(num * 0.1) / 0.1; return Math.round(num * 0.1) / 0.1;
} }
export function toCappedNumber(num: string): string { export function toCappedNumber(num: number, max = 99): string {
if (parseInt(num) > 99) { if (num > max) {
return '99+'; return `${max}+`;
} else { } else {
return num; return num.toString();
} }
} }

View file

@ -80,6 +80,7 @@ html {
} }
.search__input, .search__input,
.search__popout,
.setting-text, .setting-text,
.report-dialog-modal__textarea, .report-dialog-modal__textarea,
.audio-player { .audio-player {
@ -439,7 +440,8 @@ html {
.directory__tag > div, .directory__tag > div,
.card > a, .card > a,
.page-header, .page-header,
.compose-form .compose-form__warning { .compose-form,
.compose-form__warning {
box-shadow: none; box-shadow: none;
} }
@ -475,12 +477,17 @@ html {
color: $white; color: $white;
} }
.compose-form .spoiler-input__input { .compose-form,
.spoiler-input__input,
.search__input,
.search__popout {
color: lighten($ui-highlight-color, 8%); color: lighten($ui-highlight-color, 8%);
} }
.compose-form .autosuggest-textarea__textarea, .compose-form .autosuggest-textarea__textarea,
.compose-form__highlightable, .compose-form__highlightable,
.search__input,
.search__popout,
.poll__option input[type='text'] { .poll__option input[type='text'] {
background: darken($ui-base-color, 10%); background: darken($ui-base-color, 10%);
} }

View file

@ -10534,9 +10534,10 @@ noscript {
} }
.filtered-notifications-banner__badge { .filtered-notifications-banner__badge {
background-color: $highlight-text-color; background: $ui-button-background-color;
border-radius: 4px; border-radius: 4px;
padding: 1px 6px; padding: 1px 6px;
color: $white;
} }
} }

View file

@ -163,7 +163,10 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
valid = !Admin::NgWord.reject?("#{@params[:spoiler_text]}\n#{@params[:text]}", uri: @params[:uri], target_type: :status, public: @status_parser.distributable_visibility?, stranger: mention_to_local_stranger? || reference_to_local_stranger?) if valid valid = !Admin::NgWord.reject?("#{@params[:spoiler_text]}\n#{@params[:text]}", uri: @params[:uri], target_type: :status, public: @status_parser.distributable_visibility?, stranger: mention_to_local_stranger? || reference_to_local_stranger?) if valid
valid = !Admin::NgWord.hashtag_reject?(@tags.size, uri: @params[:uri], target_type: :status, public: @status_parser.distributable_visibility?, text: "#{@params[:spoiler_text]}\n#{@params[:text]}") if valid valid = !Admin::NgWord.hashtag_reject?(@tags.size, uri: @params[:uri], target_type: :status, public: @status_parser.distributable_visibility?, text: "#{@params[:spoiler_text]}\n#{@params[:text]}") if valid
valid = !Admin::NgWord.mention_reject?(@raw_mention_uris.size, uri: @params[:uri], target_type: :status, public: @status_parser.distributable_visibility?, text: "#{@params[:spoiler_text]}\n#{@params[:text]}") if valid valid = !Admin::NgWord.mention_reject?(@raw_mention_uris.size, uri: @params[:uri], target_type: :status, public: @status_parser.distributable_visibility?, text: "#{@params[:spoiler_text]}\n#{@params[:text]}") if valid
valid = !Admin::NgWord.stranger_mention_reject_with_count?(@raw_mention_uris.size, uri: @params[:uri], target_type: :status, public: @status_parser.distributable_visibility?, text: "#{@params[:spoiler_text]}\n#{@params[:text]}") if valid && (mention_to_local_stranger? || reference_to_local_stranger?) if valid && (mention_to_local_stranger? || reference_to_local_stranger?)
valid = !Admin::NgWord.stranger_mention_reject_with_count?(@raw_mention_uris.size, uri: @params[:uri], target_type: :status, public: @status_parser.distributable_visibility?,
text: "#{@params[:spoiler_text]}\n#{@params[:text]}")
end
valid = false if valid && Setting.block_unfollow_account_mention && (mention_to_local_stranger? || reference_to_local_stranger?) && !local_following_sender? valid = false if valid && Setting.block_unfollow_account_mention && (mention_to_local_stranger? || reference_to_local_stranger?) && !local_following_sender?
valid valid

View file

@ -469,10 +469,10 @@ class FeedManager
# @param [List] list # @param [List] list
# @return [Boolean] # @return [Boolean]
def filter_from_list?(status, list) def filter_from_list?(status, list)
if status.reply? && status.in_reply_to_account_id != status.account_id if status.reply? && status.in_reply_to_account_id != status.account_id # Status is a reply to account other than status account
should_filter = status.in_reply_to_account_id != list.account_id should_filter = status.in_reply_to_account_id != list.account_id # Status replies to account id other than list account
should_filter &&= !list.show_followed? should_filter &&= !list.show_followed? # List show_followed? is false
should_filter &&= !(list.show_list? && ListAccount.exists?(list_id: list.id, account_id: status.in_reply_to_account_id)) should_filter &&= !(list.show_list? && ListAccount.exists?(list_id: list.id, account_id: status.in_reply_to_account_id)) # If show_list? true, check for a ListAccount with list and reply to account
return !!should_filter return !!should_filter
end end
@ -487,7 +487,11 @@ class FeedManager
# @param [Hash] crutches # @param [Hash] crutches
# @return [Boolean] # @return [Boolean]
def filter_from_tags?(status, receiver_id, crutches) def filter_from_tags?(status, receiver_id, crutches)
receiver_id == status.account_id || ((crutches[:active_mentions][status.id] || []) + [status.account_id]).any? { |target_account_id| crutches[:blocking][target_account_id] || crutches[:muting][target_account_id] } || crutches[:blocked_by][status.account_id] || crutches[:domain_blocking][status.account.domain] receiver_id == status.account_id || # Receiver is status account?
((crutches[:active_mentions][status.id] || []) + [status.account_id]) # For mentioned accounts or status account:
.any? { |target_account_id| crutches[:blocking][target_account_id] || crutches[:muting][target_account_id] } || # - Target account is muted or blocked?
crutches[:blocked_by][status.account_id] || # Blocked by status account?
crutches[:domain_blocking][status.account.domain] # Blocking domain of status account?
end end
# Adds a status to an account's feed, returning true if a status was # Adds a status to an account's feed, returning true if a status was

View file

@ -15,4 +15,6 @@ class UserIp < ApplicationRecord
self.primary_key = :user_id self.primary_key = :user_id
belongs_to :user belongs_to :user
scope :by_latest_used, -> { order(used_at: :desc) }
end end

View file

@ -56,6 +56,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer
accounts: { accounts: {
max_featured_tags: FeaturedTag::LIMIT, max_featured_tags: FeaturedTag::LIMIT,
max_pinned_statuses: StatusPinValidator::PIN_LIMIT,
}, },
statuses: { statuses: {

View file

@ -3,6 +3,8 @@
class REST::MediaAttachmentSerializer < ActiveModel::Serializer class REST::MediaAttachmentSerializer < ActiveModel::Serializer
include RoutingHelper include RoutingHelper
# Please update `app/javascript/mastodon/api_types/media_attachments.ts` when making changes to the attributes
attributes :id, :type, :url, :preview_url, attributes :id, :type, :url, :preview_url,
:remote_url, :preview_remote_url, :text_url, :meta, :remote_url, :preview_remote_url, :text_url, :meta,
:description, :blurhash :description, :blurhash

View file

@ -9,8 +9,8 @@ class REST::NotificationPolicySerializer < ActiveModel::Serializer
def summary def summary
{ {
pending_requests_count: object.pending_requests_count.to_s, pending_requests_count: object.pending_requests_count.to_i,
pending_notifications_count: object.pending_notifications_count.to_s, pending_notifications_count: object.pending_notifications_count.to_i,
} }
end end
end end

View file

@ -1,6 +1,8 @@
# frozen_string_literal: true # frozen_string_literal: true
class REST::PollSerializer < ActiveModel::Serializer class REST::PollSerializer < ActiveModel::Serializer
# Please update `app/javascript/mastodon/api_types/polls.ts` when making changes to the attributes
attributes :id, :expires_at, :expired, attributes :id, :expires_at, :expired,
:multiple, :votes_count, :voters_count :multiple, :votes_count, :voters_count

View file

@ -3,6 +3,8 @@
class REST::StatusSerializer < ActiveModel::Serializer class REST::StatusSerializer < ActiveModel::Serializer
include FormattingHelper include FormattingHelper
# Please update `app/javascript/mastodon/api_types/statuses.ts` when making changes to the attributes
attributes :id, :created_at, :in_reply_to_id, :in_reply_to_account_id, attributes :id, :created_at, :in_reply_to_id, :in_reply_to_account_id,
:sensitive, :spoiler_text, :visibility, :visibility_ex, :limited_scope, :language, :sensitive, :spoiler_text, :visibility, :visibility_ex, :limited_scope, :language,
:uri, :url, :replies_count, :reblogs_count, :searchability, :markdown, :uri, :url, :replies_count, :reblogs_count, :searchability, :markdown,

View file

@ -10,7 +10,7 @@ class BulkImportRowService
when :following, :blocking, :muting, :lists when :following, :blocking, :muting, :lists
target_acct = @data['acct'] target_acct = @data['acct']
target_domain = domain(target_acct) target_domain = domain(target_acct)
@target_account = stoplight_wrap_request(target_domain) { ResolveAccountService.new.call(target_acct, { check_delivery_availability: true }) } @target_account = stoplight_wrapper(target_domain).run { ResolveAccountService.new.call(target_acct, { check_delivery_availability: true }) }
return false if @target_account.nil? return false if @target_account.nil?
when :bookmarks when :bookmarks
target_uri = @data['uri'] target_uri = @data['uri']
@ -18,7 +18,7 @@ class BulkImportRowService
@target_status = ActivityPub::TagManager.instance.uri_to_resource(target_uri, Status) @target_status = ActivityPub::TagManager.instance.uri_to_resource(target_uri, Status)
return false if @target_status.nil? && ActivityPub::TagManager.instance.local_uri?(target_uri) return false if @target_status.nil? && ActivityPub::TagManager.instance.local_uri?(target_uri)
@target_status ||= stoplight_wrap_request(target_domain) { ActivityPub::FetchRemoteStatusService.new.call(target_uri) } @target_status ||= stoplight_wrapper(target_domain).run { ActivityPub::FetchRemoteStatusService.new.call(target_uri) }
return false if @target_status.nil? return false if @target_status.nil?
end end
@ -51,16 +51,15 @@ class BulkImportRowService
TagManager.instance.local_domain?(domain) ? nil : TagManager.instance.normalize_domain(domain) TagManager.instance.local_domain?(domain) ? nil : TagManager.instance.normalize_domain(domain)
end end
def stoplight_wrap_request(domain, &block) def stoplight_wrapper(domain)
if domain.present? if domain.present?
Stoplight("source:#{domain}", &block) Stoplight("source:#{domain}")
.with_fallback { nil } .with_fallback { nil }
.with_threshold(1) .with_threshold(1)
.with_cool_off_time(5.minutes.seconds) .with_cool_off_time(5.minutes.seconds)
.with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) } .with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) }
.run
else else
yield Stoplight('domain-blank')
end end
end end
end end

View file

@ -197,7 +197,8 @@ class PostStatusService < BaseService
end end
def postprocess_status! def postprocess_status!
@account.user.update!(settings_attributes: { default_privacy: @options[:visibility] }) if @account.user&.setting_stay_privacy && !@status.reply? && %i(public public_unlisted login unlisted private).include?(@status.visibility.to_sym) && @status.visibility.to_s != @account.user&.setting_default_privacy && !@dtl @account.user.update!(settings_attributes: { default_privacy: @options[:visibility] }) if @account.user&.setting_stay_privacy && !@status.reply? && %i(public public_unlisted login unlisted
private).include?(@status.visibility.to_sym) && @status.visibility.to_s != @account.user&.setting_default_privacy && !@dtl
process_hashtags_service.call(@status) process_hashtags_service.call(@status)
Trends.tags.register(@status) Trends.tags.register(@status)

View file

@ -62,13 +62,7 @@
%td %td
%time.formatted{ datetime: account.created_at.iso8601, title: l(account.created_at) }= l account.created_at %time.formatted{ datetime: account.created_at.iso8601, title: l(account.created_at) }= l account.created_at
%td %td
- recent_ips = account.user.ips.order(used_at: :desc).to_a = render partial: 'admin/accounts/user_ip', collection: account.user.ips.by_latest_used
- recent_ips.each_with_index do |recent_ip, i|
%tr
- if i.zero?
%th{ rowspan: recent_ips.size }= t('admin.accounts.most_recent_ip')
%td= recent_ip.ip
%td= table_link_to 'search', t('admin.accounts.search_same_ip'), admin_accounts_path(ip: recent_ip.ip)
%tr %tr
%th= t('admin.accounts.most_recent_activity') %th= t('admin.accounts.most_recent_activity')
%td %td

View file

@ -0,0 +1,5 @@
%tr
- if user_ip_iteration.first?
%th{ rowspan: user_ip_iteration.size }= t('admin.accounts.most_recent_ip')
%td= user_ip.ip
%td= table_link_to 'search', t('admin.accounts.search_same_ip'), admin_accounts_path(ip: user_ip.ip)

View file

@ -59,7 +59,7 @@ class ActivityPub::DeliveryWorker
end end
def perform_request def perform_request
light = Stoplight(@inbox_url) do stoplight_wrapper.run do
request_pool.with(@host) do |http_client| request_pool.with(@host) do |http_client|
build_request(http_client).perform do |response| build_request(http_client).perform do |response|
raise Mastodon::UnexpectedResponseError, response unless response_successful?(response) || response_error_unsalvageable?(response) raise Mastodon::UnexpectedResponseError, response unless response_successful?(response) || response_error_unsalvageable?(response)
@ -68,10 +68,12 @@ class ActivityPub::DeliveryWorker
end end
end end
end end
end
light.with_threshold(STOPLIGHT_FAILURE_THRESHOLD) def stoplight_wrapper
.with_cool_off_time(STOPLIGHT_COOLDOWN) Stoplight(@inbox_url)
.run .with_threshold(STOPLIGHT_FAILURE_THRESHOLD)
.with_cool_off_time(STOPLIGHT_COOLDOWN)
end end
def failure_tracker def failure_tracker

View file

@ -11,7 +11,7 @@ class Import::RelationshipWorker
def perform(account_id, target_account_uri, relationship, options) def perform(account_id, target_account_uri, relationship, options)
from_account = Account.find(account_id) from_account = Account.find(account_id)
target_domain = domain(target_account_uri) target_domain = domain(target_account_uri)
target_account = stoplight_wrap_request(target_domain) { ResolveAccountService.new.call(target_account_uri, { check_delivery_availability: true }) } target_account = stoplight_wrapper(target_domain).run { ResolveAccountService.new.call(target_account_uri, { check_delivery_availability: true }) }
options.symbolize_keys! options.symbolize_keys!
return if target_account.nil? return if target_account.nil?
@ -43,16 +43,15 @@ class Import::RelationshipWorker
TagManager.instance.local_domain?(domain) ? nil : TagManager.instance.normalize_domain(domain) TagManager.instance.local_domain?(domain) ? nil : TagManager.instance.normalize_domain(domain)
end end
def stoplight_wrap_request(domain, &block) def stoplight_wrapper(domain)
if domain.present? if domain.present?
Stoplight("source:#{domain}", &block) Stoplight("source:#{domain}")
.with_fallback { nil } .with_fallback { nil }
.with_threshold(1) .with_threshold(1)
.with_cool_off_time(5.minutes.seconds) .with_cool_off_time(5.minutes.seconds)
.with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) } .with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) }
.run
else else
yield Stoplight('domain-blank')
end end
end end
end end

View file

@ -3,6 +3,6 @@
require 'stoplight' require 'stoplight'
Rails.application.reloader.to_prepare do Rails.application.reloader.to_prepare do
Stoplight::Light.default_data_store = Stoplight::DataStore::Redis.new(RedisConfiguration.new.connection) Stoplight.default_data_store = Stoplight::DataStore::Redis.new(RedisConfiguration.new.connection)
Stoplight::Light.default_notifiers = [Stoplight::Notifier::Logger.new(Rails.logger)] Stoplight.default_notifiers = [Stoplight::Notifier::Logger.new(Rails.logger)]
end end

View file

@ -7,3 +7,9 @@ ia:
password: Contrasigno password: Contrasigno
user/account: user/account:
username: Nomine de usator username: Nomine de usator
errors:
models:
status:
attributes:
reblog:
taken: del message jam existe

View file

@ -28,12 +28,12 @@ de:
title: Verifiziere E-Mail-Adresse title: Verifiziere E-Mail-Adresse
email_changed: email_changed:
explanation: 'Die E-Mail-Adresse deines Kontos wird geändert zu:' explanation: 'Die E-Mail-Adresse deines Kontos wird geändert zu:'
extra: Wenn du deine E-Mail-Adresse nicht geändert hast, ist es wahrscheinlich, dass sich jemand Zugang zu deinem Konto verschafft hat. Bitte ändere sofort dein Passwort oder kontaktiere die Serververwaltung, wenn du aus deinem Konto ausgesperrt bist. extra: Wenn du deine E-Mail-Adresse nicht geändert hast, ist es wahrscheinlich, dass sich jemand Zugang zu deinem Konto verschafft hat. Bitte ändere sofort dein Passwort oder kontaktiere die Administrator*innen des Servers, wenn du aus deinem Konto ausgesperrt bist.
subject: 'Mastodon: E-Mail-Adresse geändert' subject: 'Mastodon: E-Mail-Adresse geändert'
title: Neue E-Mail-Adresse title: Neue E-Mail-Adresse
password_change: password_change:
explanation: Das Passwort für dein Konto wurde geändert. explanation: Das Passwort für dein Konto wurde geändert.
extra: Wenn du dein Passwort nicht geändert hast, ist es wahrscheinlich, dass sich jemand Zugang zu deinem Konto verschafft hat. Bitte ändere sofort dein Passwort oder kontaktiere die Serververwaltung, wenn du aus deinem Konto ausgesperrt bist. extra: Wenn du dein Passwort nicht geändert hast, ist es wahrscheinlich, dass sich jemand Zugang zu deinem Konto verschafft hat. Bitte ändere sofort dein Passwort oder kontaktiere die Administrator*innen des Servers, wenn du aus deinem Konto ausgesperrt bist.
subject: 'Mastodon: Passwort geändert' subject: 'Mastodon: Passwort geändert'
title: Passwort geändert title: Passwort geändert
reconfirmation_instructions: reconfirmation_instructions:

View file

@ -1674,7 +1674,7 @@ es-MX:
lost_follows: Cuentas seguidas perdidas lost_follows: Cuentas seguidas perdidas
preamble: Puedes perder cuentas seguidas y seguidores cuando bloqueas un dominio o cuando tus moderadores deciden suspender un servidor remoto. Cuando esto suceda, podrás descargar listas de relaciones cortadas, para ser inspeccionadas y posiblemente importadas en otro servidor. preamble: Puedes perder cuentas seguidas y seguidores cuando bloqueas un dominio o cuando tus moderadores deciden suspender un servidor remoto. Cuando esto suceda, podrás descargar listas de relaciones cortadas, para ser inspeccionadas y posiblemente importadas en otro servidor.
purged: La información sobre este servidor ha sido purgada por los administradores de tu servidor. purged: La información sobre este servidor ha sido purgada por los administradores de tu servidor.
type: Suceso type: Evento
statuses: statuses:
attached: attached:
audio: audio:

View file

@ -597,6 +597,9 @@ et:
actions_description_html: Otsustus, mida raporti lahendamiseks ette võtta. Karistava tegevuse korral saadetakse e-postiga teade, välja arvatud kategooria <strong>rämpspost</strong> puhul. actions_description_html: Otsustus, mida raporti lahendamiseks ette võtta. Karistava tegevuse korral saadetakse e-postiga teade, välja arvatud kategooria <strong>rämpspost</strong> puhul.
actions_description_remote_html: Otsusta, mida teha selle raporti lahendamiseks. See mõjutab ainult seda, kuidas <strong>Sinu</strong> server selle kaugkontoga suhtleb ning selle sisu käsitleb. actions_description_remote_html: Otsusta, mida teha selle raporti lahendamiseks. See mõjutab ainult seda, kuidas <strong>Sinu</strong> server selle kaugkontoga suhtleb ning selle sisu käsitleb.
add_to_report: Lisa raportile juurde add_to_report: Lisa raportile juurde
already_suspended_badges:
local: Juba kustutamisel selles serveris
remote: Juba kustutamisel tema serveris
are_you_sure: Oled kindel? are_you_sure: Oled kindel?
assign_to_self: Määra mulle assign_to_self: Määra mulle
assigned: Määratud moderaator assigned: Määratud moderaator
@ -1652,13 +1655,26 @@ et:
import: Impordi import: Impordi
import_and_export: Import / eksport import_and_export: Import / eksport
migrate: Konto kolimine migrate: Konto kolimine
notifications: E-postiteavitused
preferences: Eelistused preferences: Eelistused
profile: Profiil profile: Profiil
relationships: Jälgitud ja jälgijad relationships: Jälgitud ja jälgijad
severed_relationships: Katkestatud seos
statuses_cleanup: Automaatne kustutamine statuses_cleanup: Automaatne kustutamine
strikes: Modereerimisjuhtumid strikes: Modereerimisjuhtumid
two_factor_authentication: Kaheastmeline autentimine two_factor_authentication: Kaheastmeline autentimine
webauthn_authentication: Turvavõtmed webauthn_authentication: Turvavõtmed
severed_relationships:
download: Allalaadimine (%{count})
event_type:
account_suspension: Konto kustutamisel (%{target_name})
domain_block: Server kustutamisel (%{target_name})
user_domain_block: Blokeerisid %{target_name}
lost_followers: Kadunud jälgijad
lost_follows: Kaotatud jälgimised
preamble: Võid kaotada jälgijaid ja jälgitavaid, kui blokeerid domeeni või kui su moderaatorid otsustavad kustutada kaugserveri. Kui see juhtub, saad alla laadida katkestatud seoste loetelu, et see üle vaadata ja võib-olla teise serverisse üles laadida.
purged: Selle serveri info on sinu serveri administraatorite poolt tühjendatud.
type: Sündmus
statuses: statuses:
attached: attached:
audio: audio:
@ -1754,6 +1770,7 @@ et:
contrast: Mastodon (Kõrge kontrast) contrast: Mastodon (Kõrge kontrast)
default: Mastodon (Tume) default: Mastodon (Tume)
mastodon-light: Mastodon (Hele) mastodon-light: Mastodon (Hele)
system: Automaatne (kasuta süsteemi teemat)
time: time:
formats: formats:
default: "%d. %B, %Y. aastal, kell %H:%M" default: "%d. %B, %Y. aastal, kell %H:%M"
@ -1866,6 +1883,9 @@ et:
follows_subtitle: Jälgi teada-tuntud kasutajaid follows_subtitle: Jälgi teada-tuntud kasutajaid
follows_title: Keda jälgida follows_title: Keda jälgida
follows_view_more: Vaata lähemalt, keda jälgida follows_view_more: Vaata lähemalt, keda jälgida
hashtags_recent_count:
one: "%{people} isikut viimase 2 päeva jooksul"
other: "%{people} inimest viimase 2 päeva jooksul"
hashtags_subtitle: Avasta, mis viimase 2 päeva jooksul on toimunud hashtags_subtitle: Avasta, mis viimase 2 päeva jooksul on toimunud
hashtags_title: Populaarsed märksõnad hashtags_title: Populaarsed märksõnad
hashtags_view_more: Vaata teisi trendikaid märksõnu hashtags_view_more: Vaata teisi trendikaid märksõnu

View file

@ -1,7 +1,20 @@
--- ---
ia: ia:
about: about:
about_mastodon_html: 'Le rete social del futuro: nulle publicitate, nulle surveliantia corporative, conception ethic, e decentralisation! Mantene le controlo de tu datos con Mastodon!'
contact_missing: Non definite contact_missing: Non definite
contact_unavailable: N/D
hosted_on: Mastodon albergate sur %{domain}
title: A proposito
accounts:
follow: Sequer
followers:
one: Sequitor
other: Sequitores
following: Sequente
instance_actor_flash: Iste conto es un agente virtual usate pro representar le servitor mesme e non alcun usator individual. Illo es usate pro le federation e non debe esser suspendite.
last_active: ultime activitate
link_verified_on: Le proprietate de iste ligamine ha essite verificate le %{date}
admin: admin:
accounts: accounts:
are_you_sure: Es tu secur? are_you_sure: Es tu secur?

View file

@ -597,6 +597,9 @@ ie:
actions_description_html: Decider quel action a far por soluer ti raporte. Si tu fa un punitiv action contra li raportat conto, li usator va reciver un notification per email, except in li casu que li <strong>Spam</strong> categorie es selectet. actions_description_html: Decider quel action a far por soluer ti raporte. Si tu fa un punitiv action contra li raportat conto, li usator va reciver un notification per email, except in li casu que li <strong>Spam</strong> categorie es selectet.
actions_description_remote_html: Decider quel action a far por soluer ti raporte. It va afecter solmen qualmen <strong>vor</strong> servitor comunica con ti lontan conto e tractar su contenete. actions_description_remote_html: Decider quel action a far por soluer ti raporte. It va afecter solmen qualmen <strong>vor</strong> servitor comunica con ti lontan conto e tractar su contenete.
add_to_report: Adjunter plu al raporte add_to_report: Adjunter plu al raporte
already_suspended_badges:
local: Ja suspendet sur ti-ci servitor
remote: Ja suspendet sur su servitor
are_you_sure: Es tu cert? are_you_sure: Es tu cert?
assign_to_self: Assignar it a me assign_to_self: Assignar it a me
assigned: Assignat moderator assigned: Assignat moderator
@ -1652,6 +1655,7 @@ ie:
import: Importar import: Importar
import_and_export: Importation e exportation import_and_export: Importation e exportation
migrate: Migration de conto migrate: Migration de conto
notifications: E-postal notificationes
preferences: Preferenties preferences: Preferenties
profile: Public profil profile: Public profil
relationships: Sequetes e sequitores relationships: Sequetes e sequitores
@ -1659,6 +1663,14 @@ ie:
strikes: Admonimentes moderatori strikes: Admonimentes moderatori
two_factor_authentication: 2-factor autentication two_factor_authentication: 2-factor autentication
webauthn_authentication: Claves de securitá webauthn_authentication: Claves de securitá
severed_relationships:
download: Descargar (%{count})
event_type:
account_suspension: Suspension del conto (%{target_name})
user_domain_block: Tu bloccat %{target_name}
lost_followers: Perdit sequitores
preamble: Tu posse perdir tis queles tu seque e tui sequitores quande tu blocca un domonia o quande tui moderatores decide suspender un lontan servitor. Tande, tu va posser descargar listes de dejuntet relationes, a inspecter e possibilmen importar sur un altri servitor.
type: Eveniment
statuses: statuses:
attached: attached:
audio: audio:
@ -1752,6 +1764,7 @@ ie:
contrast: Mastodon (Alt contraste) contrast: Mastodon (Alt contraste)
default: Mastodon (Obscur) default: Mastodon (Obscur)
mastodon-light: Mastodon (Luminosi) mastodon-light: Mastodon (Luminosi)
system: Automatic (usar tema del sistema)
time: time:
formats: formats:
default: "%d.%m.%Y ye %H:%M" default: "%d.%m.%Y ye %H:%M"
@ -1864,6 +1877,9 @@ ie:
follows_subtitle: Sequer famosi contos follows_subtitle: Sequer famosi contos
follows_title: Persones a sequer follows_title: Persones a sequer
follows_view_more: Vider plu persones a sequer follows_view_more: Vider plu persones a sequer
hashtags_recent_count:
one: "%{people} person in li passat 2 dies"
other: "%{people} persones in li passat 2 dies"
hashtags_subtitle: Explorar li postas de tendentie durant li passat 2 dies hashtags_subtitle: Explorar li postas de tendentie durant li passat 2 dies
hashtags_title: Populari hashtags hashtags_title: Populari hashtags
hashtags_view_more: Vider plu hashtags in tendentie hashtags_view_more: Vider plu hashtags in tendentie

View file

@ -1234,7 +1234,7 @@ it:
bookmarks: Segnalibri bookmarks: Segnalibri
csv: CSV csv: CSV
domain_blocks: Blocchi di dominio domain_blocks: Blocchi di dominio
lists: Liste lists: Elenchi
mutes: Stai silenziando mutes: Stai silenziando
storage: Archiviazione media storage: Archiviazione media
featured_tags: featured_tags:

View file

@ -1665,6 +1665,10 @@ lad:
webauthn_authentication: Yaves de sigurita webauthn_authentication: Yaves de sigurita
severed_relationships: severed_relationships:
download: Abasha (%{count}) download: Abasha (%{count})
event_type:
user_domain_block: Blokates a %{target_name}
lost_followers: Suivantes pedridos
lost_follows: Segimyentos pedridos
type: Evenimiento type: Evenimiento
statuses: statuses:
attached: attached:

View file

@ -116,6 +116,7 @@ et:
sign_up_requires_approval: Uued liitumised vajavad kinnitamist sign_up_requires_approval: Uued liitumised vajavad kinnitamist
severity: Valik, mis juhtub päringutega sellelt IP-aadressilt severity: Valik, mis juhtub päringutega sellelt IP-aadressilt
rule: rule:
hint: Valikuline. Anna reegli kohta rohkem üksikasju
text: Reegli või nõude kirjeldus selle serveri kasutajatele. Võimalikult lühidalt ja lihtsalt text: Reegli või nõude kirjeldus selle serveri kasutajatele. Võimalikult lühidalt ja lihtsalt
sessions: sessions:
otp: 'Kaheastmelise autentimise kood telefonirakendusest või mõni taastekood:' otp: 'Kaheastmelise autentimise kood telefonirakendusest või mõni taastekood:'
@ -299,6 +300,7 @@ et:
patch: Teata veaparandusuuendustest patch: Teata veaparandusuuendustest
trending_tag: Uus trend vajab ülevaatust trending_tag: Uus trend vajab ülevaatust
rule: rule:
hint: Lisainfo
text: Reegel text: Reegel
settings: settings:
indexable: Kaasa profiilileht otsimootoritesse indexable: Kaasa profiilileht otsimootoritesse

View file

@ -15,6 +15,7 @@ ia:
current_password: Contrasigno actual current_password: Contrasigno actual
new_password: Nove contrasigno new_password: Nove contrasigno
password: Contrasigno password: Contrasigno
setting_default_language: Lingua de publication
setting_display_media_default: Predefinite setting_display_media_default: Predefinite
setting_display_media_hide_all: Celar toto setting_display_media_hide_all: Celar toto
setting_display_media_show_all: Monstrar toto setting_display_media_show_all: Monstrar toto
@ -35,9 +36,15 @@ ia:
site_title: Nomine de servitor site_title: Nomine de servitor
theme: Thema predefinite theme: Thema predefinite
trends: Activar tendentias trends: Activar tendentias
ip_block:
severity: Regula
notification_emails: notification_emails:
software_updates: software_updates:
label: Un nove version de Mastodon es disponibile label: Un nove version de Mastodon es disponibile
rule:
text: Regula
settings:
indexable: Includer pagina de profilo in le motores de recerca
user: user:
time_zone: Fuso horari time_zone: Fuso horari
user_role: user_role:

View file

@ -116,6 +116,7 @@ ie:
sign_up_requires_approval: Nov registrationes va besonar tui aprobation sign_up_requires_approval: Nov registrationes va besonar tui aprobation
severity: Selecter quo va evenir con demandes ex ti-ci IP severity: Selecter quo va evenir con demandes ex ti-ci IP
rule: rule:
hint: Optional. Ples provider plu detallies pri li regul
text: Descrir un regul o postulation por usatores sur ti-ci servitor. Prova scrir un descrition curt e simplic text: Descrir un regul o postulation por usatores sur ti-ci servitor. Prova scrir un descrition curt e simplic
sessions: sessions:
otp: 'Intrar li 2-factor code generat del app sur tui portabile o usar un de tui codes de recuperation:' otp: 'Intrar li 2-factor code generat del app sur tui portabile o usar un de tui codes de recuperation:'
@ -299,6 +300,7 @@ ie:
patch: Notificar pri problema-fixant actualisationes patch: Notificar pri problema-fixant actualisationes
trending_tag: Nov tendentie besonant inspection trending_tag: Nov tendentie besonant inspection
rule: rule:
hint: Information in plu
text: Regul text: Regul
settings: settings:
indexable: Includer profil-pagine in serchatores indexable: Includer profil-pagine in serchatores

View file

@ -50,7 +50,9 @@ SimpleNavigation::Configuration.run do |navigation|
s.item :links, safe_join([fa_icon('newspaper-o fw'), t('admin.trends.links.title')]), admin_trends_links_path, highlights_on: %r{/admin/trends/links} s.item :links, safe_join([fa_icon('newspaper-o fw'), t('admin.trends.links.title')]), admin_trends_links_path, highlights_on: %r{/admin/trends/links}
end end
n.item :moderation, safe_join([fa_icon('gavel fw'), t('moderation.title')]), nil, if: -> { current_user.can?(:manage_reports, :view_audit_log, :manage_users, :manage_invites, :manage_taxonomies, :manage_federation, :manage_blocks, :manage_ng_words, :manage_sensitive_words) && !self_destruct } do |s| n.item :moderation, safe_join([fa_icon('gavel fw'), t('moderation.title')]), nil, if: lambda {
current_user.can?(:manage_reports, :view_audit_log, :manage_users, :manage_invites, :manage_taxonomies, :manage_federation, :manage_blocks, :manage_ng_words, :manage_sensitive_words) && !self_destruct
} do |s|
s.item :reports, safe_join([fa_icon('flag fw'), t('admin.reports.title')]), admin_reports_path, highlights_on: %r{/admin/reports}, if: -> { current_user.can?(:manage_reports) } s.item :reports, safe_join([fa_icon('flag fw'), t('admin.reports.title')]), admin_reports_path, highlights_on: %r{/admin/reports}, if: -> { current_user.can?(:manage_reports) }
s.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_path(origin: 'local'), highlights_on: %r{/admin/accounts|/admin/pending_accounts|/admin/disputes|/admin/users}, if: -> { current_user.can?(:manage_users) } s.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_path(origin: 'local'), highlights_on: %r{/admin/accounts|/admin/pending_accounts|/admin/disputes|/admin/users}, if: -> { current_user.can?(:manage_users) }
s.item :ng_words, safe_join([fa_icon('list fw'), t('admin.ng_words.title')]), admin_ng_words_keywords_path, highlights_on: %r{/admin/(ng_words|ngword_histories)}, if: -> { current_user.can?(:manage_ng_words) } s.item :ng_words, safe_join([fa_icon('list fw'), t('admin.ng_words.title')]), admin_ng_words_keywords_path, highlights_on: %r{/admin/(ng_words|ngword_histories)}, if: -> { current_user.can?(:manage_ng_words) }

View file

@ -4,7 +4,8 @@ class ImproveIndexForPublicTimelineSpeed < ActiveRecord::Migration[7.0]
disable_ddl_transaction! disable_ddl_transaction!
def up def up
add_index :statuses, [:id, :account_id], name: :index_statuses_local_20231213, algorithm: :concurrently, order: { id: :desc }, where: '(local OR (uri IS NULL)) AND deleted_at IS NULL AND visibility IN (0, 10, 11) AND reblog_of_id IS NULL AND ((NOT reply) OR (in_reply_to_account_id = account_id))' add_index :statuses, [:id, :account_id], name: :index_statuses_local_20231213, algorithm: :concurrently, order: { id: :desc },
where: '(local OR (uri IS NULL)) AND deleted_at IS NULL AND visibility IN (0, 10, 11) AND reblog_of_id IS NULL AND ((NOT reply) OR (in_reply_to_account_id = account_id))'
add_index :statuses, [:id, :account_id], name: :index_statuses_public_20231213, algorithm: :concurrently, order: { id: :desc }, where: 'deleted_at IS NULL AND visibility IN (0, 10, 11) AND reblog_of_id IS NULL AND ((NOT reply) OR (in_reply_to_account_id = account_id))' add_index :statuses, [:id, :account_id], name: :index_statuses_public_20231213, algorithm: :concurrently, order: { id: :desc }, where: 'deleted_at IS NULL AND visibility IN (0, 10, 11) AND reblog_of_id IS NULL AND ((NOT reply) OR (in_reply_to_account_id = account_id))'
remove_index :statuses, name: :index_statuses_local_20190824 remove_index :statuses, name: :index_statuses_local_20190824
remove_index :statuses, name: :index_statuses_public_20200119 remove_index :statuses, name: :index_statuses_public_20200119

View file

@ -84,13 +84,11 @@ module Paperclip
# Don't go through Stoplight if we don't have anything object-storage-oriented to do # Don't go through Stoplight if we don't have anything object-storage-oriented to do
return super if @queued_for_delete.empty? && @queued_for_write.empty? && !dirty? return super if @queued_for_delete.empty? && @queued_for_write.empty? && !dirty?
Stoplight('object-storage') { super }.with_threshold(STOPLIGHT_THRESHOLD).with_cool_off_time(STOPLIGHT_COOLDOWN).with_error_handler do |error, handle| Stoplight('object-storage')
if error.is_a?(Seahorse::Client::NetworkingError) .with_threshold(STOPLIGHT_THRESHOLD)
handle.call(error) .with_cool_off_time(STOPLIGHT_COOLDOWN)
else .with_error_handler { |error, handle| error.is_a?(Seahorse::Client::NetworkingError) ? handle.call(error) : raise(error) }
raise error .run { super }
end
end.run
end end
end end
end end

View file

@ -32,8 +32,8 @@ RSpec.describe 'Policies' do
filter_new_accounts: false, filter_new_accounts: false,
filter_private_mentions: true, filter_private_mentions: true,
summary: a_hash_including( summary: a_hash_including(
pending_requests_count: '1', pending_requests_count: 1,
pending_notifications_count: '0' pending_notifications_count: 0
) )
) )
end end
@ -60,8 +60,8 @@ RSpec.describe 'Policies' do
filter_new_accounts: false, filter_new_accounts: false,
filter_private_mentions: true, filter_private_mentions: true,
summary: a_hash_including( summary: a_hash_including(
pending_requests_count: '0', pending_requests_count: 0,
pending_notifications_count: '0' pending_notifications_count: 0
) )
) )
end end

View file

@ -25,13 +25,15 @@ describe 'Public' do
get '/api/v1/timelines/public', headers: headers, params: params get '/api/v1/timelines/public', headers: headers, params: params
end end
let!(:private_status) { Fabricate(:status, text: 'ohagi', visibility: :private) } # rubocop:disable RSpec/LetSetup let!(:local_status) { Fabricate(:status, account: Fabricate.build(:account, domain: nil)) }
let!(:local_status) { Fabricate(:status, text: 'ohagi', account: Fabricate.build(:account, domain: nil)) } let!(:remote_status) { Fabricate(:status, account: Fabricate.build(:account, domain: 'example.com')) }
let!(:remote_status) { Fabricate(:status, text: 'ohagi', account: Fabricate.build(:account, domain: 'example.com')) } let!(:media_status) { Fabricate(:status, media_attachments: [Fabricate.build(:media_attachment)]) }
let!(:media_status) { Fabricate(:status, text: 'ohagi', media_attachments: [Fabricate.build(:media_attachment)]) }
let(:params) { {} } let(:params) { {} }
before do
Fabricate(:status, visibility: :private)
end
context 'when the instance allows public preview' do context 'when the instance allows public preview' do
let(:expected_statuses) { [local_status, remote_status, media_status] } let(:expected_statuses) { [local_status, remote_status, media_status] }
@ -182,7 +184,7 @@ describe 'Public' do
end end
end end
context 'when include_quotes' do # rubocop:disable RSpec/MultipleMemoizedHelpers context 'when include_quotes' do
let(:with_quote) { true } let(:with_quote) { true }
it 'load statuses', :aggregate_failures do it 'load statuses', :aggregate_failures do

View file

@ -18,6 +18,7 @@ describe 'Instances' do
expect(body_as_json) expect(body_as_json)
.to be_present .to be_present
.and include(title: 'Mastodon') .and include(title: 'Mastodon')
.and include_configuration_limits
end end
end end
@ -31,7 +32,26 @@ describe 'Instances' do
expect(body_as_json) expect(body_as_json)
.to be_present .to be_present
.and include(title: 'Mastodon') .and include(title: 'Mastodon')
.and include_configuration_limits
end end
end end
def include_configuration_limits
include(
configuration: include(
accounts: include(
max_featured_tags: FeaturedTag::LIMIT,
max_pinned_statuses: StatusPinValidator::PIN_LIMIT
),
statuses: include(
max_characters: StatusLengthValidator::MAX_CHARS,
max_media_attachments: 4 # TODO, move to constant somewhere
),
polls: include(
max_options: PollValidator::MAX_OPTIONS
)
)
)
end
end end
end end

View file

@ -10,12 +10,23 @@ describe REST::InstanceSerializer do
it 'returns recent usage data' do it 'returns recent usage data' do
expect(serialization['usage']).to eq({ 'users' => { 'active_month' => 0 } }) expect(serialization['usage']).to eq({ 'users' => { 'active_month' => 0 } })
end end
end
describe 'configuration' do
it 'returns the VAPID public key' do it 'returns the VAPID public key' do
expect(serialization['configuration']['vapid']).to eq({ expect(serialization['configuration']['vapid']).to eq({
'public_key' => Rails.configuration.x.vapid_public_key, 'public_key' => Rails.configuration.x.vapid_public_key,
}) })
end end
it 'returns the max pinned statuses limit' do
expect(serialization.deep_symbolize_keys)
.to include(
configuration: include(
accounts: include(max_pinned_statuses: StatusPinValidator::PIN_LIMIT)
)
)
end
end end
describe 'fedibird_capabilities' do describe 'fedibird_capabilities' do

View file

@ -14,7 +14,6 @@ Capybara.register_driver :headless_chrome do |app|
options = Selenium::WebDriver::Chrome::Options.new options = Selenium::WebDriver::Chrome::Options.new
options.add_argument '--headless=new' options.add_argument '--headless=new'
options.add_argument '--window-size=1680,1050' options.add_argument '--window-size=1680,1050'
options.browser_version = '120'
Capybara::Selenium::Driver.new( Capybara::Selenium::Driver.new(
app, app,

View file

@ -1,4 +1,4 @@
# syntax=docker/dockerfile:1.4 # syntax=docker/dockerfile:1.7
# Please see https://docs.docker.com/engine/reference/builder for information about # Please see https://docs.docker.com/engine/reference/builder for information about
# the extended buildx capabilities used in this file. # the extended buildx capabilities used in this file.

368
yarn.lock
View file

@ -1548,10 +1548,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/color-helpers@npm:^4.0.0": "@csstools/color-helpers@npm:^4.1.0":
version: 4.0.0 version: 4.1.0
resolution: "@csstools/color-helpers@npm:4.0.0" resolution: "@csstools/color-helpers@npm:4.1.0"
checksum: 10c0/fc78871253f8c92789ed64a0e5555bd2873c2b62a49c30baced88487561fe09fe897b0d16fcf7bf2a94f78ff37530773a4395ce5efc016810c094041b5bbcd42 checksum: 10c0/0e41fd04dd28361717b161e7000c3a3b64b8b01119e93758297ea0b8a87c04121c3e3ef02e29c56fdd133227dd879163aa4b52e2370853d9fe64af6b6821668d
languageName: node languageName: node
linkType: hard linkType: hard
@ -1565,16 +1565,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/css-color-parser@npm:^1.6.2": "@csstools/css-color-parser@npm:^1.6.3":
version: 1.6.2 version: 1.6.3
resolution: "@csstools/css-color-parser@npm:1.6.2" resolution: "@csstools/css-color-parser@npm:1.6.3"
dependencies: dependencies:
"@csstools/color-helpers": "npm:^4.0.0" "@csstools/color-helpers": "npm:^4.1.0"
"@csstools/css-calc": "npm:^1.2.0" "@csstools/css-calc": "npm:^1.2.0"
peerDependencies: peerDependencies:
"@csstools/css-parser-algorithms": ^2.6.1 "@csstools/css-parser-algorithms": ^2.6.1
"@csstools/css-tokenizer": ^2.2.4 "@csstools/css-tokenizer": ^2.2.4
checksum: 10c0/f587482fd7a40b6bd4cc790771245477d82203ba08f8f85981908680423476b9733c71fb4f1ba655f4dfb77907b4dfbb654dd7ba89e9edf0ba5229c26830ee8f checksum: 10c0/3b15d9974105fe6e5d5e839953ee06153bc308bd62feacdeb88b7da7486ef1625254d0df908c68654596e477ca6be0c312d0c02a62d6dc4bddee61821be17d27
languageName: node languageName: node
linkType: hard linkType: hard
@ -1604,45 +1604,45 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-cascade-layers@npm:^4.0.3": "@csstools/postcss-cascade-layers@npm:^4.0.4":
version: 4.0.3 version: 4.0.4
resolution: "@csstools/postcss-cascade-layers@npm:4.0.3" resolution: "@csstools/postcss-cascade-layers@npm:4.0.4"
dependencies: dependencies:
"@csstools/selector-specificity": "npm:^3.0.2" "@csstools/selector-specificity": "npm:^3.0.3"
postcss-selector-parser: "npm:^6.0.13" postcss-selector-parser: "npm:^6.0.13"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/63f29af21eed000130f6f1268c00188a52eafbdeccc6acf5aa46507e499259631aa89f928b01b4698c41f3f68703db4c6e363c0e6f64b04b20c7e6452a5b259a checksum: 10c0/87fdd1e3d846e45c2e415f24f66076e04c3c4539e8b802f1114b2a0fef9421d562d9eb61464ba3599d73805555ad8e95c51a8827cb3ddacfda01ec0df4afbfe0
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-color-function@npm:^3.0.12": "@csstools/postcss-color-function@npm:^3.0.13":
version: 3.0.12 version: 3.0.13
resolution: "@csstools/postcss-color-function@npm:3.0.12" resolution: "@csstools/postcss-color-function@npm:3.0.13"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^1.6.2" "@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1" "@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4" "@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1" "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/a270aef93e98efb2b184b84a5de8acc28b10aed229807d1e5b5cf43309b281782895322ec98c0c9486b306ec68915e06689d6959c13ea2ab37fbb773ecd02335 checksum: 10c0/9d0fa25cd258653ad3227ccf1ee89dfee7099284c28b1d9ae7f7e8b15ed526e4e8cc7724f8e21cc073ed186891c3acb5b9c190a75e3c38d9c75e49197a824db6
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-color-mix-function@npm:^2.0.12": "@csstools/postcss-color-mix-function@npm:^2.0.13":
version: 2.0.12 version: 2.0.13
resolution: "@csstools/postcss-color-mix-function@npm:2.0.12" resolution: "@csstools/postcss-color-mix-function@npm:2.0.13"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^1.6.2" "@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1" "@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4" "@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1" "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/42c7d48eeb1c1e49265505b560b9e034861254c62c5f78d89538255decab67d70f89bf81b269b208aa2103e9f48a51a33bb009eb17774f07c0459929d97f7056 checksum: 10c0/6011ce0b328cd3ee1d5720dc6eb23da807ba5a218a4a3c65a4844a82c0ff37e69d27cbee14abf9b928a3068f429ab86f2dd2bebab4ab64cd8fc7e39e562d7073
languageName: node languageName: node
linkType: hard linkType: hard
@ -1671,59 +1671,59 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-gamut-mapping@npm:^1.0.5": "@csstools/postcss-gamut-mapping@npm:^1.0.6":
version: 1.0.5 version: 1.0.6
resolution: "@csstools/postcss-gamut-mapping@npm:1.0.5" resolution: "@csstools/postcss-gamut-mapping@npm:1.0.6"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^1.6.2" "@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1" "@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4" "@csstools/css-tokenizer": "npm:^2.2.4"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/33e2185ae8f8a229476bd5a60c0523aef8cb4de552a6c532514b9d87bff579f36fb7640dd14c9ea56906996d43f4d5ab969a4f704e1b8a94f7802beb3df31d08 checksum: 10c0/a258a2ceac9d9be4374ec5b504895bd1de1196fe7d8c1377863a25c6cb50ee1fb1c65387c5440bae3c5d59e6ebf4e0c1990595c5cd09291224b31a1d23bdc250
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-gradients-interpolation-method@npm:^4.0.13": "@csstools/postcss-gradients-interpolation-method@npm:^4.0.14":
version: 4.0.13 version: 4.0.14
resolution: "@csstools/postcss-gradients-interpolation-method@npm:4.0.13" resolution: "@csstools/postcss-gradients-interpolation-method@npm:4.0.14"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^1.6.2" "@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1" "@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4" "@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1" "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/af7c2d9c8e2249ea4cc50c9ef1b5ad75b1ed062020f1a8906ba9baf3143c4e2638b8b2189d7552838558e7b9a8a1ee9aa0baa076f5deabb23c1dc90fd78d7eab checksum: 10c0/88147b2d7067b9bc6c90340c0be8450ca1175a7e927ff7b682c26d377237bec12f1cbe0dd930dd72dec661603348d1e71ca2a56f0a3b6fa2ca7d3f1b962f001d
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-hwb-function@npm:^3.0.11": "@csstools/postcss-hwb-function@npm:^3.0.12":
version: 3.0.11 version: 3.0.12
resolution: "@csstools/postcss-hwb-function@npm:3.0.11" resolution: "@csstools/postcss-hwb-function@npm:3.0.12"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^1.6.2" "@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1" "@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4" "@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1" "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/d779617ef97ff22a125fbdd65f01dd3dd5bc607dbe7f3b02ae808d2fcccb1d5022b7f8e66e64283f7f9c52b6997bf0dc649566c734f0e3e4f3ba3c66a3b564a8 checksum: 10c0/20e0b2a4547fe619f38fe56c33974750d4a8b64a67a4169740ee0e67a9dec9f3a243f2370408901aacc35690aa36135028fafbbc866ff934b66cc4c9e4e89cac
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-ic-unit@npm:^3.0.5": "@csstools/postcss-ic-unit@npm:^3.0.6":
version: 3.0.5 version: 3.0.6
resolution: "@csstools/postcss-ic-unit@npm:3.0.5" resolution: "@csstools/postcss-ic-unit@npm:3.0.6"
dependencies: dependencies:
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1" "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/bf21b74e1bdff425481724a36385f1ebe7c8aea6cccfcf6715cad58449d2d19419342e94d33d6626ec09bed8d4ab6e391b8eebaa3bda721e7f41e5c64c485f2a checksum: 10c0/a4b962327d433419fdcfdcf620ce6a5cf09aa3c93029ad08b035df1e2bc35caae31de49f1d14218de0656fced35c0d2e07e5ff7b8099c29dbfb40395fc283234
languageName: node languageName: node
linkType: hard linkType: hard
@ -1736,29 +1736,29 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-is-pseudo-class@npm:^4.0.5": "@csstools/postcss-is-pseudo-class@npm:^4.0.6":
version: 4.0.5 version: 4.0.6
resolution: "@csstools/postcss-is-pseudo-class@npm:4.0.5" resolution: "@csstools/postcss-is-pseudo-class@npm:4.0.6"
dependencies: dependencies:
"@csstools/selector-specificity": "npm:^3.0.2" "@csstools/selector-specificity": "npm:^3.0.3"
postcss-selector-parser: "npm:^6.0.13" postcss-selector-parser: "npm:^6.0.13"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/5f35d5474957be30f54b89cf46b818390754af8094c4d9a083a79d579ccd817452bb7e2cfef8951c664d4c6ba381d8d45cd89f49339a42941f947ccb032f9d45 checksum: 10c0/aa071954e08dc9368fbeddbec6a8da2dea3a771b33bad53f67f3bc5a6b2f0a270909948f3e7b29ec885f4cceee245f16388809aeb0620284a1d66ad1f2026f28
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-light-dark-function@npm:^1.0.1": "@csstools/postcss-light-dark-function@npm:^1.0.3":
version: 1.0.1 version: 1.0.3
resolution: "@csstools/postcss-light-dark-function@npm:1.0.1" resolution: "@csstools/postcss-light-dark-function@npm:1.0.3"
dependencies: dependencies:
"@csstools/css-parser-algorithms": "npm:^2.6.1" "@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4" "@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1" "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/538e809b473b91245cb79418949c4a27c0e82b0ea357f9c93b054e07d3194857e53979693226be9448904a7d9d4ad4732ad34183db82927bb172fe6cab1e53a8 checksum: 10c0/99a1b72aba08a6fa5c7271d42f4459d86f001fe83f533c0ed3d21556f53ee227f65f94cda1feee1aa910890fc42482f15a4dfb3edbc7afdad828ce8897d0c52b
languageName: node languageName: node
linkType: hard linkType: hard
@ -1862,44 +1862,44 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-oklab-function@npm:^3.0.12": "@csstools/postcss-oklab-function@npm:^3.0.13":
version: 3.0.12 version: 3.0.13
resolution: "@csstools/postcss-oklab-function@npm:3.0.12" resolution: "@csstools/postcss-oklab-function@npm:3.0.13"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^1.6.2" "@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1" "@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4" "@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1" "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/1454f57c756bdc882a523b50634823a0c31d7adc35330e13c80f9573c287f2a4ab30bbce48e0e8788dfe5a293d55113db2205373523b202a8828b9088e55e51c checksum: 10c0/26915f65ccc8b631a08542c4b088f9e5155f95a6c1f3a6bd2a33207f96d33438b930de60f493a5bbfee1b9f2abc8dfcab3ecbf20b5c7445d729fc434234fb046
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-progressive-custom-properties@npm:^3.1.1": "@csstools/postcss-progressive-custom-properties@npm:^3.2.0":
version: 3.1.1 version: 3.2.0
resolution: "@csstools/postcss-progressive-custom-properties@npm:3.1.1" resolution: "@csstools/postcss-progressive-custom-properties@npm:3.2.0"
dependencies: dependencies:
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/9303296c8285a8154d2ee22d5a1330c94c5f361d277a1fd27172e868e3511619a6876538beacae0c9e925a9d1e81a32438d405526170faa84cad0c2d2159fdd2 checksum: 10c0/829880844fbbeef1c67e0b380057e574659b4caed38c8414c17d7eb4a0cc727afa1cd74a889bc7ca79c819ecae757810356706901cf6bb677a36ca123915cbb7
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-relative-color-syntax@npm:^2.0.12": "@csstools/postcss-relative-color-syntax@npm:^2.0.13":
version: 2.0.12 version: 2.0.13
resolution: "@csstools/postcss-relative-color-syntax@npm:2.0.12" resolution: "@csstools/postcss-relative-color-syntax@npm:2.0.13"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^1.6.2" "@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1" "@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4" "@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1" "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/e12a59b89372fbc5cc460cfeceeea2ddc8b7a8f5639a767dbd6c7ff799bf740ac5dd7ae6797703f74efeadd696801042bff8770117cf5ed70646dcc598637334 checksum: 10c0/5c9fdec029e3d9a5c688d2e04995fec0cf6d91b48dbc5f450cf9c9dbb45e2819afbd63b3279676087a13f54914b0ec7d005e478b70b43e94fc8eeef9c5973390
languageName: node languageName: node
linkType: hard linkType: hard
@ -1927,15 +1927,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/postcss-text-decoration-shorthand@npm:^3.0.4": "@csstools/postcss-text-decoration-shorthand@npm:^3.0.5":
version: 3.0.4 version: 3.0.5
resolution: "@csstools/postcss-text-decoration-shorthand@npm:3.0.4" resolution: "@csstools/postcss-text-decoration-shorthand@npm:3.0.5"
dependencies: dependencies:
"@csstools/color-helpers": "npm:^4.0.0" "@csstools/color-helpers": "npm:^4.1.0"
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/2e17535bbeed8ca5f095e6aecfb552004c1920597f16146fe6ec773b46af95f9e0e3cf77181d4216a23528de8e042bd85f82df1562447f52e7687ed8628f0adc checksum: 10c0/e7e08c643c7084e60c0b22982e00ce21c579af3810ebbebac6838801b2ac622026ce96fd0cbca785613b1559f2337833cfc0f525685f8543ee39078a32fd7f89
languageName: node languageName: node
linkType: hard linkType: hard
@ -1970,12 +1970,12 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@csstools/selector-specificity@npm:^3.0.2": "@csstools/selector-specificity@npm:^3.0.2, @csstools/selector-specificity@npm:^3.0.3":
version: 3.0.2 version: 3.0.3
resolution: "@csstools/selector-specificity@npm:3.0.2" resolution: "@csstools/selector-specificity@npm:3.0.3"
peerDependencies: peerDependencies:
postcss-selector-parser: ^6.0.13 postcss-selector-parser: ^6.0.13
checksum: 10c0/d0c7dae2f1e9536e3e17f00467320a704f3208c76283c29c57fd69d4b83dcf6d062f492ed687c5ffd5f47fada9f0657c2efc89ea18fd4b038f757669553e0095 checksum: 10c0/e4f0355165882ddde8bd4a2f0252868150e67b9fae927fd2d94a91cee31e438e7041059f20b9c755a93b0bd8e527a9f78b01168fe67b3539be32091240aa63bf
languageName: node languageName: node
linkType: hard linkType: hard
@ -2199,16 +2199,16 @@ __metadata:
linkType: hard linkType: hard
"@formatjs/cli@npm:^6.1.1": "@formatjs/cli@npm:^6.1.1":
version: 6.2.8 version: 6.2.9
resolution: "@formatjs/cli@npm:6.2.8" resolution: "@formatjs/cli@npm:6.2.9"
peerDependencies: peerDependencies:
vue: ^3.3.4 vue: ^3.4.0
peerDependenciesMeta: peerDependenciesMeta:
vue: vue:
optional: true optional: true
bin: bin:
formatjs: bin/formatjs formatjs: bin/formatjs
checksum: 10c0/5d8f95434f4522eee7dd3acf54e5265289ec7e72812448cd7c7547bdedaba8927719800dfa2fc92fb82c609f34255367a80d18bf6c064540d5e11ec6b9d4603e checksum: 10c0/498383bcdca7f8f8a748c1151be17392f71eb1861f6a23bc714280533167cba7cdc35a470a380113f6111236e721ff43cbee7b084939dac67b6a5d9b04c0587c
languageName: node languageName: node
linkType: hard linkType: hard
@ -3031,8 +3031,8 @@ __metadata:
linkType: hard linkType: hard
"@reduxjs/toolkit@npm:^2.0.1": "@reduxjs/toolkit@npm:^2.0.1":
version: 2.2.2 version: 2.2.3
resolution: "@reduxjs/toolkit@npm:2.2.2" resolution: "@reduxjs/toolkit@npm:2.2.3"
dependencies: dependencies:
immer: "npm:^10.0.3" immer: "npm:^10.0.3"
redux: "npm:^5.0.1" redux: "npm:^5.0.1"
@ -3046,7 +3046,7 @@ __metadata:
optional: true optional: true
react-redux: react-redux:
optional: true optional: true
checksum: 10c0/d749181b1bc071698517cba7ce05c42ddfe99363019249722b4dfa3afc71b3a6e4cb9885af574cf81c5d6515f68201ebfedddb5c14b262c941a45112fdc66ce3 checksum: 10c0/f10f2c8f4b6c5c7a65d8d60246bdfde86b6cd2f542210ebdda8002223c7f4e99ed32964825e63f37345d9d12532671150fcec2809a40690931ae44afe8aba7f8
languageName: node languageName: node
linkType: hard linkType: hard
@ -3765,11 +3765,11 @@ __metadata:
linkType: hard linkType: hard
"@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.2.4": "@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.2.4":
version: 18.2.22 version: 18.2.23
resolution: "@types/react-dom@npm:18.2.22" resolution: "@types/react-dom@npm:18.2.23"
dependencies: dependencies:
"@types/react": "npm:*" "@types/react": "npm:*"
checksum: 10c0/cd85b5f402126e44b8c7b573e74737389816abcc931b2b14d8f946ba81cce8637ea490419488fcae842efb1e2f69853bc30522e43fd8359e1007d4d14b8d8146 checksum: 10c0/9348e93558aa67b4b237bd0eab62e72e85f3e17a1c45fde04d874476269730f7c671b3d62390c4fca588da2a026e90cc74148abc349dbfd4ee5535a82ccdf38e
languageName: node languageName: node
linkType: hard linkType: hard
@ -3868,13 +3868,12 @@ __metadata:
linkType: hard linkType: hard
"@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.7": "@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.7":
version: 18.2.70 version: 18.2.73
resolution: "@types/react@npm:18.2.70" resolution: "@types/react@npm:18.2.73"
dependencies: dependencies:
"@types/prop-types": "npm:*" "@types/prop-types": "npm:*"
"@types/scheduler": "npm:*"
csstype: "npm:^3.0.2" csstype: "npm:^3.0.2"
checksum: 10c0/2107b1fa8963cabe33d981cf1c0e3b7534c9d12b98c1046cd9f7975851690a0780db011f6a1d637ae4e612ef00c94ebdbe76a9e2f9e0f3baa6aad3213932af41 checksum: 10c0/b6645ab3c20efa41cfccf58ce0be45419517a0ba4594e323dd400342fb1c1f9589d169cf9bfa85b5b0605e9097fe9de7734b6d0c533f5b9bc32aaadb624537a4
languageName: node languageName: node
linkType: hard linkType: hard
@ -3904,13 +3903,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/scheduler@npm:*":
version: 0.16.5
resolution: "@types/scheduler@npm:0.16.5"
checksum: 10c0/625b63cd5dcaf6fb88fe03aa7c797f28cb121f03584126d4811b2d03f39bc3e238ce52cf7685ad8adfe8445d679934e6be47347723a6771ca2058c01f0c33760
languageName: node
linkType: hard
"@types/semver@npm:^7.5.0": "@types/semver@npm:^7.5.0":
version: 7.5.4 version: 7.5.4
resolution: "@types/semver@npm:7.5.4" resolution: "@types/semver@npm:7.5.4"
@ -5064,7 +5056,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"autoprefixer@npm:^10.4.14, autoprefixer@npm:^10.4.18": "autoprefixer@npm:^10.4.14, autoprefixer@npm:^10.4.19":
version: 10.4.19 version: 10.4.19
resolution: "autoprefixer@npm:10.4.19" resolution: "autoprefixer@npm:10.4.19"
dependencies: dependencies:
@ -5639,13 +5631,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"buffer-writer@npm:2.0.0":
version: 2.0.0
resolution: "buffer-writer@npm:2.0.0"
checksum: 10c0/c91b2ab09a200cf0862237e5a4dbd5077003b42d26d4f0c596ec7149f82ef83e0751d670bcdf379ed988d1a08c0fac7759a8cb928cf1a4710a1988a7618b1190
languageName: node
linkType: hard
"buffer-xor@npm:^1.0.3": "buffer-xor@npm:^1.0.3":
version: 1.0.3 version: 1.0.3
resolution: "buffer-xor@npm:1.0.3" resolution: "buffer-xor@npm:1.0.3"
@ -6547,16 +6532,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"css-has-pseudo@npm:^6.0.2": "css-has-pseudo@npm:^6.0.3":
version: 6.0.2 version: 6.0.3
resolution: "css-has-pseudo@npm:6.0.2" resolution: "css-has-pseudo@npm:6.0.3"
dependencies: dependencies:
"@csstools/selector-specificity": "npm:^3.0.2" "@csstools/selector-specificity": "npm:^3.0.3"
postcss-selector-parser: "npm:^6.0.13" postcss-selector-parser: "npm:^6.0.13"
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/96f9a6a4f31e11797e583d458535e11fa513b3f1f430ab566964a2f0792eaaa543213598b0a509516f07464234348ab11d56448b6d0c0c8a36988e0c86cf4ca1 checksum: 10c0/bbe663eff5256233c7bcce256cd8de7d93d82f2d4f2ca104af8e39e2159170d67746d3a2954385d03ec4ea7ef2728fe9a7d8cb62c52c0a6df1ad3d3bb1e3439d
languageName: node languageName: node
linkType: hard linkType: hard
@ -6682,10 +6667,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"cssdb@npm:^7.11.1": "cssdb@npm:^8.0.0":
version: 7.11.2 version: 8.0.0
resolution: "cssdb@npm:7.11.2" resolution: "cssdb@npm:8.0.0"
checksum: 10c0/5cd8dfee703dfbd7b7a8c3a93d65d26007ec1cd9692379b5868a0ceedf23b88e28d4b98f1cb9a4161f8b01e4a229e08ba9603fb94b756a3df6e07c423fff5b5d checksum: 10c0/d9a31b760214624352000b16a8f7194c357f66b6c445e663ab58dd03b6f0f53efaaca6d6f96200d666e205894d2d1c346664ad993d9522ff9fc1c331804a8d62
languageName: node languageName: node
linkType: hard linkType: hard
@ -12622,13 +12607,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"packet-reader@npm:1.0.0":
version: 1.0.0
resolution: "packet-reader@npm:1.0.0"
checksum: 10c0/c86c3321bb07e0f03cc2db59f7701184e0bbfcb914f1fdc963993b03262486deb402292adcef39b64e3530ea66b3b2e2163d6da7b3792a730bdd1c6df3175aaa
languageName: node
linkType: hard
"pako@npm:~1.0.5": "pako@npm:~1.0.5":
version: 1.0.11 version: 1.0.11
resolution: "pako@npm:1.0.11" resolution: "pako@npm:1.0.11"
@ -12844,10 +12822,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"pg-connection-string@npm:^2.6.0, pg-connection-string@npm:^2.6.2": "pg-connection-string@npm:^2.6.0, pg-connection-string@npm:^2.6.4":
version: 2.6.2 version: 2.6.4
resolution: "pg-connection-string@npm:2.6.2" resolution: "pg-connection-string@npm:2.6.4"
checksum: 10c0/e8fdea74fcc8bdc3d7c5c6eadd9425fdba7e67fb7fe836f9c0cecad94c8984e435256657d1d8ce0483d1fedef667e7a57e32449a63cb805cb0289fc34b62da35 checksum: 10c0/0d0b617df0fc6507bf6a94bdcd56c7a305788a1402d69bff9773350947c8f525d6d8136128065370749a3325e99658ae40fbdcce620fb8e60126181f0591a6a6
languageName: node languageName: node
linkType: hard linkType: hard
@ -12865,19 +12843,19 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"pg-pool@npm:^3.6.1": "pg-pool@npm:^3.6.2":
version: 3.6.1 version: 3.6.2
resolution: "pg-pool@npm:3.6.1" resolution: "pg-pool@npm:3.6.2"
peerDependencies: peerDependencies:
pg: ">=8.0" pg: ">=8.0"
checksum: 10c0/47837c4e4c2b9e195cec01bd58b6e276acc915537191707ad4d6ed975fd9bc03c73f63cb7fde4cb0e08ed059e35faf60fbd03744dee3af71d4b4631ab40eeb7f checksum: 10c0/14c524549490954b5e48457a4b808df8f619f6deeb3b395b0cd184a8f4ed65a9273fe0697ba0341a41d6745af197f1437eb1cf51fff0cbbf5b0fb3852ebe5392
languageName: node languageName: node
linkType: hard linkType: hard
"pg-protocol@npm:*, pg-protocol@npm:^1.6.0": "pg-protocol@npm:*, pg-protocol@npm:^1.6.1":
version: 1.6.0 version: 1.6.1
resolution: "pg-protocol@npm:1.6.0" resolution: "pg-protocol@npm:1.6.1"
checksum: 10c0/318a4d1e9cebd3927b10a8bc412f5017117a1f9a5fafb628d75847da7d1ab81c33250de58596bd0990029e14e92a995a851286d60fc236692299faf509572213 checksum: 10c0/7eadef4010ac0a3925c460be7332ca4098a5c6d5181725a62193fcfa800000ae6632d98d814f3989b42cf5fdc3b45e34c714a1959d29174e81e30730e140ae5f
languageName: node languageName: node
linkType: hard linkType: hard
@ -12910,15 +12888,13 @@ __metadata:
linkType: hard linkType: hard
"pg@npm:^8.5.0": "pg@npm:^8.5.0":
version: 8.11.3 version: 8.11.5
resolution: "pg@npm:8.11.3" resolution: "pg@npm:8.11.5"
dependencies: dependencies:
buffer-writer: "npm:2.0.0"
packet-reader: "npm:1.0.0"
pg-cloudflare: "npm:^1.1.1" pg-cloudflare: "npm:^1.1.1"
pg-connection-string: "npm:^2.6.2" pg-connection-string: "npm:^2.6.4"
pg-pool: "npm:^3.6.1" pg-pool: "npm:^3.6.2"
pg-protocol: "npm:^1.6.0" pg-protocol: "npm:^1.6.1"
pg-types: "npm:^2.1.0" pg-types: "npm:^2.1.0"
pgpass: "npm:1.x" pgpass: "npm:1.x"
peerDependencies: peerDependencies:
@ -12929,7 +12905,7 @@ __metadata:
peerDependenciesMeta: peerDependenciesMeta:
pg-native: pg-native:
optional: true optional: true
checksum: 10c0/07e6967fc8bd5d72bab9be6620626e8e3ab59128ebf56bf0de83d67f10801a19221d88b3317e90b93339ba48d0498b39967b782ae39686aabda6bc647bceb438 checksum: 10c0/20f29a41a99bad5931faf4d4a01e7be7fb27e5b5338fdfb06d2368e295c3d3d4ef49958ad57d2b17bad108e5c84574db6244ed8221e6b77a767f64ef12564119
languageName: node languageName: node
linkType: hard linkType: hard
@ -13160,18 +13136,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-color-functional-notation@npm:^6.0.7": "postcss-color-functional-notation@npm:^6.0.8":
version: 6.0.7 version: 6.0.8
resolution: "postcss-color-functional-notation@npm:6.0.7" resolution: "postcss-color-functional-notation@npm:6.0.8"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^1.6.2" "@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1" "@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4" "@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1" "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/bd3c1831e885f395205d503bf4b24f462dc9f4af74be11c5b0ad7b09eb150b2d3f8b2c727ab9e67c474ff05baa8e8e3c950880ffe2085ed39794d308c0297667 checksum: 10c0/ae2ff7769970fb403ea71d5613e041d97bb647cfc54e4a428bcc75f98ff06c888b064384df12b18f609bfcc4395c31d6db4ad2b9c9385a829ba594d2692c31d1
languageName: node languageName: node
linkType: hard linkType: hard
@ -13315,16 +13291,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-double-position-gradients@npm:^5.0.5": "postcss-double-position-gradients@npm:^5.0.6":
version: 5.0.5 version: 5.0.6
resolution: "postcss-double-position-gradients@npm:5.0.5" resolution: "postcss-double-position-gradients@npm:5.0.6"
dependencies: dependencies:
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1" "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
postcss-value-parser: "npm:^4.2.0" postcss-value-parser: "npm:^4.2.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/02c22ca055ceca1ecc3c6888eab5c84769c9df37f59855f0ff9e9faaedcb4acf6818e927bff18bd57df161045f775ecca4142b13f968332419976c556a769995 checksum: 10c0/9b24b13043fe506c0ddd94e707fe4f21f4f9a6c05ca49a4f45e23412951fd6a4cfa0095002d10b322ca8be60df0badae3715a27eefdeb7bf8da4fdd1ecd5d7a2
languageName: node languageName: node
linkType: hard linkType: hard
@ -13380,18 +13356,18 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-lab-function@npm:^6.0.12": "postcss-lab-function@npm:^6.0.13":
version: 6.0.12 version: 6.0.13
resolution: "postcss-lab-function@npm:6.0.12" resolution: "postcss-lab-function@npm:6.0.13"
dependencies: dependencies:
"@csstools/css-color-parser": "npm:^1.6.2" "@csstools/css-color-parser": "npm:^1.6.3"
"@csstools/css-parser-algorithms": "npm:^2.6.1" "@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4" "@csstools/css-tokenizer": "npm:^2.2.4"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1" "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/utilities": "npm:^1.0.0" "@csstools/utilities": "npm:^1.0.0"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/1c96c19d0487346445749777df2af7cc828f3e3c4e8a435cac250d03c14efb0d14ee994ac58d966ed07f8f07aa297f0e3311248b78ba1e816bb18386e435a83c checksum: 10c0/3ffb82d0012e49df49b44f38a131f4b13ba3edeeca5ecc0062c1c1b6bd8961c06f05b1dd8ec620c50c2c406fc61a505d79488745185d69ed325603600f0a1bc8
languageName: node languageName: node
linkType: hard linkType: hard
@ -13547,16 +13523,16 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss-nesting@npm:^12.1.0": "postcss-nesting@npm:^12.1.1":
version: 12.1.0 version: 12.1.1
resolution: "postcss-nesting@npm:12.1.0" resolution: "postcss-nesting@npm:12.1.1"
dependencies: dependencies:
"@csstools/selector-resolve-nested": "npm:^1.1.0" "@csstools/selector-resolve-nested": "npm:^1.1.0"
"@csstools/selector-specificity": "npm:^3.0.2" "@csstools/selector-specificity": "npm:^3.0.3"
postcss-selector-parser: "npm:^6.0.13" postcss-selector-parser: "npm:^6.0.13"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/87902723214ec33a81520f51cce1e52f52c02272f2b7838d3aaa795e226104bf4809ef9dad8840f43852c1f229afb5f480ab1f20c7677bd021cf57739b625871 checksum: 10c0/8fac718e69ee2ac93179cc59810a8184581c04715fe34621ec5d504fc680cad4a11219ed0c918cbe15c468994c9aba88e729f35eef698c5d44cadd824425c47d
languageName: node languageName: node
linkType: hard linkType: hard
@ -13711,21 +13687,21 @@ __metadata:
linkType: hard linkType: hard
"postcss-preset-env@npm:^9.5.2": "postcss-preset-env@npm:^9.5.2":
version: 9.5.2 version: 9.5.4
resolution: "postcss-preset-env@npm:9.5.2" resolution: "postcss-preset-env@npm:9.5.4"
dependencies: dependencies:
"@csstools/postcss-cascade-layers": "npm:^4.0.3" "@csstools/postcss-cascade-layers": "npm:^4.0.4"
"@csstools/postcss-color-function": "npm:^3.0.12" "@csstools/postcss-color-function": "npm:^3.0.13"
"@csstools/postcss-color-mix-function": "npm:^2.0.12" "@csstools/postcss-color-mix-function": "npm:^2.0.13"
"@csstools/postcss-exponential-functions": "npm:^1.0.5" "@csstools/postcss-exponential-functions": "npm:^1.0.5"
"@csstools/postcss-font-format-keywords": "npm:^3.0.2" "@csstools/postcss-font-format-keywords": "npm:^3.0.2"
"@csstools/postcss-gamut-mapping": "npm:^1.0.5" "@csstools/postcss-gamut-mapping": "npm:^1.0.6"
"@csstools/postcss-gradients-interpolation-method": "npm:^4.0.13" "@csstools/postcss-gradients-interpolation-method": "npm:^4.0.14"
"@csstools/postcss-hwb-function": "npm:^3.0.11" "@csstools/postcss-hwb-function": "npm:^3.0.12"
"@csstools/postcss-ic-unit": "npm:^3.0.5" "@csstools/postcss-ic-unit": "npm:^3.0.6"
"@csstools/postcss-initial": "npm:^1.0.1" "@csstools/postcss-initial": "npm:^1.0.1"
"@csstools/postcss-is-pseudo-class": "npm:^4.0.5" "@csstools/postcss-is-pseudo-class": "npm:^4.0.6"
"@csstools/postcss-light-dark-function": "npm:^1.0.1" "@csstools/postcss-light-dark-function": "npm:^1.0.3"
"@csstools/postcss-logical-float-and-clear": "npm:^2.0.1" "@csstools/postcss-logical-float-and-clear": "npm:^2.0.1"
"@csstools/postcss-logical-overflow": "npm:^1.0.1" "@csstools/postcss-logical-overflow": "npm:^1.0.1"
"@csstools/postcss-logical-overscroll-behavior": "npm:^1.0.1" "@csstools/postcss-logical-overscroll-behavior": "npm:^1.0.1"
@ -13735,38 +13711,38 @@ __metadata:
"@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^2.0.7" "@csstools/postcss-media-queries-aspect-ratio-number-values": "npm:^2.0.7"
"@csstools/postcss-nested-calc": "npm:^3.0.2" "@csstools/postcss-nested-calc": "npm:^3.0.2"
"@csstools/postcss-normalize-display-values": "npm:^3.0.2" "@csstools/postcss-normalize-display-values": "npm:^3.0.2"
"@csstools/postcss-oklab-function": "npm:^3.0.12" "@csstools/postcss-oklab-function": "npm:^3.0.13"
"@csstools/postcss-progressive-custom-properties": "npm:^3.1.1" "@csstools/postcss-progressive-custom-properties": "npm:^3.2.0"
"@csstools/postcss-relative-color-syntax": "npm:^2.0.12" "@csstools/postcss-relative-color-syntax": "npm:^2.0.13"
"@csstools/postcss-scope-pseudo-class": "npm:^3.0.1" "@csstools/postcss-scope-pseudo-class": "npm:^3.0.1"
"@csstools/postcss-stepped-value-functions": "npm:^3.0.6" "@csstools/postcss-stepped-value-functions": "npm:^3.0.6"
"@csstools/postcss-text-decoration-shorthand": "npm:^3.0.4" "@csstools/postcss-text-decoration-shorthand": "npm:^3.0.5"
"@csstools/postcss-trigonometric-functions": "npm:^3.0.6" "@csstools/postcss-trigonometric-functions": "npm:^3.0.6"
"@csstools/postcss-unset-value": "npm:^3.0.1" "@csstools/postcss-unset-value": "npm:^3.0.1"
autoprefixer: "npm:^10.4.18" autoprefixer: "npm:^10.4.19"
browserslist: "npm:^4.22.3" browserslist: "npm:^4.22.3"
css-blank-pseudo: "npm:^6.0.1" css-blank-pseudo: "npm:^6.0.1"
css-has-pseudo: "npm:^6.0.2" css-has-pseudo: "npm:^6.0.3"
css-prefers-color-scheme: "npm:^9.0.1" css-prefers-color-scheme: "npm:^9.0.1"
cssdb: "npm:^7.11.1" cssdb: "npm:^8.0.0"
postcss-attribute-case-insensitive: "npm:^6.0.3" postcss-attribute-case-insensitive: "npm:^6.0.3"
postcss-clamp: "npm:^4.1.0" postcss-clamp: "npm:^4.1.0"
postcss-color-functional-notation: "npm:^6.0.7" postcss-color-functional-notation: "npm:^6.0.8"
postcss-color-hex-alpha: "npm:^9.0.4" postcss-color-hex-alpha: "npm:^9.0.4"
postcss-color-rebeccapurple: "npm:^9.0.3" postcss-color-rebeccapurple: "npm:^9.0.3"
postcss-custom-media: "npm:^10.0.4" postcss-custom-media: "npm:^10.0.4"
postcss-custom-properties: "npm:^13.3.6" postcss-custom-properties: "npm:^13.3.6"
postcss-custom-selectors: "npm:^7.1.8" postcss-custom-selectors: "npm:^7.1.8"
postcss-dir-pseudo-class: "npm:^8.0.1" postcss-dir-pseudo-class: "npm:^8.0.1"
postcss-double-position-gradients: "npm:^5.0.5" postcss-double-position-gradients: "npm:^5.0.6"
postcss-focus-visible: "npm:^9.0.1" postcss-focus-visible: "npm:^9.0.1"
postcss-focus-within: "npm:^8.0.1" postcss-focus-within: "npm:^8.0.1"
postcss-font-variant: "npm:^5.0.0" postcss-font-variant: "npm:^5.0.0"
postcss-gap-properties: "npm:^5.0.1" postcss-gap-properties: "npm:^5.0.1"
postcss-image-set-function: "npm:^6.0.3" postcss-image-set-function: "npm:^6.0.3"
postcss-lab-function: "npm:^6.0.12" postcss-lab-function: "npm:^6.0.13"
postcss-logical: "npm:^7.0.1" postcss-logical: "npm:^7.0.1"
postcss-nesting: "npm:^12.1.0" postcss-nesting: "npm:^12.1.1"
postcss-opacity-percentage: "npm:^2.0.0" postcss-opacity-percentage: "npm:^2.0.0"
postcss-overflow-shorthand: "npm:^5.0.1" postcss-overflow-shorthand: "npm:^5.0.1"
postcss-page-break: "npm:^3.0.4" postcss-page-break: "npm:^3.0.4"
@ -13776,7 +13752,7 @@ __metadata:
postcss-selector-not: "npm:^7.0.2" postcss-selector-not: "npm:^7.0.2"
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
checksum: 10c0/40f94472f2d940cbf1df9974bea29a76ada4c1285b97e7104c0cdf001fcafd0a1f5966822250df0d659ec0ea51e577a1ab78c9f5f8a5683ea9897efe043515c1 checksum: 10c0/6af900ad2f46b640339b626317288543ebb7c47b739f4776e4006513b32eceabe0be78109aa58446fa0f50284a433b3e3a9bd48aa5730fd0ac59ef51153e8f7b
languageName: node languageName: node
linkType: hard linkType: hard
@ -16509,8 +16485,8 @@ __metadata:
linkType: hard linkType: hard
"stylelint@npm:^16.0.2": "stylelint@npm:^16.0.2":
version: 16.3.0 version: 16.3.1
resolution: "stylelint@npm:16.3.0" resolution: "stylelint@npm:16.3.1"
dependencies: dependencies:
"@csstools/css-parser-algorithms": "npm:^2.6.1" "@csstools/css-parser-algorithms": "npm:^2.6.1"
"@csstools/css-tokenizer": "npm:^2.2.4" "@csstools/css-tokenizer": "npm:^2.2.4"
@ -16553,7 +16529,7 @@ __metadata:
write-file-atomic: "npm:^5.0.1" write-file-atomic: "npm:^5.0.1"
bin: bin:
stylelint: bin/stylelint.mjs stylelint: bin/stylelint.mjs
checksum: 10c0/98bf770078d727eb7c3ec0932b09c9486481f2d086ea1f4232e00bd1bf58b6b5d3a8d6fc9802df05380cdb06b3d97c5a7c4f27adb221b2a5707ea9829c0ee350 checksum: 10c0/1660bb359002ff8e07cea044018b13abc73f48cf02a5062953b086f4d58611cd10677787560774c1acabeb192b6d059ce7fcf4c11defa7f64e50dca908fc664f
languageName: node languageName: node
linkType: hard linkType: hard