Merge commit '651e51a82eba542c4d8c3fec5edd16420ea1ff3e' into glitch-soc/merge-upstream
Conflicts: - `yarn.lock`: Upstream updated a dependency textually adjacent to a glitch-soc-specific one. Updated the dependency as upstream did.
This commit is contained in:
commit
4d9150735a
@ -7,7 +7,7 @@
|
|||||||
* - Please do NOT modify this file.
|
* - Please do NOT modify this file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const PACKAGE_VERSION = '2.10.2'
|
const PACKAGE_VERSION = '2.10.4'
|
||||||
const INTEGRITY_CHECKSUM = 'f5825c521429caf22a4dd13b66e243af'
|
const INTEGRITY_CHECKSUM = 'f5825c521429caf22a4dd13b66e243af'
|
||||||
const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
|
const IS_MOCKED_RESPONSE = Symbol('isMockedResponse')
|
||||||
const activeClientIds = new Set()
|
const activeClientIds = new Set()
|
||||||
|
|||||||
@ -583,7 +583,6 @@ The following changelog entries focus on changes visible to users, administrator
|
|||||||
You can now separately filter or drop notifications from people you don't follow, people who don't follow you, accounts created within the past 30 days, as well as unsolicited private mentions, and accounts limited by the moderation.\
|
You can now separately filter or drop notifications from people you don't follow, people who don't follow you, accounts created within the past 30 days, as well as unsolicited private mentions, and accounts limited by the moderation.\
|
||||||
Instead of being outright dropped, notifications that you chose to filter are put in a separate “Filtered notifications” box that you can review separately without it clogging your main notifications.\
|
Instead of being outright dropped, notifications that you chose to filter are put in a separate “Filtered notifications” box that you can review separately without it clogging your main notifications.\
|
||||||
This adds the following REST API endpoints:
|
This adds the following REST API endpoints:
|
||||||
|
|
||||||
- `GET /api/v2/notifications/policy`: https://docs.joinmastodon.org/methods/notifications/#get-policy
|
- `GET /api/v2/notifications/policy`: https://docs.joinmastodon.org/methods/notifications/#get-policy
|
||||||
- `PATCH /api/v2/notifications/policy`: https://docs.joinmastodon.org/methods/notifications/#update-the-filtering-policy-for-notifications
|
- `PATCH /api/v2/notifications/policy`: https://docs.joinmastodon.org/methods/notifications/#update-the-filtering-policy-for-notifications
|
||||||
- `GET /api/v1/notifications/requests`: https://docs.joinmastodon.org/methods/notifications/#get-requests
|
- `GET /api/v1/notifications/requests`: https://docs.joinmastodon.org/methods/notifications/#get-requests
|
||||||
@ -595,7 +594,6 @@ The following changelog entries focus on changes visible to users, administrator
|
|||||||
- `GET /api/v1/notifications/requests/merged`: https://docs.joinmastodon.org/methods/notifications/#requests-merged
|
- `GET /api/v1/notifications/requests/merged`: https://docs.joinmastodon.org/methods/notifications/#requests-merged
|
||||||
|
|
||||||
In addition, accepting one or more notification requests generates a new streaming event:
|
In addition, accepting one or more notification requests generates a new streaming event:
|
||||||
|
|
||||||
- `notifications_merged`: an event of this type indicates accepted notification requests have finished merging, and the notifications list should be refreshed
|
- `notifications_merged`: an event of this type indicates accepted notification requests have finished merging, and the notifications list should be refreshed
|
||||||
|
|
||||||
- **Add notifications of severed relationships** (#27511, #29665, #29668, #29670, #29700, #29714, #29712, and #29731 by @ClearlyClaire and @Gargron)\
|
- **Add notifications of severed relationships** (#27511, #29665, #29668, #29670, #29700, #29714, #29712, and #29731 by @ClearlyClaire and @Gargron)\
|
||||||
|
|||||||
12
Gemfile
12
Gemfile
@ -88,7 +88,7 @@ gem 'sidekiq-scheduler', '~> 6.0'
|
|||||||
gem 'sidekiq-unique-jobs', '> 8'
|
gem 'sidekiq-unique-jobs', '> 8'
|
||||||
gem 'simple_form', '~> 5.2'
|
gem 'simple_form', '~> 5.2'
|
||||||
gem 'simple-navigation', '~> 4.4'
|
gem 'simple-navigation', '~> 4.4'
|
||||||
gem 'stoplight', '~> 4.1'
|
gem 'stoplight'
|
||||||
gem 'strong_migrations'
|
gem 'strong_migrations'
|
||||||
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'
|
||||||
@ -109,10 +109,10 @@ group :opentelemetry do
|
|||||||
gem 'opentelemetry-instrumentation-active_job', '~> 0.8.0', require: false
|
gem 'opentelemetry-instrumentation-active_job', '~> 0.8.0', require: false
|
||||||
gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.22.0', require: false
|
gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.22.0', require: false
|
||||||
gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.22.0', require: false
|
gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.22.0', require: false
|
||||||
gem 'opentelemetry-instrumentation-excon', '~> 0.23.0', require: false
|
gem 'opentelemetry-instrumentation-excon', '~> 0.24.0', require: false
|
||||||
gem 'opentelemetry-instrumentation-faraday', '~> 0.27.0', require: false
|
gem 'opentelemetry-instrumentation-faraday', '~> 0.28.0', require: false
|
||||||
gem 'opentelemetry-instrumentation-http', '~> 0.25.0', require: false
|
gem 'opentelemetry-instrumentation-http', '~> 0.25.0', require: false
|
||||||
gem 'opentelemetry-instrumentation-http_client', '~> 0.23.0', require: false
|
gem 'opentelemetry-instrumentation-http_client', '~> 0.24.0', require: false
|
||||||
gem 'opentelemetry-instrumentation-net_http', '~> 0.23.0', require: false
|
gem 'opentelemetry-instrumentation-net_http', '~> 0.23.0', require: false
|
||||||
gem 'opentelemetry-instrumentation-pg', '~> 0.30.0', require: false
|
gem 'opentelemetry-instrumentation-pg', '~> 0.30.0', require: false
|
||||||
gem 'opentelemetry-instrumentation-rack', '~> 0.26.0', require: false
|
gem 'opentelemetry-instrumentation-rack', '~> 0.26.0', require: false
|
||||||
@ -146,7 +146,7 @@ group :test do
|
|||||||
gem 'climate_control'
|
gem 'climate_control'
|
||||||
|
|
||||||
# Validate schemas in specs
|
# Validate schemas in specs
|
||||||
gem 'json-schema', '~> 5.0'
|
gem 'json-schema', '~> 6.0'
|
||||||
|
|
||||||
# Test harness fo rack components
|
# Test harness fo rack components
|
||||||
gem 'rack-test', '~> 2.1'
|
gem 'rack-test', '~> 2.1'
|
||||||
@ -223,7 +223,7 @@ gem 'connection_pool', require: false
|
|||||||
gem 'xorcist', '~> 1.1'
|
gem 'xorcist', '~> 1.1'
|
||||||
|
|
||||||
gem 'net-http', '~> 0.6.0'
|
gem 'net-http', '~> 0.6.0'
|
||||||
gem 'rubyzip', '~> 2.3'
|
gem 'rubyzip', '~> 3.0'
|
||||||
|
|
||||||
gem 'hcaptcha', '~> 7.1'
|
gem 'hcaptcha', '~> 7.1'
|
||||||
|
|
||||||
|
|||||||
148
Gemfile.lock
148
Gemfile.lock
@ -10,29 +10,29 @@ GIT
|
|||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
actioncable (8.0.2)
|
actioncable (8.0.2.1)
|
||||||
actionpack (= 8.0.2)
|
actionpack (= 8.0.2.1)
|
||||||
activesupport (= 8.0.2)
|
activesupport (= 8.0.2.1)
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
websocket-driver (>= 0.6.1)
|
websocket-driver (>= 0.6.1)
|
||||||
zeitwerk (~> 2.6)
|
zeitwerk (~> 2.6)
|
||||||
actionmailbox (8.0.2)
|
actionmailbox (8.0.2.1)
|
||||||
actionpack (= 8.0.2)
|
actionpack (= 8.0.2.1)
|
||||||
activejob (= 8.0.2)
|
activejob (= 8.0.2.1)
|
||||||
activerecord (= 8.0.2)
|
activerecord (= 8.0.2.1)
|
||||||
activestorage (= 8.0.2)
|
activestorage (= 8.0.2.1)
|
||||||
activesupport (= 8.0.2)
|
activesupport (= 8.0.2.1)
|
||||||
mail (>= 2.8.0)
|
mail (>= 2.8.0)
|
||||||
actionmailer (8.0.2)
|
actionmailer (8.0.2.1)
|
||||||
actionpack (= 8.0.2)
|
actionpack (= 8.0.2.1)
|
||||||
actionview (= 8.0.2)
|
actionview (= 8.0.2.1)
|
||||||
activejob (= 8.0.2)
|
activejob (= 8.0.2.1)
|
||||||
activesupport (= 8.0.2)
|
activesupport (= 8.0.2.1)
|
||||||
mail (>= 2.8.0)
|
mail (>= 2.8.0)
|
||||||
rails-dom-testing (~> 2.2)
|
rails-dom-testing (~> 2.2)
|
||||||
actionpack (8.0.2)
|
actionpack (8.0.2.1)
|
||||||
actionview (= 8.0.2)
|
actionview (= 8.0.2.1)
|
||||||
activesupport (= 8.0.2)
|
activesupport (= 8.0.2.1)
|
||||||
nokogiri (>= 1.8.5)
|
nokogiri (>= 1.8.5)
|
||||||
rack (>= 2.2.4)
|
rack (>= 2.2.4)
|
||||||
rack-session (>= 1.0.1)
|
rack-session (>= 1.0.1)
|
||||||
@ -40,15 +40,15 @@ GEM
|
|||||||
rails-dom-testing (~> 2.2)
|
rails-dom-testing (~> 2.2)
|
||||||
rails-html-sanitizer (~> 1.6)
|
rails-html-sanitizer (~> 1.6)
|
||||||
useragent (~> 0.16)
|
useragent (~> 0.16)
|
||||||
actiontext (8.0.2)
|
actiontext (8.0.2.1)
|
||||||
actionpack (= 8.0.2)
|
actionpack (= 8.0.2.1)
|
||||||
activerecord (= 8.0.2)
|
activerecord (= 8.0.2.1)
|
||||||
activestorage (= 8.0.2)
|
activestorage (= 8.0.2.1)
|
||||||
activesupport (= 8.0.2)
|
activesupport (= 8.0.2.1)
|
||||||
globalid (>= 0.6.0)
|
globalid (>= 0.6.0)
|
||||||
nokogiri (>= 1.8.5)
|
nokogiri (>= 1.8.5)
|
||||||
actionview (8.0.2)
|
actionview (8.0.2.1)
|
||||||
activesupport (= 8.0.2)
|
activesupport (= 8.0.2.1)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
erubi (~> 1.11)
|
erubi (~> 1.11)
|
||||||
rails-dom-testing (~> 2.2)
|
rails-dom-testing (~> 2.2)
|
||||||
@ -58,22 +58,22 @@ GEM
|
|||||||
activemodel (>= 4.1)
|
activemodel (>= 4.1)
|
||||||
case_transform (>= 0.2)
|
case_transform (>= 0.2)
|
||||||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||||
activejob (8.0.2)
|
activejob (8.0.2.1)
|
||||||
activesupport (= 8.0.2)
|
activesupport (= 8.0.2.1)
|
||||||
globalid (>= 0.3.6)
|
globalid (>= 0.3.6)
|
||||||
activemodel (8.0.2)
|
activemodel (8.0.2.1)
|
||||||
activesupport (= 8.0.2)
|
activesupport (= 8.0.2.1)
|
||||||
activerecord (8.0.2)
|
activerecord (8.0.2.1)
|
||||||
activemodel (= 8.0.2)
|
activemodel (= 8.0.2.1)
|
||||||
activesupport (= 8.0.2)
|
activesupport (= 8.0.2.1)
|
||||||
timeout (>= 0.4.0)
|
timeout (>= 0.4.0)
|
||||||
activestorage (8.0.2)
|
activestorage (8.0.2.1)
|
||||||
actionpack (= 8.0.2)
|
actionpack (= 8.0.2.1)
|
||||||
activejob (= 8.0.2)
|
activejob (= 8.0.2.1)
|
||||||
activerecord (= 8.0.2)
|
activerecord (= 8.0.2.1)
|
||||||
activesupport (= 8.0.2)
|
activesupport (= 8.0.2.1)
|
||||||
marcel (~> 1.0)
|
marcel (~> 1.0)
|
||||||
activesupport (8.0.2)
|
activesupport (8.0.2.1)
|
||||||
base64
|
base64
|
||||||
benchmark (>= 0.3)
|
benchmark (>= 0.3)
|
||||||
bigdecimal
|
bigdecimal
|
||||||
@ -300,8 +300,8 @@ GEM
|
|||||||
highline (3.1.2)
|
highline (3.1.2)
|
||||||
reline
|
reline
|
||||||
hiredis (0.6.3)
|
hiredis (0.6.3)
|
||||||
hiredis-client (0.25.1)
|
hiredis-client (0.25.2)
|
||||||
redis-client (= 0.25.1)
|
redis-client (= 0.25.2)
|
||||||
hkdf (0.3.0)
|
hkdf (0.3.0)
|
||||||
htmlentities (4.3.4)
|
htmlentities (4.3.4)
|
||||||
http (5.3.1)
|
http (5.3.1)
|
||||||
@ -365,7 +365,7 @@ GEM
|
|||||||
json-ld-preloaded (3.3.2)
|
json-ld-preloaded (3.3.2)
|
||||||
json-ld (~> 3.3)
|
json-ld (~> 3.3)
|
||||||
rdf (~> 3.3)
|
rdf (~> 3.3)
|
||||||
json-schema (5.2.1)
|
json-schema (6.0.0)
|
||||||
addressable (~> 2.8)
|
addressable (~> 2.8)
|
||||||
bigdecimal (~> 3.1)
|
bigdecimal (~> 3.1)
|
||||||
jsonapi-renderer (0.2.2)
|
jsonapi-renderer (0.2.2)
|
||||||
@ -547,19 +547,19 @@ GEM
|
|||||||
opentelemetry-instrumentation-concurrent_ruby (0.22.0)
|
opentelemetry-instrumentation-concurrent_ruby (0.22.0)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.23.0)
|
opentelemetry-instrumentation-base (~> 0.23.0)
|
||||||
opentelemetry-instrumentation-excon (0.23.0)
|
opentelemetry-instrumentation-excon (0.24.0)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.23.0)
|
opentelemetry-instrumentation-base (~> 0.23.0)
|
||||||
opentelemetry-instrumentation-faraday (0.27.0)
|
opentelemetry-instrumentation-faraday (0.28.0)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.23.0)
|
opentelemetry-instrumentation-base (~> 0.23.0)
|
||||||
opentelemetry-instrumentation-http (0.25.1)
|
opentelemetry-instrumentation-http (0.25.1)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.23.0)
|
opentelemetry-instrumentation-base (~> 0.23.0)
|
||||||
opentelemetry-instrumentation-http_client (0.23.0)
|
opentelemetry-instrumentation-http_client (0.24.0)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.23.0)
|
opentelemetry-instrumentation-base (~> 0.23.0)
|
||||||
opentelemetry-instrumentation-net_http (0.23.0)
|
opentelemetry-instrumentation-net_http (0.23.1)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.23.0)
|
opentelemetry-instrumentation-base (~> 0.23.0)
|
||||||
opentelemetry-instrumentation-pg (0.30.1)
|
opentelemetry-instrumentation-pg (0.30.1)
|
||||||
@ -667,20 +667,20 @@ GEM
|
|||||||
rack (>= 1.3)
|
rack (>= 1.3)
|
||||||
rackup (2.2.1)
|
rackup (2.2.1)
|
||||||
rack (>= 3)
|
rack (>= 3)
|
||||||
rails (8.0.2)
|
rails (8.0.2.1)
|
||||||
actioncable (= 8.0.2)
|
actioncable (= 8.0.2.1)
|
||||||
actionmailbox (= 8.0.2)
|
actionmailbox (= 8.0.2.1)
|
||||||
actionmailer (= 8.0.2)
|
actionmailer (= 8.0.2.1)
|
||||||
actionpack (= 8.0.2)
|
actionpack (= 8.0.2.1)
|
||||||
actiontext (= 8.0.2)
|
actiontext (= 8.0.2.1)
|
||||||
actionview (= 8.0.2)
|
actionview (= 8.0.2.1)
|
||||||
activejob (= 8.0.2)
|
activejob (= 8.0.2.1)
|
||||||
activemodel (= 8.0.2)
|
activemodel (= 8.0.2.1)
|
||||||
activerecord (= 8.0.2)
|
activerecord (= 8.0.2.1)
|
||||||
activestorage (= 8.0.2)
|
activestorage (= 8.0.2.1)
|
||||||
activesupport (= 8.0.2)
|
activesupport (= 8.0.2.1)
|
||||||
bundler (>= 1.15.0)
|
bundler (>= 1.15.0)
|
||||||
railties (= 8.0.2)
|
railties (= 8.0.2.1)
|
||||||
rails-dom-testing (2.3.0)
|
rails-dom-testing (2.3.0)
|
||||||
activesupport (>= 5.0.0)
|
activesupport (>= 5.0.0)
|
||||||
minitest
|
minitest
|
||||||
@ -691,9 +691,9 @@ GEM
|
|||||||
rails-i18n (8.0.1)
|
rails-i18n (8.0.1)
|
||||||
i18n (>= 0.7, < 2)
|
i18n (>= 0.7, < 2)
|
||||||
railties (>= 8.0.0, < 9)
|
railties (>= 8.0.0, < 9)
|
||||||
railties (8.0.2)
|
railties (8.0.2.1)
|
||||||
actionpack (= 8.0.2)
|
actionpack (= 8.0.2.1)
|
||||||
activesupport (= 8.0.2)
|
activesupport (= 8.0.2.1)
|
||||||
irb (~> 1.13)
|
irb (~> 1.13)
|
||||||
rackup (>= 1.0.0)
|
rackup (>= 1.0.0)
|
||||||
rake (>= 12.2)
|
rake (>= 12.2)
|
||||||
@ -717,11 +717,9 @@ GEM
|
|||||||
reline
|
reline
|
||||||
redcarpet (3.6.1)
|
redcarpet (3.6.1)
|
||||||
redis (4.8.1)
|
redis (4.8.1)
|
||||||
redis-client (0.25.1)
|
redis-client (0.25.2)
|
||||||
connection_pool
|
connection_pool
|
||||||
redlock (1.3.2)
|
regexp_parser (2.11.2)
|
||||||
redis (>= 3.0.0, < 6.0)
|
|
||||||
regexp_parser (2.11.0)
|
|
||||||
reline (0.6.2)
|
reline (0.6.2)
|
||||||
io-console (~> 0.5)
|
io-console (~> 0.5)
|
||||||
request_store (1.7.0)
|
request_store (1.7.0)
|
||||||
@ -751,7 +749,7 @@ GEM
|
|||||||
rspec-mocks (3.13.5)
|
rspec-mocks (3.13.5)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
rspec-support (~> 3.13.0)
|
rspec-support (~> 3.13.0)
|
||||||
rspec-rails (8.0.1)
|
rspec-rails (8.0.2)
|
||||||
actionpack (>= 7.2)
|
actionpack (>= 7.2)
|
||||||
activesupport (>= 7.2)
|
activesupport (>= 7.2)
|
||||||
railties (>= 7.2)
|
railties (>= 7.2)
|
||||||
@ -789,7 +787,7 @@ GEM
|
|||||||
lint_roller (~> 1.1)
|
lint_roller (~> 1.1)
|
||||||
rubocop (>= 1.75.0, < 2.0)
|
rubocop (>= 1.75.0, < 2.0)
|
||||||
rubocop-ast (>= 1.38.0, < 2.0)
|
rubocop-ast (>= 1.38.0, < 2.0)
|
||||||
rubocop-rails (2.32.0)
|
rubocop-rails (2.33.3)
|
||||||
activesupport (>= 4.2.0)
|
activesupport (>= 4.2.0)
|
||||||
lint_roller (~> 1.1)
|
lint_roller (~> 1.1)
|
||||||
rack (>= 1.1)
|
rack (>= 1.1)
|
||||||
@ -811,7 +809,7 @@ GEM
|
|||||||
ruby-vips (2.2.4)
|
ruby-vips (2.2.4)
|
||||||
ffi (~> 1.12)
|
ffi (~> 1.12)
|
||||||
logger
|
logger
|
||||||
rubyzip (2.4.1)
|
rubyzip (3.0.1)
|
||||||
rufus-scheduler (3.9.2)
|
rufus-scheduler (3.9.2)
|
||||||
fugit (~> 1.1, >= 1.11.1)
|
fugit (~> 1.1, >= 1.11.1)
|
||||||
safety_net_attestation (0.4.0)
|
safety_net_attestation (0.4.0)
|
||||||
@ -855,8 +853,8 @@ GEM
|
|||||||
stackprof (0.2.27)
|
stackprof (0.2.27)
|
||||||
starry (0.2.0)
|
starry (0.2.0)
|
||||||
base64
|
base64
|
||||||
stoplight (4.1.1)
|
stoplight (5.3.1)
|
||||||
redlock (~> 1.0)
|
zeitwerk
|
||||||
stringio (3.1.7)
|
stringio (3.1.7)
|
||||||
strong_migrations (2.5.0)
|
strong_migrations (2.5.0)
|
||||||
activerecord (>= 7.1)
|
activerecord (>= 7.1)
|
||||||
@ -1005,7 +1003,7 @@ DEPENDENCIES
|
|||||||
jd-paperclip-azure (~> 3.0)
|
jd-paperclip-azure (~> 3.0)
|
||||||
json-ld
|
json-ld
|
||||||
json-ld-preloaded (~> 3.2)
|
json-ld-preloaded (~> 3.2)
|
||||||
json-schema (~> 5.0)
|
json-schema (~> 6.0)
|
||||||
kaminari (~> 1.2)
|
kaminari (~> 1.2)
|
||||||
kt-paperclip (~> 7.2)
|
kt-paperclip (~> 7.2)
|
||||||
letter_opener (~> 1.8)
|
letter_opener (~> 1.8)
|
||||||
@ -1032,10 +1030,10 @@ DEPENDENCIES
|
|||||||
opentelemetry-instrumentation-active_job (~> 0.8.0)
|
opentelemetry-instrumentation-active_job (~> 0.8.0)
|
||||||
opentelemetry-instrumentation-active_model_serializers (~> 0.22.0)
|
opentelemetry-instrumentation-active_model_serializers (~> 0.22.0)
|
||||||
opentelemetry-instrumentation-concurrent_ruby (~> 0.22.0)
|
opentelemetry-instrumentation-concurrent_ruby (~> 0.22.0)
|
||||||
opentelemetry-instrumentation-excon (~> 0.23.0)
|
opentelemetry-instrumentation-excon (~> 0.24.0)
|
||||||
opentelemetry-instrumentation-faraday (~> 0.27.0)
|
opentelemetry-instrumentation-faraday (~> 0.28.0)
|
||||||
opentelemetry-instrumentation-http (~> 0.25.0)
|
opentelemetry-instrumentation-http (~> 0.25.0)
|
||||||
opentelemetry-instrumentation-http_client (~> 0.23.0)
|
opentelemetry-instrumentation-http_client (~> 0.24.0)
|
||||||
opentelemetry-instrumentation-net_http (~> 0.23.0)
|
opentelemetry-instrumentation-net_http (~> 0.23.0)
|
||||||
opentelemetry-instrumentation-pg (~> 0.30.0)
|
opentelemetry-instrumentation-pg (~> 0.30.0)
|
||||||
opentelemetry-instrumentation-rack (~> 0.26.0)
|
opentelemetry-instrumentation-rack (~> 0.26.0)
|
||||||
@ -1075,7 +1073,7 @@ DEPENDENCIES
|
|||||||
ruby-prof
|
ruby-prof
|
||||||
ruby-progressbar (~> 1.13)
|
ruby-progressbar (~> 1.13)
|
||||||
ruby-vips (~> 2.2)
|
ruby-vips (~> 2.2)
|
||||||
rubyzip (~> 2.3)
|
rubyzip (~> 3.0)
|
||||||
sanitize (~> 7.0)
|
sanitize (~> 7.0)
|
||||||
scenic (~> 1.7)
|
scenic (~> 1.7)
|
||||||
shoulda-matchers
|
shoulda-matchers
|
||||||
@ -1088,7 +1086,7 @@ DEPENDENCIES
|
|||||||
simplecov (~> 0.22)
|
simplecov (~> 0.22)
|
||||||
simplecov-lcov (~> 0.8)
|
simplecov-lcov (~> 0.8)
|
||||||
stackprof
|
stackprof
|
||||||
stoplight (~> 4.1)
|
stoplight
|
||||||
strong_migrations
|
strong_migrations
|
||||||
test-prof
|
test-prof
|
||||||
thor (~> 1.2)
|
thor (~> 1.2)
|
||||||
|
|||||||
3
Vagrantfile
vendored
3
Vagrantfile
vendored
@ -54,6 +54,7 @@ sudo apt-get install \
|
|||||||
pkg-config \
|
pkg-config \
|
||||||
protobuf-compiler \
|
protobuf-compiler \
|
||||||
zlib1g-dev \
|
zlib1g-dev \
|
||||||
|
libvips42t64 \
|
||||||
-y
|
-y
|
||||||
|
|
||||||
# Install rvm
|
# Install rvm
|
||||||
@ -134,7 +135,7 @@ VAGRANTFILE_API_VERSION = "2"
|
|||||||
|
|
||||||
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
||||||
|
|
||||||
config.vm.box = "ubuntu/focal64"
|
config.vm.box = "bento/ubuntu-24.04"
|
||||||
|
|
||||||
config.vm.provider :virtualbox do |vb|
|
config.vm.provider :virtualbox do |vb|
|
||||||
vb.name = "mastodon"
|
vb.name = "mastodon"
|
||||||
|
|||||||
@ -0,0 +1,33 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Api::V1::Statuses::InteractionPoliciesController < Api::V1::Statuses::BaseController
|
||||||
|
include Api::InteractionPoliciesConcern
|
||||||
|
|
||||||
|
before_action -> { doorkeeper_authorize! :write, :'write:statuses' }
|
||||||
|
before_action -> { check_feature_enabled }
|
||||||
|
|
||||||
|
def update
|
||||||
|
authorize @status, :update?
|
||||||
|
|
||||||
|
@status.update!(quote_approval_policy: quote_approval_policy)
|
||||||
|
|
||||||
|
broadcast_updates! if @status.quote_approval_policy_previously_changed?
|
||||||
|
|
||||||
|
render json: @status, serializer: REST::StatusSerializer
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def status_params
|
||||||
|
params.permit(:quote_approval_policy)
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_feature_enabled
|
||||||
|
raise ActionController::RoutingError unless Mastodon::Feature.outgoing_quotes_enabled?
|
||||||
|
end
|
||||||
|
|
||||||
|
def broadcast_updates!
|
||||||
|
DistributionWorker.perform_async(@status.id, { 'update' => true })
|
||||||
|
ActivityPub::StatusUpdateDistributionWorker.perform_async(@status.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -3,6 +3,7 @@
|
|||||||
class Api::V1::StatusesController < Api::BaseController
|
class Api::V1::StatusesController < Api::BaseController
|
||||||
include Authorization
|
include Authorization
|
||||||
include AsyncRefreshesConcern
|
include AsyncRefreshesConcern
|
||||||
|
include Api::InteractionPoliciesConcern
|
||||||
|
|
||||||
before_action -> { authorize_if_got_token! :read, :'read:statuses' }, except: [:create, :update, :destroy]
|
before_action -> { authorize_if_got_token! :read, :'read:statuses' }, except: [:create, :update, :destroy]
|
||||||
before_action -> { doorkeeper_authorize! :write, :'write:statuses' }, only: [:create, :update, :destroy]
|
before_action -> { doorkeeper_authorize! :write, :'write:statuses' }, only: [:create, :update, :destroy]
|
||||||
@ -208,23 +209,6 @@ class Api::V1::StatusesController < Api::BaseController
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
def quote_approval_policy
|
|
||||||
# TODO: handle `nil` separately
|
|
||||||
return nil unless Mastodon::Feature.outgoing_quotes_enabled? && status_params[:quote_approval_policy].present?
|
|
||||||
|
|
||||||
case status_params[:quote_approval_policy]
|
|
||||||
when 'public'
|
|
||||||
Status::QUOTE_APPROVAL_POLICY_FLAGS[:public] << 16
|
|
||||||
when 'followers'
|
|
||||||
Status::QUOTE_APPROVAL_POLICY_FLAGS[:followers] << 16
|
|
||||||
when 'nobody'
|
|
||||||
0
|
|
||||||
else
|
|
||||||
# TODO: raise more useful message
|
|
||||||
raise ActiveRecord::RecordInvalid
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def serializer_for_status
|
def serializer_for_status
|
||||||
@status.is_a?(ScheduledStatus) ? REST::ScheduledStatusSerializer : REST::StatusSerializer
|
@status.is_a?(ScheduledStatus) ? REST::ScheduledStatusSerializer : REST::StatusSerializer
|
||||||
end
|
end
|
||||||
|
|||||||
@ -23,11 +23,11 @@ class Auth::RegistrationsController < Devise::RegistrationsController
|
|||||||
super(&:build_invite_request)
|
super(&:build_invite_request)
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit # rubocop:disable Lint/UselessMethodDefinition
|
def edit
|
||||||
super
|
super
|
||||||
end
|
end
|
||||||
|
|
||||||
def create # rubocop:disable Lint/UselessMethodDefinition
|
def create
|
||||||
super
|
super
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
22
app/controllers/concerns/api/interaction_policies_concern.rb
Normal file
22
app/controllers/concerns/api/interaction_policies_concern.rb
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module Api::InteractionPoliciesConcern
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
def quote_approval_policy
|
||||||
|
# TODO: handle `nil` separately
|
||||||
|
return nil unless Mastodon::Feature.outgoing_quotes_enabled? && status_params[:quote_approval_policy].present?
|
||||||
|
|
||||||
|
case status_params[:quote_approval_policy]
|
||||||
|
when 'public'
|
||||||
|
Status::QUOTE_APPROVAL_POLICY_FLAGS[:public] << 16
|
||||||
|
when 'followers'
|
||||||
|
Status::QUOTE_APPROVAL_POLICY_FLAGS[:followers] << 16
|
||||||
|
when 'nobody'
|
||||||
|
0
|
||||||
|
else
|
||||||
|
# TODO: raise more useful message
|
||||||
|
raise ActiveRecord::RecordInvalid
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -9,6 +9,8 @@ module SignatureVerification
|
|||||||
|
|
||||||
EXPIRATION_WINDOW_LIMIT = 12.hours
|
EXPIRATION_WINDOW_LIMIT = 12.hours
|
||||||
CLOCK_SKEW_MARGIN = 1.hour
|
CLOCK_SKEW_MARGIN = 1.hour
|
||||||
|
STOPLIGHT_COOL_OFF_TIME = 5.minutes.seconds
|
||||||
|
STOPLIGHT_THRESHOLD = 1
|
||||||
|
|
||||||
def require_account_signature!
|
def require_account_signature!
|
||||||
render json: signature_verification_failure_reason, status: signature_verification_failure_code unless signed_request_account
|
render json: signature_verification_failure_reason, status: signature_verification_failure_code unless signed_request_account
|
||||||
@ -107,10 +109,12 @@ module SignatureVerification
|
|||||||
end
|
end
|
||||||
|
|
||||||
def stoplight_wrapper
|
def stoplight_wrapper
|
||||||
Stoplight("source:#{request.remote_ip}")
|
Stoplight(
|
||||||
.with_threshold(1)
|
"source:#{request.remote_ip}",
|
||||||
.with_cool_off_time(5.minutes.seconds)
|
cool_off_time: STOPLIGHT_COOL_OFF_TIME,
|
||||||
.with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) }
|
threshold: STOPLIGHT_THRESHOLD,
|
||||||
|
tracked_errors: [HTTP::Error, OpenSSL::SSL::SSLError]
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
def actor_refresh_key!(actor)
|
def actor_refresh_key!(actor)
|
||||||
|
|||||||
@ -183,7 +183,7 @@ export function directCompose(account) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function submitCompose() {
|
export function submitCompose(successCallback) {
|
||||||
return function (dispatch, getState) {
|
return function (dispatch, getState) {
|
||||||
const status = getState().getIn(['compose', 'text'], '');
|
const status = getState().getIn(['compose', 'text'], '');
|
||||||
const media = getState().getIn(['compose', 'media_attachments']);
|
const media = getState().getIn(['compose', 'media_attachments']);
|
||||||
@ -241,6 +241,9 @@ export function submitCompose() {
|
|||||||
|
|
||||||
dispatch(insertIntoTagHistory(response.data.tags, status));
|
dispatch(insertIntoTagHistory(response.data.tags, status));
|
||||||
dispatch(submitComposeSuccess({ ...response.data }));
|
dispatch(submitComposeSuccess({ ...response.data }));
|
||||||
|
if (typeof successCallback === 'function') {
|
||||||
|
successCallback(response.data);
|
||||||
|
}
|
||||||
|
|
||||||
// To make the app more responsive, immediately push the status
|
// To make the app more responsive, immediately push the status
|
||||||
// into the columns
|
// into the columns
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
import { createAction } from '@reduxjs/toolkit';
|
import { createAction } from '@reduxjs/toolkit';
|
||||||
|
|
||||||
import { apiGetContext } from 'mastodon/api/statuses';
|
import { apiGetContext, apiSetQuotePolicy } from 'mastodon/api/statuses';
|
||||||
import { createDataLoadingThunk } from 'mastodon/store/typed_functions';
|
import { createDataLoadingThunk } from 'mastodon/store/typed_functions';
|
||||||
|
|
||||||
|
import type { ApiQuotePolicy } from '../api_types/quotes';
|
||||||
|
|
||||||
import { importFetchedStatuses } from './importer';
|
import { importFetchedStatuses } from './importer';
|
||||||
|
|
||||||
export const fetchContext = createDataLoadingThunk(
|
export const fetchContext = createDataLoadingThunk(
|
||||||
@ -23,3 +25,10 @@ export const fetchContext = createDataLoadingThunk(
|
|||||||
export const completeContextRefresh = createAction<{ statusId: string }>(
|
export const completeContextRefresh = createAction<{ statusId: string }>(
|
||||||
'status/context/complete',
|
'status/context/complete',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
export const setStatusQuotePolicy = createDataLoadingThunk(
|
||||||
|
'status/setQuotePolicy',
|
||||||
|
({ statusId, policy }: { statusId: string; policy: ApiQuotePolicy }) => {
|
||||||
|
return apiSetQuotePolicy(statusId, policy);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|||||||
@ -1,5 +1,10 @@
|
|||||||
import api, { getAsyncRefreshHeader } from 'mastodon/api';
|
import api, { apiRequestPut, getAsyncRefreshHeader } from 'mastodon/api';
|
||||||
import type { ApiContextJSON } from 'mastodon/api_types/statuses';
|
import type {
|
||||||
|
ApiContextJSON,
|
||||||
|
ApiStatusJSON,
|
||||||
|
} from 'mastodon/api_types/statuses';
|
||||||
|
|
||||||
|
import type { ApiQuotePolicy } from '../api_types/quotes';
|
||||||
|
|
||||||
export const apiGetContext = async (statusId: string) => {
|
export const apiGetContext = async (statusId: string) => {
|
||||||
const response = await api().request<ApiContextJSON>({
|
const response = await api().request<ApiContextJSON>({
|
||||||
@ -12,3 +17,15 @@ export const apiGetContext = async (statusId: string) => {
|
|||||||
refresh: getAsyncRefreshHeader(response),
|
refresh: getAsyncRefreshHeader(response),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const apiSetQuotePolicy = async (
|
||||||
|
statusId: string,
|
||||||
|
policy: ApiQuotePolicy,
|
||||||
|
) => {
|
||||||
|
return apiRequestPut<ApiStatusJSON>(
|
||||||
|
`v1/statuses/${statusId}/interaction_policy`,
|
||||||
|
{
|
||||||
|
quote_approval_policy: policy,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import type { ApiStatusJSON } from './statuses';
|
import type { ApiStatusJSON } from './statuses';
|
||||||
|
|
||||||
export type ApiQuoteState = 'accepted' | 'pending' | 'revoked' | 'unauthorized';
|
export type ApiQuoteState = 'accepted' | 'pending' | 'revoked' | 'unauthorized';
|
||||||
export type ApiQuotePolicy = 'public' | 'followers' | 'nobody';
|
export type ApiQuotePolicy = 'public' | 'followers' | 'nobody' | 'unknown';
|
||||||
|
|
||||||
interface ApiQuoteEmptyJSON {
|
interface ApiQuoteEmptyJSON {
|
||||||
state: Exclude<ApiQuoteState, 'accepted'>;
|
state: Exclude<ApiQuoteState, 'accepted'>;
|
||||||
@ -21,3 +21,13 @@ interface ApiQuoteAcceptedJSON {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export type ApiQuoteJSON = ApiQuoteAcceptedJSON | ApiQuoteEmptyJSON;
|
export type ApiQuoteJSON = ApiQuoteAcceptedJSON | ApiQuoteEmptyJSON;
|
||||||
|
|
||||||
|
export interface ApiQuotePolicyJSON {
|
||||||
|
automatic: ApiQuotePolicy[];
|
||||||
|
manual: ApiQuotePolicy[];
|
||||||
|
current_user: ApiQuotePolicy;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function isQuotePolicy(policy: string): policy is ApiQuotePolicy {
|
||||||
|
return ['public', 'followers', 'nobody'].includes(policy);
|
||||||
|
}
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import type { ApiAccountJSON } from './accounts';
|
|||||||
import type { ApiCustomEmojiJSON } from './custom_emoji';
|
import type { ApiCustomEmojiJSON } from './custom_emoji';
|
||||||
import type { ApiMediaAttachmentJSON } from './media_attachments';
|
import type { ApiMediaAttachmentJSON } from './media_attachments';
|
||||||
import type { ApiPollJSON } from './polls';
|
import type { ApiPollJSON } from './polls';
|
||||||
import type { ApiQuoteJSON } from './quotes';
|
import type { ApiQuoteJSON, ApiQuotePolicyJSON } from './quotes';
|
||||||
|
|
||||||
// See app/modals/status.rb
|
// See app/modals/status.rb
|
||||||
export type StatusVisibility =
|
export type StatusVisibility =
|
||||||
@ -120,9 +120,16 @@ export interface ApiStatusJSON {
|
|||||||
card?: ApiPreviewCardJSON;
|
card?: ApiPreviewCardJSON;
|
||||||
poll?: ApiPollJSON;
|
poll?: ApiPollJSON;
|
||||||
quote?: ApiQuoteJSON;
|
quote?: ApiQuoteJSON;
|
||||||
|
quote_approval?: ApiQuotePolicyJSON;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ApiContextJSON {
|
export interface ApiContextJSON {
|
||||||
ancestors: ApiStatusJSON[];
|
ancestors: ApiStatusJSON[];
|
||||||
descendants: ApiStatusJSON[];
|
descendants: ApiStatusJSON[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ApiStatusSourceJSON {
|
||||||
|
id: string;
|
||||||
|
text: string;
|
||||||
|
spoiler_text: string;
|
||||||
|
}
|
||||||
|
|||||||
114
app/javascript/mastodon/components/dropdown/index.tsx
Normal file
114
app/javascript/mastodon/components/dropdown/index.tsx
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
import { useCallback, useId, useMemo, useRef, useState } from 'react';
|
||||||
|
import type { ComponentPropsWithoutRef, FC } from 'react';
|
||||||
|
|
||||||
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
import type { MessageDescriptor } from 'react-intl';
|
||||||
|
|
||||||
|
import classNames from 'classnames';
|
||||||
|
|
||||||
|
import Overlay from 'react-overlays/Overlay';
|
||||||
|
|
||||||
|
import type { SelectItem } from '../dropdown_selector';
|
||||||
|
import { DropdownSelector } from '../dropdown_selector';
|
||||||
|
|
||||||
|
interface DropdownProps {
|
||||||
|
title: string;
|
||||||
|
disabled?: boolean;
|
||||||
|
items: SelectItem[];
|
||||||
|
onChange: (value: string) => void;
|
||||||
|
current: string;
|
||||||
|
emptyText?: MessageDescriptor;
|
||||||
|
classPrefix: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const Dropdown: FC<
|
||||||
|
DropdownProps & Omit<ComponentPropsWithoutRef<'button'>, keyof DropdownProps>
|
||||||
|
> = ({
|
||||||
|
title,
|
||||||
|
disabled,
|
||||||
|
items,
|
||||||
|
current,
|
||||||
|
onChange,
|
||||||
|
classPrefix,
|
||||||
|
className,
|
||||||
|
...buttonProps
|
||||||
|
}) => {
|
||||||
|
const buttonRef = useRef<HTMLButtonElement>(null);
|
||||||
|
const accessibilityId = useId();
|
||||||
|
|
||||||
|
const [open, setOpen] = useState(false);
|
||||||
|
const handleToggle = useCallback(() => {
|
||||||
|
if (!disabled) {
|
||||||
|
setOpen((prevOpen) => !prevOpen);
|
||||||
|
}
|
||||||
|
}, [disabled]);
|
||||||
|
const handleClose = useCallback(() => {
|
||||||
|
setOpen(false);
|
||||||
|
}, []);
|
||||||
|
const currentText = useMemo(
|
||||||
|
() => items.find((i) => i.value === current)?.text,
|
||||||
|
[current, items],
|
||||||
|
);
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<button
|
||||||
|
type='button'
|
||||||
|
{...buttonProps}
|
||||||
|
title={title}
|
||||||
|
aria-expanded={open}
|
||||||
|
aria-controls={accessibilityId}
|
||||||
|
onClick={handleToggle}
|
||||||
|
disabled={disabled}
|
||||||
|
className={classNames(
|
||||||
|
`${classPrefix}__button`,
|
||||||
|
{
|
||||||
|
active: open,
|
||||||
|
disabled,
|
||||||
|
},
|
||||||
|
className,
|
||||||
|
)}
|
||||||
|
ref={buttonRef}
|
||||||
|
>
|
||||||
|
{currentText ?? (
|
||||||
|
<FormattedMessage
|
||||||
|
id='dropdown.empty'
|
||||||
|
defaultMessage='Select an option'
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<Overlay
|
||||||
|
show={open}
|
||||||
|
offset={[0, 4]}
|
||||||
|
placement='bottom-start'
|
||||||
|
onHide={handleClose}
|
||||||
|
flip
|
||||||
|
target={buttonRef.current}
|
||||||
|
popperConfig={{
|
||||||
|
strategy: 'fixed',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{({ props, placement }) => (
|
||||||
|
<div {...props} className={`${classPrefix}__overlay`}>
|
||||||
|
<div
|
||||||
|
className={classNames(
|
||||||
|
'dropdown-animation',
|
||||||
|
`${classPrefix}__dropdown`,
|
||||||
|
placement,
|
||||||
|
)}
|
||||||
|
id={accessibilityId}
|
||||||
|
>
|
||||||
|
<DropdownSelector
|
||||||
|
items={items}
|
||||||
|
value={current}
|
||||||
|
onClose={handleClose}
|
||||||
|
onChange={onChange}
|
||||||
|
classNamePrefix={classPrefix}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</Overlay>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
@ -13,8 +13,8 @@ const listenerOptions = supportsPassiveEvents
|
|||||||
? { passive: true, capture: true }
|
? { passive: true, capture: true }
|
||||||
: true;
|
: true;
|
||||||
|
|
||||||
export interface SelectItem {
|
export interface SelectItem<Value extends string = string> {
|
||||||
value: string;
|
value: Value;
|
||||||
icon?: string;
|
icon?: string;
|
||||||
iconComponent?: IconProp;
|
iconComponent?: IconProp;
|
||||||
text: string;
|
text: string;
|
||||||
@ -24,7 +24,7 @@ export interface SelectItem {
|
|||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
value: string;
|
value: string;
|
||||||
classNamePrefix: string;
|
classNamePrefix?: string;
|
||||||
style?: React.CSSProperties;
|
style?: React.CSSProperties;
|
||||||
items: SelectItem[];
|
items: SelectItem[];
|
||||||
onChange: (value: string) => void;
|
onChange: (value: string) => void;
|
||||||
|
|||||||
@ -29,6 +29,7 @@ import { Dropdown } from 'mastodon/components/dropdown_menu';
|
|||||||
import { me } from '../initial_state';
|
import { me } from '../initial_state';
|
||||||
|
|
||||||
import { IconButton } from './icon_button';
|
import { IconButton } from './icon_button';
|
||||||
|
import { isFeatureEnabled } from '../utils/environment';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
delete: { id: 'status.delete', defaultMessage: 'Delete' },
|
delete: { id: 'status.delete', defaultMessage: 'Delete' },
|
||||||
@ -68,6 +69,7 @@ const messages = defineMessages({
|
|||||||
filter: { id: 'status.filter', defaultMessage: 'Filter this post' },
|
filter: { id: 'status.filter', defaultMessage: 'Filter this post' },
|
||||||
openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' },
|
openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' },
|
||||||
revokeQuote: { id: 'status.revoke_quote', defaultMessage: 'Remove my post from @{name}’s post' },
|
revokeQuote: { id: 'status.revoke_quote', defaultMessage: 'Remove my post from @{name}’s post' },
|
||||||
|
quotePolicyChange: { id: 'status.quote_policy_change', defaultMessage: 'Change who can quote' },
|
||||||
});
|
});
|
||||||
|
|
||||||
const mapStateToProps = (state, { status }) => {
|
const mapStateToProps = (state, { status }) => {
|
||||||
@ -89,6 +91,7 @@ class StatusActionBar extends ImmutablePureComponent {
|
|||||||
onReblog: PropTypes.func,
|
onReblog: PropTypes.func,
|
||||||
onDelete: PropTypes.func,
|
onDelete: PropTypes.func,
|
||||||
onRevokeQuote: PropTypes.func,
|
onRevokeQuote: PropTypes.func,
|
||||||
|
onQuotePolicyChange: PropTypes.func,
|
||||||
onDirect: PropTypes.func,
|
onDirect: PropTypes.func,
|
||||||
onMention: PropTypes.func,
|
onMention: PropTypes.func,
|
||||||
onMute: PropTypes.func,
|
onMute: PropTypes.func,
|
||||||
@ -200,7 +203,11 @@ class StatusActionBar extends ImmutablePureComponent {
|
|||||||
|
|
||||||
handleRevokeQuoteClick = () => {
|
handleRevokeQuoteClick = () => {
|
||||||
this.props.onRevokeQuote(this.props.status);
|
this.props.onRevokeQuote(this.props.status);
|
||||||
}
|
};
|
||||||
|
|
||||||
|
handleQuotePolicyChange = () => {
|
||||||
|
this.props.onQuotePolicyChange(this.props.status);
|
||||||
|
};
|
||||||
|
|
||||||
handleBlockClick = () => {
|
handleBlockClick = () => {
|
||||||
const { status, relationship, onBlock, onUnblock } = this.props;
|
const { status, relationship, onBlock, onUnblock } = this.props;
|
||||||
@ -291,6 +298,9 @@ class StatusActionBar extends ImmutablePureComponent {
|
|||||||
|
|
||||||
if (writtenByMe || withDismiss) {
|
if (writtenByMe || withDismiss) {
|
||||||
menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick });
|
menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick });
|
||||||
|
if (writtenByMe && isFeatureEnabled('outgoing_quotes') && !['private', 'direct'].includes(status.get('visibility'))) {
|
||||||
|
menu.push({ text: intl.formatMessage(messages.quotePolicyChange), action: this.handleQuotePolicyChange });
|
||||||
|
}
|
||||||
menu.push(null);
|
menu.push(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -115,6 +115,10 @@ const mapDispatchToProps = (dispatch, { contextType }) => ({
|
|||||||
dispatch(openModal({ modalType: 'CONFIRM_REVOKE_QUOTE', modalProps: { statusId: status.get('id'), quotedStatusId: status.getIn(['quote', 'quoted_status']) }}));
|
dispatch(openModal({ modalType: 'CONFIRM_REVOKE_QUOTE', modalProps: { statusId: status.get('id'), quotedStatusId: status.getIn(['quote', 'quoted_status']) }}));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onQuotePolicyChange(status) {
|
||||||
|
dispatch(openModal({ modalType: 'COMPOSE_PRIVACY', modalProps: { statusId: status.get('id') } }));
|
||||||
|
},
|
||||||
|
|
||||||
onEdit (status) {
|
onEdit (status) {
|
||||||
dispatch((_, getState) => {
|
dispatch((_, getState) => {
|
||||||
let state = getState();
|
let state = getState();
|
||||||
|
|||||||
@ -73,6 +73,7 @@ class ComposeForm extends ImmutablePureComponent {
|
|||||||
singleColumn: PropTypes.bool,
|
singleColumn: PropTypes.bool,
|
||||||
lang: PropTypes.string,
|
lang: PropTypes.string,
|
||||||
maxChars: PropTypes.number,
|
maxChars: PropTypes.number,
|
||||||
|
redirectOnSuccess: PropTypes.bool,
|
||||||
};
|
};
|
||||||
|
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
@ -255,62 +256,60 @@ class ComposeForm extends ImmutablePureComponent {
|
|||||||
<Warning />
|
<Warning />
|
||||||
|
|
||||||
<div className={classNames('compose-form__highlightable', { active: highlighted })} ref={this.setRef}>
|
<div className={classNames('compose-form__highlightable', { active: highlighted })} ref={this.setRef}>
|
||||||
<div className='compose-form__scrollable'>
|
<EditIndicator />
|
||||||
<EditIndicator />
|
|
||||||
|
|
||||||
{this.props.spoiler && (
|
{this.props.spoiler && (
|
||||||
<div className='spoiler-input'>
|
<div className='spoiler-input'>
|
||||||
<div className='spoiler-input__border' />
|
<div className='spoiler-input__border' />
|
||||||
|
|
||||||
<AutosuggestInput
|
<AutosuggestInput
|
||||||
placeholder={intl.formatMessage(messages.spoiler_placeholder)}
|
placeholder={intl.formatMessage(messages.spoiler_placeholder)}
|
||||||
value={this.props.spoilerText}
|
value={this.props.spoilerText}
|
||||||
disabled={isSubmitting}
|
disabled={isSubmitting}
|
||||||
onChange={this.handleChangeSpoilerText}
|
onChange={this.handleChangeSpoilerText}
|
||||||
onKeyDown={this.handleKeyDownSpoiler}
|
onKeyDown={this.handleKeyDownSpoiler}
|
||||||
ref={this.setSpoilerText}
|
ref={this.setSpoilerText}
|
||||||
suggestions={this.props.suggestions}
|
suggestions={this.props.suggestions}
|
||||||
onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}
|
onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}
|
||||||
onSuggestionsClearRequested={this.onSuggestionsClearRequested}
|
onSuggestionsClearRequested={this.onSuggestionsClearRequested}
|
||||||
onSuggestionSelected={this.onSpoilerSuggestionSelected}
|
onSuggestionSelected={this.onSpoilerSuggestionSelected}
|
||||||
searchTokens={[':']}
|
searchTokens={[':']}
|
||||||
id='cw-spoiler-input'
|
id='cw-spoiler-input'
|
||||||
className='spoiler-input__input'
|
className='spoiler-input__input'
|
||||||
lang={this.props.lang}
|
lang={this.props.lang}
|
||||||
spellCheck
|
spellCheck
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div className='spoiler-input__border' />
|
<div className='spoiler-input__border' />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<AutosuggestTextarea
|
<div className='compose-form__dropdowns'>
|
||||||
ref={this.textareaRef}
|
<PrivacyDropdownContainer disabled={this.props.isEditing} />
|
||||||
placeholder={intl.formatMessage(messages.placeholder)}
|
<LanguageDropdown />
|
||||||
disabled={isSubmitting}
|
|
||||||
value={this.props.text}
|
|
||||||
onChange={this.handleChange}
|
|
||||||
suggestions={this.props.suggestions}
|
|
||||||
onFocus={this.handleFocus}
|
|
||||||
onKeyDown={this.handleKeyDownPost}
|
|
||||||
onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}
|
|
||||||
onSuggestionsClearRequested={this.onSuggestionsClearRequested}
|
|
||||||
onSuggestionSelected={this.onSuggestionSelected}
|
|
||||||
onPaste={onPaste}
|
|
||||||
autoFocus={autoFocus}
|
|
||||||
lang={this.props.lang}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<AutosuggestTextarea
|
||||||
|
ref={this.textareaRef}
|
||||||
|
placeholder={intl.formatMessage(messages.placeholder)}
|
||||||
|
disabled={isSubmitting}
|
||||||
|
value={this.props.text}
|
||||||
|
onChange={this.handleChange}
|
||||||
|
suggestions={this.props.suggestions}
|
||||||
|
onFocus={this.handleFocus}
|
||||||
|
onKeyDown={this.handleKeyDownPost}
|
||||||
|
onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}
|
||||||
|
onSuggestionsClearRequested={this.onSuggestionsClearRequested}
|
||||||
|
onSuggestionSelected={this.onSuggestionSelected}
|
||||||
|
onPaste={onPaste}
|
||||||
|
autoFocus={autoFocus}
|
||||||
|
lang={this.props.lang}
|
||||||
|
/>
|
||||||
|
|
||||||
<UploadForm />
|
<UploadForm />
|
||||||
<PollForm />
|
<PollForm />
|
||||||
|
|
||||||
<div className='compose-form__footer'>
|
<div className='compose-form__footer'>
|
||||||
<div className='compose-form__dropdowns'>
|
|
||||||
<PrivacyDropdownContainer disabled={this.props.isEditing} />
|
|
||||||
<LanguageDropdown />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className='compose-form__actions'>
|
<div className='compose-form__actions'>
|
||||||
<div className='compose-form__buttons'>
|
<div className='compose-form__buttons'>
|
||||||
<UploadButtonContainer />
|
<UploadButtonContainer />
|
||||||
@ -329,7 +328,7 @@ class ComposeForm extends ImmutablePureComponent {
|
|||||||
>
|
>
|
||||||
{intl.formatMessage(
|
{intl.formatMessage(
|
||||||
this.props.isEditing ?
|
this.props.isEditing ?
|
||||||
messages.saveChanges :
|
messages.saveChanges :
|
||||||
(this.props.isInReply ? messages.reply : messages.publish)
|
(this.props.isInReply ? messages.reply : messages.publish)
|
||||||
)}
|
)}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@ -396,7 +396,7 @@ export const LanguageDropdown: React.FC = () => {
|
|||||||
warning: guess !== '' && guess !== value,
|
warning: guess !== '' && guess !== value,
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<Icon id='' icon={TranslateIcon} />
|
<Icon id='translate' icon={TranslateIcon} />
|
||||||
<span className='dropdown-button__label'>{current[2] ?? value}</span>
|
<span className='dropdown-button__label'>{current[2] ?? value}</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ import QuietTimeIcon from '@/material-icons/400-24px/quiet_time.svg?react';
|
|||||||
import { DropdownSelector } from 'mastodon/components/dropdown_selector';
|
import { DropdownSelector } from 'mastodon/components/dropdown_selector';
|
||||||
import { Icon } from 'mastodon/components/icon';
|
import { Icon } from 'mastodon/components/icon';
|
||||||
|
|
||||||
const messages = defineMessages({
|
export const messages = defineMessages({
|
||||||
public_short: { id: 'privacy.public.short', defaultMessage: 'Public' },
|
public_short: { id: 'privacy.public.short', defaultMessage: 'Public' },
|
||||||
public_long: { id: 'privacy.public.long', defaultMessage: 'Anyone on and off Mastodon' },
|
public_long: { id: 'privacy.public.long', defaultMessage: 'Anyone on and off Mastodon' },
|
||||||
unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Quiet public' },
|
unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Quiet public' },
|
||||||
|
|||||||
@ -25,7 +25,7 @@ export const ReplyIndicator = () => {
|
|||||||
<div className='reply-indicator__line' />
|
<div className='reply-indicator__line' />
|
||||||
|
|
||||||
<Link to={`/@${account.get('acct')}`} className='detailed-status__display-avatar'>
|
<Link to={`/@${account.get('acct')}`} className='detailed-status__display-avatar'>
|
||||||
<Avatar account={account} size={46} />
|
<Avatar key={`avatar-${account.get('id')}`} account={account} size={46} />
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<div className='reply-indicator__main'>
|
<div className='reply-indicator__main'>
|
||||||
|
|||||||
@ -34,7 +34,7 @@ const mapStateToProps = state => ({
|
|||||||
maxChars: state.getIn(['server', 'server', 'configuration', 'statuses', 'max_characters'], 500),
|
maxChars: state.getIn(['server', 'server', 'configuration', 'statuses', 'max_characters'], 500),
|
||||||
});
|
});
|
||||||
|
|
||||||
const mapDispatchToProps = (dispatch) => ({
|
const mapDispatchToProps = (dispatch, props) => ({
|
||||||
|
|
||||||
onChange (text) {
|
onChange (text) {
|
||||||
dispatch(changeCompose(text));
|
dispatch(changeCompose(text));
|
||||||
@ -47,7 +47,11 @@ const mapDispatchToProps = (dispatch) => ({
|
|||||||
modalProps: {},
|
modalProps: {},
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
dispatch(submitCompose());
|
dispatch(submitCompose((status) => {
|
||||||
|
if (props.redirectOnSuccess) {
|
||||||
|
window.location.assign(status.url);
|
||||||
|
}
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@ -38,11 +38,7 @@ export const EmojiHTML = <Element extends ElementType>(
|
|||||||
if (isModernEmojiEnabled()) {
|
if (isModernEmojiEnabled()) {
|
||||||
return <ModernEmojiHTML {...props} />;
|
return <ModernEmojiHTML {...props} />;
|
||||||
}
|
}
|
||||||
const Wrapper = props.as ?? 'div';
|
const { as: asElement, htmlString, extraEmojis, ...rest } = props;
|
||||||
return (
|
const Wrapper = asElement ?? 'div';
|
||||||
<Wrapper
|
return <Wrapper {...rest} dangerouslySetInnerHTML={{ __html: htmlString }} />;
|
||||||
{...props}
|
|
||||||
dangerouslySetInnerHTML={{ __html: props.htmlString }}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import ModalContainer from 'mastodon/features/ui/containers/modal_container';
|
|||||||
|
|
||||||
const Compose = () => (
|
const Compose = () => (
|
||||||
<>
|
<>
|
||||||
<ComposeFormContainer autoFocus withoutNavigation />
|
<ComposeFormContainer autoFocus withoutNavigation redirectOnSuccess />
|
||||||
<AlertsController />
|
<AlertsController />
|
||||||
<ModalContainer />
|
<ModalContainer />
|
||||||
<LoadingBarContainer className='loading-bar' />
|
<LoadingBarContainer className='loading-bar' />
|
||||||
|
|||||||
@ -26,6 +26,7 @@ import { PERMISSION_MANAGE_USERS, PERMISSION_MANAGE_FEDERATION } from 'mastodon/
|
|||||||
import { IconButton } from '../../../components/icon_button';
|
import { IconButton } from '../../../components/icon_button';
|
||||||
import { Dropdown } from 'mastodon/components/dropdown_menu';
|
import { Dropdown } from 'mastodon/components/dropdown_menu';
|
||||||
import { me } from '../../../initial_state';
|
import { me } from '../../../initial_state';
|
||||||
|
import { isFeatureEnabled } from '@/mastodon/utils/environment';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
delete: { id: 'status.delete', defaultMessage: 'Delete' },
|
delete: { id: 'status.delete', defaultMessage: 'Delete' },
|
||||||
@ -62,6 +63,7 @@ const messages = defineMessages({
|
|||||||
unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },
|
unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },
|
||||||
openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' },
|
openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' },
|
||||||
revokeQuote: { id: 'status.revoke_quote', defaultMessage: 'Remove my post from @{name}’s post' },
|
revokeQuote: { id: 'status.revoke_quote', defaultMessage: 'Remove my post from @{name}’s post' },
|
||||||
|
quotePolicyChange: { id: 'status.quote_policy_change', defaultMessage: 'Change who can quote' },
|
||||||
});
|
});
|
||||||
|
|
||||||
const mapStateToProps = (state, { status }) => {
|
const mapStateToProps = (state, { status }) => {
|
||||||
@ -84,6 +86,7 @@ class ActionBar extends PureComponent {
|
|||||||
onBookmark: PropTypes.func.isRequired,
|
onBookmark: PropTypes.func.isRequired,
|
||||||
onDelete: PropTypes.func.isRequired,
|
onDelete: PropTypes.func.isRequired,
|
||||||
onRevokeQuote: PropTypes.func,
|
onRevokeQuote: PropTypes.func,
|
||||||
|
onQuotePolicyChange: PropTypes.func,
|
||||||
onEdit: PropTypes.func.isRequired,
|
onEdit: PropTypes.func.isRequired,
|
||||||
onDirect: PropTypes.func.isRequired,
|
onDirect: PropTypes.func.isRequired,
|
||||||
onMention: PropTypes.func.isRequired,
|
onMention: PropTypes.func.isRequired,
|
||||||
@ -122,7 +125,11 @@ class ActionBar extends PureComponent {
|
|||||||
|
|
||||||
handleRevokeQuoteClick = () => {
|
handleRevokeQuoteClick = () => {
|
||||||
this.props.onRevokeQuote(this.props.status);
|
this.props.onRevokeQuote(this.props.status);
|
||||||
}
|
};
|
||||||
|
|
||||||
|
handleQuotePolicyChange = () => {
|
||||||
|
this.props.onQuotePolicyChange(this.props.status);
|
||||||
|
};
|
||||||
|
|
||||||
handleRedraftClick = () => {
|
handleRedraftClick = () => {
|
||||||
this.props.onDelete(this.props.status, true);
|
this.props.onDelete(this.props.status, true);
|
||||||
@ -240,6 +247,9 @@ class ActionBar extends PureComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick });
|
menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick });
|
||||||
|
if (isFeatureEnabled('outgoing_quotes') && !['private', 'direct'].includes(status.get('visibility'))) {
|
||||||
|
menu.push({ text: intl.formatMessage(messages.quotePolicyChange), action: this.handleQuotePolicyChange });
|
||||||
|
}
|
||||||
menu.push(null);
|
menu.push(null);
|
||||||
menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick });
|
menu.push({ text: intl.formatMessage(messages.edit), action: this.handleEditClick });
|
||||||
menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick, dangerous: true });
|
menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick, dangerous: true });
|
||||||
|
|||||||
@ -265,6 +265,11 @@ class Status extends ImmutablePureComponent {
|
|||||||
dispatch(openModal({ modalType: 'CONFIRM_REVOKE_QUOTE', modalProps: { statusId: status.get('id'), quotedStatusId: status.getIn(['quote', 'quoted_status']) }}));
|
dispatch(openModal({ modalType: 'CONFIRM_REVOKE_QUOTE', modalProps: { statusId: status.get('id'), quotedStatusId: status.getIn(['quote', 'quoted_status']) }}));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
handleQuotePolicyChange = (status) => {
|
||||||
|
const { dispatch } = this.props;
|
||||||
|
dispatch(openModal({ modalType: 'COMPOSE_PRIVACY', modalProps: { statusId: status.get('id') } }));
|
||||||
|
};
|
||||||
|
|
||||||
handleEditClick = (status) => {
|
handleEditClick = (status) => {
|
||||||
const { dispatch, askReplyConfirmation } = this.props;
|
const { dispatch, askReplyConfirmation } = this.props;
|
||||||
|
|
||||||
@ -642,6 +647,7 @@ class Status extends ImmutablePureComponent {
|
|||||||
onBookmark={this.handleBookmarkClick}
|
onBookmark={this.handleBookmarkClick}
|
||||||
onDelete={this.handleDeleteClick}
|
onDelete={this.handleDeleteClick}
|
||||||
onRevokeQuote={this.handleRevokeQuoteClick}
|
onRevokeQuote={this.handleRevokeQuoteClick}
|
||||||
|
onQuotePolicyChange={this.handleQuotePolicyChange}
|
||||||
onEdit={this.handleEditClick}
|
onEdit={this.handleEditClick}
|
||||||
onDirect={this.handleDirectClick}
|
onDirect={this.handleDirectClick}
|
||||||
onMention={this.handleMentionClick}
|
onMention={this.handleMentionClick}
|
||||||
|
|||||||
@ -43,6 +43,7 @@ import { ImageModal } from './image_modal';
|
|||||||
import MediaModal from './media_modal';
|
import MediaModal from './media_modal';
|
||||||
import { ModalPlaceholder } from './modal_placeholder';
|
import { ModalPlaceholder } from './modal_placeholder';
|
||||||
import VideoModal from './video_modal';
|
import VideoModal from './video_modal';
|
||||||
|
import { VisibilityModal } from './visibility_modal';
|
||||||
|
|
||||||
export const MODAL_COMPONENTS = {
|
export const MODAL_COMPONENTS = {
|
||||||
'MEDIA': () => Promise.resolve({ default: MediaModal }),
|
'MEDIA': () => Promise.resolve({ default: MediaModal }),
|
||||||
@ -76,6 +77,7 @@ export const MODAL_COMPONENTS = {
|
|||||||
'CLOSED_REGISTRATIONS': ClosedRegistrationsModal,
|
'CLOSED_REGISTRATIONS': ClosedRegistrationsModal,
|
||||||
'IGNORE_NOTIFICATIONS': IgnoreNotificationsModal,
|
'IGNORE_NOTIFICATIONS': IgnoreNotificationsModal,
|
||||||
'ANNUAL_REPORT': AnnualReportModal,
|
'ANNUAL_REPORT': AnnualReportModal,
|
||||||
|
'COMPOSE_PRIVACY': () => Promise.resolve({ default: VisibilityModal }),
|
||||||
};
|
};
|
||||||
|
|
||||||
export default class ModalRoot extends PureComponent {
|
export default class ModalRoot extends PureComponent {
|
||||||
|
|||||||
@ -0,0 +1,293 @@
|
|||||||
|
import { forwardRef, useCallback, useId, useMemo } from 'react';
|
||||||
|
import type { FC } from 'react';
|
||||||
|
|
||||||
|
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
||||||
|
|
||||||
|
import classNames from 'classnames';
|
||||||
|
|
||||||
|
import { changeComposeVisibility } from '@/mastodon/actions/compose';
|
||||||
|
import { setStatusQuotePolicy } from '@/mastodon/actions/statuses_typed';
|
||||||
|
import type { ApiQuotePolicy } from '@/mastodon/api_types/quotes';
|
||||||
|
import { isQuotePolicy } from '@/mastodon/api_types/quotes';
|
||||||
|
import type { StatusVisibility } from '@/mastodon/api_types/statuses';
|
||||||
|
import { Dropdown } from '@/mastodon/components/dropdown';
|
||||||
|
import type { SelectItem } from '@/mastodon/components/dropdown_selector';
|
||||||
|
import { IconButton } from '@/mastodon/components/icon_button';
|
||||||
|
import { messages as privacyMessages } from '@/mastodon/features/compose/components/privacy_dropdown';
|
||||||
|
import {
|
||||||
|
createAppSelector,
|
||||||
|
useAppDispatch,
|
||||||
|
useAppSelector,
|
||||||
|
} from '@/mastodon/store';
|
||||||
|
import CloseIcon from '@/material-icons/400-24px/close.svg?react';
|
||||||
|
|
||||||
|
import type { BaseConfirmationModalProps } from './confirmation_modals/confirmation_modal';
|
||||||
|
|
||||||
|
const messages = defineMessages({
|
||||||
|
close: { id: 'lightbox.close', defaultMessage: 'Close' },
|
||||||
|
buttonTitle: {
|
||||||
|
id: 'visibility_modal.button_title',
|
||||||
|
defaultMessage: 'Set visibility',
|
||||||
|
},
|
||||||
|
quotePublic: {
|
||||||
|
id: 'visibility_modal.quote_public',
|
||||||
|
defaultMessage: 'Anyone',
|
||||||
|
},
|
||||||
|
quoteFollowers: {
|
||||||
|
id: 'visibility_modal.quote_followers',
|
||||||
|
defaultMessage: 'Followers only',
|
||||||
|
},
|
||||||
|
quoteNobody: {
|
||||||
|
id: 'visibility_modal.quote_nobody',
|
||||||
|
defaultMessage: 'No one',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
interface VisibilityModalProps extends BaseConfirmationModalProps {
|
||||||
|
statusId: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const selectStatusPolicy = createAppSelector(
|
||||||
|
[(state) => state.statuses, (_state, statusId: string) => statusId],
|
||||||
|
(statuses, statusId) => {
|
||||||
|
const status = statuses.get(statusId);
|
||||||
|
if (!status) {
|
||||||
|
return 'public';
|
||||||
|
}
|
||||||
|
const policy =
|
||||||
|
(status.getIn(['quote_approval', 'automatic', 0]) as string) || 'nobody';
|
||||||
|
const visibility = status.get('visibility') as StatusVisibility;
|
||||||
|
|
||||||
|
// If the status is private or direct, it cannot be quoted by anyone.
|
||||||
|
if (visibility === 'private' || visibility === 'direct') {
|
||||||
|
return 'nobody';
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the status has a specific quote policy, return it.
|
||||||
|
if (isQuotePolicy(policy)) {
|
||||||
|
return policy;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise, return the default based on visibility.
|
||||||
|
if (visibility === 'unlisted') {
|
||||||
|
return 'followers';
|
||||||
|
}
|
||||||
|
return 'public';
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
export const VisibilityModal: FC<VisibilityModalProps> = forwardRef(
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
|
({ onClose, statusId }, ref) => {
|
||||||
|
const intl = useIntl();
|
||||||
|
const currentVisibility = useAppSelector(
|
||||||
|
(state) =>
|
||||||
|
(state.statuses.getIn([statusId, 'visibility'], 'public') as
|
||||||
|
| StatusVisibility
|
||||||
|
| undefined) ?? 'public',
|
||||||
|
);
|
||||||
|
const currentQuotePolicy = useAppSelector((state) =>
|
||||||
|
selectStatusPolicy(state, statusId),
|
||||||
|
);
|
||||||
|
const disableQuotePolicy =
|
||||||
|
currentVisibility === 'private' || currentVisibility === 'direct';
|
||||||
|
const isSaving = useAppSelector(
|
||||||
|
(state) =>
|
||||||
|
state.statuses.getIn([statusId, 'isSavingQuotePolicy']) === true,
|
||||||
|
);
|
||||||
|
|
||||||
|
const visibilityItems = useMemo<SelectItem<StatusVisibility>[]>(
|
||||||
|
() => [
|
||||||
|
{
|
||||||
|
value: 'public',
|
||||||
|
text: intl.formatMessage(privacyMessages.public_short),
|
||||||
|
meta: intl.formatMessage(privacyMessages.public_long),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'unlisted',
|
||||||
|
text: intl.formatMessage(privacyMessages.unlisted_short),
|
||||||
|
meta: intl.formatMessage(privacyMessages.unlisted_long),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'private',
|
||||||
|
text: intl.formatMessage(privacyMessages.private_short),
|
||||||
|
meta: intl.formatMessage(privacyMessages.private_long),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 'direct',
|
||||||
|
text: intl.formatMessage(privacyMessages.direct_short),
|
||||||
|
meta: intl.formatMessage(privacyMessages.direct_long),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[intl],
|
||||||
|
);
|
||||||
|
const quoteItems = useMemo<SelectItem<ApiQuotePolicy>[]>(
|
||||||
|
() => [
|
||||||
|
{ value: 'public', text: intl.formatMessage(messages.quotePublic) },
|
||||||
|
{
|
||||||
|
value: 'followers',
|
||||||
|
text: intl.formatMessage(messages.quoteFollowers),
|
||||||
|
},
|
||||||
|
{ value: 'nobody', text: intl.formatMessage(messages.quoteNobody) },
|
||||||
|
],
|
||||||
|
[intl],
|
||||||
|
);
|
||||||
|
|
||||||
|
const dispatch = useAppDispatch();
|
||||||
|
const handleVisibilityChange = useCallback(
|
||||||
|
(value: string) => {
|
||||||
|
// Published statuses cannot change visibility.
|
||||||
|
if (statusId) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dispatch(changeComposeVisibility(value));
|
||||||
|
},
|
||||||
|
[dispatch, statusId],
|
||||||
|
);
|
||||||
|
const handleQuotePolicyChange = useCallback(
|
||||||
|
(value: string) => {
|
||||||
|
if (isQuotePolicy(value) && !disableQuotePolicy) {
|
||||||
|
void dispatch(setStatusQuotePolicy({ policy: value, statusId }));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[disableQuotePolicy, dispatch, statusId],
|
||||||
|
);
|
||||||
|
|
||||||
|
const privacyDropdownId = useId();
|
||||||
|
const quoteDropdownId = useId();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className='modal-root__modal dialog-modal visibility-modal'>
|
||||||
|
<div className='dialog-modal__header'>
|
||||||
|
<IconButton
|
||||||
|
className='dialog-modal__header__close'
|
||||||
|
title={intl.formatMessage(messages.close)}
|
||||||
|
icon='times'
|
||||||
|
iconComponent={CloseIcon}
|
||||||
|
onClick={onClose}
|
||||||
|
/>
|
||||||
|
<FormattedMessage
|
||||||
|
id='visibility_modal.header'
|
||||||
|
defaultMessage='Visibility and interaction'
|
||||||
|
>
|
||||||
|
{(chunks) => (
|
||||||
|
<span className='dialog-modal__header__title'>{chunks}</span>
|
||||||
|
)}
|
||||||
|
</FormattedMessage>
|
||||||
|
</div>
|
||||||
|
<div className='dialog-modal__content'>
|
||||||
|
<div className='dialog-modal__content__description'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='visibility_modal.instructions'
|
||||||
|
defaultMessage='Control who can interact with this post. Global settings can be found under <link>Preferences > Other</link>.'
|
||||||
|
values={{
|
||||||
|
link: (chunks) => (
|
||||||
|
<a href='/settings/preferences/other'>{chunks}</a>
|
||||||
|
),
|
||||||
|
}}
|
||||||
|
tagName='p'
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className='dialog-modal__content__form'>
|
||||||
|
<label
|
||||||
|
htmlFor={privacyDropdownId}
|
||||||
|
className={classNames('visibility-dropdown__label', {
|
||||||
|
disabled: isSaving || !!statusId,
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
<FormattedMessage
|
||||||
|
id='visibility_modal.privacy_label'
|
||||||
|
defaultMessage='Privacy'
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Dropdown
|
||||||
|
items={visibilityItems}
|
||||||
|
classPrefix='visibility-dropdown'
|
||||||
|
current={currentVisibility}
|
||||||
|
onChange={handleVisibilityChange}
|
||||||
|
title={intl.formatMessage(privacyMessages.change_privacy)}
|
||||||
|
disabled={isSaving || !!statusId}
|
||||||
|
id={privacyDropdownId}
|
||||||
|
/>
|
||||||
|
{!!statusId && (
|
||||||
|
<p className='visibility-dropdown__helper'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='visibility_modal.helper.privacy_editing'
|
||||||
|
defaultMessage="Visibility can't be changed after a post is published."
|
||||||
|
/>
|
||||||
|
</p>
|
||||||
|
)}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label
|
||||||
|
htmlFor={quoteDropdownId}
|
||||||
|
className={classNames('visibility-dropdown__label', {
|
||||||
|
disabled: disableQuotePolicy || isSaving,
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
<FormattedMessage
|
||||||
|
id='visibility_modal.quote_label'
|
||||||
|
defaultMessage='Change who can quote'
|
||||||
|
/>
|
||||||
|
|
||||||
|
<Dropdown
|
||||||
|
items={quoteItems}
|
||||||
|
onChange={handleQuotePolicyChange}
|
||||||
|
classPrefix='visibility-dropdown'
|
||||||
|
current={currentQuotePolicy}
|
||||||
|
title={intl.formatMessage(messages.buttonTitle)}
|
||||||
|
disabled={disableQuotePolicy || isSaving}
|
||||||
|
id={quoteDropdownId}
|
||||||
|
/>
|
||||||
|
<QuotePolicyHelper
|
||||||
|
policy={currentQuotePolicy}
|
||||||
|
visibility={currentVisibility}
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
VisibilityModal.displayName = 'VisibilityModal';
|
||||||
|
|
||||||
|
const QuotePolicyHelper: FC<{
|
||||||
|
policy: ApiQuotePolicy;
|
||||||
|
visibility: StatusVisibility;
|
||||||
|
}> = ({ policy, visibility }) => {
|
||||||
|
if (visibility === 'unlisted' && policy !== 'nobody') {
|
||||||
|
return (
|
||||||
|
<p className='visibility-dropdown__helper'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='visibility_modal.helper.unlisted_quoting'
|
||||||
|
defaultMessage='When people quote you, their post will also be hidden from trending timelines.'
|
||||||
|
/>
|
||||||
|
</p>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (visibility === 'private') {
|
||||||
|
return (
|
||||||
|
<p className='visibility-dropdown__helper'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='visibility_modal.helper.private_quoting'
|
||||||
|
defaultMessage="Follower-only posts can't be quoted."
|
||||||
|
/>
|
||||||
|
</p>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (visibility === 'direct') {
|
||||||
|
return (
|
||||||
|
<p className='visibility-dropdown__helper'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='visibility_modal.helper.direct_quoting'
|
||||||
|
defaultMessage="Private mentions can't be quoted."
|
||||||
|
/>
|
||||||
|
</p>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
};
|
||||||
@ -49,12 +49,12 @@
|
|||||||
"account.follows.empty": "Bu istifadəçi hələ ki, heç kimi izləmir.",
|
"account.follows.empty": "Bu istifadəçi hələ ki, heç kimi izləmir.",
|
||||||
"account.follows_you": "Sizi izləyir",
|
"account.follows_you": "Sizi izləyir",
|
||||||
"account.go_to_profile": "Profilə get",
|
"account.go_to_profile": "Profilə get",
|
||||||
"account.hide_reblogs": "@{name} istifadəçisindən olan gücləndirmələri gizlət",
|
"account.hide_reblogs": "@{name} - təkrar paylaşımlarını gizlət",
|
||||||
"account.in_memoriam": "Xatirə.",
|
"account.in_memoriam": "Xatirə.",
|
||||||
"account.joined_short": "Qoşulub",
|
"account.joined_short": "Qoşulub",
|
||||||
"account.languages": "Abunə olunmuş dilləri dəyiş",
|
"account.languages": "Abunə olunmuş dilləri dəyiş",
|
||||||
"account.link_verified_on": "Bu linkin dəqiqliyi {date} tarixində yoxlanılıb",
|
"account.link_verified_on": "Bu linkin dəqiqliyi {date} tarixində yoxlanılıb",
|
||||||
"account.locked_info": "Bu hesabın məxfilik statusu kilidlənib. Hesabın sahibi onu kimin izləyə biləcəyini manual olaraq təyin edir.",
|
"account.locked_info": "Bu hesabın məxfilik statusu kilidlənib. Sahibi, onu kimin izləyə biləcəyini manual olaraq incələyir.",
|
||||||
"account.media": "Media",
|
"account.media": "Media",
|
||||||
"account.mention": "@{name} istifadəçisini teq et",
|
"account.mention": "@{name} istifadəçisini teq et",
|
||||||
"account.moved_to": "{name} onun yeni hesabının artıq bu olduğunu bildirdi:",
|
"account.moved_to": "{name} onun yeni hesabının artıq bu olduğunu bildirdi:",
|
||||||
@ -74,7 +74,7 @@
|
|||||||
"account.requested_follow": "{name} sizi izləmək sorğusu göndərib",
|
"account.requested_follow": "{name} sizi izləmək sorğusu göndərib",
|
||||||
"account.requests_to_follow_you": "Sizi izləmək istəyir",
|
"account.requests_to_follow_you": "Sizi izləmək istəyir",
|
||||||
"account.share": "@{name} profilini paylaş",
|
"account.share": "@{name} profilini paylaş",
|
||||||
"account.show_reblogs": "@{name} istifadəçisindən olan gücləndirmələri göstər",
|
"account.show_reblogs": "@{name} - təkrar paylaşımlarını göstər",
|
||||||
"account.statuses_counter": "{count, plural, one {{counter} paylaşım} other {{counter} paylaşım}}",
|
"account.statuses_counter": "{count, plural, one {{counter} paylaşım} other {{counter} paylaşım}}",
|
||||||
"account.unblock": "@{name} blokunu aç",
|
"account.unblock": "@{name} blokunu aç",
|
||||||
"account.unblock_domain": "{domain} domeninin blokunu aç",
|
"account.unblock_domain": "{domain} domeninin blokunu aç",
|
||||||
@ -117,7 +117,7 @@
|
|||||||
"annual_report.summary.followers.total": "Cəmi {count}",
|
"annual_report.summary.followers.total": "Cəmi {count}",
|
||||||
"annual_report.summary.here_it_is": "{year} icmalınız:",
|
"annual_report.summary.here_it_is": "{year} icmalınız:",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "ən çox sevilən postu",
|
"annual_report.summary.highlighted_post.by_favourites": "ən çox sevilən postu",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "ən çox gücləndirilən paylaşımı",
|
"annual_report.summary.highlighted_post.by_reblogs": "ən çox təkrar paylaşılan göndəriş",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "ən çox cavabı olan paylaşımı",
|
"annual_report.summary.highlighted_post.by_replies": "ən çox cavabı olan paylaşımı",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name} istifadəçisinin",
|
"annual_report.summary.highlighted_post.possessive": "{name} istifadəçisinin",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "ən çox istifadə etdiyi tətbiq",
|
"annual_report.summary.most_used_app.most_used_app": "ən çox istifadə etdiyi tətbiq",
|
||||||
@ -129,7 +129,7 @@
|
|||||||
"annual_report.summary.thanks": "Mastodonun bir parçası olduğunuz üçün təşəkkür edirik!",
|
"annual_report.summary.thanks": "Mastodonun bir parçası olduğunuz üçün təşəkkür edirik!",
|
||||||
"attachments_list.unprocessed": "(emal edilməyib)",
|
"attachments_list.unprocessed": "(emal edilməyib)",
|
||||||
"audio.hide": "Audionu gizlət",
|
"audio.hide": "Audionu gizlət",
|
||||||
"block_modal.remote_users_caveat": "Biz {domain} serverindən qərarınıza hörmət etməsini xahiş edəcəyik. Bununla belə, bəzi serverlər blokları fərqli şəkildə idarə edə bildiyi üçün uyğunluğa zəmanət verilmir. İctimai paylaşımlar hələ də daxil olmayan istifadəçilərə görünə bilər.",
|
"block_modal.remote_users_caveat": "{domain} serverindən qərarınıza hörmət etməsini xahiş edəcəyik. Ancaq, bəzi serverlər əngəlləmələri fərqli şəkildə idarə edə bilər deyə, qərarınıza uymağına zəmanət verilmir. Hər kəsə açıq göndərişlər, hələ də sistemə giriş etməmiş istifadəçilərə görünə bilər.",
|
||||||
"block_modal.show_less": "Daha az göstər",
|
"block_modal.show_less": "Daha az göstər",
|
||||||
"block_modal.show_more": "Daha çox göstər",
|
"block_modal.show_more": "Daha çox göstər",
|
||||||
"block_modal.they_cant_mention": "O səni teq edə bilməz və ya izləyə bilməz.",
|
"block_modal.they_cant_mention": "O səni teq edə bilməz və ya izləyə bilməz.",
|
||||||
@ -138,8 +138,8 @@
|
|||||||
"block_modal.title": "İstifadəçi bloklansın?",
|
"block_modal.title": "İstifadəçi bloklansın?",
|
||||||
"block_modal.you_wont_see_mentions": "Onu teq edən postları görməyəcəksən.",
|
"block_modal.you_wont_see_mentions": "Onu teq edən postları görməyəcəksən.",
|
||||||
"boost_modal.combo": "Növbəti dəfə bunu atlamaq üçün {combo} klikləyə bilərsən",
|
"boost_modal.combo": "Növbəti dəfə bunu atlamaq üçün {combo} klikləyə bilərsən",
|
||||||
"boost_modal.reblog": "Paylaşım gücləndirilsin?",
|
"boost_modal.reblog": "Paylaşım təkrar paylaşılsın?",
|
||||||
"boost_modal.undo_reblog": "Paylaşımın gücləndirilməsi ləğv edilsin?",
|
"boost_modal.undo_reblog": "Təkrar paylaşım ləğv edilsin?",
|
||||||
"bundle_column_error.copy_stacktrace": "Xəta hesabatını kopyala",
|
"bundle_column_error.copy_stacktrace": "Xəta hesabatını kopyala",
|
||||||
"bundle_column_error.error.body": "Tələb olunan səhifəni göstərmək mümkün olmadı. Bu, kodumuzdakı səhv və ya brauzer uyğunluğu problemi ilə bağlı ola bilər.",
|
"bundle_column_error.error.body": "Tələb olunan səhifəni göstərmək mümkün olmadı. Bu, kodumuzdakı səhv və ya brauzer uyğunluğu problemi ilə bağlı ola bilər.",
|
||||||
"bundle_column_error.error.title": "Ah, yox!",
|
"bundle_column_error.error.title": "Ah, yox!",
|
||||||
@ -240,7 +240,7 @@
|
|||||||
"confirmations.missing_alt_text.title": "Alternativ mətn əlavə edilsin?",
|
"confirmations.missing_alt_text.title": "Alternativ mətn əlavə edilsin?",
|
||||||
"confirmations.mute.confirm": "Səssizləşdir",
|
"confirmations.mute.confirm": "Səssizləşdir",
|
||||||
"confirmations.redraft.confirm": "Sil və qaralamaya köçür",
|
"confirmations.redraft.confirm": "Sil və qaralamaya köçür",
|
||||||
"confirmations.redraft.message": "Bu paylaşımı silmək və qaralamaya köçürmək istədiyinizə əminsiniz? Bəyənmələr və gücləndirmələr itəcək və orijinal paylaşıma olan cavablar tənha qalacaq.",
|
"confirmations.redraft.message": "Bu göndərişi silib yenidən qaralama kimi saxlamaq istədiyinizə əminsiniz? Sevimlilər və təkrar paylaşımlar silinəcək, orijinal göndərişə verilən cavablar isə əlaqəsiz qalacaq.",
|
||||||
"confirmations.redraft.title": "Paylaşım silinsin & qaralamaya köçürülsün?",
|
"confirmations.redraft.title": "Paylaşım silinsin & qaralamaya köçürülsün?",
|
||||||
"confirmations.remove_from_followers.confirm": "İzləyicini çıxart",
|
"confirmations.remove_from_followers.confirm": "İzləyicini çıxart",
|
||||||
"confirmations.remove_from_followers.message": "{name} sizi izləməyəcək. Davam etmək istədiyinizə əminsiniz?",
|
"confirmations.remove_from_followers.message": "{name} sizi izləməyəcək. Davam etmək istədiyinizə əminsiniz?",
|
||||||
@ -325,6 +325,12 @@
|
|||||||
"empty_column.followed_tags": "Heç bir heşteq izləmirsiniz. İzlədikdə burada görünəcək.",
|
"empty_column.followed_tags": "Heç bir heşteq izləmirsiniz. İzlədikdə burada görünəcək.",
|
||||||
"empty_column.hashtag": "Bu heşteqdə hələ ki, heç nə yoxdur.",
|
"empty_column.hashtag": "Bu heşteqdə hələ ki, heç nə yoxdur.",
|
||||||
"empty_column.notification_requests": "Hamısı hazırdır! Burada heç nə yoxdur. Yeni bildiriş aldığınız zaman, ayarlarınıza görə burada görünəcək.",
|
"empty_column.notification_requests": "Hamısı hazırdır! Burada heç nə yoxdur. Yeni bildiriş aldığınız zaman, ayarlarınıza görə burada görünəcək.",
|
||||||
|
"empty_column.notifications": "Hələ heç bir bildirişiniz yoxdur. Başqaları sizinlə qarşılıqlı əlaqə qurduğu zaman, onu burada görəcəksiniz.",
|
||||||
|
"empty_column.public": "Burada hələ heç nə yoxdur! Buranı doldurmaq üçün hər kəsə açıq bir şey yazın və ya digər serverlərdəki istifadəçiləri izləyin.",
|
||||||
|
"error.unexpected_crash.explanation": "Kodumuzdakı bir xətaya, ya da brauzer uyumluluq probleminə görə, bu səhifə düzgün nümayiş etdirilə bilmədi.",
|
||||||
|
"error.unexpected_crash.explanation_addons": "Bu səhifə düzgün nümayiş etdirilə bilmədi. Bu xəta, yəqin ki, brauzer əlavəsi və ya avtomatik tərcümə alətlərindən qaynaqlanır.",
|
||||||
|
"error.unexpected_crash.next_steps": "Səhifəni təzələməyi sınayın. Bu kömək etməzsə, Mastodon-u başqa bir brauzer və ya yerli tətbiq vasitəsilə istifadə edə bilərsiniz.",
|
||||||
|
"error.unexpected_crash.next_steps_addons": "Onları sıradan çıxartmağı və səhifəni təzələməyi sınayın. Bu kömək etməzsə, Mastodon-u başqa bir brauzer və ya yerli tətbiq vasitəsilə istifadə edə bilərsiniz.",
|
||||||
"errors.unexpected_crash.report_issue": "Problemi bildir",
|
"errors.unexpected_crash.report_issue": "Problemi bildir",
|
||||||
"explore.suggested_follows": "İnsanlar",
|
"explore.suggested_follows": "İnsanlar",
|
||||||
"explore.title": "Trendlər",
|
"explore.title": "Trendlər",
|
||||||
@ -345,9 +351,43 @@
|
|||||||
"filter_modal.added.settings_link": "ayarlar səhifəsi",
|
"filter_modal.added.settings_link": "ayarlar səhifəsi",
|
||||||
"filter_modal.added.short_explanation": "Bu göndəriş, aşağıdakı filtr kateqoriyasına əlavə edilib: {title}.",
|
"filter_modal.added.short_explanation": "Bu göndəriş, aşağıdakı filtr kateqoriyasına əlavə edilib: {title}.",
|
||||||
"filter_modal.added.title": "Filtr əlavə edilib!",
|
"filter_modal.added.title": "Filtr əlavə edilib!",
|
||||||
|
"filter_modal.select_filter.expired": "müddəti bitib",
|
||||||
|
"filter_modal.select_filter.prompt_new": "Yeni kateqoriya: {name}",
|
||||||
|
"filter_modal.select_filter.search": "Axtar və ya yarat",
|
||||||
|
"filter_modal.select_filter.subtitle": "Mövcud bir kateqoriyanı istifadə et, ya da yenisini yarat",
|
||||||
|
"filter_modal.select_filter.title": "Bu göndərişi filtrlə",
|
||||||
|
"filter_modal.title.status": "Bir göndərişi filtrlə",
|
||||||
"filter_warning.matches_filter": "“<span>{title}</span>” filtri ilə uyuşur",
|
"filter_warning.matches_filter": "“<span>{title}</span>” filtri ilə uyuşur",
|
||||||
|
"filtered_notifications_banner.title": "Filtrlənmiş bildirişlər",
|
||||||
|
"firehose.all": "Hamısı",
|
||||||
|
"firehose.local": "Bu server",
|
||||||
|
"firehose.remote": "Digər serverlər",
|
||||||
|
"follow_request.authorize": "Səlahiyyət ver",
|
||||||
|
"follow_request.reject": "Rədd et",
|
||||||
|
"follow_requests.unlocked_explanation": "Hesabınız kilidli olmasa da, {domain} heyəti bu hesabların izləmə tələblərini manual olaraq incələmək istəyə biləcəyinizi düşündü.",
|
||||||
|
"follow_suggestions.curated_suggestion": "Heyətin seçimi",
|
||||||
|
"follow_suggestions.dismiss": "Təkrar göstərmə",
|
||||||
|
"follow_suggestions.featured_longer": "{domain} komandası tərəfindən əllə seçildi",
|
||||||
|
"follow_suggestions.friends_of_friends_longer": "İzlədiyiniz insanlar arasında məşhur",
|
||||||
|
"follow_suggestions.hints.featured": "Bu profil {domain} komandası tərəfindən əllə seçilib.",
|
||||||
"follow_suggestions.hints.friends_of_friends": "Bu profil izlədiyiniz insanlar arasında populyardır.",
|
"follow_suggestions.hints.friends_of_friends": "Bu profil izlədiyiniz insanlar arasında populyardır.",
|
||||||
"follow_suggestions.hints.most_followed": "Bu profil {domain} serverində ən çox izlənilənlərdən biridir.",
|
"follow_suggestions.hints.most_followed": "Bu profil {domain} serverində ən çox izlənilənlərdən biridir.",
|
||||||
|
"follow_suggestions.hints.most_interactions": "Bu profil son zamanlar {domain} üzərində çox diqqət çəkir.",
|
||||||
|
"follow_suggestions.hints.similar_to_recently_followed": "Bu profil, son vaxtlar izlədiyiniz profillərə bənzəyir.",
|
||||||
|
"follow_suggestions.personalized_suggestion": "Fərdiləşdirilmiş təklif",
|
||||||
|
"follow_suggestions.popular_suggestion": "Məşhur təklif",
|
||||||
|
"follow_suggestions.popular_suggestion_longer": "{domain} üzərində məşhur",
|
||||||
|
"follow_suggestions.similar_to_recently_followed_longer": "Son zaman izlədiyiniz profillərə oxşar",
|
||||||
|
"follow_suggestions.view_all": "Hamısına bax",
|
||||||
|
"followed_tags": "İzlənilən mövzu etiketləri",
|
||||||
|
"footer.about": "Haqqında",
|
||||||
|
"footer.directory": "Profil kataloqu",
|
||||||
|
"footer.get_app": "Tətbiqi əldə et",
|
||||||
|
"footer.keyboard_shortcuts": "Klaviatura qısayolları",
|
||||||
|
"footer.privacy_policy": "Gizlilik siyasəti",
|
||||||
|
"footer.source_code": "Mənbə koduna bax",
|
||||||
|
"footer.status": "Status",
|
||||||
|
"footer.terms_of_service": "Xidmət şərtləri",
|
||||||
"generic.saved": "Saxlanıldı",
|
"generic.saved": "Saxlanıldı",
|
||||||
"getting_started.heading": "Başlayaq",
|
"getting_started.heading": "Başlayaq",
|
||||||
"hashtag.admin_moderation": "#{name} üçün moderasiya interfeysini aç",
|
"hashtag.admin_moderation": "#{name} üçün moderasiya interfeysini aç",
|
||||||
@ -365,19 +405,31 @@
|
|||||||
"hashtag.counter_by_accounts": "{count, plural, one {{counter} iştirakçı} other {{counter} iştirakçı}}",
|
"hashtag.counter_by_accounts": "{count, plural, one {{counter} iştirakçı} other {{counter} iştirakçı}}",
|
||||||
"hashtag.counter_by_uses": "{count, plural, one {{counter} göndəriş} other {{counter} göndəriş}}",
|
"hashtag.counter_by_uses": "{count, plural, one {{counter} göndəriş} other {{counter} göndəriş}}",
|
||||||
"hashtag.counter_by_uses_today": "Bu gün {count, plural, one {{counter} göndəriş} other {{counter} göndəriş}}",
|
"hashtag.counter_by_uses_today": "Bu gün {count, plural, one {{counter} göndəriş} other {{counter} göndəriş}}",
|
||||||
|
"hashtag.feature": "Profildə önə çıxart",
|
||||||
"hashtag.follow": "Mövzu etiketini izlə",
|
"hashtag.follow": "Mövzu etiketini izlə",
|
||||||
"hashtag.mute": "#{hashtag} - səssizə al",
|
"hashtag.mute": "#{hashtag} - səssizə al",
|
||||||
|
"hashtag.unfeature": "Profildə önə çıxarılmasın",
|
||||||
"hashtag.unfollow": "Mövzu etiketini izləmə",
|
"hashtag.unfollow": "Mövzu etiketini izləmə",
|
||||||
"hashtags.and_other": "…və daha {count, plural, one {}other {# ədəd}}",
|
"hashtags.and_other": "…və daha {count, plural, one {}other {# ədəd}}",
|
||||||
"hints.profiles.followers_may_be_missing": "Bu profilin izləyiciləri əskik ola bilər.",
|
"hints.profiles.followers_may_be_missing": "Bu profilin izləyiciləri əskik ola bilər.",
|
||||||
"hints.profiles.follows_may_be_missing": "Bu profilin izləyənləri əskik ola bilər.",
|
"hints.profiles.follows_may_be_missing": "Bu profilin izləyənləri əskik ola bilər.",
|
||||||
|
"hints.profiles.posts_may_be_missing": "Bu profilin bəzi göndərişləri əskik ola bilər.",
|
||||||
|
"hints.profiles.see_more_followers": "{domain} üzərində daha çox izləyici gör",
|
||||||
|
"hints.profiles.see_more_follows": "{domain} üzərində izlənilən gör",
|
||||||
|
"hints.profiles.see_more_posts": "{domain} üzərində daha çox göndəriş gör",
|
||||||
"home.column_settings.show_quotes": "Sitatları göstər",
|
"home.column_settings.show_quotes": "Sitatları göstər",
|
||||||
|
"home.column_settings.show_reblogs": "Təkrar paylaşmaları göstər",
|
||||||
"home.column_settings.show_replies": "Cavabları göstər",
|
"home.column_settings.show_replies": "Cavabları göstər",
|
||||||
"home.hide_announcements": "Elanları gizlət",
|
"home.hide_announcements": "Elanları gizlət",
|
||||||
"home.pending_critical_update.body": "Lütfən Mastodon serverinizi mümkün olan ən qısa müddətdə güncəlləyin!",
|
"home.pending_critical_update.body": "Lütfən Mastodon serverinizi mümkün olan ən qısa müddətdə güncəlləyin!",
|
||||||
"home.pending_critical_update.link": "Güncəlləmələrə bax",
|
"home.pending_critical_update.link": "Güncəlləmələrə bax",
|
||||||
"home.pending_critical_update.title": "Kritik güvənlik güncəlləməsi mövcuddur!",
|
"home.pending_critical_update.title": "Kritik güvənlik güncəlləməsi mövcuddur!",
|
||||||
"home.show_announcements": "Elanları göstər",
|
"home.show_announcements": "Elanları göstər",
|
||||||
|
"ignore_notifications_modal.disclaimer": "Mastodon, bildirişlərini yox saydığınız istifadəçiləri məlumatlandırmır. Bildirişləri yox saymaq, mesajların göndərilməsini dayandırmayacaq.",
|
||||||
|
"ignore_notifications_modal.filter_instead": "Əvəzinə filtrlə",
|
||||||
|
"ignore_notifications_modal.filter_to_act_users": "Hələ də istifadəçiləri qəbul edə, rədd edə və ya bildirə bilərsiniz",
|
||||||
|
"ignore_notifications_modal.filter_to_avoid_confusion": "Filtrləmə, mümkün çaşqınlığın qarşısını almağa kömək edir.",
|
||||||
|
"ignore_notifications_modal.filter_to_review_separately": "Filtrlənmiş bildirişləri ayrı-ayrı incələyə bilərsiniz",
|
||||||
"ignore_notifications_modal.ignore": "Bildirişləri yox say",
|
"ignore_notifications_modal.ignore": "Bildirişləri yox say",
|
||||||
"ignore_notifications_modal.limited_accounts_title": "Moderasiya edilmiş hesabların bildirişləri yox sayılsın?",
|
"ignore_notifications_modal.limited_accounts_title": "Moderasiya edilmiş hesabların bildirişləri yox sayılsın?",
|
||||||
"ignore_notifications_modal.new_accounts_title": "Yeni hesabların bildirişləri yox sayılsın?",
|
"ignore_notifications_modal.new_accounts_title": "Yeni hesabların bildirişləri yox sayılsın?",
|
||||||
@ -390,17 +442,71 @@
|
|||||||
"interaction_modal.action.reblog": "Davam etmək üçün hesabınızdan təkrar göndərməlisiniz.",
|
"interaction_modal.action.reblog": "Davam etmək üçün hesabınızdan təkrar göndərməlisiniz.",
|
||||||
"interaction_modal.action.reply": "Davam etmək üçün hesabınızdan cavab verməlisiniz.",
|
"interaction_modal.action.reply": "Davam etmək üçün hesabınızdan cavab verməlisiniz.",
|
||||||
"interaction_modal.action.vote": "Davam etmək üçün hesabınızdan səs verməlisiniz.",
|
"interaction_modal.action.vote": "Davam etmək üçün hesabınızdan səs verməlisiniz.",
|
||||||
|
"interaction_modal.title.reblog": "{name} - göndərişini təkrar paylaş",
|
||||||
|
"keyboard_shortcuts.boost": "Göndərişi təkrar paylaş",
|
||||||
"keyboard_shortcuts.profile": "Müəllifin profilini aç",
|
"keyboard_shortcuts.profile": "Müəllifin profilini aç",
|
||||||
"keyboard_shortcuts.reply": "Göndərişə cavab ver",
|
"keyboard_shortcuts.reply": "Göndərişə cavab ver",
|
||||||
|
"keyboard_shortcuts.toot": "Yeni bir göndəriş başlat",
|
||||||
|
"keyboard_shortcuts.translate": "bir göndərişi tərcümə etmək üçün",
|
||||||
|
"keyboard_shortcuts.unfocus": "Fokusu göndəriş yazma xanasından/axtarışdan götür",
|
||||||
|
"keyboard_shortcuts.up": "Siyahıda yuxarı daşı",
|
||||||
"learn_more_link.got_it": "Anladım",
|
"learn_more_link.got_it": "Anladım",
|
||||||
"learn_more_link.learn_more": "Daha ətraflı",
|
"learn_more_link.learn_more": "Daha ətraflı",
|
||||||
"lightbox.close": "Bağla",
|
"lightbox.close": "Bağla",
|
||||||
"lightbox.next": "Növbəti",
|
"lightbox.next": "Növbəti",
|
||||||
"lightbox.previous": "Əvvəlki",
|
"lightbox.previous": "Əvvəlki",
|
||||||
"lightbox.zoom_in": "Həqiqi ölçüyə qayıt",
|
"lightbox.zoom_in": "Həqiqi ölçüyə qayıt",
|
||||||
|
"lightbox.zoom_out": "Sığacaq şəkildə yaxınlaşdır",
|
||||||
"limited_account_hint.action": "Yenə də profili göstər",
|
"limited_account_hint.action": "Yenə də profili göstər",
|
||||||
"limited_account_hint.title": "Bu profil, {domain} moderatorları tərəfindən gizlədildi.",
|
"limited_account_hint.title": "Bu profil, {domain} moderatorları tərəfindən gizlədildi.",
|
||||||
|
"link_preview.author": "Müəllif: {name}",
|
||||||
|
"link_preview.more_from_author": "{name} - daha çox",
|
||||||
|
"link_preview.shares": "{count, plural, one {{counter} göndəriş} other {{counter} göndəriş}}",
|
||||||
|
"lists.add_member": "Əlavə et",
|
||||||
|
"lists.add_to_list": "Siyahıya əlavə et",
|
||||||
|
"lists.add_to_lists": "{name} - siyahılara əlavə et",
|
||||||
|
"lists.create": "Yarat",
|
||||||
|
"lists.create_a_list_to_organize": "Əsas ekran lentinizi təşkil etmək üçün yeni bir siyahı yaradın",
|
||||||
|
"lists.create_list": "Siyahı yarat",
|
||||||
|
"lists.delete": "Siyahını sil",
|
||||||
|
"lists.done": "Hazırdır",
|
||||||
|
"lists.edit": "Siyahıya düzəliş et",
|
||||||
|
"lists.exclusive": "Əsas ekranda üzvləri gizlət",
|
||||||
|
"lists.exclusive_hint": "Kimsə bu siyahıdadırsa, onun göndərişləri bir dəfədən çox görünməməsi üçün Əsas ekran lentində gizlədilir.",
|
||||||
|
"lists.find_users_to_add": "Əlavə ediləcək istifadəçiləri tap",
|
||||||
|
"lists.list_members_count": "{count, plural, one {# üzv} other {# üzv}}",
|
||||||
|
"lists.list_name": "Siyahı adı",
|
||||||
|
"lists.new_list_name": "Yeni siyahı adı",
|
||||||
|
"lists.no_lists_yet": "Hələ siyahı yoxdur.",
|
||||||
|
"lists.no_members_yet": "Hələ üzv yoxdur.",
|
||||||
|
"lists.no_results_found": "Heç bir nəticə tapılmadı.",
|
||||||
|
"lists.remove_member": "Çıxart",
|
||||||
|
"lists.replies_policy.followed": "İstənilən izlənilən istifadəçi",
|
||||||
|
"lists.replies_policy.list": "Siyahıdakı üzvlər",
|
||||||
|
"lists.replies_policy.none": "Heç kim",
|
||||||
|
"lists.save": "Saxla",
|
||||||
|
"lists.search": "Axtar",
|
||||||
|
"lists.show_replies_to": "Siyahı üzvlərinin cavablarını daxil et",
|
||||||
|
"load_pending": "{count, plural, one {# yeni element} other {# yeni element}}",
|
||||||
|
"loading_indicator.label": "Yüklənir…",
|
||||||
|
"media_gallery.hide": "Gizlət",
|
||||||
|
"moved_to_account_banner.text": "{disabledAccount} hesabınız, {movedToAccount} hesabına keçdiyiniz üçün hazırda sıradan çıxarılıb.",
|
||||||
|
"mute_modal.hide_from_notifications": "Bildirişlərdə gizlət",
|
||||||
|
"mute_modal.hide_options": "Seçimləri gizlət",
|
||||||
|
"mute_modal.indefinite": "Mən səsini açana qədər",
|
||||||
|
"mute_modal.show_options": "Seçimləri göstər",
|
||||||
|
"mute_modal.they_can_mention_and_follow": "Sizin adınızı çəkə və sizi izləyə bilər, ancaq siz onları görə bilməzsiniz.",
|
||||||
|
"mute_modal.they_wont_know": "Onlar, səssizə alındıqlarını bilməyəcəklər.",
|
||||||
|
"mute_modal.title": "İstifadəçi səssizə alınsın?",
|
||||||
|
"mute_modal.you_wont_see_mentions": "Onların adı çəkilən göndərişləri görməyəcəksiniz.",
|
||||||
|
"mute_modal.you_wont_see_posts": "Onlar hələ də göndərişlərinizi görə biləcək, ancaq onların göndərişlərini görməyəcəksiniz.",
|
||||||
|
"navigation_bar.about": "Haqqında",
|
||||||
"navigation_bar.account_settings": "Parol və təhlükəsizlik",
|
"navigation_bar.account_settings": "Parol və təhlükəsizlik",
|
||||||
|
"navigation_bar.advanced_interface": "Qabaqcıl veb interfeysində aç",
|
||||||
|
"navigation_bar.automated_deletion": "Göndərişin avtomatik silinməsi",
|
||||||
|
"navigation_bar.blocks": "Əngəllənmiş istifadəçilər",
|
||||||
|
"navigation_bar.follows_and_followers": "İzlənilənlər və izləyicilər",
|
||||||
|
"navigation_bar.import_export": "Daxilə və xaricə köçürmə",
|
||||||
"navigation_bar.moderation": "Moderasiya",
|
"navigation_bar.moderation": "Moderasiya",
|
||||||
"not_signed_in_indicator.not_signed_in": "Bu resursa erişmək üçün giriş etməlisiniz.",
|
"not_signed_in_indicator.not_signed_in": "Bu resursa erişmək üçün giriş etməlisiniz.",
|
||||||
"notification.moderation-warning.learn_more": "Daha ətraflı",
|
"notification.moderation-warning.learn_more": "Daha ətraflı",
|
||||||
@ -412,14 +518,36 @@
|
|||||||
"notification.moderation_warning.action_sensitive": "Göndərişləriniz artıq həssas olaraq işarələnəcək.",
|
"notification.moderation_warning.action_sensitive": "Göndərişləriniz artıq həssas olaraq işarələnəcək.",
|
||||||
"notification.moderation_warning.action_silence": "Hesabınız məhdudlaşdırılıb.",
|
"notification.moderation_warning.action_silence": "Hesabınız məhdudlaşdırılıb.",
|
||||||
"notification.moderation_warning.action_suspend": "Hesabınızın fəaliyyəti dayandırılıb.",
|
"notification.moderation_warning.action_suspend": "Hesabınızın fəaliyyəti dayandırılıb.",
|
||||||
|
"notification.reblog": "{name} göndərişinizi təkrar paylaşdı",
|
||||||
|
"notification.reblog.name_and_others_with_link": "{name} və <a>{count, plural, one {digər # nəfər} other {digər # nəfər}}</a> göndərişinizi təkrar paylaşdı",
|
||||||
|
"notification.relationships_severance_event.account_suspension": "{from} admini {target} fəaliyyətini dayandırıb, bu da o deməkdir ki, artıq onlardan güncəlləmələr ala və ya onlarla qarşılıqlı əlaqə qura bilməyəcəyiniz.",
|
||||||
|
"notification.relationships_severance_event.domain_block": "{target}, {from} admini tərəfindən əngəllənib, buna {followersCount} izləyiciniz və izlədiyiniz {followingCount, plural, one {# hesab} other {# hesab}} daxildir.",
|
||||||
|
"notification.relationships_severance_event.learn_more": "Daha ətraflı",
|
||||||
|
"notification.relationships_severance_event.user_domain_block": "{target} əngəlləmisiniz, bununla {followersCount} izləyiciniz və izlədiyiniz {followingCount, plural, one {# hesab} other {# hesab}} silinib.",
|
||||||
|
"notification.status": "{name} indicə paylaşdı",
|
||||||
|
"notification.update": "{name} bir göndərişə düzəliş etdi",
|
||||||
|
"notification_requests.accept": "Qəbul et",
|
||||||
"notification_requests.confirm_dismiss_multiple.message": "{count, plural, one {bir bildiriş sorğusunu} other {# bildiriş sorğusunu}} bağlamaq üzrəsiniz. {count, plural, one {Ona} other {Onlara}} yenidən asanlıqla erişə bilməyəcəksiniz. Davam etmək istədiyinizə əminsiniz?",
|
"notification_requests.confirm_dismiss_multiple.message": "{count, plural, one {bir bildiriş sorğusunu} other {# bildiriş sorğusunu}} bağlamaq üzrəsiniz. {count, plural, one {Ona} other {Onlara}} yenidən asanlıqla erişə bilməyəcəksiniz. Davam etmək istədiyinizə əminsiniz?",
|
||||||
|
"notification_requests.edit_selection": "Düzəliş et",
|
||||||
|
"notification_requests.exit_selection": "Hazırdır",
|
||||||
"notification_requests.explainer_for_limited_account": "Hesab, bir moderator tərəfindən məhdudlaşdırıldığı üçün bu hesabın bildirişləri filtrləndi.",
|
"notification_requests.explainer_for_limited_account": "Hesab, bir moderator tərəfindən məhdudlaşdırıldığı üçün bu hesabın bildirişləri filtrləndi.",
|
||||||
"notification_requests.explainer_for_limited_remote_account": "Hesab və ya onun serveri, bir moderator tərəfindən məhdudlaşdırıldığı üçün bu hesabın bildirişləri filtrləndi.",
|
"notification_requests.explainer_for_limited_remote_account": "Hesab və ya onun serveri, bir moderator tərəfindən məhdudlaşdırıldığı üçün bu hesabın bildirişləri filtrləndi.",
|
||||||
|
"notifications.column_settings.follow": "Yeni izləyicilər:",
|
||||||
|
"notifications.column_settings.reblog": "Təkrar paylaşmalar:",
|
||||||
|
"notifications.filter.boosts": "Təkrar paylaşmalar",
|
||||||
|
"notifications.filter.follows": "İzlənilənlər",
|
||||||
"notifications.filter.statuses": "İzlədiyiniz şəxslərdən güncəlləmələr",
|
"notifications.filter.statuses": "İzlədiyiniz şəxslərdən güncəlləmələr",
|
||||||
"notifications.policy.filter_limited_accounts_hint": "Server moderatorları tərəfindən məhdudlaşdırılıb",
|
"notifications.policy.filter_limited_accounts_hint": "Server moderatorları tərəfindən məhdudlaşdırılıb",
|
||||||
"notifications.policy.filter_limited_accounts_title": "Moderasiya edilmiş hesablar",
|
"notifications.policy.filter_limited_accounts_title": "Moderasiya edilmiş hesablar",
|
||||||
|
"onboarding.profile.discoverable": "Profilimi kəşf edilə bilən et",
|
||||||
|
"onboarding.profile.discoverable_hint": "Mastodon-da kəşf edilə bilməni aktivləşdirsəniz, göndərişləriniz axtarış nəticələrində və trendlərdə görünə bilər və profiliniz sizinlə oxşar maraqlara sahib şəxslərə təklif edilə bilər.",
|
||||||
|
"onboarding.profile.display_name": "Ekran adı",
|
||||||
|
"onboarding.profile.note_hint": "Digər insanların @adını_çəkə və ya #mövzu_etiketləri istifadə edə bilərsiniz…",
|
||||||
|
"onboarding.profile.title": "Profili ayarla",
|
||||||
"password_confirmation.exceeds_maxlength": "Parol təsdiqi, maksimum parol uzunluğunu aşır",
|
"password_confirmation.exceeds_maxlength": "Parol təsdiqi, maksimum parol uzunluğunu aşır",
|
||||||
"password_confirmation.mismatching": "Parol təsdiqi uyuşmur",
|
"password_confirmation.mismatching": "Parol təsdiqi uyuşmur",
|
||||||
|
"privacy.private.long": "Yalnız izləyiciləriniz",
|
||||||
|
"privacy.private.short": "İzləyicilər",
|
||||||
"privacy_policy.last_updated": "Son güncəlləmə {date}",
|
"privacy_policy.last_updated": "Son güncəlləmə {date}",
|
||||||
"report.category.subtitle": "Ən çox uyuşanı seçin",
|
"report.category.subtitle": "Ən çox uyuşanı seçin",
|
||||||
"report_notification.categories.spam_sentence": "spam",
|
"report_notification.categories.spam_sentence": "spam",
|
||||||
@ -465,6 +593,8 @@
|
|||||||
"status.admin_status": "Moderasiya interfeysində bu göndərişi aç",
|
"status.admin_status": "Moderasiya interfeysində bu göndərişi aç",
|
||||||
"status.block": "Əngəllə: @{name}",
|
"status.block": "Əngəllə: @{name}",
|
||||||
"status.bookmark": "Əlfəcin",
|
"status.bookmark": "Əlfəcin",
|
||||||
|
"status.cancel_reblog_private": "Təkrar paylaşımı geri al",
|
||||||
|
"status.cannot_reblog": "Bu göndəriş təkrar paylaşıla bilməz",
|
||||||
"status.context.load_new_replies": "Yeni cavablar mövcuddur",
|
"status.context.load_new_replies": "Yeni cavablar mövcuddur",
|
||||||
"status.context.loading": "Daha çox cavab yoxlanılır",
|
"status.context.loading": "Daha çox cavab yoxlanılır",
|
||||||
"status.delete": "Sil",
|
"status.delete": "Sil",
|
||||||
@ -491,6 +621,11 @@
|
|||||||
"status.quote_error.not_available": "Göndəriş əlçatmazdır",
|
"status.quote_error.not_available": "Göndəriş əlçatmazdır",
|
||||||
"status.quote_error.pending_approval": "Göndəriş gözləmədədir",
|
"status.quote_error.pending_approval": "Göndəriş gözləmədədir",
|
||||||
"status.read_more": "Daha çoxunu oxu",
|
"status.read_more": "Daha çoxunu oxu",
|
||||||
|
"status.reblog": "Təkrar paylaş",
|
||||||
|
"status.reblog_private": "Orijinal görünmə ilə təkrar paylaş",
|
||||||
|
"status.reblogged_by": "{name} təkrar paylaşdı",
|
||||||
|
"status.reblogs": "{count, plural, one {təkrar paylaşma} other {təkrar paylaşma}}",
|
||||||
|
"status.reblogs.empty": "Hələ heç kim bu göndərişi təkrar paylaşmayıb. Kimsə paylaşdığı zaman, burada görünəcək.",
|
||||||
"status.remove_bookmark": "Əlfəcini sil",
|
"status.remove_bookmark": "Əlfəcini sil",
|
||||||
"status.remove_favourite": "Sevimlilərdən sil",
|
"status.remove_favourite": "Sevimlilərdən sil",
|
||||||
"status.replied_to": "Cavab verildi: {name}",
|
"status.replied_to": "Cavab verildi: {name}",
|
||||||
|
|||||||
@ -115,25 +115,25 @@
|
|||||||
"annual_report.summary.archetype.replier": "Душа кампаніі",
|
"annual_report.summary.archetype.replier": "Душа кампаніі",
|
||||||
"annual_report.summary.followers.followers": "падпісчыкі",
|
"annual_report.summary.followers.followers": "падпісчыкі",
|
||||||
"annual_report.summary.followers.total": "Агулам {count}",
|
"annual_report.summary.followers.total": "Агулам {count}",
|
||||||
"annual_report.summary.here_it_is": "Вось вашы вынікі {year} за год:",
|
"annual_report.summary.here_it_is": "Вось Вашы вынікі {year} за год:",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "самы ўпадабаны допіс",
|
"annual_report.summary.highlighted_post.by_favourites": "самы ўпадабаны допіс",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "самы пашыраны допіс",
|
"annual_report.summary.highlighted_post.by_reblogs": "самы пашыраны допіс",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "самы каментаваны допіс",
|
"annual_report.summary.highlighted_post.by_replies": "самы каментаваны допіс",
|
||||||
"annual_report.summary.highlighted_post.possessive": "{name}",
|
"annual_report.summary.highlighted_post.possessive": "{name}",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "праграма, якой карысталіся часцей",
|
"annual_report.summary.most_used_app.most_used_app": "праграма, якой карысталіся найчасцей",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "хэштэг, якім карысталіся часцей",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "хэштэг, якім карысталіся найчасцей",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Няма",
|
"annual_report.summary.most_used_hashtag.none": "Няма",
|
||||||
"annual_report.summary.new_posts.new_posts": "новыя допісы",
|
"annual_report.summary.new_posts.new_posts": "новыя допісы",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>З-за гэтага, вы знаходзіцеся ў топе</topLabel><percentage></percentage><bottomLabel> карыстальнікаў {domain}.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Гэта падымае Вас у топ</topLabel><percentage></percentage><bottomLabel> карыстальнікаў {domain}.</bottomLabel>",
|
||||||
"annual_report.summary.percentile.we_wont_tell_bernie": "КДБ пра гэта не даведаецца.",
|
"annual_report.summary.percentile.we_wont_tell_bernie": "КДБ пра гэта не даведаецца.",
|
||||||
"annual_report.summary.thanks": "Дзякуй за ўдзел у Mastodon!",
|
"annual_report.summary.thanks": "Дзякуй за ўдзел у Mastodon!",
|
||||||
"attachments_list.unprocessed": "(неапрацаваны)",
|
"attachments_list.unprocessed": "(неапрацаваны)",
|
||||||
"audio.hide": "Схаваць аўдыя",
|
"audio.hide": "Схаваць аўдыя",
|
||||||
"block_modal.remote_users_caveat": "Мы папросім сервер {domain} паважаць ваш выбар. Аднак гэта не гарантуецца, паколькі некаторыя серверы могуць апрацоўваць блакіроўкі іншым чынам. Публічныя паведамленні могуць заставацца бачнымі для ананімных карыстальнікаў.",
|
"block_modal.remote_users_caveat": "Мы папросім сервер {domain} паважаць Ваш выбар. Аднак гэта не гарантуецца, паколькі некаторыя серверы могуць апрацоўваць блакіроўкі іншым чынам. Публічныя паведамленні могуць заставацца бачнымі для ананімных карыстальнікаў.",
|
||||||
"block_modal.show_less": "Паказаць меньш",
|
"block_modal.show_less": "Паказаць меньш",
|
||||||
"block_modal.show_more": "Паказаць больш",
|
"block_modal.show_more": "Паказаць больш",
|
||||||
"block_modal.they_cant_mention": "Карыстальнік не зможа згадваць або сачыць за вамі.",
|
"block_modal.they_cant_mention": "Карыстальнік не зможа згадваць або сачыць за вамі.",
|
||||||
"block_modal.they_cant_see_posts": "Карыстальнік не будзе бачыць вашых допісаў, а вы — карыстальніка.",
|
"block_modal.they_cant_see_posts": "Карыстальнік не будзе бачыць Вашых допісаў, а Вы — ягоных.",
|
||||||
"block_modal.they_will_know": "Карыстальнік убачыць, што адбылася блакіроўка.",
|
"block_modal.they_will_know": "Карыстальнік убачыць, што адбылася блакіроўка.",
|
||||||
"block_modal.title": "Заблакіраваць карыстальніка?",
|
"block_modal.title": "Заблакіраваць карыстальніка?",
|
||||||
"block_modal.you_wont_see_mentions": "Вы не ўбачыце паведамленняў са згадваннем карыстальніка.",
|
"block_modal.you_wont_see_mentions": "Вы не ўбачыце паведамленняў са згадваннем карыстальніка.",
|
||||||
@ -162,7 +162,7 @@
|
|||||||
"column.bookmarks": "Закладкі",
|
"column.bookmarks": "Закладкі",
|
||||||
"column.community": "Лакальная стужка",
|
"column.community": "Лакальная стужка",
|
||||||
"column.create_list": "Стварыць спіс",
|
"column.create_list": "Стварыць спіс",
|
||||||
"column.direct": "Асабістыя згадванні",
|
"column.direct": "Прыватныя згадванні",
|
||||||
"column.directory": "Праглядзець профілі",
|
"column.directory": "Праглядзець профілі",
|
||||||
"column.domain_blocks": "Заблакіраваныя дамены",
|
"column.domain_blocks": "Заблакіраваныя дамены",
|
||||||
"column.edit_list": "Рэдагаваць спіс",
|
"column.edit_list": "Рэдагаваць спіс",
|
||||||
@ -217,7 +217,7 @@
|
|||||||
"confirmations.delete.message": "Вы ўпэўненыя, што хочаце выдаліць гэты допіс?",
|
"confirmations.delete.message": "Вы ўпэўненыя, што хочаце выдаліць гэты допіс?",
|
||||||
"confirmations.delete.title": "Выдаліць допіс?",
|
"confirmations.delete.title": "Выдаліць допіс?",
|
||||||
"confirmations.delete_list.confirm": "Выдаліць",
|
"confirmations.delete_list.confirm": "Выдаліць",
|
||||||
"confirmations.delete_list.message": "Вы ўпэўненыя, што хочаце беззваротна выдаліць гэты чарнавік?",
|
"confirmations.delete_list.message": "Вы ўпэўненыя, што хочаце беззваротна выдаліць гэты спіс?",
|
||||||
"confirmations.delete_list.title": "Выдаліць спіс?",
|
"confirmations.delete_list.title": "Выдаліць спіс?",
|
||||||
"confirmations.discard_draft.confirm": "Адмовіцца і працягнуць",
|
"confirmations.discard_draft.confirm": "Адмовіцца і працягнуць",
|
||||||
"confirmations.discard_draft.edit.cancel": "Працягнуць рэдагаванне",
|
"confirmations.discard_draft.edit.cancel": "Працягнуць рэдагаванне",
|
||||||
@ -225,7 +225,7 @@
|
|||||||
"confirmations.discard_draft.edit.title": "Адмовіцца ад змен у Вашым допісе?",
|
"confirmations.discard_draft.edit.title": "Адмовіцца ад змен у Вашым допісе?",
|
||||||
"confirmations.discard_draft.post.cancel": "Працягнуць чарнавік",
|
"confirmations.discard_draft.post.cancel": "Працягнуць чарнавік",
|
||||||
"confirmations.discard_draft.post.message": "Калі працягнуць, то допіс, які Вы зараз пішаце, не будзе апублікаваны.",
|
"confirmations.discard_draft.post.message": "Калі працягнуць, то допіс, які Вы зараз пішаце, не будзе апублікаваны.",
|
||||||
"confirmations.discard_draft.post.title": "Выдаліць чарнавік?",
|
"confirmations.discard_draft.post.title": "Скасаваць чарнавік?",
|
||||||
"confirmations.discard_edit_media.confirm": "Адмяніць",
|
"confirmations.discard_edit_media.confirm": "Адмяніць",
|
||||||
"confirmations.discard_edit_media.message": "У вас ёсць незахаваныя змены ў апісанні або прэв'ю, усе роўна скасаваць іх?",
|
"confirmations.discard_edit_media.message": "У вас ёсць незахаваныя змены ў апісанні або прэв'ю, усе роўна скасаваць іх?",
|
||||||
"confirmations.follow_to_list.confirm": "Падпісацца і дадаць у спіс",
|
"confirmations.follow_to_list.confirm": "Падпісацца і дадаць у спіс",
|
||||||
@ -261,7 +261,7 @@
|
|||||||
"copy_icon_button.copied": "Скапіявана ў буфер абмену",
|
"copy_icon_button.copied": "Скапіявана ў буфер абмену",
|
||||||
"copypaste.copied": "Скапіравана",
|
"copypaste.copied": "Скапіравана",
|
||||||
"copypaste.copy_to_clipboard": "Скапіяваць у буфер абмену",
|
"copypaste.copy_to_clipboard": "Скапіяваць у буфер абмену",
|
||||||
"directory.federated": "З вядомага федэсвету",
|
"directory.federated": "З вядомага федэральнага сусвету",
|
||||||
"directory.local": "Толькі з {domain}",
|
"directory.local": "Толькі з {domain}",
|
||||||
"directory.new_arrivals": "Новыя карыстальнікі",
|
"directory.new_arrivals": "Новыя карыстальнікі",
|
||||||
"directory.recently_active": "Нядаўна актыўныя",
|
"directory.recently_active": "Нядаўна актыўныя",
|
||||||
@ -269,7 +269,7 @@
|
|||||||
"disabled_account_banner.text": "Ваш уліковы запіс {disabledAccount} часова адключаны.",
|
"disabled_account_banner.text": "Ваш уліковы запіс {disabledAccount} часова адключаны.",
|
||||||
"dismissable_banner.community_timeline": "Гэта самыя апошнія допісы ад людзей, уліковыя запісы якіх размяшчаюцца на {domain}.",
|
"dismissable_banner.community_timeline": "Гэта самыя апошнія допісы ад людзей, уліковыя запісы якіх размяшчаюцца на {domain}.",
|
||||||
"dismissable_banner.dismiss": "Адхіліць",
|
"dismissable_banner.dismiss": "Адхіліць",
|
||||||
"dismissable_banner.public_timeline": "Вось апошнія публічныя допісы ад карыстальнікаў fediverse на якіх падпісаны карыстальнікі {domain}.",
|
"dismissable_banner.public_timeline": "Вось апошнія публічныя допісы ад карыстальнікаў федэральнага сусвету, на якіх падпісаныя карыстальнікі {domain}.",
|
||||||
"domain_block_modal.block": "Заблакіраваць сервер",
|
"domain_block_modal.block": "Заблакіраваць сервер",
|
||||||
"domain_block_modal.block_account_instead": "Заблакіраваць @{name} замест гэтага",
|
"domain_block_modal.block_account_instead": "Заблакіраваць @{name} замест гэтага",
|
||||||
"domain_block_modal.they_can_interact_with_old_posts": "Людзі з гэтага сервера змогуць узаемадзейнічаць з вашымі старымі допісамі.",
|
"domain_block_modal.they_can_interact_with_old_posts": "Людзі з гэтага сервера змогуць узаемадзейнічаць з вашымі старымі допісамі.",
|
||||||
@ -287,12 +287,12 @@
|
|||||||
"domain_pill.their_username": "Унікальны ідэнтыфікатар карыстальніка на серверы. Можна знайсці карыстальнікаў з аднолькавым іменем карыстальніка на розных серверах.",
|
"domain_pill.their_username": "Унікальны ідэнтыфікатар карыстальніка на серверы. Можна знайсці карыстальнікаў з аднолькавым іменем карыстальніка на розных серверах.",
|
||||||
"domain_pill.username": "Імя карыстальніка",
|
"domain_pill.username": "Імя карыстальніка",
|
||||||
"domain_pill.whats_in_a_handle": "Што такое ідэнтыфікатар карыстальніка?",
|
"domain_pill.whats_in_a_handle": "Што такое ідэнтыфікатар карыстальніка?",
|
||||||
"domain_pill.who_they_are": "Паколькі ідэнтыфікатары кажуць аб тым, хто гэты чалавек і якім серверам ён карыстаецца, вы можаце ўзаемадзейнічаць з карыстальнікамі <button> платформ, якія падтрымліваюць ActivityPub</button>.",
|
"domain_pill.who_they_are": "Паколькі ідэнтыфікатары кажуць аб тым, хто гэты чалавек і якім серверам ён карыстаецца, Вы можаце ўзаемадзейнічаць з карыстальнікамі <button> платформ, якія падтрымліваюць ActivityPub</button>.",
|
||||||
"domain_pill.who_you_are": "Паколькі ваш ідэнтыфікатар кажа аб тым, хто вы і дзе знаходзіцеся, людзі могуць узаемадзейнічаць з вамі ў сацыяльнай сетцы <button> на платформах, якія падтрымліваюць ActivityPub</button>.",
|
"domain_pill.who_you_are": "Паколькі Ваш ідэнтыфікатар кажа аб тым, хто Вы і дзе знаходзіцеся, людзі могуць узаемадзейнічаць з вамі ў сацыяльнай сетцы <button> на платформах, якія падтрымліваюць ActivityPub</button>.",
|
||||||
"domain_pill.your_handle": "Ваш ідэнтыфікатар:",
|
"domain_pill.your_handle": "Ваш ідэнтыфікатар:",
|
||||||
"domain_pill.your_server": "Ваш лічбавы дом, дзе захоўваюцца ўсе вашыя допісы. Не падабаецца гэты сервер? Змяніце сервер у любы час з захаваннем сваіх падпісчыкаў.",
|
"domain_pill.your_server": "Ваш лічбавы дом, дзе захоўваюцца ўсе вашыя допісы. Не падабаецца гэты сервер? Змяніце сервер у любы час з захаваннем сваіх падпісчыкаў.",
|
||||||
"domain_pill.your_username": "Ваш унікальны ідэнтыфікатар на гэтым серверы. Можна знайсці карыстальнікаў з аднолькавым іменем карыстальніка на розных серверах.",
|
"domain_pill.your_username": "Ваш унікальны ідэнтыфікатар на гэтым серверы. Можна знайсці карыстальнікаў з аднолькавым іменем карыстальніка на розных серверах.",
|
||||||
"embed.instructions": "Убудуйце гэты пост на свой сайт, скапіраваўшы прыведзены ніжэй код",
|
"embed.instructions": "Убудуйце гэты допіс на свой сайт, скапіраваўшы прыведзены ніжэй код.",
|
||||||
"embed.preview": "Вось як гэта будзе выглядаць:",
|
"embed.preview": "Вось як гэта будзе выглядаць:",
|
||||||
"emoji_button.activity": "Актыўнасць",
|
"emoji_button.activity": "Актыўнасць",
|
||||||
"emoji_button.clear": "Ачысціць",
|
"emoji_button.clear": "Ачысціць",
|
||||||
@ -304,39 +304,39 @@
|
|||||||
"emoji_button.not_found": "Адпаведныя эмодзі не знойдзены",
|
"emoji_button.not_found": "Адпаведныя эмодзі не знойдзены",
|
||||||
"emoji_button.objects": "Прадметы",
|
"emoji_button.objects": "Прадметы",
|
||||||
"emoji_button.people": "Людзі",
|
"emoji_button.people": "Людзі",
|
||||||
"emoji_button.recent": "Чата выкарыстаныя",
|
"emoji_button.recent": "Часта выкарыстоўваемыя",
|
||||||
"emoji_button.search": "Пошук...",
|
"emoji_button.search": "Пошук...",
|
||||||
"emoji_button.search_results": "Вынікі пошуку",
|
"emoji_button.search_results": "Вынікі пошуку",
|
||||||
"emoji_button.symbols": "Сімвалы",
|
"emoji_button.symbols": "Сімвалы",
|
||||||
"emoji_button.travel": "Падарожжы і месцы",
|
"emoji_button.travel": "Падарожжы і месцы",
|
||||||
"empty_column.account_featured.me": "Вы яшчэ нічога не паказалі. Ці ведалі Вы, што ў сваім профілі Вы можаце паказаць свае хэштэгі, якім найбольш карыстаецеся, і нават профілі сваіх сяброў?",
|
"empty_column.account_featured.me": "Вы яшчэ нічога не паказалі. Ці ведалі Вы, што ў сваім профілі Вы можаце паказаць свае хэштэгі, якімі найбольш карыстаецеся, і нават профілі сваіх сяброў?",
|
||||||
"empty_column.account_featured.other": "{acct} яшчэ нічога не паказаў. Ці ведалі Вы, што ў сваім профілі Вы можаце паказаць свае хэштэгі, якім найбольш карыстаецеся, і нават профілі сваіх сяброў?",
|
"empty_column.account_featured.other": "{acct} яшчэ нічога не паказаў. Ці ведалі Вы, што ў сваім профілі Вы можаце паказаць свае хэштэгі, якімі найбольш карыстаецеся, і нават профілі сваіх сяброў?",
|
||||||
"empty_column.account_featured_other.unknown": "Гэты профіль яшчэ нічога не паказаў.",
|
"empty_column.account_featured_other.unknown": "Гэты ўліковы запіс яшчэ нічога не паказаў.",
|
||||||
"empty_column.account_hides_collections": "Гэты карыстальнік вырашыў схаваць гэтую інфармацыю",
|
"empty_column.account_hides_collections": "Гэты карыстальнік вырашыў схаваць гэтую інфармацыю",
|
||||||
"empty_column.account_suspended": "Уліковы запіс прыпынены",
|
"empty_column.account_suspended": "Уліковы запіс прыпынены",
|
||||||
"empty_column.account_timeline": "Тут няма допісаў!",
|
"empty_column.account_timeline": "Тут няма допісаў!",
|
||||||
"empty_column.account_unavailable": "Профіль недаступны",
|
"empty_column.account_unavailable": "Профіль недаступны",
|
||||||
"empty_column.blocks": "Вы яшчэ нікога не заблакіравалі.",
|
"empty_column.blocks": "Вы яшчэ нікога не заблакіравалі.",
|
||||||
"empty_column.bookmarked_statuses": "У вашых закладках яшчэ няма допісаў. Калі вы дадасце закладку, яна з’явіцца тут.",
|
"empty_column.bookmarked_statuses": "У Вашых закладках яшчэ няма допісаў. Калі Вы дадасце закладку, яна з’явіцца тут.",
|
||||||
"empty_column.community": "Мясцовая стужка пустая. Напішыце нешта публічнае, каб разварушыць справу!",
|
"empty_column.community": "Мясцовая стужка пустая. Напішыце нешта публічнае, каб разварушыць справу!",
|
||||||
"empty_column.direct": "Пакуль у вас няма асабістых згадванняў. Калі вы дашляце або атрымаеце штосьці, яно з’явіцца тут.",
|
"empty_column.direct": "Пакуль у Вас няма асабістых згадванняў. Калі Вы дашляце або атрымаеце штосьці, яно з’явіцца тут.",
|
||||||
"empty_column.domain_blocks": "Заблакіраваных даменаў пакуль няма.",
|
"empty_column.domain_blocks": "Заблакіраваных даменаў пакуль няма.",
|
||||||
"empty_column.explore_statuses": "Зараз не ў трэндзе. Праверце пазней",
|
"empty_column.explore_statuses": "Зараз не ў трэндзе. Праверце пазней",
|
||||||
"empty_column.favourited_statuses": "Вы яшчэ не ўпадабалі ніводны допіс. Калі гэта адбудзецца, вы ўбачыце яго тут.",
|
"empty_column.favourited_statuses": "Вы яшчэ не ўпадабалі ніводны допіс. Калі гэта адбудзецца, Вы ўбачыце яго тут.",
|
||||||
"empty_column.favourites": "Ніхто яшчэ не ўпадабаў гэты допіс. Калі гэта адбудзецца, вы ўбачыце гэтых людзей тут.",
|
"empty_column.favourites": "Ніхто яшчэ не ўпадабаў гэты допіс. Калі гэта адбудзецца, Вы ўбачыце гэтых людзей тут.",
|
||||||
"empty_column.follow_requests": "У вас яшчэ няма запытаў на падпіску. Калі вы атрымаеце запыт, ён з’явіцца тут.",
|
"empty_column.follow_requests": "У Вас яшчэ няма запытаў на падпіску. Калі Вы атрымаеце запыт, ён з’явіцца тут.",
|
||||||
"empty_column.followed_tags": "Вы пакуль не падпісаны ні на адзін хэштэг. Калі падпішацеся, яны з’явяцца тут.",
|
"empty_column.followed_tags": "Вы пакуль не падпісаны ні на адзін хэштэг. Калі падпішацеся, яны з’явяцца тут.",
|
||||||
"empty_column.hashtag": "Па гэтаму хэштэгу пакуль што нічога няма.",
|
"empty_column.hashtag": "Па гэтаму хэштэгу пакуль што нічога няма.",
|
||||||
"empty_column.home": "Галоўная стужка пустая! Падпішыцеся на іншых людзей, каб запоўніць яе. {suggestions}",
|
"empty_column.home": "Галоўная стужка пустая! Падпішыцеся на іншых людзей, каб запоўніць яе. {suggestions}",
|
||||||
"empty_column.list": "У гэтым спісе пакуль што нічога няма. Калі члены лісту апублікуюць новыя запісы, яны з'явяцца тут.",
|
"empty_column.list": "У гэтым спісе пакуль што нічога няма. Калі члены спіса апублікуюць новыя запісы, яны з'явяцца тут.",
|
||||||
"empty_column.mutes": "Вы яшчэ нікога не ігнаруеце.",
|
"empty_column.mutes": "Вы яшчэ нікога не ігнаруеце.",
|
||||||
"empty_column.notification_requests": "Чысціня! Тут нічога няма. Калі вы будзеце атрымліваць новыя апавяшчэння, яны будуць з'яўляцца тут у адпаведнасці з вашымі наладамі.",
|
"empty_column.notification_requests": "Чысціня! Тут нічога няма. Калі Вы будзеце атрымліваць новыя апавяшчэнні, яны будуць з'яўляцца тут у адпаведнасці з Вашымі наладамі.",
|
||||||
"empty_column.notifications": "У вас няма ніякіх апавяшчэнняў. Калі іншыя людзі ўзаемадзейнічаюць з вамі, вы ўбачыце гэта тут.",
|
"empty_column.notifications": "У Вас няма ніякіх апавяшчэнняў. Калі іншыя людзі захочуць узаемадзейнічаць з Вамі, Вы ўбачыце гэта тут.",
|
||||||
"empty_column.public": "Тут нічога няма! Апублікуйце што-небудзь, або падпішыцеся на карыстальнікаў з другіх сервераў",
|
"empty_column.public": "Тут нічога няма! Апублікуйце што-небудзь, або падпішыцеся на карыстальнікаў з другіх сервераў",
|
||||||
"error.unexpected_crash.explanation": "Гэта старонка не можа быць адлюстравана карэктна з-за памылкі ў нашым кодзе, або праблемы з сумяшчальнасцю браўзера.",
|
"error.unexpected_crash.explanation": "Гэта старонка не можа быць адлюстравана карэктна з-за памылкі ў нашым кодзе, або праблемы з сумяшчальнасцю браўзера.",
|
||||||
"error.unexpected_crash.explanation_addons": "Гэтая старонка не можа быць адлюстравана карэктна. Верагодна, гэтая памылка выклікана дадатковым кампанентам браўзера або інструментамі аўтаматычнага перакладу",
|
"error.unexpected_crash.explanation_addons": "Гэтая старонка не можа быць адлюстравана карэктна. Верагодна, гэтая памылка выкліканая дадатковым кампанентам браўзера або інструментамі аўтаматычнага перакладу.",
|
||||||
"error.unexpected_crash.next_steps": "Паспрабуйце абнавіць старонку. Калі гэта не дапаможа, вы можаце паспрабаваць іншы браўзер, альбо выкарыстаць усталяваную праграму.",
|
"error.unexpected_crash.next_steps": "Паспрабуйце абнавіць старонку. Калі гэта не дапаможа, Вы можаце паспрабаваць іншы браўзер, альбо выкарыстаць усталяваную праграму.",
|
||||||
"error.unexpected_crash.next_steps_addons": "Паспрабуйце выключыць іх і абнавіць старонку. Калі гэта не дапамагае, вы ўсё яшчэ можаце карыстацца Mastodon праз іншы браўзер ці натыўную праграму.",
|
"error.unexpected_crash.next_steps_addons": "Паспрабуйце выключыць іх і абнавіць старонку. Калі гэта не дапамагае, Вы ўсё яшчэ можаце карыстацца Mastodon праз іншы браўзер ці асобную праграму.",
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Дадаць дыягнастычны стэк у буфер абмену",
|
"errors.unexpected_crash.copy_stacktrace": "Дадаць дыягнастычны стэк у буфер абмену",
|
||||||
"errors.unexpected_crash.report_issue": "Паведаміць аб праблеме",
|
"errors.unexpected_crash.report_issue": "Паведаміць аб праблеме",
|
||||||
"explore.suggested_follows": "Людзі",
|
"explore.suggested_follows": "Людзі",
|
||||||
@ -349,14 +349,14 @@
|
|||||||
"featured_carousel.post": "Допіс",
|
"featured_carousel.post": "Допіс",
|
||||||
"featured_carousel.previous": "Назад",
|
"featured_carousel.previous": "Назад",
|
||||||
"featured_carousel.slide": "{index} з {total}",
|
"featured_carousel.slide": "{index} з {total}",
|
||||||
"filter_modal.added.context_mismatch_explanation": "Гэтая катэгорыя фільтра не прымяняецца да кантэксту, у якім вы адкрылі гэты пост. Калі вы хочаце, каб паведамленне таксама было адфільтравана ў гэтым кантэксце, вам трэба будзе адрэдагаваць фільтр",
|
"filter_modal.added.context_mismatch_explanation": "Гэтая катэгорыя фільтра не прымяняецца да кантэксту, у якім Вы адкрылі гэты допіс. Калі Вы хочаце, каб паведамленне таксама было адфільтраванае ў гэтым кантэксце, Вам трэба будзе адрэдагаваць фільтр.",
|
||||||
"filter_modal.added.context_mismatch_title": "Неадпаведны кантэкст!",
|
"filter_modal.added.context_mismatch_title": "Неадпаведны кантэкст!",
|
||||||
"filter_modal.added.expired_explanation": "Тэрмін дзеяння гэтай катэгорыі фільтраў скончыўся, вам трэба будзе змяніць дату заканчэння тэрміну дзеяння, каб яна прымянялася",
|
"filter_modal.added.expired_explanation": "Тэрмін дзеяння гэтай катэгорыі фільтраў скончыўся, вам трэба будзе змяніць дату заканчэння тэрміну дзеяння, каб яна прымянялася",
|
||||||
"filter_modal.added.expired_title": "Пратэрмінаваны фільтр!",
|
"filter_modal.added.expired_title": "Пратэрмінаваны фільтр!",
|
||||||
"filter_modal.added.review_and_configure": "Для прагляду і наступнай канфігурацыі фільтра катэгорый, перайдзіце на {settings_link}.",
|
"filter_modal.added.review_and_configure": "Для прагляду і наступнай канфігурацыі фільтра катэгорый, перайдзіце на {settings_link}.",
|
||||||
"filter_modal.added.review_and_configure_title": "Налады фільтра",
|
"filter_modal.added.review_and_configure_title": "Налады фільтра",
|
||||||
"filter_modal.added.settings_link": "старонка наладаў",
|
"filter_modal.added.settings_link": "старонка наладаў",
|
||||||
"filter_modal.added.short_explanation": "Гэты пост быў дабаўлены ў катэгорыю з наступным фільтрам: {title}.",
|
"filter_modal.added.short_explanation": "Гэты допіс быў дададзены ў катэгорыю з наступным фільтрам: {title}.",
|
||||||
"filter_modal.added.title": "Фільтр дабаўлены!",
|
"filter_modal.added.title": "Фільтр дабаўлены!",
|
||||||
"filter_modal.select_filter.context_mismatch": "Не мае дачынення да кантэксту ",
|
"filter_modal.select_filter.context_mismatch": "Не мае дачынення да кантэксту ",
|
||||||
"filter_modal.select_filter.expired": "пратэрмінавана",
|
"filter_modal.select_filter.expired": "пратэрмінавана",
|
||||||
@ -366,27 +366,27 @@
|
|||||||
"filter_modal.select_filter.title": "Фільтраваць гэты допіс",
|
"filter_modal.select_filter.title": "Фільтраваць гэты допіс",
|
||||||
"filter_modal.title.status": "Фільтраваць допіс",
|
"filter_modal.title.status": "Фільтраваць допіс",
|
||||||
"filter_warning.matches_filter": "Адпавядае фільтру \"<span>{title}</span>\"",
|
"filter_warning.matches_filter": "Адпавядае фільтру \"<span>{title}</span>\"",
|
||||||
"filtered_notifications_banner.pending_requests": "Ад {count, plural, =0 {# людзей якіх} one {# чалавека якіх} few {# чалавек якіх} many {# людзей якіх} other {# чалавека якіх}} вы магчыма ведаеце",
|
"filtered_notifications_banner.pending_requests": "Ад {count, plural, =0 {# людзей якіх} one {# чалавека якіх} few {# чалавек якіх} many {# людзей якіх} other {# чалавека якіх}} Вы магчыма ведаеце",
|
||||||
"filtered_notifications_banner.title": "Адфільтраваныя апавяшчэнні",
|
"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.curated_suggestion": "Выбар адміністрацыі",
|
||||||
"follow_suggestions.dismiss": "Не паказваць зноў",
|
"follow_suggestions.dismiss": "Не паказваць зноў",
|
||||||
"follow_suggestions.featured_longer": "Адабраныя камандай {domain} уручную",
|
"follow_suggestions.featured_longer": "Адабраныя камандай {domain} уручную",
|
||||||
"follow_suggestions.friends_of_friends_longer": "Папулярнае сярод людзей, на якіх Вы падпісаны",
|
"follow_suggestions.friends_of_friends_longer": "Папулярнае сярод людзей, на якіх Вы падпісаныя",
|
||||||
"follow_suggestions.hints.featured": "Гэты профіль быў выбраны ўручную камандай {domain}.",
|
"follow_suggestions.hints.featured": "Гэты профіль быў выбраны ўручную камандай {domain}.",
|
||||||
"follow_suggestions.hints.friends_of_friends": "Гэты профіль папулярны сярод людзей, на якіх вы падпісаліся.",
|
"follow_suggestions.hints.friends_of_friends": "Гэты профіль папулярны сярод людзей, на якіх Вы падпісаліся.",
|
||||||
"follow_suggestions.hints.most_followed": "Гэты профіль - адзін з профіляў з самай вялікай колькасцю падпісак на {domain}.",
|
"follow_suggestions.hints.most_followed": "Гэты профіль - адзін з профіляў з самай вялікай колькасцю падпісак на {domain}.",
|
||||||
"follow_suggestions.hints.most_interactions": "У апошні час гэты профіль прыцягвае шмат увагі на {domain}.",
|
"follow_suggestions.hints.most_interactions": "У апошні час гэты профіль прыцягвае шмат увагі на {domain}.",
|
||||||
"follow_suggestions.hints.similar_to_recently_followed": "Гэты профіль падобны на профілі, на якія вы нядаўна падпісаліся.",
|
"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.popular_suggestion_longer": "Папулярнае на {domain}",
|
"follow_suggestions.popular_suggestion_longer": "Папулярнае на {domain}",
|
||||||
"follow_suggestions.similar_to_recently_followed_longer": "Падобныя профілі, за якімі вы нядаўна сачылі",
|
"follow_suggestions.similar_to_recently_followed_longer": "Падобныя профілі, за якімі Вы нядаўна сачылі",
|
||||||
"follow_suggestions.view_all": "Праглядзець усё",
|
"follow_suggestions.view_all": "Праглядзець усё",
|
||||||
"follow_suggestions.who_to_follow": "На каго падпісацца",
|
"follow_suggestions.who_to_follow": "На каго падпісацца",
|
||||||
"followed_tags": "Падпіскі",
|
"followed_tags": "Падпіскі",
|
||||||
@ -435,7 +435,7 @@
|
|||||||
"home.pending_critical_update.link": "Прагледзець абнаўленні",
|
"home.pending_critical_update.link": "Прагледзець абнаўленні",
|
||||||
"home.pending_critical_update.title": "Даступна крытычнае абнаўленне бяспекі!",
|
"home.pending_critical_update.title": "Даступна крытычнае абнаўленне бяспекі!",
|
||||||
"home.show_announcements": "Паказаць аб'явы",
|
"home.show_announcements": "Паказаць аб'явы",
|
||||||
"ignore_notifications_modal.disclaimer": "Mastodon не можа паведамляць карыстальнікам, што вы праігнаравалі апавяшчэнні ад іх. Ігнараванне апавяшчэнняў не спыніць адпраўку саміх паведамленняў.",
|
"ignore_notifications_modal.disclaimer": "Mastodon не можа паведамляць карыстальнікам, што Вы праігнаравалі апавяшчэнні ад іх. Ігнараванне апавяшчэнняў не спыніць адпраўку саміх паведамленняў.",
|
||||||
"ignore_notifications_modal.filter_instead": "Замест гэтага адфільтраваць",
|
"ignore_notifications_modal.filter_instead": "Замест гэтага адфільтраваць",
|
||||||
"ignore_notifications_modal.filter_to_act_users": "Вы па-ранейшаму зможаце прымаць, адхіляць ці скардзіцца на карыстальнікаў",
|
"ignore_notifications_modal.filter_to_act_users": "Вы па-ранейшаму зможаце прымаць, адхіляць ці скардзіцца на карыстальнікаў",
|
||||||
"ignore_notifications_modal.filter_to_avoid_confusion": "Выкарыстанне фільтраў дапамагае пазбягаць патэнцыйнай блытаніны",
|
"ignore_notifications_modal.filter_to_avoid_confusion": "Выкарыстанне фільтраў дапамагае пазбягаць патэнцыйнай блытаніны",
|
||||||
@ -444,15 +444,15 @@
|
|||||||
"ignore_notifications_modal.limited_accounts_title": "Ігнараваць апавяшчэнні ад уліковых запісаў пад мадэрацыяй?",
|
"ignore_notifications_modal.limited_accounts_title": "Ігнараваць апавяшчэнні ад уліковых запісаў пад мадэрацыяй?",
|
||||||
"ignore_notifications_modal.new_accounts_title": "Ігнараваць апавяшчэнні ад новых уліковых запісаў?",
|
"ignore_notifications_modal.new_accounts_title": "Ігнараваць апавяшчэнні ад новых уліковых запісаў?",
|
||||||
"ignore_notifications_modal.not_followers_title": "Ігнараваць апавяшчэнні ад людзей, якія не падпісаныя на вас?",
|
"ignore_notifications_modal.not_followers_title": "Ігнараваць апавяшчэнні ад людзей, якія не падпісаныя на вас?",
|
||||||
"ignore_notifications_modal.not_following_title": "Ігнараваць апавяшчэнні ад людзей на якіх вы не падпісаны?",
|
"ignore_notifications_modal.not_following_title": "Ігнараваць апавяшчэнні ад людзей, на якіх Вы не падпісаныя?",
|
||||||
"ignore_notifications_modal.private_mentions_title": "Ігнараваць апавяшчэнні пра непажаданыя асабістыя згадванні?",
|
"ignore_notifications_modal.private_mentions_title": "Ігнараваць апавяшчэнні пра непажаданыя прыватныя згадванні?",
|
||||||
"info_button.label": "Даведка",
|
"info_button.label": "Даведка",
|
||||||
"info_button.what_is_alt_text": "<h1>Што такое альтэрнатыўны тэкст?</h1> <p>Альтэрнатыўны тэкст апісвае відарыс людзям з парушэннем зроку, павольным злучэннем або тым, каму патрэбны дадатковы кантэкст.</p> <p>Вы можаце зрабіць відарыс больш дасяжным і зразумелым для ўсіх, напісаўшы зразумелы, сціслы і аб'ектыўны альтэрнатыўны тэкст.</p> <ul><li>Ахоплівайце важныя элементы</li> <li>Тлумачце тэкст на відарысе</li> <li>Карыстайцеся звычайнымі сказамі</li> <li>Пазбягайце залішняй інфармацыі</li> <li>Засяроджвайцеся на тэндэнцыях і ключавых высновах у цяжкіх для разумення візуальных матэрыялах (напрыклад, дыяграмах або картах)</li></ul>",
|
"info_button.what_is_alt_text": "<h1>Што такое альтэрнатыўны тэкст?</h1> <p>Альтэрнатыўны тэкст апісвае відарыс людзям з парушэннем зроку, павольным злучэннем або тым, каму патрэбны дадатковы кантэкст.</p> <p>Вы можаце зрабіць відарыс больш дасяжным і зразумелым для ўсіх, напісаўшы зразумелы, сціслы і аб'ектыўны альтэрнатыўны тэкст.</p> <ul><li>Ахоплівайце важныя элементы</li> <li>Тлумачце тэкст на відарысе</li> <li>Карыстайцеся звычайнымі сказамі</li> <li>Пазбягайце залішняй інфармацыі</li> <li>Засяроджвайцеся на тэндэнцыях і ключавых высновах у цяжкіх для разумення візуальных матэрыялах (напрыклад, дыяграмах або картах)</li></ul>",
|
||||||
"interaction_modal.action.favourite": "Каб працягнуць, вы мусіце ўпадабаць нешта са свайго ўліковага запісу.",
|
"interaction_modal.action.favourite": "Каб працягнуць, Вы мусіце ўпадабаць нешта са свайго ўліковага запісу.",
|
||||||
"interaction_modal.action.follow": "Каб працягнуць, вы мусіце падпісацца на некага са свайго ўліковага запісу.",
|
"interaction_modal.action.follow": "Каб працягнуць, Вы мусіце падпісацца на некага са свайго ўліковага запісу.",
|
||||||
"interaction_modal.action.reblog": "Каб працягнуць, Вам трэба пашырыць допіс са свайго профілю.",
|
"interaction_modal.action.reblog": "Каб працягнуць, Вам трэба пашырыць допіс са свайго ўліковага запісу.",
|
||||||
"interaction_modal.action.reply": "Каб працягнуць, Вам трэба адказаць са свайго профілю.",
|
"interaction_modal.action.reply": "Каб працягнуць, Вам трэба адказаць са свайго ўліковага запісу.",
|
||||||
"interaction_modal.action.vote": "Каб працягнуць, Вам трэба прагаласаваць са свайго профілю.",
|
"interaction_modal.action.vote": "Каб працягнуць, Вам трэба прагаласаваць са свайго ўліковага запісу.",
|
||||||
"interaction_modal.go": "Перайсці",
|
"interaction_modal.go": "Перайсці",
|
||||||
"interaction_modal.no_account_yet": "Не маеце ўліковага запісу?",
|
"interaction_modal.no_account_yet": "Не маеце ўліковага запісу?",
|
||||||
"interaction_modal.on_another_server": "На іншым серверы",
|
"interaction_modal.on_another_server": "На іншым серверы",
|
||||||
@ -499,7 +499,7 @@
|
|||||||
"keyboard_shortcuts.toggle_sensitivity": "Паказаць/схаваць медыя",
|
"keyboard_shortcuts.toggle_sensitivity": "Паказаць/схаваць медыя",
|
||||||
"keyboard_shortcuts.toot": "Стварыць новы допіс",
|
"keyboard_shortcuts.toot": "Стварыць новы допіс",
|
||||||
"keyboard_shortcuts.translate": "каб перакласці допіс",
|
"keyboard_shortcuts.translate": "каб перакласці допіс",
|
||||||
"keyboard_shortcuts.unfocus": "Расфакусаваць тэкставую вобласць/пошукавы радок",
|
"keyboard_shortcuts.unfocus": "Расфакусіраваць тэкставую вобласць/пошукавы радок",
|
||||||
"keyboard_shortcuts.up": "Перамясціцца ўверх па спісе",
|
"keyboard_shortcuts.up": "Перамясціцца ўверх па спісе",
|
||||||
"learn_more_link.got_it": "Зразумеў(-ла)",
|
"learn_more_link.got_it": "Зразумеў(-ла)",
|
||||||
"learn_more_link.learn_more": "Падрабязней",
|
"learn_more_link.learn_more": "Падрабязней",
|
||||||
@ -509,7 +509,7 @@
|
|||||||
"lightbox.zoom_in": "Маштабаваць да фактычнага памеру",
|
"lightbox.zoom_in": "Маштабаваць да фактычнага памеру",
|
||||||
"lightbox.zoom_out": "Дапасаваць усё змесціва пад памеры экрана",
|
"lightbox.zoom_out": "Дапасаваць усё змесціва пад памеры экрана",
|
||||||
"limited_account_hint.action": "Усе роўна паказваць профіль",
|
"limited_account_hint.action": "Усе роўна паказваць профіль",
|
||||||
"limited_account_hint.title": "Гэты профіль быў схаваны мадэратарамі",
|
"limited_account_hint.title": "Гэты профіль быў схаваны мадэратарамі {domain}.",
|
||||||
"link_preview.author": "Ад {name}",
|
"link_preview.author": "Ад {name}",
|
||||||
"link_preview.more_from_author": "Больш ад {name}",
|
"link_preview.more_from_author": "Больш ад {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} допіс} few {{counter} допісы} many {{counter} допісаў} other {{counter} допісу}}",
|
"link_preview.shares": "{count, plural, one {{counter} допіс} few {{counter} допісы} many {{counter} допісаў} other {{counter} допісу}}",
|
||||||
@ -532,7 +532,7 @@
|
|||||||
"lists.no_members_yet": "Пакуль няма ўдзельнікаў.",
|
"lists.no_members_yet": "Пакуль няма ўдзельнікаў.",
|
||||||
"lists.no_results_found": "Нічога не знойдзена.",
|
"lists.no_results_found": "Нічога не знойдзена.",
|
||||||
"lists.remove_member": "Выдаліць",
|
"lists.remove_member": "Выдаліць",
|
||||||
"lists.replies_policy.followed": "Любы карыстальнік, на якога вы падпісаліся",
|
"lists.replies_policy.followed": "Любы карыстальнік, на якога Вы падпісаліся",
|
||||||
"lists.replies_policy.list": "Удзельнікі гэтага спісу",
|
"lists.replies_policy.list": "Удзельнікі гэтага спісу",
|
||||||
"lists.replies_policy.none": "Нікога",
|
"lists.replies_policy.none": "Нікога",
|
||||||
"lists.save": "Захаваць",
|
"lists.save": "Захаваць",
|
||||||
@ -541,16 +541,16 @@
|
|||||||
"load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}",
|
"load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}",
|
||||||
"loading_indicator.label": "Ідзе загрузка…",
|
"loading_indicator.label": "Ідзе загрузка…",
|
||||||
"media_gallery.hide": "Схаваць",
|
"media_gallery.hide": "Схаваць",
|
||||||
"moved_to_account_banner.text": "Ваш уліковы запіс {disabledAccount} зараз адключаны таму што вы перанесены на {movedToAccount}.",
|
"moved_to_account_banner.text": "Ваш уліковы запіс {disabledAccount} зараз адключаны, таму што Вы перайшлі на {movedToAccount}.",
|
||||||
"mute_modal.hide_from_notifications": "Схаваць з апавяшчэнняў",
|
"mute_modal.hide_from_notifications": "Схаваць з апавяшчэнняў",
|
||||||
"mute_modal.hide_options": "Схаваць опцыі",
|
"mute_modal.hide_options": "Схаваць опцыі",
|
||||||
"mute_modal.indefinite": "Пакуль я не прыбяру ігнараванне",
|
"mute_modal.indefinite": "Пакуль я не прыбяру ігнараванне",
|
||||||
"mute_modal.show_options": "Паказаць опцыі",
|
"mute_modal.show_options": "Паказаць опцыі",
|
||||||
"mute_modal.they_can_mention_and_follow": "Карыстальнік зможа згадваць вас і падпісацца на вас, але вы гэтага не ўбачыце.",
|
"mute_modal.they_can_mention_and_follow": "Карыстальнік зможа згадваць Вас і падпісацца на Вас, але Вы гэтага не ўбачыце.",
|
||||||
"mute_modal.they_wont_know": "Карыстальнік не будзе ведаць пра ігнараванне.",
|
"mute_modal.they_wont_know": "Карыстальнік не будзе ведаць пра ігнараванне.",
|
||||||
"mute_modal.title": "Ігнараваць карыстальніка?",
|
"mute_modal.title": "Ігнараваць карыстальніка?",
|
||||||
"mute_modal.you_wont_see_mentions": "Вы не ўбачыце паведамленняў са згадваннем карыстальніка.",
|
"mute_modal.you_wont_see_mentions": "Вы не ўбачыце паведамленняў са згадваннем карыстальніка.",
|
||||||
"mute_modal.you_wont_see_posts": "Карыстальнік па-ранейшаму будзе бачыць вашыя паведамленні, але вы не будзеце паведамленні карыстальніка.",
|
"mute_modal.you_wont_see_posts": "Карыстальнік па-ранейшаму будзе бачыць Вашыя допісы, але Вы не будзеце бачыць ягоныя.",
|
||||||
"navigation_bar.about": "Пра нас",
|
"navigation_bar.about": "Пра нас",
|
||||||
"navigation_bar.account_settings": "Пароль і бяспека",
|
"navigation_bar.account_settings": "Пароль і бяспека",
|
||||||
"navigation_bar.administration": "Адміністрацыя",
|
"navigation_bar.administration": "Адміністрацыя",
|
||||||
@ -558,7 +558,7 @@
|
|||||||
"navigation_bar.automated_deletion": "Аўтаматычнае выдаленне допісаў",
|
"navigation_bar.automated_deletion": "Аўтаматычнае выдаленне допісаў",
|
||||||
"navigation_bar.blocks": "Заблакіраваныя карыстальнікі",
|
"navigation_bar.blocks": "Заблакіраваныя карыстальнікі",
|
||||||
"navigation_bar.bookmarks": "Закладкі",
|
"navigation_bar.bookmarks": "Закладкі",
|
||||||
"navigation_bar.direct": "Асабістыя згадванні",
|
"navigation_bar.direct": "Прыватныя згадванні",
|
||||||
"navigation_bar.domain_blocks": "Заблакіраваныя дамены",
|
"navigation_bar.domain_blocks": "Заблакіраваныя дамены",
|
||||||
"navigation_bar.favourites": "Упадабанае",
|
"navigation_bar.favourites": "Упадабанае",
|
||||||
"navigation_bar.filters": "Ігнараваныя словы",
|
"navigation_bar.filters": "Ігнараваныя словы",
|
||||||
@ -609,22 +609,22 @@
|
|||||||
"notification.mentioned_you": "{name} згадаў вас",
|
"notification.mentioned_you": "{name} згадаў вас",
|
||||||
"notification.moderation-warning.learn_more": "Даведацца больш",
|
"notification.moderation-warning.learn_more": "Даведацца больш",
|
||||||
"notification.moderation_warning": "Вы атрымалі папярэджанне ад мадэратараў",
|
"notification.moderation_warning": "Вы атрымалі папярэджанне ад мадэратараў",
|
||||||
"notification.moderation_warning.action_delete_statuses": "Некаторыя вашыя допісы былі выдаленыя.",
|
"notification.moderation_warning.action_delete_statuses": "Некаторыя Вашыя допісы былі выдаленыя.",
|
||||||
"notification.moderation_warning.action_disable": "Ваш уліковы запіс быў адключаны.",
|
"notification.moderation_warning.action_disable": "Ваш уліковы запіс быў адключаны.",
|
||||||
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Некаторыя з вашых допісаў былі пазначаныя як далікатныя.",
|
"notification.moderation_warning.action_mark_statuses_as_sensitive": "Некаторыя з вашых допісаў былі пазначаныя як далікатныя.",
|
||||||
"notification.moderation_warning.action_none": "Ваш уліковы запіс атрымаў папярэджанне ад мадэратараў.",
|
"notification.moderation_warning.action_none": "Ваш уліковы запіс атрымаў папярэджанне ад мадэратараў.",
|
||||||
"notification.moderation_warning.action_sensitive": "З гэтага моманту вашыя допісы будуць пазначаныя як далікатныя.",
|
"notification.moderation_warning.action_sensitive": "З гэтага моманту вашыя допісы будуць пазначаныя як далікатныя.",
|
||||||
"notification.moderation_warning.action_silence": "Ваш уліковы запіс быў абмежаваны.",
|
"notification.moderation_warning.action_silence": "Ваш уліковы запіс быў абмежаваны.",
|
||||||
"notification.moderation_warning.action_suspend": "Ваш уліковы запіс быў прыпынены.",
|
"notification.moderation_warning.action_suspend": "Ваш уліковы запіс быў заблакіраваны.",
|
||||||
"notification.own_poll": "Ваша апытанне скончылася",
|
"notification.own_poll": "Ваша апытанне скончылася",
|
||||||
"notification.poll": "Апытанне, дзе вы прынялі ўдзел, скончылася",
|
"notification.poll": "Апытанне, дзе Вы прынялі ўдзел, скончылася",
|
||||||
"notification.reblog": "{name} пашырыў ваш допіс",
|
"notification.reblog": "{name} пашырыў ваш допіс",
|
||||||
"notification.reblog.name_and_others_with_link": "{name} і <a>{count, plural, one {# іншы} many {# іншых} other {# іншых}}</a> пашырылі ваш допіс",
|
"notification.reblog.name_and_others_with_link": "{name} і <a>{count, plural, one {# іншы} many {# іншых} other {# іншых}}</a> пашырылі ваш допіс",
|
||||||
"notification.relationships_severance_event": "Страціў сувязь з {name}",
|
"notification.relationships_severance_event": "Страціў сувязь з {name}",
|
||||||
"notification.relationships_severance_event.account_suspension": "Адміністратар з {from} прыпыніў працу {target}, што азначае, што вы больш не можаце атрымліваць ад іх абнаўлення ці ўзаемадзейнічаць з імі.",
|
"notification.relationships_severance_event.account_suspension": "Адміністратар з {from} прыпыніў працу ўліковага запісу {target}, што азначае, што Вы больш не можаце атрымліваць ад іх абнаўленні ці ўзаемадзейнічаць з імі.",
|
||||||
"notification.relationships_severance_event.domain_block": "Адміністратар з {from} заблакіраваў {target}, у тым ліку {followersCount} вашых падпісчыка(-аў) і {followingCount, plural, one {# уліковы запіс} few {# уліковыя запісы} many {# уліковых запісаў} other {# уліковых запісаў}}.",
|
"notification.relationships_severance_event.domain_block": "Адміністратар з {from} заблакіраваў {target}, у тым ліку {followersCount} вашых падпісчыка(-аў) і {followingCount, plural, one {# уліковы запіс} few {# уліковыя запісы} many {# уліковых запісаў} other {# уліковых запісаў}}.",
|
||||||
"notification.relationships_severance_event.learn_more": "Даведацца больш",
|
"notification.relationships_severance_event.learn_more": "Даведацца больш",
|
||||||
"notification.relationships_severance_event.user_domain_block": "Вы заблакіравалі {target} выдаліўшы {followersCount} сваіх падпісчыкаў і {followingCount, plural, one {# уліковы запіс} few {# уліковыя запісы} many {# уліковых запісаў} other {# уліковых запісаў}}, за якімі вы сочыце.",
|
"notification.relationships_severance_event.user_domain_block": "Вы заблакіравалі {target} выдаліўшы {followersCount} сваіх падпісчыкаў і {followingCount, plural, one {# уліковы запіс} few {# уліковыя запісы} many {# уліковых запісаў} other {# уліковых запісаў}}, за якімі Вы сочыце.",
|
||||||
"notification.status": "Новы допіс ад {name}",
|
"notification.status": "Новы допіс ад {name}",
|
||||||
"notification.update": "Допіс {name} адрэдагаваны",
|
"notification.update": "Допіс {name} адрэдагаваны",
|
||||||
"notification_requests.accept": "Прыняць",
|
"notification_requests.accept": "Прыняць",
|
||||||
@ -639,8 +639,8 @@
|
|||||||
"notification_requests.dismiss_multiple": "{count, plural,one {Адмовіцца ад запыту…} other {Адмовіцца ад запытаў…}}",
|
"notification_requests.dismiss_multiple": "{count, plural,one {Адмовіцца ад запыту…} other {Адмовіцца ад запытаў…}}",
|
||||||
"notification_requests.edit_selection": "Рэдагаваць",
|
"notification_requests.edit_selection": "Рэдагаваць",
|
||||||
"notification_requests.exit_selection": "Гатова",
|
"notification_requests.exit_selection": "Гатова",
|
||||||
"notification_requests.explainer_for_limited_account": "Апавяшчэнне з гэтага профілю было адфільтраванае, бо гэты профіль абмежаваў мадэратар.",
|
"notification_requests.explainer_for_limited_account": "Апавяшчэнне з гэтага ўліковага запісу было адфільтраванае, бо гэты ўліковы запіс абмежаваў мадэратар.",
|
||||||
"notification_requests.explainer_for_limited_remote_account": "Апавяшчэнні з гэтага профілю былі адфільтраваныя, бо гэты профіль абмежаваў мадэратар.",
|
"notification_requests.explainer_for_limited_remote_account": "Апавяшчэнні з гэтага ўліковага запісу былі адфільтраваныя, бо гэты ўліковы запіс абмежаваў мадэратар.",
|
||||||
"notification_requests.maximize": "Разгарнуць",
|
"notification_requests.maximize": "Разгарнуць",
|
||||||
"notification_requests.minimize_banner": "Згарнуць банер адфільтраваных апавяшчэнняў",
|
"notification_requests.minimize_banner": "Згарнуць банер адфільтраваных апавяшчэнняў",
|
||||||
"notification_requests.notifications_from": "Апавяшчэнні ад {name}",
|
"notification_requests.notifications_from": "Апавяшчэнні ад {name}",
|
||||||
@ -675,7 +675,7 @@
|
|||||||
"notifications.filter.follows": "Падпісаны на",
|
"notifications.filter.follows": "Падпісаны на",
|
||||||
"notifications.filter.mentions": "Згадванні",
|
"notifications.filter.mentions": "Згадванні",
|
||||||
"notifications.filter.polls": "Вынікі апытання",
|
"notifications.filter.polls": "Вынікі апытання",
|
||||||
"notifications.filter.statuses": "Навіны ад людзей, на якіх вы падпісаны",
|
"notifications.filter.statuses": "Навіны ад людзей, на якіх Вы падпісаныя",
|
||||||
"notifications.grant_permission": "Дазволіць.",
|
"notifications.grant_permission": "Дазволіць.",
|
||||||
"notifications.group": "{count} Апавяшчэнняў",
|
"notifications.group": "{count} Апавяшчэнняў",
|
||||||
"notifications.mark_as_read": "Пазначыць усе апавяшчэнні як прачытаныя",
|
"notifications.mark_as_read": "Пазначыць усе апавяшчэнні як прачытаныя",
|
||||||
@ -695,20 +695,20 @@
|
|||||||
"notifications.policy.filter_not_followers_hint": "Уключаючы людзей, якія падпісаны на вас менш, чым {days, plural, one {# дзень} few {# дні} many {# дзён} other {# дня}}",
|
"notifications.policy.filter_not_followers_hint": "Уключаючы людзей, якія падпісаны на вас менш, чым {days, plural, one {# дзень} few {# дні} many {# дзён} other {# дня}}",
|
||||||
"notifications.policy.filter_not_followers_title": "Людзі, якія не падпісаны на вас",
|
"notifications.policy.filter_not_followers_title": "Людзі, якія не падпісаны на вас",
|
||||||
"notifications.policy.filter_not_following_hint": "Пакуль вы не пацвердзіце іх уручную",
|
"notifications.policy.filter_not_following_hint": "Пакуль вы не пацвердзіце іх уручную",
|
||||||
"notifications.policy.filter_not_following_title": "Людзі, на якіх вы не падпісаны",
|
"notifications.policy.filter_not_following_title": "Людзі, на якіх Вы не падпісаныя",
|
||||||
"notifications.policy.filter_private_mentions_hint": "Фільтруецца за выключэннем адказу на вашае згадванне ці калі вы падпісаны на адпраўніка",
|
"notifications.policy.filter_private_mentions_hint": "Фільтруецца, за выключэннем адказу на Вашае згадванне ці калі Вы падпісаныя на адпраўніка",
|
||||||
"notifications.policy.filter_private_mentions_title": "Непажаданыя асаблівыя згадванні",
|
"notifications.policy.filter_private_mentions_title": "Непажаданыя прыватныя згадванні",
|
||||||
"notifications.policy.title": "Наладзіць апавяшчэнні ад…",
|
"notifications.policy.title": "Наладзіць апавяшчэнні ад…",
|
||||||
"notifications_permission_banner.enable": "Уключыць апавяшчэнні на працоўным стале",
|
"notifications_permission_banner.enable": "Уключыць апавяшчэнні на працоўным стале",
|
||||||
"notifications_permission_banner.how_to_control": "Каб атрымліваць апавяшчэнні, калі Mastodon не адкрыты, уключыце апавяшчэнні працоўнага стала. Вы зможаце дакладна кантраляваць, якія падзеі будуць ствараць апавяшчэнні з дапамогай {icon} кнопкі, як толькі яны будуць уключаны.",
|
"notifications_permission_banner.how_to_control": "Каб атрымліваць апавяшчэнні, калі Mastodon не адкрыты, уключыце апавяшчэнні працоўнага стала. Вы зможаце дакладна кантраляваць, якія падзеі будуць ствараць апавяшчэнні з дапамогай {icon} кнопкі, як толькі яны будуць уключаны.",
|
||||||
"notifications_permission_banner.title": "Не прапусціце нічога",
|
"notifications_permission_banner.title": "Не прапусціце нічога",
|
||||||
"onboarding.follows.back": "Назад",
|
"onboarding.follows.back": "Назад",
|
||||||
"onboarding.follows.done": "Гатова",
|
"onboarding.follows.done": "Гатова",
|
||||||
"onboarding.follows.empty": "На жаль, зараз немагчыма паказаць вынікі. Вы можаце паспрабаваць выкарыстоўваць пошук і праглядзець старонку агляду, каб знайсці людзей, на якіх можна падпісацца, або паўтарыце спробу пазней.",
|
"onboarding.follows.empty": "На жаль, зараз немагчыма паказаць вынікі. Вы можаце паспрабаваць выкарыстоўваць пошук і праглядзець старонку агляду, каб знайсці людзей, на якіх можна падпісацца, або паўтарыць спробу пазней.",
|
||||||
"onboarding.follows.search": "Пошук",
|
"onboarding.follows.search": "Пошук",
|
||||||
"onboarding.follows.title": "Падпішыцеся на некага, каб пачаць",
|
"onboarding.follows.title": "Падпішыцеся на некага, каб пачаць",
|
||||||
"onboarding.profile.discoverable": "Зрабіць мой профіль бачным",
|
"onboarding.profile.discoverable": "Зрабіць мой профіль бачным",
|
||||||
"onboarding.profile.discoverable_hint": "Калі вы звяртаецеся да адкрытасці на Mastodon, вашы паведамленні могуць з'яўляцца ў выніках пошуку і тэндэнцый, а ваш профіль можа быць прапанаваны людзям з такімі ж інтарэсамі.",
|
"onboarding.profile.discoverable_hint": "Калі Вы звяртаецеся да адкрытасці на Mastodon, Вашы допісы могуць з'яўляцца ў выніках пошуку і трэндах, а Ваш профіль можа быць прапанаваны людзям з такімі ж інтарэсамі.",
|
||||||
"onboarding.profile.display_name": "Бачнае імя",
|
"onboarding.profile.display_name": "Бачнае імя",
|
||||||
"onboarding.profile.display_name_hint": "Ваша поўнае імя або ваш псеўданім…",
|
"onboarding.profile.display_name_hint": "Ваша поўнае імя або ваш псеўданім…",
|
||||||
"onboarding.profile.note": "Біяграфія",
|
"onboarding.profile.note": "Біяграфія",
|
||||||
@ -717,7 +717,7 @@
|
|||||||
"onboarding.profile.title": "Налады профілю",
|
"onboarding.profile.title": "Налады профілю",
|
||||||
"onboarding.profile.upload_avatar": "Загрузіць фота профілю",
|
"onboarding.profile.upload_avatar": "Загрузіць фота профілю",
|
||||||
"onboarding.profile.upload_header": "Загрузіць шапку профілю",
|
"onboarding.profile.upload_header": "Загрузіць шапку профілю",
|
||||||
"password_confirmation.exceeds_maxlength": "Пароль пацьверджання перавышае максімальна дапушчальную даўжыню",
|
"password_confirmation.exceeds_maxlength": "Пароль пацвярджэння перавышае максімальна дапушчальную даўжыню",
|
||||||
"password_confirmation.mismatching": "Пароль пацьверджання не супадае",
|
"password_confirmation.mismatching": "Пароль пацьверджання не супадае",
|
||||||
"picture_in_picture.restore": "Вярніце назад",
|
"picture_in_picture.restore": "Вярніце назад",
|
||||||
"poll.closed": "Закрыта",
|
"poll.closed": "Закрыта",
|
||||||
@ -737,7 +737,7 @@
|
|||||||
"privacy.private.short": "Падпісчыкі",
|
"privacy.private.short": "Падпісчыкі",
|
||||||
"privacy.public.long": "Усе, хто ёсць і каго няма ў Mastodon",
|
"privacy.public.long": "Усе, хто ёсць і каго няма ў Mastodon",
|
||||||
"privacy.public.short": "Публічны",
|
"privacy.public.short": "Публічны",
|
||||||
"privacy.unlisted.additional": "Паводзіць сябе гэтак жа, як і публічны, за выключэннем таго, што пост не будзе адлюстроўвацца ў жывой стужцы, хэштэгах, аглядзе або ў пошуку Mastodon, нават калі вы ўключылі бачнасць у пошуку ў наладах.",
|
"privacy.unlisted.additional": "Паводзіць сябе гэтак жа, як і публічны, за выключэннем таго, што допіс не будзе адлюстроўвацца ў жывой стужцы, хэштэгах, аглядзе або ў пошуку Mastodon, нават калі Вы ўключылі бачнасць у пошуку ў наладах.",
|
||||||
"privacy.unlisted.long": "Менш фанфар ад алгарытмаў",
|
"privacy.unlisted.long": "Менш фанфар ад алгарытмаў",
|
||||||
"privacy.unlisted.short": "Ціхі публічны",
|
"privacy.unlisted.short": "Ціхі публічны",
|
||||||
"privacy_policy.last_updated": "Адноўлена {date}",
|
"privacy_policy.last_updated": "Адноўлена {date}",
|
||||||
@ -761,7 +761,7 @@
|
|||||||
"reply_indicator.cancel": "Скасаваць",
|
"reply_indicator.cancel": "Скасаваць",
|
||||||
"reply_indicator.poll": "Апытанне",
|
"reply_indicator.poll": "Апытанне",
|
||||||
"report.block": "Заблакіраваць",
|
"report.block": "Заблакіраваць",
|
||||||
"report.block_explanation": "Вы перастанеце бачыць допісы гэтага карыстальніка. Ён не зможа сачыць за вамі і бачыць вашы допісы. Ён зможа зразумець, што яго заблакіравалі.",
|
"report.block_explanation": "Вы перастанеце бачыць допісы гэтага карыстальніка. Ён не зможа сачыць за Вамі і бачыць Вашы допісы. Ён зможа зразумець, што яго заблакіравалі.",
|
||||||
"report.categories.legal": "Звязанае з правам",
|
"report.categories.legal": "Звязанае з правам",
|
||||||
"report.categories.other": "Іншае",
|
"report.categories.other": "Іншае",
|
||||||
"report.categories.spam": "Спам",
|
"report.categories.spam": "Спам",
|
||||||
@ -775,9 +775,9 @@
|
|||||||
"report.forward": "Пераслаць на {target}",
|
"report.forward": "Пераслаць на {target}",
|
||||||
"report.forward_hint": "Гэты ўліковы запіс з іншага сервера. Даслаць ананімную копію скаргі і туды?",
|
"report.forward_hint": "Гэты ўліковы запіс з іншага сервера. Даслаць ананімную копію скаргі і туды?",
|
||||||
"report.mute": "Ігнараваць",
|
"report.mute": "Ігнараваць",
|
||||||
"report.mute_explanation": "Вы не будзеце бачыць допісы гэтага карыстальніка. Ён усё яшчэ зможа сачыць за вамі і бачыць вашы допісы, не ведаючы, што яго ігнаруюць.",
|
"report.mute_explanation": "Вы не будзеце бачыць допісы гэтага карыстальніка. Ён усё яшчэ зможа сачыць за Вамі і бачыць Вашы допісы, не ведаючы, што яго ігнаруюць.",
|
||||||
"report.next": "Далей",
|
"report.next": "Далей",
|
||||||
"report.placeholder": "Дадатковы каментар",
|
"report.placeholder": "Дадатковыя каментарыі",
|
||||||
"report.reasons.dislike": "Мне ён не падабаецца",
|
"report.reasons.dislike": "Мне ён не падабаецца",
|
||||||
"report.reasons.dislike_description": "Гэта тое, што Вы не хочаце бачыць",
|
"report.reasons.dislike_description": "Гэта тое, што Вы не хочаце бачыць",
|
||||||
"report.reasons.legal": "Гэта незаконна",
|
"report.reasons.legal": "Гэта незаконна",
|
||||||
@ -794,9 +794,9 @@
|
|||||||
"report.statuses.title": "Ці ёсць допісы, каб падмацаваць гэтую скаргу?",
|
"report.statuses.title": "Ці ёсць допісы, каб падмацаваць гэтую скаргу?",
|
||||||
"report.submit": "Адправіць",
|
"report.submit": "Адправіць",
|
||||||
"report.target": "Скарга на {target}",
|
"report.target": "Скарга на {target}",
|
||||||
"report.thanks.take_action": "Вось вашыя варыянты кантролю над тым, што вы бачыце в Mastodon:",
|
"report.thanks.take_action": "Вось Вашыя варыянты кантролю над тым, што Вы бачыце в Mastodon:",
|
||||||
"report.thanks.take_action_actionable": "Пакуль мы разглядаем яе, вы можаце распачаць дзеянні супраць @{name}:",
|
"report.thanks.take_action_actionable": "Пакуль мы разглядаем яе, Вы можаце распачаць дзеянні супраць @{name}:",
|
||||||
"report.thanks.title": "Ці хочаце вы бачыць гэта?",
|
"report.thanks.title": "Ці хочаце Вы бачыць гэта?",
|
||||||
"report.thanks.title_actionable": "Дзякуем за зварот, мы разбяромся з гэтым.",
|
"report.thanks.title_actionable": "Дзякуем за зварот, мы разбяромся з гэтым.",
|
||||||
"report.unfollow": "Адпісацца ад @{name}",
|
"report.unfollow": "Адпісацца ад @{name}",
|
||||||
"report.unfollow_explanation": "Вы падпісаныя на гэты ўліковы запіс. Каб не бачыць допісы з яго ў вашай стужцы, адпішыцеся.",
|
"report.unfollow_explanation": "Вы падпісаныя на гэты ўліковы запіс. Каб не бачыць допісы з яго ў вашай стужцы, адпішыцеся.",
|
||||||
@ -838,10 +838,10 @@
|
|||||||
"server_banner.about_active_users": "Людзі, якія карыстаюцца гэтым сервера на працягу апошніх 30 дзён (Штомесячна Актыўныя Карыстальнікі)",
|
"server_banner.about_active_users": "Людзі, якія карыстаюцца гэтым сервера на працягу апошніх 30 дзён (Штомесячна Актыўныя Карыстальнікі)",
|
||||||
"server_banner.active_users": "актыўныя карыстальнікі",
|
"server_banner.active_users": "актыўныя карыстальнікі",
|
||||||
"server_banner.administered_by": "Адміністратар:",
|
"server_banner.administered_by": "Адміністратар:",
|
||||||
"server_banner.is_one_of_many": "{domain} - гэта адзін з многіх незалежных сервераў Mastodon, якія вы можаце выкарыстоўваць для ўдзелу ў fediverse.",
|
"server_banner.is_one_of_many": "{domain} - гэта адзін з многіх незалежных сервераў Mastodon, які Вы можаце выкарыстоўваць для ўдзелу ў федэральным сусвеце.",
|
||||||
"server_banner.server_stats": "Статыстыка сервера:",
|
"server_banner.server_stats": "Статыстыка сервера:",
|
||||||
"sign_in_banner.create_account": "Стварыць уліковы запіс",
|
"sign_in_banner.create_account": "Стварыць уліковы запіс",
|
||||||
"sign_in_banner.follow_anyone": "Сачыце за кім заўгодна ва ўсім fediverse і глядзіце ўсё ў храналагічным парадку. Ніякіх алгарытмаў, рэкламы або клікбэйту.",
|
"sign_in_banner.follow_anyone": "Падпісвайцеся на каго захочаце ва ўсім федэральным сусвеце і глядзіце ўсё ў храналагічным парадку. Ніякіх алгарытмаў, рэкламы або клікбэйту.",
|
||||||
"sign_in_banner.mastodon_is": "Mastodon - лепшы спосаб быць у курсе ўсяго, што адбываецца.",
|
"sign_in_banner.mastodon_is": "Mastodon - лепшы спосаб быць у курсе ўсяго, што адбываецца.",
|
||||||
"sign_in_banner.sign_in": "Увайсці",
|
"sign_in_banner.sign_in": "Увайсці",
|
||||||
"sign_in_banner.sso_redirect": "Уваход ці рэгістрацыя",
|
"sign_in_banner.sso_redirect": "Уваход ці рэгістрацыя",
|
||||||
@ -851,7 +851,7 @@
|
|||||||
"status.block": "Заблакаваць @{name}",
|
"status.block": "Заблакаваць @{name}",
|
||||||
"status.bookmark": "Дадаць закладку",
|
"status.bookmark": "Дадаць закладку",
|
||||||
"status.cancel_reblog_private": "Прыбраць",
|
"status.cancel_reblog_private": "Прыбраць",
|
||||||
"status.cannot_reblog": "Гэты пост нельга пашырыць",
|
"status.cannot_reblog": "Гэты допіс нельга пашырыць",
|
||||||
"status.context.load_new_replies": "Даступныя новыя адказы",
|
"status.context.load_new_replies": "Даступныя новыя адказы",
|
||||||
"status.context.loading": "Правяраюцца новыя адказы",
|
"status.context.loading": "Правяраюцца новыя адказы",
|
||||||
"status.continued_thread": "Працяг ланцужка",
|
"status.continued_thread": "Працяг ланцужка",
|
||||||
@ -929,7 +929,7 @@
|
|||||||
"time_remaining.seconds": "{number, plural, one {засталася # секунда} few {засталося # секунды} many {засталося # секунд} other {засталося # секунды}}",
|
"time_remaining.seconds": "{number, plural, one {засталася # секунда} few {засталося # секунды} many {засталося # секунд} other {засталося # секунды}}",
|
||||||
"trends.counter_by_accounts": "{count, plural, one {{counter} чалавек} few {{counter} чалавекі} many {{counter} людзей} other {{counter} чалавек}} за {days, plural, one {{days} апошні дзень} few {{days} апошнія дні} many {{days} апошніх дзён} other {{days} апошніх дзён}}",
|
"trends.counter_by_accounts": "{count, plural, one {{counter} чалавек} few {{counter} чалавекі} many {{counter} людзей} other {{counter} чалавек}} за {days, plural, one {{days} апошні дзень} few {{days} апошнія дні} many {{days} апошніх дзён} other {{days} апошніх дзён}}",
|
||||||
"trends.trending_now": "Актуальнае",
|
"trends.trending_now": "Актуальнае",
|
||||||
"ui.beforeunload": "Ваш чарнавік знішчыцца калі вы пакінеце Mastodon.",
|
"ui.beforeunload": "Ваш чарнавік будзе страчаны, калі Вы пакінеце Mastodon.",
|
||||||
"units.short.billion": "{count} млрд.",
|
"units.short.billion": "{count} млрд.",
|
||||||
"units.short.million": "{count} міл.",
|
"units.short.million": "{count} міл.",
|
||||||
"units.short.thousand": "{count} тыс.",
|
"units.short.thousand": "{count} тыс.",
|
||||||
@ -937,7 +937,7 @@
|
|||||||
"upload_button.label": "Дадаць выяву, відэа- ці аўдыяфайл",
|
"upload_button.label": "Дадаць выяву, відэа- ці аўдыяфайл",
|
||||||
"upload_error.limit": "Перавышана колькасць файлаў.",
|
"upload_error.limit": "Перавышана колькасць файлаў.",
|
||||||
"upload_error.poll": "Немагчыма прымацаваць файл да апытання.",
|
"upload_error.poll": "Немагчыма прымацаваць файл да апытання.",
|
||||||
"upload_form.drag_and_drop.instructions": "Каб абраць медыя далучэнне, націсніце прабел ці Enter. Падчас перасоўвання выкарыстоўвайце кнопкі са стрэлкамі, каб пасунуць медыя далучэнне ў любым напрамку. Націсніце прабел ці Enter зноў, каб перасунуць медыя далучэнне ў новае месца, або Escape для адмены.",
|
"upload_form.drag_and_drop.instructions": "Каб абраць медыя ўлажэнне, націсніце прабел ці Enter. Падчас перасоўвання выкарыстоўвайце кнопкі са стрэлкамі, каб пасунуць медыя далучэнне ў любым напрамку. Націсніце прабел ці Enter зноў, каб перасунуць медыя далучэнне ў новае месца, або Escape для адмены.",
|
||||||
"upload_form.drag_and_drop.on_drag_cancel": "Перасоўванне адмененае. Медыя ўлажэнне {item} на месцы.",
|
"upload_form.drag_and_drop.on_drag_cancel": "Перасоўванне адмененае. Медыя ўлажэнне {item} на месцы.",
|
||||||
"upload_form.drag_and_drop.on_drag_end": "Медыя ўлажэнне {item} на месцы.",
|
"upload_form.drag_and_drop.on_drag_end": "Медыя ўлажэнне {item} на месцы.",
|
||||||
"upload_form.drag_and_drop.on_drag_over": "Медыя ўлажэнне {item} перасунутае.",
|
"upload_form.drag_and_drop.on_drag_over": "Медыя ўлажэнне {item} перасунутае.",
|
||||||
|
|||||||
@ -510,7 +510,7 @@
|
|||||||
"lightbox.zoom_out": "Přizpůsobit velikost",
|
"lightbox.zoom_out": "Přizpůsobit velikost",
|
||||||
"limited_account_hint.action": "Přesto profil zobrazit",
|
"limited_account_hint.action": "Přesto profil zobrazit",
|
||||||
"limited_account_hint.title": "Tento profil byl skryt moderátory {domain}.",
|
"limited_account_hint.title": "Tento profil byl skryt moderátory {domain}.",
|
||||||
"link_preview.author": "Podle {name}",
|
"link_preview.author": "Od {name}",
|
||||||
"link_preview.more_from_author": "Více od {name}",
|
"link_preview.more_from_author": "Více od {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} příspěvek} few {{counter} příspěvky} many {{counter} příspěvků} other {{counter} příspěvků}}",
|
"link_preview.shares": "{count, plural, one {{counter} příspěvek} few {{counter} příspěvky} many {{counter} příspěvků} other {{counter} příspěvků}}",
|
||||||
"lists.add_member": "Přidat",
|
"lists.add_member": "Přidat",
|
||||||
|
|||||||
@ -292,6 +292,7 @@
|
|||||||
"domain_pill.your_handle": "Your handle:",
|
"domain_pill.your_handle": "Your handle:",
|
||||||
"domain_pill.your_server": "Your digital home, where all of your posts live. Don’t like this one? Transfer servers at any time and bring your followers, too.",
|
"domain_pill.your_server": "Your digital home, where all of your posts live. Don’t like this one? Transfer servers at any time and bring your followers, too.",
|
||||||
"domain_pill.your_username": "Your unique identifier on this server. It’s possible to find users with the same username on different servers.",
|
"domain_pill.your_username": "Your unique identifier on this server. It’s possible to find users with the same username on different servers.",
|
||||||
|
"dropdown.empty": "Select an option",
|
||||||
"embed.instructions": "Embed this post on your website by copying the code below.",
|
"embed.instructions": "Embed this post on your website by copying the code below.",
|
||||||
"embed.preview": "Here is what it will look like:",
|
"embed.preview": "Here is what it will look like:",
|
||||||
"emoji_button.activity": "Activity",
|
"emoji_button.activity": "Activity",
|
||||||
@ -884,6 +885,7 @@
|
|||||||
"status.quote_error.pending_approval": "Post pending",
|
"status.quote_error.pending_approval": "Post pending",
|
||||||
"status.quote_error.pending_approval_popout.body": "Quotes shared across the Fediverse may take time to display, as different servers have different protocols.",
|
"status.quote_error.pending_approval_popout.body": "Quotes shared across the Fediverse may take time to display, as different servers have different protocols.",
|
||||||
"status.quote_error.pending_approval_popout.title": "Pending quote? Remain calm",
|
"status.quote_error.pending_approval_popout.title": "Pending quote? Remain calm",
|
||||||
|
"status.quote_policy_change": "Change who can quote",
|
||||||
"status.quote_post_author": "Quoted a post by @{name}",
|
"status.quote_post_author": "Quoted a post by @{name}",
|
||||||
"status.read_more": "Read more",
|
"status.read_more": "Read more",
|
||||||
"status.reblog": "Boost",
|
"status.reblog": "Boost",
|
||||||
@ -959,5 +961,17 @@
|
|||||||
"video.skip_forward": "Skip forward",
|
"video.skip_forward": "Skip forward",
|
||||||
"video.unmute": "Unmute",
|
"video.unmute": "Unmute",
|
||||||
"video.volume_down": "Volume down",
|
"video.volume_down": "Volume down",
|
||||||
"video.volume_up": "Volume up"
|
"video.volume_up": "Volume up",
|
||||||
|
"visibility_modal.button_title": "Set visibility",
|
||||||
|
"visibility_modal.header": "Visibility and interaction",
|
||||||
|
"visibility_modal.helper.direct_quoting": "Private mentions can't be quoted.",
|
||||||
|
"visibility_modal.helper.privacy_editing": "Published posts cannot change their visibility.",
|
||||||
|
"visibility_modal.helper.private_quoting": "Follower-only posts can't be quoted.",
|
||||||
|
"visibility_modal.helper.unlisted_quoting": "When people quote you, their post will also be hidden from trending timelines.",
|
||||||
|
"visibility_modal.instructions": "Control who can interact with this post. Global settings can be found under <link>Preferences > Other</link>.",
|
||||||
|
"visibility_modal.privacy_label": "Privacy",
|
||||||
|
"visibility_modal.quote_followers": "Followers only",
|
||||||
|
"visibility_modal.quote_label": "Change who can quote",
|
||||||
|
"visibility_modal.quote_nobody": "No one",
|
||||||
|
"visibility_modal.quote_public": "Anyone"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -501,6 +501,8 @@
|
|||||||
"keyboard_shortcuts.translate": "게시물 번역",
|
"keyboard_shortcuts.translate": "게시물 번역",
|
||||||
"keyboard_shortcuts.unfocus": "작성창에서 포커스 해제",
|
"keyboard_shortcuts.unfocus": "작성창에서 포커스 해제",
|
||||||
"keyboard_shortcuts.up": "리스트에서 위로 이동",
|
"keyboard_shortcuts.up": "리스트에서 위로 이동",
|
||||||
|
"learn_more_link.got_it": "확인",
|
||||||
|
"learn_more_link.learn_more": "더 알아보기",
|
||||||
"lightbox.close": "닫기",
|
"lightbox.close": "닫기",
|
||||||
"lightbox.next": "다음",
|
"lightbox.next": "다음",
|
||||||
"lightbox.previous": "이전",
|
"lightbox.previous": "이전",
|
||||||
@ -601,6 +603,7 @@
|
|||||||
"notification.label.mention": "멘션",
|
"notification.label.mention": "멘션",
|
||||||
"notification.label.private_mention": "개인 멘션",
|
"notification.label.private_mention": "개인 멘션",
|
||||||
"notification.label.private_reply": "개인 답글",
|
"notification.label.private_reply": "개인 답글",
|
||||||
|
"notification.label.quote": "{name} 님이 내 게시물을 인용했습니다",
|
||||||
"notification.label.reply": "답글",
|
"notification.label.reply": "답글",
|
||||||
"notification.mention": "멘션",
|
"notification.mention": "멘션",
|
||||||
"notification.mentioned_you": "{name} 님의 멘션",
|
"notification.mentioned_you": "{name} 님의 멘션",
|
||||||
@ -848,6 +851,8 @@
|
|||||||
"status.bookmark": "북마크",
|
"status.bookmark": "북마크",
|
||||||
"status.cancel_reblog_private": "부스트 취소",
|
"status.cancel_reblog_private": "부스트 취소",
|
||||||
"status.cannot_reblog": "이 게시물은 부스트 할 수 없습니다",
|
"status.cannot_reblog": "이 게시물은 부스트 할 수 없습니다",
|
||||||
|
"status.context.load_new_replies": "새 답글 보기",
|
||||||
|
"status.context.loading": "추가 답글 확인중",
|
||||||
"status.continued_thread": "이어지는 글타래",
|
"status.continued_thread": "이어지는 글타래",
|
||||||
"status.copy": "게시물 링크 복사",
|
"status.copy": "게시물 링크 복사",
|
||||||
"status.delete": "삭제",
|
"status.delete": "삭제",
|
||||||
@ -874,6 +879,9 @@
|
|||||||
"status.open": "상세 정보 표시",
|
"status.open": "상세 정보 표시",
|
||||||
"status.pin": "고정",
|
"status.pin": "고정",
|
||||||
"status.quote_error.filtered": "필터에 의해 가려짐",
|
"status.quote_error.filtered": "필터에 의해 가려짐",
|
||||||
|
"status.quote_error.not_available": "게시물 사용 불가",
|
||||||
|
"status.quote_error.pending_approval": "게시물 대기중",
|
||||||
|
"status.quote_post_author": "인용된 @{name} 님의 게시물",
|
||||||
"status.read_more": "더 보기",
|
"status.read_more": "더 보기",
|
||||||
"status.reblog": "부스트",
|
"status.reblog": "부스트",
|
||||||
"status.reblog_private": "원래의 수신자들에게 부스트",
|
"status.reblog_private": "원래의 수신자들에게 부스트",
|
||||||
|
|||||||
@ -245,6 +245,9 @@
|
|||||||
"confirmations.remove_from_followers.confirm": "Suá掉跟tuè lí ê",
|
"confirmations.remove_from_followers.confirm": "Suá掉跟tuè lí ê",
|
||||||
"confirmations.remove_from_followers.message": "{name} ē停止跟tuè lí。Lí kám確定beh繼續?",
|
"confirmations.remove_from_followers.message": "{name} ē停止跟tuè lí。Lí kám確定beh繼續?",
|
||||||
"confirmations.remove_from_followers.title": "Kám beh suá掉跟tuè lí ê?",
|
"confirmations.remove_from_followers.title": "Kám beh suá掉跟tuè lí ê?",
|
||||||
|
"confirmations.revoke_quote.confirm": "Thâi掉PO文",
|
||||||
|
"confirmations.revoke_quote.message": "Tsit ê動作bē當復原。",
|
||||||
|
"confirmations.revoke_quote.title": "Kám beh thâi掉PO文?",
|
||||||
"confirmations.unfollow.confirm": "取消跟tuè",
|
"confirmations.unfollow.confirm": "取消跟tuè",
|
||||||
"confirmations.unfollow.message": "Lí kám確定無愛跟tuè {name}?",
|
"confirmations.unfollow.message": "Lí kám確定無愛跟tuè {name}?",
|
||||||
"confirmations.unfollow.title": "Kám beh取消跟tuè tsit ê用者?",
|
"confirmations.unfollow.title": "Kám beh取消跟tuè tsit ê用者?",
|
||||||
@ -600,6 +603,7 @@
|
|||||||
"notification.label.mention": "提起",
|
"notification.label.mention": "提起",
|
||||||
"notification.label.private_mention": "私人ê提起",
|
"notification.label.private_mention": "私人ê提起",
|
||||||
"notification.label.private_reply": "私人ê回應",
|
"notification.label.private_reply": "私人ê回應",
|
||||||
|
"notification.label.quote": "{name} 引用lí ê PO文",
|
||||||
"notification.label.reply": "回應",
|
"notification.label.reply": "回應",
|
||||||
"notification.mention": "提起",
|
"notification.mention": "提起",
|
||||||
"notification.mentioned_you": "{name}kā lí提起",
|
"notification.mentioned_you": "{name}kā lí提起",
|
||||||
@ -657,6 +661,7 @@
|
|||||||
"notifications.column_settings.mention": "提起:",
|
"notifications.column_settings.mention": "提起:",
|
||||||
"notifications.column_settings.poll": "投票ê結果:",
|
"notifications.column_settings.poll": "投票ê結果:",
|
||||||
"notifications.column_settings.push": "Sak通知",
|
"notifications.column_settings.push": "Sak通知",
|
||||||
|
"notifications.column_settings.quote": "引用:",
|
||||||
"notifications.column_settings.reblog": "轉送:",
|
"notifications.column_settings.reblog": "轉送:",
|
||||||
"notifications.column_settings.show": "佇欄內底顯示",
|
"notifications.column_settings.show": "佇欄內底顯示",
|
||||||
"notifications.column_settings.sound": "播放聲音",
|
"notifications.column_settings.sound": "播放聲音",
|
||||||
@ -893,6 +898,7 @@
|
|||||||
"status.reply": "回應",
|
"status.reply": "回應",
|
||||||
"status.replyAll": "應討論線",
|
"status.replyAll": "應討論線",
|
||||||
"status.report": "檢舉 @{name}",
|
"status.report": "檢舉 @{name}",
|
||||||
|
"status.revoke_quote": "Kā 我ê PO文tuì @{name} ê thâi掉",
|
||||||
"status.sensitive_warning": "敏感ê內容",
|
"status.sensitive_warning": "敏感ê內容",
|
||||||
"status.share": "分享",
|
"status.share": "分享",
|
||||||
"status.show_less_all": "Lóng收起來",
|
"status.show_less_all": "Lóng收起來",
|
||||||
|
|||||||
@ -245,6 +245,9 @@
|
|||||||
"confirmations.remove_from_followers.confirm": "Fjern fylgjar",
|
"confirmations.remove_from_followers.confirm": "Fjern fylgjar",
|
||||||
"confirmations.remove_from_followers.message": "{name} vil ikkje fylgja deg meir. Vil du halda fram?",
|
"confirmations.remove_from_followers.message": "{name} vil ikkje fylgja deg meir. Vil du halda fram?",
|
||||||
"confirmations.remove_from_followers.title": "Fjern fylgjar?",
|
"confirmations.remove_from_followers.title": "Fjern fylgjar?",
|
||||||
|
"confirmations.revoke_quote.confirm": "Fjern innlegget",
|
||||||
|
"confirmations.revoke_quote.message": "Du kan ikkje angra denne handlinga.",
|
||||||
|
"confirmations.revoke_quote.title": "Fjern innlegget?",
|
||||||
"confirmations.unfollow.confirm": "Slutt å fylgja",
|
"confirmations.unfollow.confirm": "Slutt å fylgja",
|
||||||
"confirmations.unfollow.message": "Er du sikker på at du vil slutta å fylgja {name}?",
|
"confirmations.unfollow.message": "Er du sikker på at du vil slutta å fylgja {name}?",
|
||||||
"confirmations.unfollow.title": "Slutt å fylgja brukaren?",
|
"confirmations.unfollow.title": "Slutt å fylgja brukaren?",
|
||||||
@ -498,6 +501,8 @@
|
|||||||
"keyboard_shortcuts.translate": "å omsetje eit innlegg",
|
"keyboard_shortcuts.translate": "å omsetje eit innlegg",
|
||||||
"keyboard_shortcuts.unfocus": "for å fokusere vekk skrive-/søkefeltet",
|
"keyboard_shortcuts.unfocus": "for å fokusere vekk skrive-/søkefeltet",
|
||||||
"keyboard_shortcuts.up": "Flytt opp på lista",
|
"keyboard_shortcuts.up": "Flytt opp på lista",
|
||||||
|
"learn_more_link.got_it": "Forstått",
|
||||||
|
"learn_more_link.learn_more": "Lær meir",
|
||||||
"lightbox.close": "Lukk",
|
"lightbox.close": "Lukk",
|
||||||
"lightbox.next": "Neste",
|
"lightbox.next": "Neste",
|
||||||
"lightbox.previous": "Førre",
|
"lightbox.previous": "Førre",
|
||||||
@ -598,6 +603,7 @@
|
|||||||
"notification.label.mention": "Omtale",
|
"notification.label.mention": "Omtale",
|
||||||
"notification.label.private_mention": "Privat omtale",
|
"notification.label.private_mention": "Privat omtale",
|
||||||
"notification.label.private_reply": "Privat svar",
|
"notification.label.private_reply": "Privat svar",
|
||||||
|
"notification.label.quote": "{name} siterte innlegget ditt",
|
||||||
"notification.label.reply": "Svar",
|
"notification.label.reply": "Svar",
|
||||||
"notification.mention": "Omtale",
|
"notification.mention": "Omtale",
|
||||||
"notification.mentioned_you": "{name} nemnde deg",
|
"notification.mentioned_you": "{name} nemnde deg",
|
||||||
@ -655,6 +661,7 @@
|
|||||||
"notifications.column_settings.mention": "Omtaler:",
|
"notifications.column_settings.mention": "Omtaler:",
|
||||||
"notifications.column_settings.poll": "Røysteresultat:",
|
"notifications.column_settings.poll": "Røysteresultat:",
|
||||||
"notifications.column_settings.push": "Pushvarsel",
|
"notifications.column_settings.push": "Pushvarsel",
|
||||||
|
"notifications.column_settings.quote": "Sitat:",
|
||||||
"notifications.column_settings.reblog": "Framhevingar:",
|
"notifications.column_settings.reblog": "Framhevingar:",
|
||||||
"notifications.column_settings.show": "Vis i kolonne",
|
"notifications.column_settings.show": "Vis i kolonne",
|
||||||
"notifications.column_settings.sound": "Spel av lyd",
|
"notifications.column_settings.sound": "Spel av lyd",
|
||||||
@ -845,6 +852,8 @@
|
|||||||
"status.bookmark": "Set bokmerke",
|
"status.bookmark": "Set bokmerke",
|
||||||
"status.cancel_reblog_private": "Opphev framheving",
|
"status.cancel_reblog_private": "Opphev framheving",
|
||||||
"status.cannot_reblog": "Du kan ikkje framheva dette innlegget",
|
"status.cannot_reblog": "Du kan ikkje framheva dette innlegget",
|
||||||
|
"status.context.load_new_replies": "Nye svar finst",
|
||||||
|
"status.context.loading": "Ser etter fleire svar",
|
||||||
"status.continued_thread": "Framhald til tråden",
|
"status.continued_thread": "Framhald til tråden",
|
||||||
"status.copy": "Kopier lenke til status",
|
"status.copy": "Kopier lenke til status",
|
||||||
"status.delete": "Slett",
|
"status.delete": "Slett",
|
||||||
@ -871,6 +880,11 @@
|
|||||||
"status.open": "Utvid denne statusen",
|
"status.open": "Utvid denne statusen",
|
||||||
"status.pin": "Fest på profil",
|
"status.pin": "Fest på profil",
|
||||||
"status.quote_error.filtered": "Gøymt på grunn av eitt av filtra dine",
|
"status.quote_error.filtered": "Gøymt på grunn av eitt av filtra dine",
|
||||||
|
"status.quote_error.not_available": "Innlegget er ikkje tilgjengeleg",
|
||||||
|
"status.quote_error.pending_approval": "Innlegget ventar",
|
||||||
|
"status.quote_error.pending_approval_popout.body": "Sitat frå rundt om i allheimen kan ta tid å visa, fordi ulike tenarar har ulike protokollar.",
|
||||||
|
"status.quote_error.pending_approval_popout.title": "Ventande sitat? Ikkje stress",
|
||||||
|
"status.quote_post_author": "Siterte eit innlegg av @{name}",
|
||||||
"status.read_more": "Les meir",
|
"status.read_more": "Les meir",
|
||||||
"status.reblog": "Framhev",
|
"status.reblog": "Framhev",
|
||||||
"status.reblog_private": "Framhev til dei originale mottakarane",
|
"status.reblog_private": "Framhev til dei originale mottakarane",
|
||||||
@ -885,6 +899,7 @@
|
|||||||
"status.reply": "Svar",
|
"status.reply": "Svar",
|
||||||
"status.replyAll": "Svar til tråd",
|
"status.replyAll": "Svar til tråd",
|
||||||
"status.report": "Rapporter @{name}",
|
"status.report": "Rapporter @{name}",
|
||||||
|
"status.revoke_quote": "Fjern innlegget mitt frå @{name} sitt innlegg",
|
||||||
"status.sensitive_warning": "Ømtolig innhald",
|
"status.sensitive_warning": "Ømtolig innhald",
|
||||||
"status.share": "Del",
|
"status.share": "Del",
|
||||||
"status.show_less_all": "Vis mindre for alle",
|
"status.show_less_all": "Vis mindre for alle",
|
||||||
|
|||||||
@ -224,6 +224,7 @@
|
|||||||
"confirmations.discard_draft.edit.message": "Kontynuowanie spowoduje utratę wszystkich zmian wprowadzonych przez Ciebie w aktualnie edytowanym poście.",
|
"confirmations.discard_draft.edit.message": "Kontynuowanie spowoduje utratę wszystkich zmian wprowadzonych przez Ciebie w aktualnie edytowanym poście.",
|
||||||
"confirmations.discard_draft.edit.title": "Odrzucić zmiany w poście?",
|
"confirmations.discard_draft.edit.title": "Odrzucić zmiany w poście?",
|
||||||
"confirmations.discard_draft.post.cancel": "Wznów wersję roboczą",
|
"confirmations.discard_draft.post.cancel": "Wznów wersję roboczą",
|
||||||
|
"confirmations.discard_draft.post.message": "Kontynuacja odrzuci aktualnie tworzony post.",
|
||||||
"confirmations.discard_draft.post.title": "Anulować wersję roboczą?",
|
"confirmations.discard_draft.post.title": "Anulować wersję roboczą?",
|
||||||
"confirmations.discard_edit_media.confirm": "Odrzuć",
|
"confirmations.discard_edit_media.confirm": "Odrzuć",
|
||||||
"confirmations.discard_edit_media.message": "Masz niezapisane zmiany w opisie lub podglądzie, odrzucić je mimo to?",
|
"confirmations.discard_edit_media.message": "Masz niezapisane zmiany w opisie lub podglądzie, odrzucić je mimo to?",
|
||||||
@ -244,6 +245,9 @@
|
|||||||
"confirmations.remove_from_followers.confirm": "Usuń obserwującego",
|
"confirmations.remove_from_followers.confirm": "Usuń obserwującego",
|
||||||
"confirmations.remove_from_followers.message": "{name} przestanie Cię obserwować. Czy na pewno chcesz kontynuować?",
|
"confirmations.remove_from_followers.message": "{name} przestanie Cię obserwować. Czy na pewno chcesz kontynuować?",
|
||||||
"confirmations.remove_from_followers.title": "Usunąć obserwującego?",
|
"confirmations.remove_from_followers.title": "Usunąć obserwującego?",
|
||||||
|
"confirmations.revoke_quote.confirm": "Usuń post",
|
||||||
|
"confirmations.revoke_quote.message": "Tej akcji nie można cofnąć.",
|
||||||
|
"confirmations.revoke_quote.title": "Usuń post?",
|
||||||
"confirmations.unfollow.confirm": "Nie obserwuj",
|
"confirmations.unfollow.confirm": "Nie obserwuj",
|
||||||
"confirmations.unfollow.message": "Czy na pewno nie chcesz obserwować {name}?",
|
"confirmations.unfollow.message": "Czy na pewno nie chcesz obserwować {name}?",
|
||||||
"confirmations.unfollow.title": "Cofnąć obserwację?",
|
"confirmations.unfollow.title": "Cofnąć obserwację?",
|
||||||
@ -305,6 +309,9 @@
|
|||||||
"emoji_button.search_results": "Wyniki wyszukiwania",
|
"emoji_button.search_results": "Wyniki wyszukiwania",
|
||||||
"emoji_button.symbols": "Symbole",
|
"emoji_button.symbols": "Symbole",
|
||||||
"emoji_button.travel": "Podróże i miejsca",
|
"emoji_button.travel": "Podróże i miejsca",
|
||||||
|
"empty_column.account_featured.me": "Niczego jeszcze nie poleciłeś. Czy wiesz, że możesz wyświetlać swoje hashtagi, z których korzystasz najbardziej, a nawet konta znajomego na swoim profilu?",
|
||||||
|
"empty_column.account_featured.other": "{acct} nie wyróżnił jeszcze nic. Czy wiesz, że możesz wyświetlać swoje hashtagi, z których korzystasz najbardziej, a nawet konta znajomego na swoim profilu?",
|
||||||
|
"empty_column.account_featured_other.unknown": "To konto nie zostało jeszcze wyróżnione.",
|
||||||
"empty_column.account_hides_collections": "Ta osoba postanowiła nie udostępniać tych informacji",
|
"empty_column.account_hides_collections": "Ta osoba postanowiła nie udostępniać tych informacji",
|
||||||
"empty_column.account_suspended": "Konto zawieszone",
|
"empty_column.account_suspended": "Konto zawieszone",
|
||||||
"empty_column.account_timeline": "Brak wpisów!",
|
"empty_column.account_timeline": "Brak wpisów!",
|
||||||
@ -560,6 +567,8 @@
|
|||||||
"navigation_bar.follows_and_followers": "Obserwowani i obserwujący",
|
"navigation_bar.follows_and_followers": "Obserwowani i obserwujący",
|
||||||
"navigation_bar.import_export": "Import i eksport",
|
"navigation_bar.import_export": "Import i eksport",
|
||||||
"navigation_bar.lists": "Listy",
|
"navigation_bar.lists": "Listy",
|
||||||
|
"navigation_bar.live_feed_local": "Kanał na żywo (lokalny)",
|
||||||
|
"navigation_bar.live_feed_public": "Kanał na żywo (publiczny)",
|
||||||
"navigation_bar.logout": "Wyloguj",
|
"navigation_bar.logout": "Wyloguj",
|
||||||
"navigation_bar.moderation": "Moderacja",
|
"navigation_bar.moderation": "Moderacja",
|
||||||
"navigation_bar.more": "Więcej",
|
"navigation_bar.more": "Więcej",
|
||||||
@ -594,6 +603,7 @@
|
|||||||
"notification.label.mention": "Wzmianka",
|
"notification.label.mention": "Wzmianka",
|
||||||
"notification.label.private_mention": "Wzmianka bezpośrednia",
|
"notification.label.private_mention": "Wzmianka bezpośrednia",
|
||||||
"notification.label.private_reply": "Komentarz bezpośredni",
|
"notification.label.private_reply": "Komentarz bezpośredni",
|
||||||
|
"notification.label.quote": "{name} cytował twój post",
|
||||||
"notification.label.reply": "Komentarz",
|
"notification.label.reply": "Komentarz",
|
||||||
"notification.mention": "Wzmianka",
|
"notification.mention": "Wzmianka",
|
||||||
"notification.mentioned_you": "{name} wzmiankuje cię",
|
"notification.mentioned_you": "{name} wzmiankuje cię",
|
||||||
@ -651,6 +661,7 @@
|
|||||||
"notifications.column_settings.mention": "Wzmianki:",
|
"notifications.column_settings.mention": "Wzmianki:",
|
||||||
"notifications.column_settings.poll": "Wyniki ankiety:",
|
"notifications.column_settings.poll": "Wyniki ankiety:",
|
||||||
"notifications.column_settings.push": "Powiadomienia push",
|
"notifications.column_settings.push": "Powiadomienia push",
|
||||||
|
"notifications.column_settings.quote": "Cytaty:",
|
||||||
"notifications.column_settings.reblog": "Podbicia:",
|
"notifications.column_settings.reblog": "Podbicia:",
|
||||||
"notifications.column_settings.show": "Pokaż w kolumnie",
|
"notifications.column_settings.show": "Pokaż w kolumnie",
|
||||||
"notifications.column_settings.sound": "Odtwarzaj dźwięk",
|
"notifications.column_settings.sound": "Odtwarzaj dźwięk",
|
||||||
@ -871,6 +882,8 @@
|
|||||||
"status.quote_error.filtered": "Ukryte z powodu jednego z Twoich filtrów",
|
"status.quote_error.filtered": "Ukryte z powodu jednego z Twoich filtrów",
|
||||||
"status.quote_error.not_available": "Post niedostępny",
|
"status.quote_error.not_available": "Post niedostępny",
|
||||||
"status.quote_error.pending_approval": "Post oczekujący",
|
"status.quote_error.pending_approval": "Post oczekujący",
|
||||||
|
"status.quote_error.pending_approval_popout.body": "Oferty współdzielone przez Fediverse mogą wymagać czasu, ponieważ różne serwery mają różne protokoły.",
|
||||||
|
"status.quote_error.pending_approval_popout.title": "Oczekujący cytat? Spokojnie, bądź cierpliwy :)",
|
||||||
"status.quote_post_author": "Zacytowano post @{name}",
|
"status.quote_post_author": "Zacytowano post @{name}",
|
||||||
"status.read_more": "Czytaj dalej",
|
"status.read_more": "Czytaj dalej",
|
||||||
"status.reblog": "Podbij",
|
"status.reblog": "Podbij",
|
||||||
@ -886,6 +899,7 @@
|
|||||||
"status.reply": "Odpowiedz",
|
"status.reply": "Odpowiedz",
|
||||||
"status.replyAll": "Odpowiedz na wątek",
|
"status.replyAll": "Odpowiedz na wątek",
|
||||||
"status.report": "Zgłoś @{name}",
|
"status.report": "Zgłoś @{name}",
|
||||||
|
"status.revoke_quote": "Usuń mój wpis z postu @{name}",
|
||||||
"status.sensitive_warning": "Wrażliwa zawartość",
|
"status.sensitive_warning": "Wrażliwa zawartość",
|
||||||
"status.share": "Udostępnij",
|
"status.share": "Udostępnij",
|
||||||
"status.show_less_all": "Zwiń wszystkie",
|
"status.show_less_all": "Zwiń wszystkie",
|
||||||
|
|||||||
@ -245,6 +245,9 @@
|
|||||||
"confirmations.remove_from_followers.confirm": "Убрать подписчика",
|
"confirmations.remove_from_followers.confirm": "Убрать подписчика",
|
||||||
"confirmations.remove_from_followers.message": "Пользователь {name} перестанет быть подписан на вас. Продолжить?",
|
"confirmations.remove_from_followers.message": "Пользователь {name} перестанет быть подписан на вас. Продолжить?",
|
||||||
"confirmations.remove_from_followers.title": "Убрать подписчика?",
|
"confirmations.remove_from_followers.title": "Убрать подписчика?",
|
||||||
|
"confirmations.revoke_quote.confirm": "Убрать пост",
|
||||||
|
"confirmations.revoke_quote.message": "Это действие невозможно отменить.",
|
||||||
|
"confirmations.revoke_quote.title": "Убрать пост?",
|
||||||
"confirmations.unfollow.confirm": "Отписаться",
|
"confirmations.unfollow.confirm": "Отписаться",
|
||||||
"confirmations.unfollow.message": "Вы уверены, что хотите отписаться от {name}?",
|
"confirmations.unfollow.message": "Вы уверены, что хотите отписаться от {name}?",
|
||||||
"confirmations.unfollow.title": "Отписаться?",
|
"confirmations.unfollow.title": "Отписаться?",
|
||||||
@ -498,6 +501,8 @@
|
|||||||
"keyboard_shortcuts.translate": "перевести пост",
|
"keyboard_shortcuts.translate": "перевести пост",
|
||||||
"keyboard_shortcuts.unfocus": "убрать фокус с поля ввода/поиска",
|
"keyboard_shortcuts.unfocus": "убрать фокус с поля ввода/поиска",
|
||||||
"keyboard_shortcuts.up": "вверх по списку",
|
"keyboard_shortcuts.up": "вверх по списку",
|
||||||
|
"learn_more_link.got_it": "Понятно",
|
||||||
|
"learn_more_link.learn_more": "Узнать больше",
|
||||||
"lightbox.close": "Закрыть",
|
"lightbox.close": "Закрыть",
|
||||||
"lightbox.next": "Далее",
|
"lightbox.next": "Далее",
|
||||||
"lightbox.previous": "Назад",
|
"lightbox.previous": "Назад",
|
||||||
@ -845,6 +850,8 @@
|
|||||||
"status.bookmark": "Добавить в закладки",
|
"status.bookmark": "Добавить в закладки",
|
||||||
"status.cancel_reblog_private": "Отменить продвижение",
|
"status.cancel_reblog_private": "Отменить продвижение",
|
||||||
"status.cannot_reblog": "Этот пост не может быть продвинут",
|
"status.cannot_reblog": "Этот пост не может быть продвинут",
|
||||||
|
"status.context.load_new_replies": "Доступны новые ответы",
|
||||||
|
"status.context.loading": "Проверяем, есть ли еще ответы",
|
||||||
"status.continued_thread": "Продолжение предыдущего поста",
|
"status.continued_thread": "Продолжение предыдущего поста",
|
||||||
"status.copy": "Скопировать ссылку на пост",
|
"status.copy": "Скопировать ссылку на пост",
|
||||||
"status.delete": "Удалить",
|
"status.delete": "Удалить",
|
||||||
@ -871,6 +878,7 @@
|
|||||||
"status.open": "Открыть пост",
|
"status.open": "Открыть пост",
|
||||||
"status.pin": "Закрепить в профиле",
|
"status.pin": "Закрепить в профиле",
|
||||||
"status.quote_error.filtered": "Скрыто одним из ваших фильтров",
|
"status.quote_error.filtered": "Скрыто одним из ваших фильтров",
|
||||||
|
"status.quote_error.not_available": "Пост недоступен",
|
||||||
"status.read_more": "Читать далее",
|
"status.read_more": "Читать далее",
|
||||||
"status.reblog": "Продвинуть",
|
"status.reblog": "Продвинуть",
|
||||||
"status.reblog_private": "Продвинуть для своей аудитории",
|
"status.reblog_private": "Продвинуть для своей аудитории",
|
||||||
|
|||||||
@ -29,6 +29,7 @@ import {
|
|||||||
STATUS_FETCH_REQUEST,
|
STATUS_FETCH_REQUEST,
|
||||||
STATUS_FETCH_FAIL,
|
STATUS_FETCH_FAIL,
|
||||||
} from '../actions/statuses';
|
} from '../actions/statuses';
|
||||||
|
import { setStatusQuotePolicy } from '../actions/statuses_typed';
|
||||||
|
|
||||||
const importStatus = (state, status) => state.set(status.id, fromJS(status));
|
const importStatus = (state, status) => state.set(status.id, fromJS(status));
|
||||||
|
|
||||||
@ -70,6 +71,22 @@ const initialState = ImmutableMap();
|
|||||||
|
|
||||||
/** @type {import('@reduxjs/toolkit').Reducer<typeof initialState>} */
|
/** @type {import('@reduxjs/toolkit').Reducer<typeof initialState>} */
|
||||||
export default function statuses(state = initialState, action) {
|
export default function statuses(state = initialState, action) {
|
||||||
|
if (setStatusQuotePolicy.pending.match(action)) {
|
||||||
|
const status = state.get(action.meta.arg.statusId);
|
||||||
|
if (status) {
|
||||||
|
return state.setIn([action.meta.arg.statusId, 'isSavingQuotePolicy'], true);
|
||||||
|
}
|
||||||
|
} else if (setStatusQuotePolicy.fulfilled.match(action)) {
|
||||||
|
const status = state.get(action.payload.id);
|
||||||
|
if (status) {
|
||||||
|
return state
|
||||||
|
.setIn([action.payload.id, 'quote_approval'], action.payload.quote_approval)
|
||||||
|
.deleteIn([action.payload.id, 'isSavingQuotePolicy']);
|
||||||
|
}
|
||||||
|
} else if (setStatusQuotePolicy.rejected.match(action)) {
|
||||||
|
return state.deleteIn([action.meta.arg.statusId, 'isSavingQuotePolicy']);
|
||||||
|
}
|
||||||
|
|
||||||
switch(action.type) {
|
switch(action.type) {
|
||||||
case STATUS_FETCH_REQUEST:
|
case STATUS_FETCH_REQUEST:
|
||||||
return state.setIn([action.id, 'isLoading'], true);
|
return state.setIn([action.id, 'isLoading'], true);
|
||||||
|
|||||||
@ -40,7 +40,10 @@ interface AppThunkConfig {
|
|||||||
fulfilledMeta: AppMeta;
|
fulfilledMeta: AppMeta;
|
||||||
rejectedMeta: AppMeta;
|
rejectedMeta: AppMeta;
|
||||||
}
|
}
|
||||||
type AppThunkApi = Pick<GetThunkAPI<AppThunkConfig>, 'getState' | 'dispatch'>;
|
export type AppThunkApi = Pick<
|
||||||
|
GetThunkAPI<AppThunkConfig>,
|
||||||
|
'getState' | 'dispatch'
|
||||||
|
>;
|
||||||
|
|
||||||
interface AppThunkOptions<Arg> {
|
interface AppThunkOptions<Arg> {
|
||||||
useLoadingBar?: boolean;
|
useLoadingBar?: boolean;
|
||||||
|
|||||||
@ -12,7 +12,11 @@ export function isProduction() {
|
|||||||
else return import.meta.env.PROD;
|
else return import.meta.env.PROD;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Features = 'modern_emojis';
|
export type Features =
|
||||||
|
| 'modern_emojis'
|
||||||
|
| 'outgoing_quotes'
|
||||||
|
| 'fasp'
|
||||||
|
| 'http_message_signatures';
|
||||||
|
|
||||||
export function isFeatureEnabled(feature: Features) {
|
export function isFeatureEnabled(feature: Features) {
|
||||||
return initialState?.features.includes(feature) ?? false;
|
return initialState?.features.includes(feature) ?? false;
|
||||||
|
|||||||
@ -602,15 +602,12 @@ body > [data-popper-placement] {
|
|||||||
&__highlightable {
|
&__highlightable {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 16px;
|
|
||||||
flex: 0 1 auto;
|
flex: 0 1 auto;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
border: 1px solid var(--background-border-color);
|
border: 1px solid var(--background-border-color);
|
||||||
transition: border-color 300ms linear;
|
transition: border-color 300ms linear;
|
||||||
min-height: 0;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
background: var(--input-background-color);
|
background: var(--input-background-color);
|
||||||
overflow-y: auto;
|
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
transition: none;
|
transition: none;
|
||||||
@ -705,6 +702,8 @@ body > [data-popper-placement] {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
|
margin: 8px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
& > div {
|
& > div {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@ -715,6 +714,7 @@ body > [data-popper-placement] {
|
|||||||
&__uploads {
|
&__uploads {
|
||||||
padding: 0 12px;
|
padding: 0 12px;
|
||||||
aspect-ratio: 3/2;
|
aspect-ratio: 3/2;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.media-gallery {
|
.media-gallery {
|
||||||
@ -813,7 +813,6 @@ body > [data-popper-placement] {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
padding: 12px;
|
padding: 12px;
|
||||||
padding-top: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&__submit {
|
&__submit {
|
||||||
@ -874,6 +873,7 @@ body > [data-popper-placement] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
&__poll {
|
&__poll {
|
||||||
|
margin-top: 8px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-self: stretch;
|
align-self: stretch;
|
||||||
@ -3518,11 +3518,10 @@ a.account__display-name {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
height: calc(100% - 10px);
|
height: calc(100% - 10px);
|
||||||
overflow-y: hidden;
|
overflow-y: auto;
|
||||||
|
|
||||||
.compose-form {
|
.compose-form {
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
min-height: 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5403,7 +5402,8 @@ a.status-card {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.privacy-dropdown__dropdown,
|
.privacy-dropdown__dropdown,
|
||||||
.language-dropdown__dropdown {
|
.language-dropdown__dropdown,
|
||||||
|
.visibility-dropdown__dropdown {
|
||||||
box-shadow: var(--dropdown-shadow);
|
box-shadow: var(--dropdown-shadow);
|
||||||
background: var(--dropdown-background-color);
|
background: var(--dropdown-background-color);
|
||||||
backdrop-filter: $backdrop-blur-filter;
|
backdrop-filter: $backdrop-blur-filter;
|
||||||
@ -5432,7 +5432,8 @@ a.status-card {
|
|||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
}
|
}
|
||||||
|
|
||||||
.privacy-dropdown__option {
|
.privacy-dropdown__option,
|
||||||
|
.visibility-dropdown__option {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
letter-spacing: 0.25px;
|
letter-spacing: 0.25px;
|
||||||
@ -5578,6 +5579,39 @@ a.status-card {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.visibility-dropdown {
|
||||||
|
&__overlay[data-popper-placement] {
|
||||||
|
z-index: 9999;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__label.disabled {
|
||||||
|
cursor: default;
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__button {
|
||||||
|
color: $primary-text-color;
|
||||||
|
background: var(--dropdown-background-color);
|
||||||
|
border: 1px solid var(--dropdown-border-color);
|
||||||
|
padding: 8px 12px;
|
||||||
|
width: 100%;
|
||||||
|
text-align: left;
|
||||||
|
border-radius: 4px;
|
||||||
|
font-size: 14px;
|
||||||
|
height: 40px;
|
||||||
|
|
||||||
|
&:disabled {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__helper {
|
||||||
|
margin-top: 4px;
|
||||||
|
font-size: 0.8em;
|
||||||
|
color: $dark-text-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.search {
|
.search {
|
||||||
margin-bottom: 32px;
|
margin-bottom: 32px;
|
||||||
position: relative;
|
position: relative;
|
||||||
@ -5870,6 +5904,17 @@ a.status-card {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.modal-root label {
|
||||||
|
cursor: pointer;
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
> span {
|
||||||
|
display: block;
|
||||||
|
font-weight: 500;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.video-modal .video-player {
|
.video-modal .video-player {
|
||||||
max-height: 80vh;
|
max-height: 80vh;
|
||||||
max-width: 100vw;
|
max-width: 100vw;
|
||||||
@ -6376,6 +6421,15 @@ a.status-card {
|
|||||||
letter-spacing: 0.25px;
|
letter-spacing: 0.25px;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
|
||||||
|
&__description {
|
||||||
|
margin: 24px 24px 0;
|
||||||
|
color: $darker-text-color;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&__form {
|
&__form {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|||||||
@ -5,7 +5,8 @@
|
|||||||
:root {
|
:root {
|
||||||
--dropdown-border-color: #{lighten($ui-base-color, 4%)};
|
--dropdown-border-color: #{lighten($ui-base-color, 4%)};
|
||||||
--dropdown-background-color: #{rgba(darken($ui-base-color, 8%), 0.9)};
|
--dropdown-background-color: #{rgba(darken($ui-base-color, 8%), 0.9)};
|
||||||
--dropdown-shadow: 0 20px 25px -5px #{rgba($base-shadow-color, 0.25)},
|
--dropdown-shadow:
|
||||||
|
0 20px 25px -5px #{rgba($base-shadow-color, 0.25)},
|
||||||
0 8px 10px -6px #{rgba($base-shadow-color, 0.25)};
|
0 8px 10px -6px #{rgba($base-shadow-color, 0.25)};
|
||||||
--modal-background-color: #{rgba(darken($ui-base-color, 8%), 0.7)};
|
--modal-background-color: #{rgba(darken($ui-base-color, 8%), 0.7)};
|
||||||
--modal-background-variant-color: #{rgba($ui-base-color, 0.7)};
|
--modal-background-variant-color: #{rgba($ui-base-color, 0.7)};
|
||||||
|
|||||||
@ -71,8 +71,16 @@ class Antispam
|
|||||||
end
|
end
|
||||||
|
|
||||||
def report_if_needed!(account)
|
def report_if_needed!(account)
|
||||||
return if Report.unresolved.exists?(account: Account.representative, target_account: account)
|
return if system_reports.unresolved.exists?(target_account: account)
|
||||||
|
|
||||||
Report.create!(account: Account.representative, target_account: account, category: :spam, comment: 'Account automatically reported for posting a banned URL')
|
system_reports.create!(
|
||||||
|
category: :spam,
|
||||||
|
comment: 'Account automatically reported for posting a banned URL',
|
||||||
|
target_account: account
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def system_reports
|
||||||
|
Account.representative.reports
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -116,7 +116,7 @@ class Account < ApplicationRecord
|
|||||||
|
|
||||||
# Local user validations
|
# Local user validations
|
||||||
validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: USERNAME_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_username? && !actor_type_application? }
|
validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: USERNAME_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_username? && !actor_type_application? }
|
||||||
validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? && !actor_type_application? }
|
validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? && !actor_type_application? && !user&.bypass_registration_checks }
|
||||||
validates :display_name, length: { maximum: DISPLAY_NAME_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_display_name? }
|
validates :display_name, length: { maximum: DISPLAY_NAME_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_display_name? }
|
||||||
validates :note, note_length: { maximum: NOTE_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_note? }
|
validates :note, note_length: { maximum: NOTE_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_note? }
|
||||||
validates :fields, length: { maximum: DEFAULT_FIELDS_SIZE }, if: -> { local? && will_save_change_to_fields? }
|
validates :fields, length: { maximum: DEFAULT_FIELDS_SIZE }, if: -> { local? && will_save_change_to_fields? }
|
||||||
|
|||||||
@ -10,6 +10,10 @@ module Status::InteractionPolicyConcern
|
|||||||
followed: (1 << 3),
|
followed: (1 << 3),
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
|
included do
|
||||||
|
before_validation :downgrade_quote_policy, if: -> { local? && !distributable? }
|
||||||
|
end
|
||||||
|
|
||||||
def quote_policy_as_keys(kind)
|
def quote_policy_as_keys(kind)
|
||||||
case kind
|
case kind
|
||||||
when :automatic
|
when :automatic
|
||||||
@ -52,4 +56,8 @@ module Status::InteractionPolicyConcern
|
|||||||
|
|
||||||
:denied
|
:denied
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def downgrade_quote_policy
|
||||||
|
self.quote_approval_policy = 0
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -43,7 +43,7 @@ class CustomEmoji < ApplicationRecord
|
|||||||
|
|
||||||
has_attached_file :image, styles: { static: { format: 'png', convert_options: '-coalesce +profile "!icc,*" +set date:modify +set date:create +set date:timestamp', file_geometry_parser: FastGeometryParser } }, validate_media_type: false, processors: [:lazy_thumbnail]
|
has_attached_file :image, styles: { static: { format: 'png', convert_options: '-coalesce +profile "!icc,*" +set date:modify +set date:create +set date:timestamp', file_geometry_parser: FastGeometryParser } }, validate_media_type: false, processors: [:lazy_thumbnail]
|
||||||
|
|
||||||
normalizes :domain, with: ->(domain) { domain.downcase }
|
normalizes :domain, with: ->(domain) { domain.downcase.strip }
|
||||||
|
|
||||||
validates_attachment :image, content_type: { content_type: IMAGE_MIME_TYPES }, presence: true
|
validates_attachment :image, content_type: { content_type: IMAGE_MIME_TYPES }, presence: true
|
||||||
validates_attachment_size :image, less_than: LIMIT, unless: :local?
|
validates_attachment_size :image, less_than: LIMIT, unless: :local?
|
||||||
|
|||||||
@ -35,7 +35,7 @@ class CustomEmojiFilter
|
|||||||
when 'remote'
|
when 'remote'
|
||||||
CustomEmoji.remote
|
CustomEmoji.remote
|
||||||
when 'by_domain'
|
when 'by_domain'
|
||||||
CustomEmoji.where(domain: value.strip.downcase)
|
CustomEmoji.where(domain: value)
|
||||||
when 'shortcode'
|
when 'shortcode'
|
||||||
CustomEmoji.search(value.strip)
|
CustomEmoji.search(value.strip)
|
||||||
else
|
else
|
||||||
|
|||||||
@ -3,15 +3,14 @@
|
|||||||
class ActivityPub::DeleteQuoteAuthorizationSerializer < ActivityPub::Serializer
|
class ActivityPub::DeleteQuoteAuthorizationSerializer < ActivityPub::Serializer
|
||||||
attributes :id, :type, :actor, :to
|
attributes :id, :type, :actor, :to
|
||||||
|
|
||||||
# TODO: change the `object` to a `QuoteAuthorization` object instead of just the URI?
|
has_one :virtual_object, key: :object, serializer: ActivityPub::QuoteAuthorizationSerializer
|
||||||
attribute :virtual_object, key: :object
|
|
||||||
|
|
||||||
def id
|
def id
|
||||||
[ActivityPub::TagManager.instance.approval_uri_for(object, check_approval: false), '#delete'].join
|
[ActivityPub::TagManager.instance.approval_uri_for(object, check_approval: false), '#delete'].join
|
||||||
end
|
end
|
||||||
|
|
||||||
def virtual_object
|
def virtual_object
|
||||||
ActivityPub::TagManager.instance.approval_uri_for(object, check_approval: false)
|
object
|
||||||
end
|
end
|
||||||
|
|
||||||
def type
|
def type
|
||||||
|
|||||||
@ -74,7 +74,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
|||||||
end
|
end
|
||||||
|
|
||||||
def update_interaction_policies!
|
def update_interaction_policies!
|
||||||
@status.quote_approval_policy = @status_parser.quote_policy
|
@status.update(quote_approval_policy: @status_parser.quote_policy)
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_media_attachments!
|
def update_media_attachments!
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class BulkImportRowService
|
class BulkImportRowService
|
||||||
|
STOPLIGHT_COOL_OFF_TIME = 5.minutes.seconds
|
||||||
|
STOPLIGHT_THRESHOLD = 1
|
||||||
|
|
||||||
def call(row)
|
def call(row)
|
||||||
@account = row.bulk_import.account
|
@account = row.bulk_import.account
|
||||||
@data = row.data
|
@data = row.data
|
||||||
@ -10,7 +13,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_wrapper(target_domain).run { ResolveAccountService.new.call(target_acct, { check_delivery_availability: true }) }
|
@target_account = stoplight_wrapper(target_domain).run(stoplight_fallback) { 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 +21,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_wrapper(target_domain).run { ActivityPub::FetchRemoteStatusService.new.call(target_uri) }
|
@target_status ||= stoplight_wrapper(target_domain).run(stoplight_fallback) { ActivityPub::FetchRemoteStatusService.new.call(target_uri) }
|
||||||
return false if @target_status.nil?
|
return false if @target_status.nil?
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -51,13 +54,18 @@ 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_fallback
|
||||||
|
->(error) {}
|
||||||
|
end
|
||||||
|
|
||||||
def stoplight_wrapper(domain)
|
def stoplight_wrapper(domain)
|
||||||
if domain.present?
|
if domain.present?
|
||||||
Stoplight("source:#{domain}")
|
Stoplight(
|
||||||
.with_fallback { nil }
|
"source:#{domain}",
|
||||||
.with_threshold(1)
|
cool_off_time: STOPLIGHT_COOL_OFF_TIME,
|
||||||
.with_cool_off_time(5.minutes.seconds)
|
threshold: STOPLIGHT_THRESHOLD,
|
||||||
.with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) }
|
tracked_errors: [HTTP::Error, OpenSSL::SSL::SSLError]
|
||||||
|
)
|
||||||
else
|
else
|
||||||
Stoplight('domain-blank')
|
Stoplight('domain-blank')
|
||||||
end
|
end
|
||||||
|
|||||||
@ -5,8 +5,8 @@ class ActivityPub::DeliveryWorker
|
|||||||
include RoutingHelper
|
include RoutingHelper
|
||||||
include JsonLdHelper
|
include JsonLdHelper
|
||||||
|
|
||||||
|
STOPLIGHT_COOL_OFF_TIME = 60
|
||||||
STOPLIGHT_FAILURE_THRESHOLD = 10
|
STOPLIGHT_FAILURE_THRESHOLD = 10
|
||||||
STOPLIGHT_COOLDOWN = 60
|
|
||||||
|
|
||||||
sidekiq_options queue: 'push', retry: 16, dead: false
|
sidekiq_options queue: 'push', retry: 16, dead: false
|
||||||
|
|
||||||
@ -75,9 +75,11 @@ class ActivityPub::DeliveryWorker
|
|||||||
end
|
end
|
||||||
|
|
||||||
def stoplight_wrapper
|
def stoplight_wrapper
|
||||||
Stoplight(@inbox_url)
|
Stoplight(
|
||||||
.with_threshold(STOPLIGHT_FAILURE_THRESHOLD)
|
@inbox_url,
|
||||||
.with_cool_off_time(STOPLIGHT_COOLDOWN)
|
cool_off_time: STOPLIGHT_COOL_OFF_TIME,
|
||||||
|
threshold: STOPLIGHT_FAILURE_THRESHOLD
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
def failure_tracker
|
def failure_tracker
|
||||||
|
|||||||
@ -3,6 +3,8 @@
|
|||||||
require 'stoplight'
|
require 'stoplight'
|
||||||
|
|
||||||
Rails.application.reloader.to_prepare do
|
Rails.application.reloader.to_prepare do
|
||||||
Stoplight.default_data_store = Stoplight::DataStore::Redis.new(RedisConnection.new.connection)
|
Stoplight.configure do |config|
|
||||||
Stoplight.default_notifiers = [Stoplight::Notifier::Logger.new(Rails.logger)]
|
config.data_store = Stoplight::DataStore::Redis.new(RedisConnection.new.connection)
|
||||||
|
config.notifiers = [Stoplight::Notifier::Logger.new(Rails.logger)]
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -3,7 +3,7 @@ be:
|
|||||||
activerecord:
|
activerecord:
|
||||||
attributes:
|
attributes:
|
||||||
poll:
|
poll:
|
||||||
expires_at: Дэдлайн
|
expires_at: Скончыцца
|
||||||
options: Выбар
|
options: Выбар
|
||||||
user:
|
user:
|
||||||
agreement: Пагадненне аб абслугоўванні
|
agreement: Пагадненне аб абслугоўванні
|
||||||
@ -19,7 +19,7 @@ be:
|
|||||||
domain:
|
domain:
|
||||||
invalid: не з’яўляецца сапраўдным даменным імем
|
invalid: не з’яўляецца сапраўдным даменным імем
|
||||||
messages:
|
messages:
|
||||||
invalid_domain_on_line: "%{value} не пасуе для карэктнай назвы сервера"
|
invalid_domain_on_line: "%{value} не пасуе для карэктнай назвы дамена"
|
||||||
models:
|
models:
|
||||||
account:
|
account:
|
||||||
attributes:
|
attributes:
|
||||||
@ -44,7 +44,7 @@ be:
|
|||||||
attributes:
|
attributes:
|
||||||
account_id:
|
account_id:
|
||||||
taken: ужо ў спісе
|
taken: ужо ў спісе
|
||||||
must_be_following: мусіць быць карыстальнікам у вашых падпісках
|
must_be_following: мусіць быць карыстальнікам у Вашых падпісках
|
||||||
status:
|
status:
|
||||||
attributes:
|
attributes:
|
||||||
reblog:
|
reblog:
|
||||||
@ -61,7 +61,7 @@ be:
|
|||||||
blocked: выкарыстоўвае забароненую крыніцу электроннай пошты
|
blocked: выкарыстоўвае забароненую крыніцу электроннай пошты
|
||||||
unreachable: не існуе
|
unreachable: не існуе
|
||||||
role_id:
|
role_id:
|
||||||
elevated: не можа быць вышэй за вашу бягучую ролю
|
elevated: не можа быць вышэй за Вашу бягучую ролю
|
||||||
user_role:
|
user_role:
|
||||||
attributes:
|
attributes:
|
||||||
permissions_as_keys:
|
permissions_as_keys:
|
||||||
@ -69,7 +69,7 @@ be:
|
|||||||
elevated: не можа ўключыць дазволы, якімі не валодае ваша бягучая роля
|
elevated: не можа ўключыць дазволы, якімі не валодае ваша бягучая роля
|
||||||
own_role: не можа быць зменены з вашай бягучай роляй
|
own_role: не можа быць зменены з вашай бягучай роляй
|
||||||
position:
|
position:
|
||||||
elevated: не можа быць вышэй за вашу бягучую ролю
|
elevated: не можа быць вышэй за Вашу бягучую ролю
|
||||||
own_role: не можа быць зменены з вашай бягучай роляй
|
own_role: не можа быць зменены з вашай бягучай роляй
|
||||||
webhook:
|
webhook:
|
||||||
attributes:
|
attributes:
|
||||||
|
|||||||
@ -11,26 +11,49 @@ az:
|
|||||||
accounts:
|
accounts:
|
||||||
delete: Veriləri sil
|
delete: Veriləri sil
|
||||||
destroyed_msg: "%{username} - verilərinin tezliklə silinməsi növbədədir"
|
destroyed_msg: "%{username} - verilərinin tezliklə silinməsi növbədədir"
|
||||||
|
display_name: Ekran adı
|
||||||
|
followers: İzləyicilər
|
||||||
|
follows: İzlənilənlər
|
||||||
moderation:
|
moderation:
|
||||||
title: Moderasiya
|
title: Moderasiya
|
||||||
moderation_notes: Moderasiya notları
|
moderation_notes: Moderasiya notları
|
||||||
|
most_recent_activity: Ən son fəaliyyət
|
||||||
|
most_recent_ip: Ən son IP
|
||||||
remote_suspension_irreversible: Bu hesabın veriləri geri qaytarılmayacaq şəkildə silinib.
|
remote_suspension_irreversible: Bu hesabın veriləri geri qaytarılmayacaq şəkildə silinib.
|
||||||
remote_suspension_reversible_hint_html: Hesabın fəaliyyəti öz serverində dayandırılıb və verilər %{date} tarixində tamamilə silinəcək. O vaxta qədər, uzaq server hər hansısa mənfi təsir olmadan bu hesabı bərpa edə bilər. Hesabın bütün verilərini dərhal silmək istəyirsinizsə, bunu aşağıdan edə bilərsiniz.
|
remote_suspension_reversible_hint_html: Hesabın fəaliyyəti öz serverində dayandırılıb və verilər %{date} tarixində tamamilə silinəcək. O vaxta qədər, uzaq server hər hansısa mənfi təsir olmadan bu hesabı bərpa edə bilər. Hesabın bütün verilərini dərhal silmək istəyirsinizsə, bunu aşağıdan edə bilərsiniz.
|
||||||
|
resend_confirmation:
|
||||||
|
send: Təsdiq keçidini təkrar göndər
|
||||||
reset_password: Parolu sıfırla
|
reset_password: Parolu sıfırla
|
||||||
|
security: Təhlükəsizlik
|
||||||
security_measures:
|
security_measures:
|
||||||
only_password: Yalnız parol
|
only_password: Yalnız parol
|
||||||
password_and_2fa: Parol və 2FA
|
password_and_2fa: Parol və 2FA
|
||||||
suspension_irreversible: Bu hesabın veriləri geri qaytarılmayacaq şəkildə silinib. Hesabı istifadəyə yararlı etmək üçün hesab fəaliyyətinin dayandırılma prosesini ləğv edə bilərsiniz, ancaq daha əvvəl sahib olduğunuz heç bir veri geri qaytarılmayacaq.
|
suspension_irreversible: Bu hesabın veriləri geri qaytarılmayacaq şəkildə silinib. Hesabı istifadəyə yararlı etmək üçün hesab fəaliyyətinin dayandırılma prosesini ləğv edə bilərsiniz, ancaq daha əvvəl sahib olduğunuz heç bir veri geri qaytarılmayacaq.
|
||||||
action_logs:
|
action_logs:
|
||||||
action_types:
|
action_types:
|
||||||
|
resend_user: Təsdiq poçtunu təkrar göndər
|
||||||
reset_password_user: Parolu sıfırla
|
reset_password_user: Parolu sıfırla
|
||||||
actions:
|
actions:
|
||||||
approve_appeal_html: "%{name}, moderasiya qərarına %{target} tərəfindən verilən etirazı təsdiqlədi"
|
approve_appeal_html: "%{name}, moderasiya qərarına %{target} tərəfindən verilən etirazı təsdiqlədi"
|
||||||
reject_appeal_html: "%{name}, moderasiya qərarına %{target} tərəfindən verilən etirazı rədd etdi"
|
reject_appeal_html: "%{name}, moderasiya qərarına %{target} tərəfindən verilən etirazı rədd etdi"
|
||||||
reset_password_user_html: "%{name}, %{target} istifadəçisinin parolunu sıfırladı"
|
reset_password_user_html: "%{name}, %{target} istifadəçisinin parolunu sıfırladı"
|
||||||
|
deleted_account: silinmiş hesab
|
||||||
dashboard:
|
dashboard:
|
||||||
|
media_storage: Media anbarı
|
||||||
software: Yazılım
|
software: Yazılım
|
||||||
|
domain_allows:
|
||||||
|
export: Xaricə köçür
|
||||||
|
domain_blocks:
|
||||||
|
export: Xaricə köçür
|
||||||
|
export_domain_blocks:
|
||||||
|
import:
|
||||||
|
title: Əngəllənən domenləri daxilə köçür
|
||||||
|
new:
|
||||||
|
title: Əngəllənən domenləri daxilə köçür
|
||||||
instances:
|
instances:
|
||||||
|
dashboard:
|
||||||
|
instance_followers_measure: oradakı izləyicilərimiz
|
||||||
|
instance_follows_measure: buradakı izləyiciləri
|
||||||
moderation:
|
moderation:
|
||||||
title: Moderasiya
|
title: Moderasiya
|
||||||
moderation_notes:
|
moderation_notes:
|
||||||
@ -61,18 +84,29 @@ az:
|
|||||||
view_dashboard_description: İstifadəçilərin idarəetmə lövhəsinə və müxtəlif metriklərə erişməsinə icazə verir
|
view_dashboard_description: İstifadəçilərin idarəetmə lövhəsinə və müxtəlif metriklərə erişməsinə icazə verir
|
||||||
view_devops_description: İstifadəçilərin Sidekiq və pgHero idarəetmə lövhələrinə erişməsinə icazə verir
|
view_devops_description: İstifadəçilərin Sidekiq və pgHero idarəetmə lövhələrinə erişməsinə icazə verir
|
||||||
settings:
|
settings:
|
||||||
|
appearance:
|
||||||
|
title: Görünüş
|
||||||
|
discovery:
|
||||||
|
public_timelines: Ümumi zaman xətləri
|
||||||
|
title: Kəşf et
|
||||||
registrations:
|
registrations:
|
||||||
moderation_recommandation: Hər kəs üçün qeydiyyatı açmazdan əvvəl lütfən əmin olun ki, adekvat və reaktiv moderasiya komandanız var!
|
moderation_recommandation: Hər kəs üçün qeydiyyatı açmazdan əvvəl lütfən əmin olun ki, adekvat və reaktiv moderasiya komandanız var!
|
||||||
registrations_mode:
|
registrations_mode:
|
||||||
warning_hint: Moderasiya komandanızın spam və zərərli qeydiyyatları vaxtında idarə edə biləcəyinə əmin deyilsinizsə, “Qeydiyyat üçün təsdiq tələb olunur”dan istifadə etməyi tövsiyə edirik.
|
warning_hint: Moderasiya komandanızın spam və zərərli qeydiyyatları vaxtında idarə edə biləcəyinə əmin deyilsinizsə, “Qeydiyyat üçün təsdiq tələb olunur”dan istifadə etməyi tövsiyə edirik.
|
||||||
title: Server ayarları
|
title: Server ayarları
|
||||||
statuses:
|
statuses:
|
||||||
|
application: Tətbiq
|
||||||
metadata: Meta veri
|
metadata: Meta veri
|
||||||
system_checks:
|
system_checks:
|
||||||
elasticsearch_version_check:
|
elasticsearch_version_check:
|
||||||
message_html: 'Uyumlu olmayan Elasticsearch versiyası: %{value}'
|
message_html: 'Uyumlu olmayan Elasticsearch versiyası: %{value}'
|
||||||
tags:
|
tags:
|
||||||
updated_msg: Mövzu etiketi ayarları uğurla güncəlləndi
|
updated_msg: Mövzu etiketi ayarları uğurla güncəlləndi
|
||||||
|
trends:
|
||||||
|
tags:
|
||||||
|
used_by_over_week:
|
||||||
|
one: Keçən həftə bir nəfər istifadə etdi
|
||||||
|
other: Keçən həftə %{count} nəfər istifadə etdi
|
||||||
admin_mailer:
|
admin_mailer:
|
||||||
auto_close_registrations:
|
auto_close_registrations:
|
||||||
body: Son vaxtlarda moderator fəaliyyətinin olmamasına görə, %{instance} üzərindəki qeydiyyatlar avtomatik olaraq manual yoxlanış tələb edəcək şəkildə dəyişdirilib, beləliklə %{instance} potensial zərərli aktyorlar tərəfindən istifadə edilən platforma çevrilməyəcək. İstənilən vaxt açıq qeydiyyat rejiminə qaytara bilərsiniz.
|
body: Son vaxtlarda moderator fəaliyyətinin olmamasına görə, %{instance} üzərindəki qeydiyyatlar avtomatik olaraq manual yoxlanış tələb edəcək şəkildə dəyişdirilib, beləliklə %{instance} potensial zərərli aktyorlar tərəfindən istifadə edilən platforma çevrilməyəcək. İstənilən vaxt açıq qeydiyyat rejiminə qaytara bilərsiniz.
|
||||||
@ -81,23 +115,52 @@ az:
|
|||||||
next_steps: Moderasiya qərarını geri almaq üçün etirazı təsdiqləyə, ya da etirazı yox saya bilərsiniz.
|
next_steps: Moderasiya qərarını geri almaq üçün etirazı təsdiqləyə, ya da etirazı yox saya bilərsiniz.
|
||||||
subject: "%{username}, %{instance} üzərindəki bir moderasiya qərarına etiraz edir"
|
subject: "%{username}, %{instance} üzərindəki bir moderasiya qərarına etiraz edir"
|
||||||
appearance:
|
appearance:
|
||||||
|
advanced_web_interface: Qabaqcıl veb interfeys
|
||||||
|
advanced_web_interface_hint: 'Tam ekran enini istifadə etmək istəyirsinizsə, qabaqcıl veb interfeys, istədiyiniz qədər məlumatı eyni anda görə bilməyiniz üçün bir çox fərqli sütunu konfiqurasiya etməyinizə imkan verir: Əsas ekran, bildirişlər, birləşmiş zaman xətti, istənilən sayda siyahı və mövzu etiketləri.'
|
||||||
animations_and_accessibility: Animasiyalar və erişiləbilənlik
|
animations_and_accessibility: Animasiyalar və erişiləbilənlik
|
||||||
|
confirmation_dialogs: Təsdiq dialoq pəncərələri
|
||||||
|
discovery: Kəşf et
|
||||||
|
localization:
|
||||||
|
guide_link_text: Hər kəs töhfə verə bilər.
|
||||||
|
sensitive_content: Həssas məzmun
|
||||||
applications:
|
applications:
|
||||||
|
created: Tətbiq uğurla yaradıldı
|
||||||
|
destroyed: Tətbiq uğurla silindi
|
||||||
regenerate_token: Erişim tokenini təkrar yarat
|
regenerate_token: Erişim tokenini təkrar yarat
|
||||||
token_regenerated: Erişim tokeni uğurla yaradıldı
|
token_regenerated: Erişim tokeni uğurla yaradıldı
|
||||||
your_token: Erişim tokeniniz
|
your_token: Erişim tokeniniz
|
||||||
auth:
|
auth:
|
||||||
|
captcha_confirmation:
|
||||||
|
help_html: CAPTCHA-nı həll etməklə bağlı probleminiz varsa, %{email} üzərindən əlaqə saxlaya bilərsiniz, sizə kömək edə bilərik.
|
||||||
|
hint_html: Sadəcə bir şey qaldı! Sizin insan olduğunuzu təsdiqləməyimiz lazımdır (bunu spam-ları əngəlləmək üçün edirik). Aşağıdakı CAPTCHA-nı həll edib "Davam et"ə klikləyin.
|
||||||
|
title: Təhlükəsizlik yoxlanışı
|
||||||
confirmations:
|
confirmations:
|
||||||
wrong_email_hint: Əgər bu e-poçt ünvanı doğru deyilsə, hesab ayarlarında onu dəyişdirə bilərsiniz.
|
wrong_email_hint: Əgər bu e-poçt ünvanı doğru deyilsə, hesab ayarlarında onu dəyişdirə bilərsiniz.
|
||||||
|
delete_account: Hesabı sil
|
||||||
|
delete_account_html: Hesabınızı silmək istəyirsinizsə, <a href="%{path}">buradan davam edə</a> bilərsiniz. Sizdən təsdiq etməyiniz soruşulacaq.
|
||||||
forgot_password: Parolunuzu unutmusunuz?
|
forgot_password: Parolunuzu unutmusunuz?
|
||||||
invalid_reset_password_token: Parol sıfırlama tokeni yararsızdır və ya vaxtı bitib. Lütfən yenisini tələb edin.
|
invalid_reset_password_token: Parol sıfırlama tokeni yararsızdır və ya vaxtı bitib. Lütfən yenisini tələb edin.
|
||||||
link_to_otp: Telefonunuzdan iki faktorlu kodu və ya bir geri qaytarma kodunu daxil edin
|
link_to_otp: Telefonunuzdan iki faktorlu kodu və ya bir geri qaytarma kodunu daxil edin
|
||||||
|
migrate_account: Fərqli bir hesaba daşı
|
||||||
|
migrate_account_html: Bu hesabı başqa bir hesaba yönləndirmək istəyirsinizsə, <a href="%{path}">burada konfiqurasiya edə</a> bilərsiniz.
|
||||||
|
resend_confirmation: Təsdiq keçidini təkrar göndər
|
||||||
reset_password: Parolu sıfırla
|
reset_password: Parolu sıfırla
|
||||||
rules:
|
rules:
|
||||||
preamble: Bunlar, %{domain} moderatorları tərəfindən təyin edilib və tətbiq edilib.
|
preamble: Bunlar, %{domain} moderatorları tərəfindən təyin edilib və tətbiq edilib.
|
||||||
preamble_invited: Davam etməzdən əvvəl, lütfən %{domain} moderatorları tərəfindən təyin edilmiş qaydaları nəzərdən keçirin.
|
preamble_invited: Davam etməzdən əvvəl, lütfən %{domain} moderatorları tərəfindən təyin edilmiş qaydaları nəzərdən keçirin.
|
||||||
|
title: Bəzi təməl qaydalar.
|
||||||
set_new_password: Yeni parol təyin et
|
set_new_password: Yeni parol təyin et
|
||||||
|
setup:
|
||||||
|
email_below_hint_html: Spam qovluğunuzu yoxlayın, ya da başqasını tələb edin. Əgər yanlışdırsa, e-poçt ünvanınızı düzəldə bilərsiniz.
|
||||||
|
email_settings_hint_html: Mastodon istifadə etməyə başlamaq üçün %{email} ünvanına göndərdiyimiz keçidə klikləyin. Biz burada gözləyirik.
|
||||||
|
link_not_received: Keçidi almamısınız?
|
||||||
|
title: Gələn qutunuzu yoxlayın
|
||||||
|
sign_up:
|
||||||
|
preamble: Bu Mastodon serveri üzərindəki hesabla, hesabın yarada yerləşməsindən asılı olmayaraq fediverse-dəki istənilən şəxsi izləyə biləcəksiniz.
|
||||||
|
title: "%{domain} üzərində qeydiyyatınızı başladaq."
|
||||||
status:
|
status:
|
||||||
|
account_status: Hesab statusu
|
||||||
|
functional: Hesabınız tamamilə işləkdir.
|
||||||
self_destruct: "%{domain} bağlandığı üçün, hesabınıza yalnız məhdud erişiminiz olacaq."
|
self_destruct: "%{domain} bağlandığı üçün, hesabınıza yalnız məhdud erişiminiz olacaq."
|
||||||
challenge:
|
challenge:
|
||||||
hint_html: "<strong>İpucu:</strong> Sonrakı bir saat ərzində sizdən parolu soruşmayacağıq."
|
hint_html: "<strong>İpucu:</strong> Sonrakı bir saat ərzində sizdən parolu soruşmayacağıq."
|
||||||
@ -105,45 +168,157 @@ az:
|
|||||||
prompt: Davam etmək üçün parolu təsdiqlə
|
prompt: Davam etmək üçün parolu təsdiqlə
|
||||||
deletes:
|
deletes:
|
||||||
confirm_password: Kimliyinizi doğrulamaq üçün hazırkı parolunuzu daxil edin
|
confirm_password: Kimliyinizi doğrulamaq üçün hazırkı parolunuzu daxil edin
|
||||||
|
proceed: Hesabı sil
|
||||||
|
success_msg: Hesabınız uğurla silindi
|
||||||
|
edit_profile:
|
||||||
|
basic_information: Təməl məlumatlar
|
||||||
|
hint_html: "<strong>İnsanların hər kəsə açıq profilinizdə və göndərişlərinizin yanında nə göstərmək istədiyinizi özəlləşdirin.</strong> Doldurulmuş bir profilə və bir profil şəklinə sahib olduğunuz zaman digər şəxslərin sizi izləmə və sizinlə əlaqə qurma ehtimalı yüksəkdir."
|
||||||
exports:
|
exports:
|
||||||
archive_takeout:
|
archive_takeout:
|
||||||
hint_html: "<strong>Göndərişlərinizin və yüklədiyiniz medianın</strong> bir arxivini tələb edə bilərsiniz. Xaricə köçürülmüş verilər, istənilən uyumlu yazılım tərəfindən oxuna bilən ActivityPub formatında olacaq. Hər 7 gündə bir dəfə arxiv tələb edə bilərsiniz."
|
hint_html: "<strong>Göndərişlərinizin və yüklədiyiniz medianın</strong> bir arxivini tələb edə bilərsiniz. Xaricə köçürülmüş verilər, istənilən uyumlu yazılım tərəfindən oxuna bilən ActivityPub formatında olacaq. Hər 7 gündə bir dəfə arxiv tələb edə bilərsiniz."
|
||||||
|
domain_blocks: Domen əngəlləmələri
|
||||||
|
storage: Media anbarı
|
||||||
filters:
|
filters:
|
||||||
|
contexts:
|
||||||
|
public: Ümumi zaman xətləri
|
||||||
edit:
|
edit:
|
||||||
statuses_hint_html: Bu filtr, aşağıdakı açar sözləri ilə uyuşmasından asılı olmayaraq fərdi göndərişləri seçmək üçün tətbiq olunur. <a href="%{path}">Göndərişləri incələyin və ya filtrdən silin</a>.
|
statuses_hint_html: Bu filtr, aşağıdakı açar sözləri ilə uyuşmasından asılı olmayaraq fərdi göndərişləri seçmək üçün tətbiq olunur. <a href="%{path}">Göndərişləri incələyin və ya filtrdən silin</a>.
|
||||||
|
index:
|
||||||
|
contexts: "%{contexts} üzrə filtrlər"
|
||||||
|
empty: Filtriniz yoxdur.
|
||||||
|
title: Filtrlər
|
||||||
generic:
|
generic:
|
||||||
all_matching_items_selected_html:
|
all_matching_items_selected_html:
|
||||||
one: Axtarışınızla uyuşan <strong>%{count}</strong> element seçilib.
|
one: Axtarışınızla uyuşan <strong>%{count}</strong> element seçilib.
|
||||||
other: Axtarışınızla uyuşan <strong>%{count}</strong> element seçilib.
|
other: Axtarışınızla uyuşan <strong>%{count}</strong> element seçilib.
|
||||||
|
order_by: Sırala
|
||||||
select_all_matching_items:
|
select_all_matching_items:
|
||||||
one: Axtarışınızla uyuşan <0>%{count}</0> elementi seçin.
|
one: Axtarışınızla uyuşan <0>%{count}</0> elementi seçin.
|
||||||
other: Axtarışınızla uyuşan <0>%{count}</0> elementi seçin.
|
other: Axtarışınızla uyuşan <0>%{count}</0> elementi seçin.
|
||||||
imports:
|
imports:
|
||||||
errors:
|
errors:
|
||||||
incompatible_type: Seçilmiş daxilə köçürmə növü ilə uyumlu deyil
|
incompatible_type: Seçilmiş daxilə köçürmə növü ilə uyumlu deyil
|
||||||
|
preface: Başqa serverdən xaricə köçürdüyünüz veriləri (məsələn, izlədiyiniz və ya əngəllədiyiniz insanların siyahısını) daxilə köçürə bilərsiniz.
|
||||||
|
type_groups:
|
||||||
|
constructive: İzlənilənlər və Əlfəcinlər
|
||||||
invites:
|
invites:
|
||||||
|
max_uses_prompt: Limitsiz
|
||||||
prompt: Bu serverə erişim icazəsi vermək üçün keçid yaradın və başqaları ilə paylaşın
|
prompt: Bu serverə erişim icazəsi vermək üçün keçid yaradın və başqaları ilə paylaşın
|
||||||
|
table:
|
||||||
|
uses: İstifadə
|
||||||
login_activities:
|
login_activities:
|
||||||
authentication_methods:
|
authentication_methods:
|
||||||
|
otp: iki faktorlu kimlik doğrulama tətbiqi
|
||||||
password: parol
|
password: parol
|
||||||
description_html: Əgər tanımadığınız bir fəaliyyəti görsəniz, parolunuzu dəyişdirməyi və iki faktorlu kimlik doğrulamanı fəallaşdırmağı düşünə bilərsiniz
|
description_html: Əgər tanımadığınız bir fəaliyyəti görsəniz, parolunuzu dəyişdirməyi və iki faktorlu kimlik doğrulamanı fəallaşdırmağı düşünə bilərsiniz
|
||||||
|
mail_subscriptions:
|
||||||
|
unsubscribe:
|
||||||
|
emails:
|
||||||
|
notification_emails:
|
||||||
|
reblog: təkrar paylaşma bildirişi e-poçtları
|
||||||
migrations:
|
migrations:
|
||||||
|
incoming_migrations: Fərqli bir hesabdan daşı
|
||||||
|
incoming_migrations_html: Başqa bir hesabdan bu hesaba daşımaq üçün əvvəlcə <a href="%{path}">bir hesab alias-ı yaratmalısınız</a>.
|
||||||
|
proceed_with_move: İzləyiciləri daşı
|
||||||
warning:
|
warning:
|
||||||
disabled_account: Hazırkı hesabınız daha sonra istifadəyə yararsız olacaq. Ancaq, verilərin xaricə köçürülməsinə, həmçinin təkrar aktivləşdirmə prosesinə erişə biləcəksiniz.
|
disabled_account: Hazırkı hesabınız daha sonra istifadəyə yararsız olacaq. Ancaq, verilərin xaricə köçürülməsinə, həmçinin təkrar aktivləşdirmə prosesinə erişə biləcəksiniz.
|
||||||
moderation:
|
moderation:
|
||||||
title: Moderasiya
|
title: Moderasiya
|
||||||
|
notification_mailer:
|
||||||
|
reblog:
|
||||||
|
body: "%{name} göndərişinizi təkrar paylaşdı:"
|
||||||
|
subject: "%{name} göndərişinizi təkrar paylaşdı"
|
||||||
|
title: Yeni təkrar paylaşma
|
||||||
|
notifications:
|
||||||
|
administration_emails: Admin e-poçt bildirişləri
|
||||||
|
email_events: Fəaliyyətlər üçün e-poçt bildirişləri
|
||||||
|
email_events_hint: 'Bildiriş almaq istədiyiniz fəaliyyətləri seçin:'
|
||||||
|
otp_authentication:
|
||||||
|
description_html: Bir kimlik doğrulayıcı tətbiq istifadə edərək <strong>iki addımlı kimlik doğrulamanı</strong> fəallaşdırsanız, giriş etmək üçün telefonunuzun yanınızda olması tələb olunacaq, çünki daxil olmağınız üçün kodlar yaradılacaq.
|
||||||
|
preferences:
|
||||||
|
posting_defaults: Göndəriş ilkin ayarları
|
||||||
|
public_timelines: Ümumi zaman xətləri
|
||||||
|
relationships:
|
||||||
|
activity: Hesab fəaliyyəti
|
||||||
|
confirm_follow_selected_followers: Seçilmiş izləyicləri izləmək istədiyinizə əminsiniz?
|
||||||
|
confirm_remove_selected_followers: Seçilmiş izləyiciləri çıxartmaq istədiyinizə əminsiniz?
|
||||||
|
confirm_remove_selected_follows: Seçilmiş izləmələri çıxartmaq istədiyinizə əminsiniz?
|
||||||
|
dormant: Fəaliyyətsiz
|
||||||
|
follow_failure: Seçilmiş hesablardan bəziləri izlənilə bilmədi.
|
||||||
|
follow_selected_followers: Seçilmiş izləyiciləri izlə
|
||||||
|
followers: İzləyicilər
|
||||||
|
most_recent: Ən son
|
||||||
|
mutual: Ortaq
|
||||||
|
relationship: Münasibət
|
||||||
|
remove_selected_domains: Seçilmiş domenlərin bütün izləyicilərini çıxart
|
||||||
|
remove_selected_followers: Seçilmiş izləyiciləri çıxart
|
||||||
|
remove_selected_follows: Seçilmiş istifadəçiləri izləmədən çıxart
|
||||||
|
status: Hesab statusu
|
||||||
sessions:
|
sessions:
|
||||||
browsers:
|
browsers:
|
||||||
edge: Microsoft Edge
|
edge: Microsoft Edge
|
||||||
|
explanation: Bunlar, hazırda Mastodon hesabınıza giriş etmiş veb brauzerlərdir.
|
||||||
|
title: Seanslar
|
||||||
|
view_authentication_history: Hesabınızın kimlik doğrulama tarixçəsinə baxın
|
||||||
settings:
|
settings:
|
||||||
account_settings: Hesab ayarları
|
account_settings: Hesab ayarları
|
||||||
|
appearance: Görünüş
|
||||||
development: Gəlişdirmə
|
development: Gəlişdirmə
|
||||||
|
export: Xaricə köçür
|
||||||
|
import_and_export: Daxilə və xaricə köçürmə
|
||||||
|
notifications: E-poçt bildirişləri
|
||||||
|
relationships: İzlənilənlər və izləyicilər
|
||||||
|
severed_relationships: Kəsilmiş münasibətlər
|
||||||
|
statuses_cleanup: Göndərişin avtomatik silinməsi
|
||||||
strikes: Moderasiya pozuntuları
|
strikes: Moderasiya pozuntuları
|
||||||
|
two_factor_authentication: İki faktorlu kimlik doğrulama
|
||||||
|
severed_relationships:
|
||||||
|
lost_followers: İtirilən izləyicilər
|
||||||
|
preamble: Bir domeni əngəllədiyiniz zaman və ya moderatorlarınız uzaq bir serverin fəaliyyətini dayandırmağa qərar verdiyi zaman izlədiklərinizi və izləyicilərinizi itirə bilərsiniz. Bu baş verdiyi zaman, kəsilmiş münasibətlərin bir siyahısını endirə, nəzərdən keçirə və bəlkə də başqa bir serverə köçürə biləcəksiniz.
|
||||||
|
statuses:
|
||||||
|
boosted_from_html: "%{acct_link} üzərindən təkrar paylaşdı"
|
||||||
|
default_language: İnterfeys dili ilə eyni
|
||||||
|
pin_errors:
|
||||||
|
reblog: Təkrar paylaşım, sancıla bilməz
|
||||||
|
quote_policies:
|
||||||
|
followers: Yalnız izləyiciləriniz
|
||||||
|
public: Hər kəs
|
||||||
|
visibilities:
|
||||||
|
private: Yalnız izləyicilər
|
||||||
|
private_long: Yalnız izləyicilər görə bilər
|
||||||
|
public_long: Hər kəs görə bilər
|
||||||
|
unlisted_long: Hər kəs görə bilər, ancaq hər kəsə açıq zaman xətlərində sadalanmır
|
||||||
statuses_cleanup:
|
statuses_cleanup:
|
||||||
|
enabled: Köhnə göndərişləri avtomatik sil
|
||||||
enabled_hint: Aşağıdakı istisnalardan heç birinə uyuşmadığı müddətcə, göndərişləriniz qeyd edilmiş yaş həddinə çatdıqda avtomatik silinir
|
enabled_hint: Aşağıdakı istisnalardan heç birinə uyuşmadığı müddətcə, göndərişləriniz qeyd edilmiş yaş həddinə çatdıqda avtomatik silinir
|
||||||
|
exceptions: İstisnalar
|
||||||
|
explanation: Göndərişlərin silinməsi bahalı əməliyyat olduğu üçün, server çox məşğul olmadığı zaman bu proses yavaş-yavaş icra edilir. Bu səbəbdən, bəzi göndərişləriniz yaş həddinə çatdıqdan bir müddət sonra silinə bilər.
|
||||||
|
ignore_reblogs: Təkrar paylaşımları yox say
|
||||||
|
interaction_exceptions: Qarşılıqlı əlaqələrə əsaslanan istisnalar
|
||||||
|
interaction_exceptions_explanation: Nəzərə alın ki, bir göndəriş sevimlilərə əlavə edilmə və ya təkrar paylaşma həddini keçdikdən sonra həmin həddin altına düşsə belə, onun silinəcəyinə zəmanət verilmir.
|
||||||
|
keep_direct: Birbaşa mesajları saxla
|
||||||
|
keep_direct_hint: Birbaşa yazdığınız mesajların heç biri silinməyəcək
|
||||||
|
keep_media: Media qoşmaları olan göndərişləri saxla
|
||||||
|
keep_media_hint: Media qoşması olan göndərişlərinizdən heç biri silinməyəcək
|
||||||
|
keep_pinned: Sancaqlanmış göndərişləri saxla
|
||||||
|
keep_pinned_hint: Sancaqlanmış göndərişlərinizdən heç biri silinməyəcək
|
||||||
|
keep_polls: Anketləri saxla
|
||||||
|
keep_polls_hint: Anketlərinizdən heç biri silinməyəcək
|
||||||
|
keep_self_bookmark: Əlfəcinlərə əlavə etdiyiniz göndərişləri saxla
|
||||||
|
keep_self_bookmark_hint: Öz göndərişlərinizi əlfəcinlərə əlavə etmisinizsə silinməyəcək
|
||||||
|
keep_self_fav: Sevimlilərə əlavə etdiyiniz göndərişləri saxla
|
||||||
|
keep_self_fav_hint: Öz göndərişlərinizi sevimlilərə əlavə etmisinizsə silinməyəcək
|
||||||
|
min_age_label: Yaş həddi
|
||||||
|
min_reblogs: Bu həddən çox təkrar paylaşılan göndərişləri saxla
|
||||||
|
min_reblogs_hint: Bu sayda və ya daha çox təkrar paylaşma alan göndərişləriniz silinməyəcək. Təkrar paylaşılma sayından asılı olmayaraq göndərişlərin silinməsi üçün boş buraxın.
|
||||||
|
stream_entries:
|
||||||
|
sensitive_content: Həssas məzmun
|
||||||
tags:
|
tags:
|
||||||
does_not_match_previous_name: əvvəlki adla uyuşmur
|
does_not_match_previous_name: əvvəlki adla uyuşmur
|
||||||
two_factor_authentication:
|
two_factor_authentication:
|
||||||
|
disabled_success: İki faktorlu kimlik doğrulama uğurla sıradan çıxarıldı
|
||||||
|
enabled: İki faktorlu kimlik doğrulama fəallaşdırıldı
|
||||||
|
enabled_success: İki faktorlu kimlik doğrulama uğurla fəallaşdırıldı
|
||||||
generate_recovery_codes: Geri qaytarma kodlarını yarat
|
generate_recovery_codes: Geri qaytarma kodlarını yarat
|
||||||
lost_recovery_codes: Geri qaytarma kodları, telefonunuzu itirdiyiniz halda hesabınıza yenidən erişməyinizə imkan verir. Geri qaytarma kodlarınızı itirsəniz, onları təkrar yarada bilərsiniz. Köhnə geri qaytarma kodlarınız yararsız sayılacaq.
|
lost_recovery_codes: Geri qaytarma kodları, telefonunuzu itirdiyiniz halda hesabınıza yenidən erişməyinizə imkan verir. Geri qaytarma kodlarınızı itirsəniz, onları təkrar yarada bilərsiniz. Köhnə geri qaytarma kodlarınız yararsız sayılacaq.
|
||||||
recovery_codes: Geri qaytarma kodlarını nüsxələ
|
recovery_codes: Geri qaytarma kodlarını nüsxələ
|
||||||
@ -152,14 +327,21 @@ az:
|
|||||||
user_mailer:
|
user_mailer:
|
||||||
appeal_approved:
|
appeal_approved:
|
||||||
action: Hesab ayarları
|
action: Hesab ayarları
|
||||||
|
explanation: "%{strike_date} tarixində hesabınıza qarşı tətbiq edilən cəza ilə bağlı %{appeal_date} tarixində göndərdiyiniz etirazınız təsdiqlənib. Hesabınız yenidən normal vəziyyətdədir."
|
||||||
|
subject: "%{date} tarixli etirazınız təsdiqlənib"
|
||||||
|
subtitle: Hesabınız yenidən normal vəziyyətdədir.
|
||||||
|
title: Etiraz təsdiqlənib
|
||||||
suspicious_sign_in:
|
suspicious_sign_in:
|
||||||
change_password: parolu dəyişdir
|
change_password: parolu dəyişdir
|
||||||
subject: Hesabınıza yeni bir IP ünvanından erişildi
|
subject: Hesabınıza yeni bir IP ünvanından erişildi
|
||||||
|
terms_of_service_changed:
|
||||||
|
title: Vacib güncəlləmə
|
||||||
warning:
|
warning:
|
||||||
explanation:
|
explanation:
|
||||||
disable: Artıq hesabınızı istifadə edə bilməzsiniz, ancaq profiliniz və digər veriləriniz olduğu kimi qalacaq. Verilərinizin bir nüsxəsini tələb edə, hesab ayarlarınızı dəyişdirə və ya hesabınızı silə bilərsiniz.
|
disable: Artıq hesabınızı istifadə edə bilməzsiniz, ancaq profiliniz və digər veriləriniz olduğu kimi qalacaq. Verilərinizin bir nüsxəsini tələb edə, hesab ayarlarınızı dəyişdirə və ya hesabınızı silə bilərsiniz.
|
||||||
suspend: Hesabınızı artıq istifadə edə bilməzsiniz, profiliniz və digər veriləriniz artıq əlçatmazdır. Təxminən 30 gün ərzində verilər tamamilə silinənə qədər verilərinizin bir nüsxəsini tələb etmək üçün hələ də hesabınıza giriş edə bilərsiniz, ancaq hesab fəaliyyətinin dayandırılması prosesini ləğv etməyinizi önləmək üçün bəzi təməl veriləri saxlayacağıq.
|
suspend: Hesabınızı artıq istifadə edə bilməzsiniz, profiliniz və digər veriləriniz artıq əlçatmazdır. Təxminən 30 gün ərzində verilər tamamilə silinənə qədər verilərinizin bir nüsxəsini tələb etmək üçün hələ də hesabınıza giriş edə bilərsiniz, ancaq hesab fəaliyyətinin dayandırılması prosesini ləğv etməyinizi önləmək üçün bəzi təməl veriləri saxlayacağıq.
|
||||||
welcome:
|
welcome:
|
||||||
|
edit_profile_step: Profilinizi tam dolduraraq qarşılıqlı əlaqələrinizi artırın.
|
||||||
feature_creativity: Mastodon özünüzü onlayn mühitdə ifadə etməyinizə kömək edəcək səs, video və şəkil göndərişləri, erişiləbilənlik açıqlamaları, anketlər, məzmun xəbərdarlıqları, animasiyalı avatarlar, özəl emojilər, kiçik şəkli kəsmə nəzarəti və daha çoxunu dəstəkləyir. Öz sənətinizi, musiqinizi və ya podkastınızı dərc edirsinizsə, Mastodon sizin üçün buradadır.
|
feature_creativity: Mastodon özünüzü onlayn mühitdə ifadə etməyinizə kömək edəcək səs, video və şəkil göndərişləri, erişiləbilənlik açıqlamaları, anketlər, məzmun xəbərdarlıqları, animasiyalı avatarlar, özəl emojilər, kiçik şəkli kəsmə nəzarəti və daha çoxunu dəstəkləyir. Öz sənətinizi, musiqinizi və ya podkastınızı dərc edirsinizsə, Mastodon sizin üçün buradadır.
|
||||||
feature_moderation_title: Olmalı olduğu şəkildə moderasiya
|
feature_moderation_title: Olmalı olduğu şəkildə moderasiya
|
||||||
users:
|
users:
|
||||||
|
|||||||
@ -12,7 +12,7 @@ be:
|
|||||||
many: Падпісчыкаў
|
many: Падпісчыкаў
|
||||||
one: Падпісчык
|
one: Падпісчык
|
||||||
other: Падпісчыкі
|
other: Падпісчыкі
|
||||||
following: Падпісаны
|
following: Падпіскі
|
||||||
instance_actor_flash: Гэты ўліковы запіс - лічбавы аватар, неабходны для рэпрэзентацыі самога сервера, а не якой-небудзь асобы. Ён выкарыстоўваецца для федэралізацыі і не можа быць замарожаны.
|
instance_actor_flash: Гэты ўліковы запіс - лічбавы аватар, неабходны для рэпрэзентацыі самога сервера, а не якой-небудзь асобы. Ён выкарыстоўваецца для федэралізацыі і не можа быць замарожаны.
|
||||||
last_active: апошняя актыўнасць
|
last_active: апошняя актыўнасць
|
||||||
link_verified_on: Права ўласнасці на гэтую спасылку праверана %{date}
|
link_verified_on: Права ўласнасці на гэтую спасылку праверана %{date}
|
||||||
@ -25,12 +25,12 @@ be:
|
|||||||
one: Допіс
|
one: Допіс
|
||||||
other: Допісы
|
other: Допісы
|
||||||
posts_tab_heading: Допісы
|
posts_tab_heading: Допісы
|
||||||
self_follow_error: Нельга падпісацца на свой профіль
|
self_follow_error: Нельга падпісацца на свой уліковы запіс
|
||||||
admin:
|
admin:
|
||||||
account_actions:
|
account_actions:
|
||||||
action: Выканаць дзеянне
|
action: Выканаць дзеянне
|
||||||
already_silenced: Гэты ўліковы запіс ужо абмежаваны.
|
already_silenced: Гэты ўліковы запіс ужо абмежаваны.
|
||||||
already_suspended: Гэты ўліковы запіс ужо прыпынены.
|
already_suspended: Гэты ўліковы запіс ужо прыпыніў працу.
|
||||||
title: Мадэраваць %{acct}
|
title: Мадэраваць %{acct}
|
||||||
account_moderation_notes:
|
account_moderation_notes:
|
||||||
create: Пакінуць нататку
|
create: Пакінуць нататку
|
||||||
@ -91,9 +91,9 @@ be:
|
|||||||
remote: Адлеглы
|
remote: Адлеглы
|
||||||
title: Месцазнаходжанне
|
title: Месцазнаходжанне
|
||||||
login_status: Стан уваходу
|
login_status: Стан уваходу
|
||||||
media_attachments: Медыя далучэнні
|
media_attachments: Медыя ўлажэнні
|
||||||
memorialize: Даданае да памяці
|
memorialize: Даданае да памяці
|
||||||
memorialized: Запомненае
|
memorialized: Увекавечаны
|
||||||
memorialized_msg: Уліковы запіс %{username} ператвораны ў мемарыяльны
|
memorialized_msg: Уліковы запіс %{username} ператвораны ў мемарыяльны
|
||||||
moderation:
|
moderation:
|
||||||
active: Актыўны
|
active: Актыўны
|
||||||
@ -445,7 +445,7 @@ be:
|
|||||||
create: Стварыць блакіроўку
|
create: Стварыць блакіроўку
|
||||||
hint: Блакіроўка дамена не будзе перашкаджаць стварэнню запісаў уліковых запісаў у базе даных, але будзе заднім лікам і аўтаматычна прымяняць да гэтых уліковых запісаў пэўныя метады мадэрацыі.
|
hint: Блакіроўка дамена не будзе перашкаджаць стварэнню запісаў уліковых запісаў у базе даных, але будзе заднім лікам і аўтаматычна прымяняць да гэтых уліковых запісаў пэўныя метады мадэрацыі.
|
||||||
severity:
|
severity:
|
||||||
desc_html: "<strong>Абмежаванне</strong> зробіць допісы людзей з гэтага дамену нябачнымі для тых, хто на іх не падпісаны. <strong>Выключэнне</strong> выдаліць усё змесціва, медыя і даныя профіляў дамену з вашага серверу. <strong>«Нічога»</strong> проста адхіліць медыя файлы."
|
desc_html: "<strong>Абмежаванне</strong> зробіць допісы людзей з гэтага дамену нябачнымі для тых, хто на іх не падпісаны. <strong>Выключэнне</strong> выдаліць усё змесціва, медыя і даныя ўліковых запісаў дамену з вашага серверу. <strong>«Нічога»</strong> проста адхіліць медыя файлы."
|
||||||
noop: Пуста
|
noop: Пуста
|
||||||
silence: Абмежаваць
|
silence: Абмежаваць
|
||||||
suspend: Прыпыніць
|
suspend: Прыпыніць
|
||||||
@ -530,7 +530,7 @@ be:
|
|||||||
select_capabilities: Выбраць здольнасці
|
select_capabilities: Выбраць здольнасці
|
||||||
sign_in: Увайсці
|
sign_in: Увайсці
|
||||||
status: Допіс
|
status: Допіс
|
||||||
title: Дапаможныя серверы Fediverse
|
title: Дапаможныя серверы федэральнага сусвету
|
||||||
title: FASP
|
title: FASP
|
||||||
follow_recommendations:
|
follow_recommendations:
|
||||||
description_html: "<strong>Рэкамендацыі падпісак, дапамогаюць новым карыстальнікам хутка знайсці цікавы кантэнт</strong>. Калі карыстальнік недастаткова ўзаемадзейнічаў з іншымі, каб сфарміраваць персанальныя рэкамендацыі прытрымлівацца, замест гэтага рэкамендуюцца гэтыя ўліковыя запісы. Яны штодзённа пераразлічваюцца з сумесі ўліковых запісаў з самымі апошнімі ўзаемадзеяннямі і найбольшай колькасцю мясцовых падпісчыкаў для дадзенай мовы."
|
description_html: "<strong>Рэкамендацыі падпісак, дапамогаюць новым карыстальнікам хутка знайсці цікавы кантэнт</strong>. Калі карыстальнік недастаткова ўзаемадзейнічаў з іншымі, каб сфарміраваць персанальныя рэкамендацыі прытрымлівацца, замест гэтага рэкамендуюцца гэтыя ўліковыя запісы. Яны штодзённа пераразлічваюцца з сумесі ўліковых запісаў з самымі апошнімі ўзаемадзеяннямі і найбольшай колькасцю мясцовых падпісчыкаў для дадзенай мовы."
|
||||||
@ -569,7 +569,7 @@ be:
|
|||||||
description_html: Вы можаце вызначыць палітыку кантэнту, якая будзе прымяняцца да ўсіх уліковых запісаў гэтага дамена і любога з яго субдаменаў.
|
description_html: Вы можаце вызначыць палітыку кантэнту, якая будзе прымяняцца да ўсіх уліковых запісаў гэтага дамена і любога з яго субдаменаў.
|
||||||
limited_federation_mode_description_html: Вы можаце выбраць ці дазволіць уваходзіць у федэрацыю з гэтым даменам.
|
limited_federation_mode_description_html: Вы можаце выбраць ці дазволіць уваходзіць у федэрацыю з гэтым даменам.
|
||||||
policies:
|
policies:
|
||||||
reject_media: Адхіліць мультымедыя
|
reject_media: Адхіліць медыя
|
||||||
reject_reports: Адхіліць справаздачы
|
reject_reports: Адхіліць справаздачы
|
||||||
silence: Ліміт
|
silence: Ліміт
|
||||||
suspend: Прыпыніць
|
suspend: Прыпыніць
|
||||||
@ -582,7 +582,7 @@ be:
|
|||||||
instance_followers_measure: нашых падпісчыкаў там
|
instance_followers_measure: нашых падпісчыкаў там
|
||||||
instance_follows_measure: іх падпісчыкаў тут
|
instance_follows_measure: іх падпісчыкаў тут
|
||||||
instance_languages_dimension: Папулярныя мовы
|
instance_languages_dimension: Папулярныя мовы
|
||||||
instance_media_attachments_measure: захаваныя медыя-далучэнні
|
instance_media_attachments_measure: захаваныя медыя ўлажэнні
|
||||||
instance_reports_measure: справаздач пра іх
|
instance_reports_measure: справаздач пра іх
|
||||||
instance_statuses_measure: захаваных паведамленняў
|
instance_statuses_measure: захаваных паведамленняў
|
||||||
delivery:
|
delivery:
|
||||||
@ -622,7 +622,7 @@ be:
|
|||||||
total_followed_by_them: Іхнія падпіскі
|
total_followed_by_them: Іхнія падпіскі
|
||||||
total_followed_by_us: Нашыя падпіскі
|
total_followed_by_us: Нашыя падпіскі
|
||||||
total_reported: Скаргі на іх
|
total_reported: Скаргі на іх
|
||||||
total_storage: Медыя далучэнні
|
total_storage: Медыя ўлажэнні
|
||||||
totals_time_period_hint_html: Паказаныя агульныя значэнні ніжэй уключаюць даныя за ўвесь час.
|
totals_time_period_hint_html: Паказаныя агульныя значэнні ніжэй уключаюць даныя за ўвесь час.
|
||||||
unknown_instance: На дадзены момант няма запісаў аб гэтым дамене на гэтым серверы.
|
unknown_instance: На дадзены момант няма запісаў аб гэтым дамене на гэтым серверы.
|
||||||
invites:
|
invites:
|
||||||
@ -653,7 +653,7 @@ be:
|
|||||||
relays:
|
relays:
|
||||||
add_new: Дадаць новы рэтранслятар
|
add_new: Дадаць новы рэтранслятар
|
||||||
delete: Выдаліць
|
delete: Выдаліць
|
||||||
description_html: "<strong>Федэрацыйны рэтранслятар</strong> - гэта прамежкавы сервер, які абменьваецца вялікімі аб’ёмамі публічных паведамленняў паміж серверамі, якія падпісваюцца і робяць публікацыі на ім. <strong>Гэта можа дапамагчы малым і сярэднім серверам выяўляць змесціва з fediverse</strong>, бо ў іншым выпадку лакальным карыстальнікам трэба было б уручную сачыць за іншымі людзьмі на аддаленых серверах."
|
description_html: "<strong>Федэрацыйны рэтранслятар</strong> - гэта прамежкавы сервер, які абменьваецца вялікімі аб’ёмамі публічных паведамленняў паміж серверамі, якія падпісваюцца і робяць публікацыі на ім. <strong>Гэта можа дапамагчы малым і сярэднім серверам выяўляць змесціва з федэральнага сусвету</strong>, бо ў іншым выпадку лакальным карыстальнікам трэба было б уручную сачыць за іншымі людзьмі на аддаленых серверах."
|
||||||
disable: Адключыць
|
disable: Адключыць
|
||||||
disabled: Адключана
|
disabled: Адключана
|
||||||
enable: Уключыць
|
enable: Уключыць
|
||||||
@ -1086,9 +1086,9 @@ be:
|
|||||||
allow: Дазволіць допіс
|
allow: Дазволіць допіс
|
||||||
allow_account: Дазволіць аўтара
|
allow_account: Дазволіць аўтара
|
||||||
confirm_allow: Вы ўпэўненыя, што хочаце дазволіць абраныя допісы?
|
confirm_allow: Вы ўпэўненыя, што хочаце дазволіць абраныя допісы?
|
||||||
confirm_allow_account: Вы ўпэўненыя, што хочаце дазволіць абраныя профілі?
|
confirm_allow_account: Вы ўпэўненыя, што хочаце дазволіць абраныя ўліковыя запісы?
|
||||||
confirm_disallow: Вы ўпэўненыя, што хочаце забараніць абраныя допісы?
|
confirm_disallow: Вы ўпэўненыя, што хочаце забараніць абраныя допісы?
|
||||||
confirm_disallow_account: Вы ўпэўненыя, што хочаце забараніць абраныя профілі?
|
confirm_disallow_account: Вы ўпэўненыя, што хочаце забараніць абраныя ўліковыя запісы?
|
||||||
description_html: Гэта допісы, пра якія ведае ваш сервер, што на дадзены момант часта абагульваюцца і падабаюцца людзям. Гэта можа дапамагчы вашым новым і пастаянным карыстальнікам знайсці больш людзей, на якіх можна падпісацца. Ніякія допісы не будуць паказвацца публічна, пакуль вы не зацвердзіце аўтара, а аўтар не дазволіць прапанаваць свой уліковы запіс іншым. Вы таксама можаце дазволіць або адхіліць асобныя допісы.
|
description_html: Гэта допісы, пра якія ведае ваш сервер, што на дадзены момант часта абагульваюцца і падабаюцца людзям. Гэта можа дапамагчы вашым новым і пастаянным карыстальнікам знайсці больш людзей, на якіх можна падпісацца. Ніякія допісы не будуць паказвацца публічна, пакуль вы не зацвердзіце аўтара, а аўтар не дазволіць прапанаваць свой уліковы запіс іншым. Вы таксама можаце дазволіць або адхіліць асобныя допісы.
|
||||||
disallow: Забараніць допіс
|
disallow: Забараніць допіс
|
||||||
disallow_account: Забараніць аўтара
|
disallow_account: Забараніць аўтара
|
||||||
@ -1313,7 +1313,7 @@ be:
|
|||||||
title: Уваход у %{domain}
|
title: Уваход у %{domain}
|
||||||
sign_up:
|
sign_up:
|
||||||
manual_review: Рэгістрацыі на %{domain} праходзяць ручную праверку нашымі мадэратарамі. Каб дапамагчы нам апрацаваць вашу рэгістрацыю, напішыце крыху пра сябе і чаму вы хочаце мець уліковы запіс на %{domain}.
|
manual_review: Рэгістрацыі на %{domain} праходзяць ручную праверку нашымі мадэратарамі. Каб дапамагчы нам апрацаваць вашу рэгістрацыю, напішыце крыху пра сябе і чаму вы хочаце мець уліковы запіс на %{domain}.
|
||||||
preamble: З профілем на серверы Mastodon Вы зможаце падпісацца на любога чалавека ў fediverse, незалежна ад таго, на якім серверы знаходзіцца іх профіль.
|
preamble: З уліковым запісам на гэтым серверы Mastodon Вы зможаце падпісацца на любога чалавека ў федэральным сусвеце, незалежна ад таго, на якім серверы знаходзіцца яго ўліковы запіс.
|
||||||
title: Наладзьма вас на %{domain}.
|
title: Наладзьма вас на %{domain}.
|
||||||
status:
|
status:
|
||||||
account_status: Стан уліковага запісу
|
account_status: Стан уліковага запісу
|
||||||
@ -1561,56 +1561,56 @@ be:
|
|||||||
one: Вы збіраецеся <strong>замяніць свае закладкі</strong> <strong>%{count} допісам</strong> з <strong>%{filename}</strong>.
|
one: Вы збіраецеся <strong>замяніць свае закладкі</strong> <strong>%{count} допісам</strong> з <strong>%{filename}</strong>.
|
||||||
other: Вы збіраецеся <strong>замяніць свае закладкі</strong> <strong>%{count} допісамі</strong> з <strong>%{filename}</strong>.
|
other: Вы збіраецеся <strong>замяніць свае закладкі</strong> <strong>%{count} допісамі</strong> з <strong>%{filename}</strong>.
|
||||||
domain_blocking_html:
|
domain_blocking_html:
|
||||||
few: Вы збіраецеся <strong>замяніць свой спіс заблакіраваных сервераў</strong> <strong>%{count} серверамі</strong> з <strong>%{filename}</strong>.
|
few: Вы збіраецеся <strong>замяніць свой спіс заблакіраваных даменаў</strong> <strong>%{count} даменамі</strong> з <strong>%{filename}</strong>.
|
||||||
many: Вы збіраецеся <strong>замяніць свой спіс заблакіраваных сервераў</strong> <strong>%{count} серверамі</strong> з <strong>%{filename}</strong>.
|
many: Вы збіраецеся <strong>замяніць свой спіс заблакіраваных даменаў</strong> <strong>%{count} даменамі</strong> з <strong>%{filename}</strong>.
|
||||||
one: Вы збіраецеся <strong>замяніць свой спіс заблакіраваных сервераў</strong> <strong>%{count} серверам</strong> з <strong>%{filename}</strong>.
|
one: Вы збіраецеся <strong>замяніць свой спіс заблакіраваных даменаў</strong> <strong>%{count} даменам</strong> з <strong>%{filename}</strong>.
|
||||||
other: Вы збіраецеся <strong>замяніць свой спіс заблакіраваных сервераў</strong> <strong>%{count} серверамі</strong> з <strong>%{filename}</strong>.
|
other: Вы збіраецеся <strong>замяніць свой спіс заблакіраваных даменаў</strong> <strong>%{count} дамены</strong> з <strong>%{filename}</strong>.
|
||||||
following_html:
|
following_html:
|
||||||
few: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} профілі</strong> з <strong>%{filename}</strong> і <strong>адпішацеся ад усіх астатніх</strong>.
|
few: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} уліковыя запісы</strong> з <strong>%{filename}</strong> і <strong>адпішацеся ад усіх астатніх</strong>.
|
||||||
many: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} профіляў</strong> з <strong>%{filename}</strong> і <strong>адпішацеся ад усіх астатніх</strong>.
|
many: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} уліковых запісаў</strong> з <strong>%{filename}</strong> і <strong>адпішацеся ад усіх астатніх</strong>.
|
||||||
one: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} профіль</strong> з <strong>%{filename}</strong> і <strong>адпішацеся ад усіх астатніх</strong>.
|
one: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} уліковы запіс</strong> з <strong>%{filename}</strong> і <strong>адпішацеся ад усіх астатніх</strong>.
|
||||||
other: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} профіляў</strong> з <strong>%{filename}</strong> і <strong>адпішацеся ад усіх астатніх</strong>.
|
other: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} уліковыя запісы</strong> з <strong>%{filename}</strong> і <strong>адпішацеся ад усіх астатніх</strong>.
|
||||||
lists_html:
|
lists_html:
|
||||||
few: Вы збіраецеся <strong>замяніць свае спісы</strong> змесцівам з <strong>%{filename}</strong>. <strong>%{count} профілі</strong> будуць дададзеныя ў новыя спісы.
|
few: Вы збіраецеся <strong>замяніць свае спісы</strong> змесцівам з <strong>%{filename}</strong>. <strong>%{count} уліковыя запісы</strong> будуць дададзеныя ў новыя спісы.
|
||||||
many: Вы збіраецеся <strong>замяніць свае спісы</strong> змесцівам з <strong>%{filename}</strong>. <strong>%{count} профіляў</strong> будуць дададзеныя ў новыя спісы.
|
many: Вы збіраецеся <strong>замяніць свае спісы</strong> змесцівам з <strong>%{filename}</strong>. <strong>%{count} уліковых запісаў</strong> будуць дададзеныя ў новыя спісы.
|
||||||
one: Вы збіраецеся <strong>замяніць свае спісы</strong> змесцівам з <strong>%{filename}</strong>. <strong>%{count} профіль</strong> будзе дададзены ў новыя спісы.
|
one: Вы збіраецеся <strong>замяніць свае спісы</strong> змесцівам з <strong>%{filename}</strong>. <strong>%{count} уліковы запіс</strong> будзе дададзены ў новыя спісы.
|
||||||
other: Вы збіраецеся <strong>замяніць свае спісы</strong> змесцівам з <strong>%{filename}</strong>. <strong>%{count} профіляў</strong> будуць дададзеныя ў новыя спісы.
|
other: Вы збіраецеся <strong>замяніць свае спісы</strong> змесцівам з <strong>%{filename}</strong>. <strong>%{count} уліковыя запісы</strong> будуць дададзеныя ў новыя спісы.
|
||||||
muting_html:
|
muting_html:
|
||||||
few: Вы збіраецеся <strong>замяніць свой спіс профіляў, якія Вы ігнаруеце,</strong> <strong>%{count} профілямі</strong> з <strong>%{filename}</strong>.
|
few: Вы збіраецеся <strong>замяніць свой спіс уліковых запісаў, якія Вы ігнаруеце,</strong> <strong>%{count} уліковымі запісамі</strong> з <strong>%{filename}</strong>.
|
||||||
many: Вы збіраецеся <strong>замяніць свой спіс профіляў, якія Вы ігнаруеце,</strong> <strong>%{count} профілямі</strong> з <strong>%{filename}</strong>.
|
many: Вы збіраецеся <strong>замяніць свой спіс уліковых запісаў, якія Вы ігнаруеце,</strong> <strong>%{count} уліковымі запісамі</strong> з <strong>%{filename}</strong>.
|
||||||
one: Вы збіраецеся <strong>замяніць свой спіс профіляў, якія Вы ігнаруеце,</strong> <strong>%{count} профілем</strong> з <strong>%{filename}</strong>.
|
one: Вы збіраецеся <strong>замяніць свой спіс уліковых запісаў, якія Вы ігнаруеце,</strong> <strong>%{count} уліковым запісам</strong> з <strong>%{filename}</strong>.
|
||||||
other: Вы збіраецеся <strong>замяніць свой спіс профіляў, якія Вы ігнаруеце,</strong> <strong>%{count} профілямі</strong> з <strong>%{filename}</strong>.
|
other: Вы збіраецеся <strong>замяніць свой спіс уліковых запісаў, якія Вы ігнаруеце,</strong> <strong>%{count} уліковыя запісы</strong> з <strong>%{filename}</strong>.
|
||||||
preambles:
|
preambles:
|
||||||
blocking_html:
|
blocking_html:
|
||||||
few: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} профілі</strong> з <strong>%{filename}</strong>.
|
few: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} уліковыя запісы</strong> з <strong>%{filename}</strong>.
|
||||||
many: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} профіляў</strong> з <strong>%{filename}</strong>.
|
many: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} уліковых запісаў</strong> з <strong>%{filename}</strong>.
|
||||||
one: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} профіль</strong> з <strong>%{filename}</strong>.
|
one: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} уліковы запіс</strong> з <strong>%{filename}</strong>.
|
||||||
other: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} профіляў</strong> з <strong>%{filename}</strong>.
|
other: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} уліковыя запісы</strong> з <strong>%{filename}</strong>.
|
||||||
bookmarks_html:
|
bookmarks_html:
|
||||||
few: Вы збіраецеся дадаць <strong>%{count} допісы</strong> з <strong>%{filename}</strong> у Вашыя <strong>закладкі</strong>.
|
few: Вы збіраецеся дадаць <strong>%{count} допісы</strong> з <strong>%{filename}</strong> у Вашыя <strong>закладкі</strong>.
|
||||||
many: Вы збіраецеся дадаць <strong>%{count} допісаў</strong> з <strong>%{filename}</strong> у Вашыя <strong>закладкі</strong>.
|
many: Вы збіраецеся дадаць <strong>%{count} допісаў</strong> з <strong>%{filename}</strong> у Вашыя <strong>закладкі</strong>.
|
||||||
one: Вы збіраецеся дадаць <strong>%{count} допіс</strong> з <strong>%{filename}</strong> у Вашыя <strong>закладкі</strong>.
|
one: Вы збіраецеся дадаць <strong>%{count} допіс</strong> з <strong>%{filename}</strong> у Вашыя <strong>закладкі</strong>.
|
||||||
other: Вы збіраецеся дадаць <strong>%{count} допісаў</strong> з <strong>%{filename}</strong> у Вашыя <strong>закладкі</strong>.
|
other: Вы збіраецеся дадаць <strong>%{count} допісаў</strong> з <strong>%{filename}</strong> у Вашыя <strong>закладкі</strong>.
|
||||||
domain_blocking_html:
|
domain_blocking_html:
|
||||||
few: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} серверы</strong> з <strong>%{filename}</strong>.
|
few: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} дамены</strong> з <strong>%{filename}</strong>.
|
||||||
many: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} сервераў</strong> з <strong>%{filename}</strong>.
|
many: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} даменаў</strong> з <strong>%{filename}</strong>.
|
||||||
one: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} сервер</strong> з <strong>%{filename}</strong>.
|
one: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} дамен</strong> з <strong>%{filename}</strong>.
|
||||||
other: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} сервераў</strong> з <strong>%{filename}</strong>.
|
other: Вы збіраецеся <strong>заблакіраваць</strong> <strong>%{count} дамены</strong> з <strong>%{filename}</strong>.
|
||||||
following_html:
|
following_html:
|
||||||
few: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} профілі</strong> з <strong>%{filename}</strong>.
|
few: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} уліковыя запісы</strong> з <strong>%{filename}</strong>.
|
||||||
many: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} профіляў</strong> з <strong>%{filename}</strong>.
|
many: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} уліковых запісаў</strong> з <strong>%{filename}</strong>.
|
||||||
one: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} профіль</strong> з <strong>%{filename}</strong>.
|
one: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} уліковы запіс</strong> з <strong>%{filename}</strong>.
|
||||||
other: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} профіляў</strong> з <strong>%{filename}</strong>.
|
other: Вы збіраецеся <strong>падпісацца</strong> на <strong>%{count} уліковыя запісы</strong> з <strong>%{filename}</strong>.
|
||||||
lists_html:
|
lists_html:
|
||||||
few: Вы збіраецеся дадаць <strong>%{count} профілі</strong> з <strong>%{filename}</strong> у Вашыя <strong>спісы</strong>. Калі спісаў няма, то будуць створаны новыя.
|
few: Вы збіраецеся дадаць <strong>%{count} уліковыя запісы</strong> з <strong>%{filename}</strong> у Вашыя <strong>спісы</strong>. Калі спісаў няма, то будуць створаны новыя.
|
||||||
many: Вы збіраецеся дадаць <strong>%{count} профіляў</strong> з <strong>%{filename}</strong> у Вашыя <strong>спісы</strong>. Калі спісаў няма, то будуць створаны новыя.
|
many: Вы збіраецеся дадаць <strong>%{count} уліковых запісаў</strong> з <strong>%{filename}</strong> у Вашыя <strong>спісы</strong>. Калі спісаў няма, то будуць створаны новыя.
|
||||||
one: Вы збіраецеся дадаць <strong>%{count} профіль</strong> з <strong>%{filename}</strong> у Вашыя <strong>спісы</strong>. Калі спісаў няма, то будуць створаны новыя.
|
one: Вы збіраецеся дадаць <strong>%{count} уліковы запіс</strong> з <strong>%{filename}</strong> у Вашыя <strong>спісы</strong>. Калі спісаў няма, то будуць створаны новыя.
|
||||||
other: Вы збіраецеся дадаць <strong>%{count} профіляў</strong> з <strong>%{filename}</strong> у Вашыя <strong>спісы</strong>. Калі спісаў няма, то будуць створаны новыя.
|
other: Вы збіраецеся дадаць <strong>%{count} уліковыя запісы</strong> з <strong>%{filename}</strong> у Вашыя <strong>спісы</strong>. Калі спісаў няма, то будуць створаны новыя.
|
||||||
muting_html:
|
muting_html:
|
||||||
few: Вы збіраецеся пачаць <strong>ігнараваць</strong> <strong>%{count} профілі</strong> з <strong>%{filename}</strong>.
|
few: Вы збіраецеся пачаць <strong>ігнараваць</strong> <strong>%{count} уліковыя запісы</strong> з <strong>%{filename}</strong>.
|
||||||
many: Вы збіраецеся пачаць <strong>ігнараваць</strong> <strong>%{count} профіляў</strong> з <strong>%{filename}</strong>.
|
many: Вы збіраецеся пачаць <strong>ігнараваць</strong> <strong>%{count} уліковых запісаў</strong> з <strong>%{filename}</strong>.
|
||||||
one: Вы збіраецеся пачаць <strong>ігнараваць</strong> <strong>%{count} профіль</strong> з <strong>%{filename}</strong>.
|
one: Вы збіраецеся пачаць <strong>ігнараваць</strong> <strong>%{count} уліковы запіс</strong> з <strong>%{filename}</strong>.
|
||||||
other: Вы збіраецеся пачаць <strong>ігнараваць</strong> <strong>%{count} профіляў</strong> з <strong>%{filename}</strong>.
|
other: Вы збіраецеся пачаць <strong>ігнараваць</strong> <strong>%{count} уліковыя запісы</strong> з <strong>%{filename}</strong>.
|
||||||
preface: Вы можаце імпартаваць даныя, экспартаваныя вамі з іншага сервера, напрыклад, спіс людзей, на якіх вы падпісаны або якіх блакуеце.
|
preface: Вы можаце імпартаваць даныя, экспартаваныя вамі з іншага сервера, напрыклад, спіс людзей, на якіх вы падпісаны або якіх блакуеце.
|
||||||
recent_imports: Нядаўнія імпарты
|
recent_imports: Нядаўнія імпарты
|
||||||
states:
|
states:
|
||||||
@ -1698,7 +1698,7 @@ be:
|
|||||||
validations:
|
validations:
|
||||||
images_and_video: Немагчыма далучыць відэа да допісу, які ўжо змяшчае выявы
|
images_and_video: Немагчыма далучыць відэа да допісу, які ўжо змяшчае выявы
|
||||||
not_found: Файл %{ids} не знойдзены або ўжо далучаны да іншага допісу
|
not_found: Файл %{ids} не знойдзены або ўжо далучаны да іншага допісу
|
||||||
not_ready: Няможна далучыць файлы, апрацоўка якіх яшчэ не скончылася. Паспрабуйце яшчэ раз праз хвілінку!
|
not_ready: Немагчыма далучыць файлы, апрацоўка якіх яшчэ не скончылася. Паспрабуйце яшчэ раз праз хвілінку!
|
||||||
too_many: Немагчыма далучыць больш за 4 файлы
|
too_many: Немагчыма далучыць больш за 4 файлы
|
||||||
migrations:
|
migrations:
|
||||||
acct: Перамешчана ў
|
acct: Перамешчана ў
|
||||||
@ -1746,7 +1746,7 @@ be:
|
|||||||
sign_up:
|
sign_up:
|
||||||
subject: "%{name} зарэгістраваўся"
|
subject: "%{name} зарэгістраваўся"
|
||||||
favourite:
|
favourite:
|
||||||
body: "%{name} упадабаў ваш пост:"
|
body: "%{name} упадабаў(-ла) Ваш допіс:"
|
||||||
subject: "%{name} упадабаў ваш допіс"
|
subject: "%{name} упадабаў ваш допіс"
|
||||||
title: Новае ўпадабанае
|
title: Новае ўпадабанае
|
||||||
follow:
|
follow:
|
||||||
@ -1770,7 +1770,7 @@ be:
|
|||||||
subject: Карыстальнік %{name} працытаваў Ваш допіс
|
subject: Карыстальнік %{name} працытаваў Ваш допіс
|
||||||
title: Цытаваць
|
title: Цытаваць
|
||||||
reblog:
|
reblog:
|
||||||
body: "%{name} пашырыў ваш пост:"
|
body: "%{name} пашырыў(-ла) Ваш допіс:"
|
||||||
subject: "%{name} пашырыў ваш допіс"
|
subject: "%{name} пашырыў ваш допіс"
|
||||||
title: Новае пашырэнне
|
title: Новае пашырэнне
|
||||||
status:
|
status:
|
||||||
@ -2017,9 +2017,9 @@ be:
|
|||||||
interaction_exceptions: Выключэнні, заснаваныя на ўзаемадзеянні
|
interaction_exceptions: Выключэнні, заснаваныя на ўзаемадзеянні
|
||||||
interaction_exceptions_explanation: Звярніце ўвагу, што няма гарантыі выдалення пастоў, калі колькасць іх упадабанняў ці пашырэннняў упадзе ніжэй за ліміт, хаця некалі гэтая колькасць перавышала яго.
|
interaction_exceptions_explanation: Звярніце ўвагу, што няма гарантыі выдалення пастоў, калі колькасць іх упадабанняў ці пашырэннняў упадзе ніжэй за ліміт, хаця некалі гэтая колькасць перавышала яго.
|
||||||
keep_direct: Захаваць асабістыя паведамленні
|
keep_direct: Захаваць асабістыя паведамленні
|
||||||
keep_direct_hint: Не выдаляць асабістыя паведамленні
|
keep_direct_hint: Не выдаляе асабістыя паведамленні
|
||||||
keep_media: Захоўваць допісы з далучаным медыя
|
keep_media: Захоўваць допісы з медыя ўлажэннямі
|
||||||
keep_media_hint: Не выдаляць вашыя допісы, якія ўтрымліваюць медыя
|
keep_media_hint: Не выдаляць вашыя допісы, якія ўтрымліваюць медыя ўлажэнні
|
||||||
keep_pinned: Захаваць замацаваныя допісы
|
keep_pinned: Захаваць замацаваныя допісы
|
||||||
keep_pinned_hint: Не выдаляць вашыя замацаваныя допісы
|
keep_pinned_hint: Не выдаляць вашыя замацаваныя допісы
|
||||||
keep_polls: Працягнуць апытанне
|
keep_polls: Працягнуць апытанне
|
||||||
@ -2151,7 +2151,7 @@ be:
|
|||||||
none: Папярэджанне для %{acct}
|
none: Папярэджанне для %{acct}
|
||||||
sensitive: З гэтага моманту вашыя допісы на %{acct} будуць пазначаныя як далікатныя
|
sensitive: З гэтага моманту вашыя допісы на %{acct} будуць пазначаныя як далікатныя
|
||||||
silence: Ваш уліковы запіс %{acct} быў абмежаваны
|
silence: Ваш уліковы запіс %{acct} быў абмежаваны
|
||||||
suspend: Ваш уліковы запіс %{acct} быў выключаны
|
suspend: Ваш уліковы запіс %{acct} быў прыпынены
|
||||||
title:
|
title:
|
||||||
delete_statuses: Выдаленыя допісы
|
delete_statuses: Выдаленыя допісы
|
||||||
disable: Уліковы запіс замарожаны
|
disable: Уліковы запіс замарожаны
|
||||||
|
|||||||
@ -19,13 +19,13 @@ az:
|
|||||||
unconfirmed: Davam etmək üçün e-poçt ünvanınızı təsdiqləməlisiniz.
|
unconfirmed: Davam etmək üçün e-poçt ünvanınızı təsdiqləməlisiniz.
|
||||||
mailer:
|
mailer:
|
||||||
confirmation_instructions:
|
confirmation_instructions:
|
||||||
action: E-poçt ünvanını təsdiqlə
|
action: E-poçt ünvanını doğrula
|
||||||
action_with_app: Təsdiqlə və %{app}-a geri qayıt
|
action_with_app: Təsdiqlə və %{app}-a geri qayıt
|
||||||
explanation: Siz %{host} saytında bu e-poçt ilə hesab yaratmısınız. Onu aktivləşdirməkdən bir klik uzaqlıqdasınız. Əgər bu siz olmamısınızsa, zəhmət olmasa, bu e-məktuba məhəl qoymayın.
|
explanation: Bu e-poçt ünvanı ilə %{host} üzərində bir hesab yaratmısınız. Onu aktivləşdirməkdən bir klik uzaqlıqdasınız. Əgər bunu siz etməmisinizsə, lütfən e-poçtu yox sayın.
|
||||||
explanation_when_pending: Bu e-poçt ünvanı ilə %{host} ünvanına dəvət üçün müraciət etmisiniz. E-poçt ünvanınızı təsdiqlədikdən sonra müraciətinizi nəzərdən keçirəcəyik. Hesab məlumatlarını dəyişdirmək və ya hesabınızı silmək üçün giriş edə bilərsiniz, ancaq hesabınız təsdiqlənənə qədər əksər funksiyalara erişə bilməyəcəksiniz. Müraciətinizə rədd cavabı gəlsə, veriləriniz silinəcək, sizdən heç bir əməliyyat etməyiniz istənilməyəcək. Əgər bu siz deyilsinizsə, lütfən bu e-poçtu yox sayın.
|
explanation_when_pending: Bu e-poçt ünvanı ilə %{host} ünvanına dəvət üçün müraciət etmisiniz. E-poçt ünvanınızı təsdiqlədikdən sonra müraciətinizi nəzərdən keçirəcəyik. Hesab məlumatlarını dəyişdirmək və ya hesabınızı silmək üçün giriş edə bilərsiniz, ancaq hesabınız təsdiqlənənə qədər əksər funksiyalara erişə bilməyəcəksiniz. Müraciətinizə rədd cavabı gəlsə, veriləriniz silinəcək, sizdən heç bir əməliyyat etməyiniz istənilməyəcək. Əgər bu siz deyilsinizsə, lütfən bu e-poçtu yox sayın.
|
||||||
extra_html: Həmçinin zəhmət olmasa, <a href="%{terms_path}">serverin qaydalarını</a> və <a href="%{policy_path}">istifadə şərtlərini</a> oxuyun.
|
extra_html: Həmçinin zəhmət olmasa, <a href="%{terms_path}">serverin qaydalarını</a> və <a href="%{policy_path}">istifadə şərtlərini</a> oxuyun.
|
||||||
subject: 'Mastodon: %{instance} üçün təsdiqlənmə təlimatları'
|
subject: 'Mastodon: %{instance} üçün təsdiqlənmə təlimatları'
|
||||||
title: E-poçt ünvanını təsdiqlə
|
title: E-poçt ünvanını doğrula
|
||||||
email_changed:
|
email_changed:
|
||||||
explanation: 'Hesabınız üçün e-poçt ünvanı buna dəyişdirilir:'
|
explanation: 'Hesabınız üçün e-poçt ünvanı buna dəyişdirilir:'
|
||||||
extra: E-poçtunuzu dəyişməmisinizsə, çox güman ki, kimsə hesabınıza erişib. Hesabınıza giriş edə bilmirsinizsə, lütfən parolunuzu dərhal dəyişdirin və ya server admini ilə əlaqə saxlayın.
|
extra: E-poçtunuzu dəyişməmisinizsə, çox güman ki, kimsə hesabınıza erişib. Hesabınıza giriş edə bilmirsinizsə, lütfən parolunuzu dərhal dəyişdirin və ya server admini ilə əlaqə saxlayın.
|
||||||
@ -40,7 +40,7 @@ az:
|
|||||||
explanation: E-poçtunuzu dəyişdirmək üçün yeni ünvanı təsdiqləyin.
|
explanation: E-poçtunuzu dəyişdirmək üçün yeni ünvanı təsdiqləyin.
|
||||||
extra: Bu dəyişikliyi siz etməmisinizsə, lütfən bu e-poçtu yox sayın. Yuxarıdakı keçidə erişənə qədər Mastodon hesabının e-poçt ünvanı dəyişməyəcək.
|
extra: Bu dəyişikliyi siz etməmisinizsə, lütfən bu e-poçtu yox sayın. Yuxarıdakı keçidə erişənə qədər Mastodon hesabının e-poçt ünvanı dəyişməyəcək.
|
||||||
subject: 'Mastodon: %{instance} üçün e-poçtu təsdiqlə'
|
subject: 'Mastodon: %{instance} üçün e-poçtu təsdiqlə'
|
||||||
title: E-poçt ünvanını təsdiqlə
|
title: E-poçt ünvanını doğrula
|
||||||
reset_password_instructions:
|
reset_password_instructions:
|
||||||
action: Parolu dəyiş
|
action: Parolu dəyiş
|
||||||
explanation: Siz hesabınız üçün yeni parol tələb etmisiniz.
|
explanation: Siz hesabınız üçün yeni parol tələb etmisiniz.
|
||||||
|
|||||||
@ -3,20 +3,20 @@ be:
|
|||||||
devise:
|
devise:
|
||||||
confirmations:
|
confirmations:
|
||||||
confirmed: Адрас вашай электроннай пошты паспяхова пацверджаны.
|
confirmed: Адрас вашай электроннай пошты паспяхова пацверджаны.
|
||||||
send_instructions: Цягам некалькіх хвілін вы атрымаеце ліст з інструкцыямі, каб пацвердзіць вашую электронную пошту. Калі ласка, зазірніце ў папку са спамам, калі не знойдзеце ліст.
|
send_instructions: Цягам некалькіх хвілін Вы атрымаеце ліст з інструкцыямі, каб пацвердзіць вашую электронную пошту. Калі ласка, зазірніце ў папку са спамам, калі не знойдзеце ліст.
|
||||||
send_paranoid_instructions: Калі адрас вашай электроннай пошты існуе ў нашай базе даных, на працягу некалькіх хвілін вы атрымаеце ліст з інструкцыямі, каб пацвердзіць вашу электронную пошту. Калі вы не знойдзеце ліст, праверце папку са спамам.
|
send_paranoid_instructions: Калі адрас Вашай электроннай пошты існуе ў нашай базе даных, на працягу некалькіх хвілін Вы атрымаеце ліст з інструкцыямі, каб пацвердзіць Вашу электронную пошту. Калі Вы не знойдзеце ліст, праверце папку са спамам.
|
||||||
failure:
|
failure:
|
||||||
already_authenticated: Вы ўжо ўвайшлі.
|
already_authenticated: Вы ўжо ўвайшлі.
|
||||||
inactive: Ваш уліковы запіс яшчэ не актываваны.
|
inactive: Ваш уліковы запіс яшчэ не актываваны.
|
||||||
invalid: Няправільны %{authentication_keys} або пароль.
|
invalid: Няправільны %{authentication_keys} або пароль.
|
||||||
last_attempt: У вас ёсць яшчэ адна спроба, перш чым ваш рахунак будзе заблакаваны
|
last_attempt: У вас ёсць яшчэ адна спроба, перш чым Ваш уліковы запіс будзе заблакіраваны.
|
||||||
locked: Ваш уліковы запіс заблакіраваны.
|
locked: Ваш уліковы запіс заблакіраваны.
|
||||||
not_found_in_database: Няправільны %{authentication_keys} або пароль.
|
not_found_in_database: Няправільны %{authentication_keys} або пароль.
|
||||||
omniauth_user_creation_failure: Памылка пры стварэнні ўліковага запісу для гэтай асобы.
|
omniauth_user_creation_failure: Памылка пры стварэнні ўліковага запісу для гэтай асобы.
|
||||||
pending: Ваш уліковы запіс яшчэ разглядаецца.
|
pending: Ваш уліковы запіс яшчэ разглядаецца.
|
||||||
timeout: Ваш сеанс скончыўся. Каб працягнуць, увайдзіце яшчэ раз.
|
timeout: Ваш сеанс скончыўся. Каб працягнуць, увайдзіце яшчэ раз.
|
||||||
unauthenticated: Каб працягнуць, вам трэба ўвайсці або зарэгістравацца.
|
unauthenticated: Каб працягнуць, вам трэба ўвайсці або зарэгістравацца.
|
||||||
unconfirmed: Вы павінны пацвердзіць свой адрас электроннай пошты, перш чым працягнуць
|
unconfirmed: Вы мусіце пацвердзіць свой адрас электроннай пошты, перш чым працягнуць.
|
||||||
mailer:
|
mailer:
|
||||||
confirmation_instructions:
|
confirmation_instructions:
|
||||||
action: Пацвердзіць адрас электроннай пошты
|
action: Пацвердзіць адрас электроннай пошты
|
||||||
@ -27,24 +27,24 @@ be:
|
|||||||
subject: 'Mastodon: Інструкцыі па пацвярджэнні для %{instance}'
|
subject: 'Mastodon: Інструкцыі па пацвярджэнні для %{instance}'
|
||||||
title: Праверце адрас электроннай пошты
|
title: Праверце адрас электроннай пошты
|
||||||
email_changed:
|
email_changed:
|
||||||
explanation: Адрас электроннай пошты для вашага ўліковага запісу будзе зменены на
|
explanation: 'Адрас электроннай пошты для вашага ўліковага запісу будзе зменены на:'
|
||||||
extra: Калі вы не змянялі сваю электронную пошту, хутчэй за ўсё, нехта атрымаў доступ да вашага ўліковага запісу. Неадкладна змяніце свой пароль або звярніцеся да адміністратара сервера, калі вы заблакіраваны са свайго ўліковага запісу.
|
extra: Калі Вы не змянялі сваю электронную пошту, хутчэй за ўсё, нехта атрымаў доступ да вашага ўліковага запісу. Неадкладна змяніце свой пароль або звярніцеся да адміністратара сервера, калі Вы заблакіраваны са свайго ўліковага запісу.
|
||||||
subject: 'Mastodon: адрас электроннай пошты зменены'
|
subject: 'Mastodon: адрас электроннай пошты зменены'
|
||||||
title: Новы адрас электроннай пошты
|
title: Новы адрас электроннай пошты
|
||||||
password_change:
|
password_change:
|
||||||
explanation: Пароль для вашага ўліковага запісу быў зменены
|
explanation: Пароль для вашага ўліковага запісу быў зменены.
|
||||||
extra: Калі вы не змянялі свой пароль, імаверна, нехта атрымаў доступ да вашага ўліковага запісу. Неадкладна змяніце свой пароль або звярніцеся да адміністратара сервера, калі вы заблакіраваны са свайго ўліковага запісу.
|
extra: Калі Вы не змянялі свой пароль, імаверна, нехта атрымаў доступ да вашага ўліковага запісу. Неадкладна змяніце свой пароль або звярніцеся да адміністратара сервера, калі Вы заблакіраваны са свайго ўліковага запісу.
|
||||||
subject: 'Mastodon: пароль зменены'
|
subject: 'Mastodon: пароль зменены'
|
||||||
title: Пароль зменены
|
title: Пароль зменены
|
||||||
reconfirmation_instructions:
|
reconfirmation_instructions:
|
||||||
explanation: Пацвердзіце, каб змяніць адрас вашай электроннай пошты.
|
explanation: Пацвердзіце, каб змяніць адрас вашай электроннай пошты.
|
||||||
extra: Калі гэтыя змены не былі зроблены вамі, ігнаруйце гэты ліст. Адрас электроннай пошты для акаўнту Mastodon не будзе зменены, пакуль вы не пяройдзеце па спасылцы вышэй.
|
extra: Калі гэтыя змены не былі зроблены Вамі, праігнаруйце гэты ліст. Адрас электроннай пошты для ўліковага запісу Mastodon не будзе зменены, пакуль вы не пяройдзеце па спасылцы вышэй.
|
||||||
subject: 'Mastodon: пацвердзіце электронную пошту для %{instance}'
|
subject: 'Mastodon: пацвердзіце электронную пошту для %{instance}'
|
||||||
title: Пацвердзіце адрас электроннай пошты
|
title: Пацвердзіце адрас электроннай пошты
|
||||||
reset_password_instructions:
|
reset_password_instructions:
|
||||||
action: Змяніць пароль
|
action: Змяніць пароль
|
||||||
explanation: Вы запыталі новы пароль для свайго ўліковага запісу.
|
explanation: Вы запыталі новы пароль для свайго ўліковага запісу.
|
||||||
extra: Калі вы не рабілі такога запыту, калі ласка, ігнаруйце гэты ліст. Ваш пароль не будзе зменены, пакуль вы не пяройдзеце па спасылцы вышэй і не створыце новы.
|
extra: Калі Вы не рабілі такога запыту, калі ласка, праігнаруйце гэты ліст. Ваш пароль не будзе зменены, пакуль Вы не пяройдзеце па спасылцы вышэй і не створыце новы.
|
||||||
subject: 'Mastodon: Інструкцыі па скіданню пароля'
|
subject: 'Mastodon: Інструкцыі па скіданню пароля'
|
||||||
title: Скіданне пароля
|
title: Скіданне пароля
|
||||||
two_factor_disabled:
|
two_factor_disabled:
|
||||||
@ -58,21 +58,21 @@ be:
|
|||||||
subtitle: Для вашага ўліковага запісу была ўключаная двухфактарная аўтэнтыфікацыя.
|
subtitle: Для вашага ўліковага запісу была ўключаная двухфактарная аўтэнтыфікацыя.
|
||||||
title: двухэтапнае спраўджанне уключана
|
title: двухэтапнае спраўджанне уключана
|
||||||
two_factor_recovery_codes_changed:
|
two_factor_recovery_codes_changed:
|
||||||
explanation: Папярэднія коды аднаўлення былі ануляваны і створаны новыя.
|
explanation: Папярэднія коды аднаўлення былі ануляваны і былі створаныя новыя.
|
||||||
subject: 'Mastodon: створаны новыя коды аднаўлення'
|
subject: 'Mastodon: створаныя новыя коды аднаўлення'
|
||||||
subtitle: Папярэднія коды аднаўлення былі ануляваны і замест іх створаны новыя.
|
subtitle: Папярэднія коды аднаўлення былі ануляваны і замест іх былі створаныя новыя.
|
||||||
title: 2FA коды аднаўлення былі зменены
|
title: 2FA коды аднаўлення былі зменены
|
||||||
unlock_instructions:
|
unlock_instructions:
|
||||||
subject: 'Mastodon: інструкцыя па разблакаванні'
|
subject: 'Mastodon: інструкцыя па разблакаванні'
|
||||||
webauthn_credential:
|
webauthn_credential:
|
||||||
added:
|
added:
|
||||||
explanation: Наступны ключ бяспекі быў дададзены ў ваш уліковы запіс
|
explanation: Наступны ключ бяспекі быў дададзены ў Ваш уліковы запіс
|
||||||
subject: 'Mastodon: новы ключ бяспекі'
|
subject: 'Mastodon: новы ключ бяспекі'
|
||||||
title: Быў дададзены новы ключ бяспекі
|
title: Быў дададзены новы ключ бяспекі
|
||||||
deleted:
|
deleted:
|
||||||
explanation: Наступны ключ бяспекі быў выдалены з вашага ўліковага запісу
|
explanation: Наступны ключ бяспекі быў выдалены з Вашага ўліковага запісу
|
||||||
subject: 'Mastodon: ключ бяспекі выдалены'
|
subject: 'Mastodon: ключ бяспекі выдалены'
|
||||||
title: Адзін з вашых ключоў бяспекі быў выдалены
|
title: Адзін з Вашых ключоў бяспекі быў выдалены
|
||||||
webauthn_disabled:
|
webauthn_disabled:
|
||||||
explanation: Аўтэнтыфікацыя з дапамогай ключоў бяспекі была адключаная для вашага ўліковага запісу.
|
explanation: Аўтэнтыфікацыя з дапамогай ключоў бяспекі была адключаная для вашага ўліковага запісу.
|
||||||
extra: Зараз уваход у сістэму магчымы толькі з выкарыстаннем токена, згенераванага спалучанай праграмай TOTP.
|
extra: Зараз уваход у сістэму магчымы толькі з выкарыстаннем токена, згенераванага спалучанай праграмай TOTP.
|
||||||
@ -80,29 +80,29 @@ be:
|
|||||||
title: Ключы бяспекі адключаны
|
title: Ключы бяспекі адключаны
|
||||||
webauthn_enabled:
|
webauthn_enabled:
|
||||||
explanation: Для вашага ўліковага запісу ўключана аўтэнтыфікацыя па ключу бяспекі.
|
explanation: Для вашага ўліковага запісу ўключана аўтэнтыфікацыя па ключу бяспекі.
|
||||||
extra: Цяпер ваш ключ бяспекі можна выкарыстоўваць для ўваходу ў сістэму.
|
extra: Цяпер Ваш ключ бяспекі можна выкарыстоўваць для ўваходу ў сістэму.
|
||||||
subject: 'Mastodon: Аўтэнтыфікацыя праз ключ бяспекі была ўключана'
|
subject: 'Mastodon: Аўтэнтыфікацыя праз ключ бяспекі была ўключана'
|
||||||
title: Ключы бяспекі ўключаны
|
title: Ключы бяспекі ўключаны
|
||||||
omniauth_callbacks:
|
omniauth_callbacks:
|
||||||
failure: Немагчыма аўтэнтыфікаваць вас з %{kind}, таму што “%{reason}”.
|
failure: Немагчыма аўтэнтыфікаваць вас з %{kind}, таму што “%{reason}”.
|
||||||
success: Паспяховая аўтэнтыфікацыя з %{kind} уліковага запісу.
|
success: Паспяховая аўтэнтыфікацыя з %{kind} уліковага запісу.
|
||||||
passwords:
|
passwords:
|
||||||
no_token: Вы не можаце атрымаць доступ да гэтай старонкі не з ліста аднаўлення пароля. Калі вы ўсе ж такі перайшлі па спасылцы ў лісце аднаўлення пароля, упэўніцеся, што яна поўная.
|
no_token: Вы не можаце атрымаць доступ да гэтай старонкі не з ліста аднаўлення пароля. Калі Вы ўсе ж такі перайшлі па спасылцы ў лісце аднаўлення пароля, упэўніцеся, што яна поўная.
|
||||||
send_instructions: Калі ваш электроны адрас існуе ў нашай базе даных, вы атрымаеце спасылку для аднаўлення пароля на сваю электронную пошту праз пару хвілін. Калі вы не атрымалі гэты ліст, праверце папку са спамам.
|
send_instructions: Калі Ваш электроны адрас існуе ў нашай базе даных, Вы атрымаеце спасылку для аднаўлення пароля на сваю электронную пошту праз пару хвілін. Калі Вы не атрымалі гэты ліст, праверце папку са спамам.
|
||||||
send_paranoid_instructions: Калі ваш электроны адрас існуе ў нашай базе даных, вы атрымаеце спасылку для аднаўлення пароля на сваю электронную пошту праз пару хвілін. Калі вы не атрымалі гэты ліст, праверце папку са спамам.
|
send_paranoid_instructions: Калі Ваш электроны адрас існуе ў нашай базе даных, Вы атрымаеце спасылку для аднаўлення пароля на сваю электронную пошту праз пару хвілін. Калі Вы не атрымалі гэты ліст, праверце папку са спамам.
|
||||||
updated: Ваш пароль быў паспяхова зменены. Вы ўвайшлі ў сістэму.
|
updated: Ваш пароль быў паспяхова зменены. Вы ўвайшлі ў сістэму.
|
||||||
updated_not_active: Ваш пароль быў паспяхова зменены.
|
updated_not_active: Ваш пароль быў паспяхова зменены.
|
||||||
registrations:
|
registrations:
|
||||||
destroyed: Пакуль! Ваш уліковы запіс быў паспяхова выдалены. Мы спадзяваемся хутка ўбачыць вас зноў.
|
destroyed: Пакуль! Ваш уліковы запіс быў паспяхова выдалены. Мы спадзяваемся хутка ўбачыць вас зноў.
|
||||||
update_needs_confirmation: Вы паспяхова абнавілі свой уліковы запіс, аднак, нам неабходна пацвердзіць ваш новы адрас электроннай пошты. Праверце вашу пошту і перайдзіце па спасылцы для пацвярджэння свайго новага адраса электроннай пошты. Калі вы не атрымалі гэты ліст, праверце папку са спамам.
|
update_needs_confirmation: Вы паспяхова абнавілі свой уліковы запіс, аднак, нам неабходна пацвердзіць Ваш новы адрас электроннай пошты. Праверце Вашу пошту і перайдзіце па спасылцы для пацвярджэння свайго новага адраса электроннай пошты. Калі Вы не атрымалі гэты ліст, праверце папку са спамам.
|
||||||
updated: Ваш уліковы запіс быў паспяхова абноўлены.
|
updated: Ваш уліковы запіс быў паспяхова абноўлены.
|
||||||
sessions:
|
sessions:
|
||||||
already_signed_out: Выхад паспяховы.
|
already_signed_out: Выхад паспяховы.
|
||||||
signed_in: Уваход паспяховы.
|
signed_in: Уваход паспяховы.
|
||||||
signed_out: Выхад паспяховы.
|
signed_out: Выхад паспяховы.
|
||||||
unlocks:
|
unlocks:
|
||||||
send_instructions: Вы атрымаеце ліст з інструкцыямі па разблакаванні вашага ўліковага запісу цягам некалькіх хвілін. Праверце тэчку са спамам, калі вы не атрымалі такі ліст.
|
send_instructions: Вы атрымаеце ліст з інструкцыямі па разблакіроўцы вашага ўліковага запісу цягам некалькіх хвілін. Праверце тэчку са спамам, калі Вы не атрымалі такі ліст.
|
||||||
send_paranoid_instructions: Калі ваш уліковы запіс існуе, вы атрымаеце ліст з інструкцыямі па яго разблакаванні цягам некалькіх хвілін. Праверце тэчку са спамам, калі вы не атрымалі такі ліст.
|
send_paranoid_instructions: Калі Ваш уліковы запіс існуе, вы атрымаеце ліст з інструкцыямі па яго разблакіроўцы цягам некалькіх хвілін. Праверце тэчку са спамам, калі Вы не атрымалі такі ліст.
|
||||||
unlocked: Ваш уліковы запіс быў разблакіраваны. Увайдзіце, каб працягнуць.
|
unlocked: Ваш уліковы запіс быў разблакіраваны. Увайдзіце, каб працягнуць.
|
||||||
errors:
|
errors:
|
||||||
messages:
|
messages:
|
||||||
|
|||||||
@ -1,6 +1,12 @@
|
|||||||
---
|
---
|
||||||
az:
|
az:
|
||||||
doorkeeper:
|
doorkeeper:
|
||||||
|
authorized_applications:
|
||||||
|
index:
|
||||||
|
authorized_at: "%{date} tarixində səlahiyyət verilib"
|
||||||
|
description_html: Bunlar, API istifadə edərək hesabınıza erişəbilən tətbiqlərdir. Əgər burada tanımadığınız tətbiqlər və ya yanlış davranan bir tətbiq varsa, erişimini ləğv edə bilərsiniz.
|
||||||
|
last_used_at: Ən son %{date} istifadə edilib
|
||||||
|
title: Səlahiyyətli tətbiqləriniz
|
||||||
errors:
|
errors:
|
||||||
messages:
|
messages:
|
||||||
invalid_token:
|
invalid_token:
|
||||||
@ -14,13 +20,23 @@ az:
|
|||||||
write: Yalnız yazma erişimi
|
write: Yalnız yazma erişimi
|
||||||
title:
|
title:
|
||||||
all: Mastodon hesabınıza tam erişim
|
all: Mastodon hesabınıza tam erişim
|
||||||
|
filters: Filtrlər
|
||||||
|
follow: İzləmələr, səsi kəsmələr və əngəlləmələr
|
||||||
|
follows: İzlənilənlər
|
||||||
scopes:
|
scopes:
|
||||||
admin:read: serverdəki bütün veriləri oxuma
|
admin:read: serverdəki bütün veriləri oxuma
|
||||||
|
admin:read:domain_blocks: əngəllənən bütün domenlərin həssas məlumatlarını oxuma
|
||||||
|
admin:read:email_domain_blocks: əngəllənən bütün e-poçt domenlərinin həssas məlumatlarını oxuma
|
||||||
admin:write: serverdəki bütün veriləri dəyişdirmə
|
admin:write: serverdəki bütün veriləri dəyişdirmə
|
||||||
admin:write:accounts: hesablarda moderasiya əməliyyatlarını icra et
|
admin:write:accounts: hesablarda moderasiya əməliyyatlarını icra et
|
||||||
admin:write:canonical_email_blocks:
|
admin:write:canonical_email_blocks:
|
||||||
admin:write:domain_allows: domen icazələri üzərində moderasiya əməliyyatlarını icra et
|
admin:write:domain_allows: domen icazələri üzərində moderasiya əməliyyatlarını icra et
|
||||||
|
admin:write:domain_blocks: əngəllənən domenlər üzərində moderasiya fəaliyyətlərini icra et
|
||||||
|
admin:write:email_domain_blocks: əngəllənən e-poçt domenləri üzərində moderasiya fəaliyyətlərini icra et
|
||||||
admin:write:ip_blocks: IP əngəlləmələri üzrə moderasiya əməliyyatlarını icra et
|
admin:write:ip_blocks: IP əngəlləmələri üzrə moderasiya əməliyyatlarını icra et
|
||||||
admin:write:reports: hesabatlarda moderasiya əməliyyatlarını icra et
|
admin:write:reports: hesabatlarda moderasiya əməliyyatlarını icra et
|
||||||
read: hesabınızın bütün verilərini oxuma
|
read: hesabınızın bütün verilərini oxuma
|
||||||
|
read:filters: filtrlərinizə baxın
|
||||||
|
read:follows: izlədiklərinizə baxın
|
||||||
write: hesabınızın bütün verilərini dəyişdirmə
|
write: hesabınızın bütün verilərini dəyişdirmə
|
||||||
|
write:filters: filtrlər yarat
|
||||||
|
|||||||
@ -4,7 +4,7 @@ be:
|
|||||||
attributes:
|
attributes:
|
||||||
doorkeeper/application:
|
doorkeeper/application:
|
||||||
name: Назва праграмы
|
name: Назва праграмы
|
||||||
redirect_uri: перанакіравць URI
|
redirect_uri: Перанакіравць URI
|
||||||
scopes: Дазволы
|
scopes: Дазволы
|
||||||
website: Вэб-сайт праграмы
|
website: Вэб-сайт праграмы
|
||||||
errors:
|
errors:
|
||||||
@ -12,8 +12,8 @@ be:
|
|||||||
doorkeeper/application:
|
doorkeeper/application:
|
||||||
attributes:
|
attributes:
|
||||||
redirect_uri:
|
redirect_uri:
|
||||||
fragment_present: не можа ўтрымліваць фрагмент
|
fragment_present: не можа ўтрымліваць фрагмент.
|
||||||
invalid_uri: URI павінен быць сапраўдным
|
invalid_uri: URI павінен быць сапраўдным.
|
||||||
relative_uri: павінен быць абсалютным URI.
|
relative_uri: павінен быць абсалютным URI.
|
||||||
secured_uri: павінен быць HTTPS/SSL URI.
|
secured_uri: павінен быць HTTPS/SSL URI.
|
||||||
doorkeeper:
|
doorkeeper:
|
||||||
@ -60,7 +60,7 @@ be:
|
|||||||
error:
|
error:
|
||||||
title: Узнікла памылка
|
title: Узнікла памылка
|
||||||
new:
|
new:
|
||||||
prompt_html: "%{client_name} хоча атрымаць дазвол на доступ да Вашага профілю. <strong>Ухваляйце гэты запыт толькі калі Вы ведаеце гэту крыніцу і давяраеце ёй.</strong>"
|
prompt_html: "%{client_name} хоча атрымаць дазвол на доступ да Вашага ўліковага запісу. <strong>Ухваляйце гэты запыт толькі калі Вы ведаеце гэту крыніцу і давяраеце ёй.</strong>"
|
||||||
review_permissions: Прагледзець дазволы
|
review_permissions: Прагледзець дазволы
|
||||||
title: Патрабуецца аўтарызацыя
|
title: Патрабуецца аўтарызацыя
|
||||||
show:
|
show:
|
||||||
@ -72,7 +72,7 @@ be:
|
|||||||
revoke: Вы ўпэўнены?
|
revoke: Вы ўпэўнены?
|
||||||
index:
|
index:
|
||||||
authorized_at: Аўтарызавана %{date}
|
authorized_at: Аўтарызавана %{date}
|
||||||
description_html: Гэта прыкладанні якія могуць мець доступ да вашага акаунта з дапамогай API. Калі вы бачыце тут прыкладанні, якія вы не пазнаеце, або прыкладанне блага сябе паводзіць вы можаце прыбраць ягонны доступ.
|
description_html: Гэта прыкладанні якія могуць мець доступ да вашага ўліковага запісу з дапамогай API. Калі вы бачыце тут прыкладанні, якія вы не пазнаеце, або прыкладанне блага сябе паводзіць вы можаце прыбраць ягоны доступ.
|
||||||
last_used_at: Апошні раз скарыстана %{date}
|
last_used_at: Апошні раз скарыстана %{date}
|
||||||
never_used: Не выкарыстоўвалася
|
never_used: Не выкарыстоўвалася
|
||||||
scopes: Дазволы
|
scopes: Дазволы
|
||||||
@ -120,10 +120,10 @@ be:
|
|||||||
write: Доступ толькі для запісу
|
write: Доступ толькі для запісу
|
||||||
title:
|
title:
|
||||||
accounts: Уліковыя запісы
|
accounts: Уліковыя запісы
|
||||||
admin/accounts: Кіраванне акаўнтамі
|
admin/accounts: Кіраванне ўліковымі запісамі
|
||||||
admin/all: Усе кіравальныя функцыі
|
admin/all: Усе кіравальныя функцыі
|
||||||
admin/reports: Кіраванне скардамі
|
admin/reports: Кіраванне скардамі
|
||||||
all: Поўны доступ да акаўнта Mastodon
|
all: Поўны доступ да ўліковага запісу Mastodon
|
||||||
blocks: Блакаванні
|
blocks: Блакаванні
|
||||||
bookmarks: Закладкі
|
bookmarks: Закладкі
|
||||||
conversations: Размовы
|
conversations: Размовы
|
||||||
@ -150,15 +150,15 @@ be:
|
|||||||
title: Патрабуецца аўтарызацыя OAuth
|
title: Патрабуецца аўтарызацыя OAuth
|
||||||
scopes:
|
scopes:
|
||||||
admin:read: чытаць усе даныя на серверы
|
admin:read: чытаць усе даныя на серверы
|
||||||
admin:read:accounts: чытаць канфідэнцыйную інфармацыю ўсіх акаўнтаў
|
admin:read:accounts: чытаць канфідэнцыяльную інфармацыю ўсіх уліковых запісаў
|
||||||
admin:read:canonical_email_blocks: чытаць канфідэнцыйную інфармацыю ўсіх кананічных блокаў электроннай пошты
|
admin:read:canonical_email_blocks: чытаць канфідэнцыйную інфармацыю ўсіх кананічных блокаў электроннай пошты
|
||||||
admin:read:domain_allows: чытаць канфідэнцыйную інфармацыю ўсіх дазволеных даменаў
|
admin:read:domain_allows: чытаць канфідэнцыйную інфармацыю ўсіх дазволеных даменаў
|
||||||
admin:read:domain_blocks: чытаць канфідэнцыйную інфармацыю ўсіх блакіраваных даменаў
|
admin:read:domain_blocks: чытаць канфідэнцыйную інфармацыю ўсіх блакіраваных даменаў
|
||||||
admin:read:email_domain_blocks: чытаць канфідэнцыйную інфармацыю ўсіх блакіраваных даменаў эл. пошты
|
admin:read:email_domain_blocks: чытаць канфідэнцыйную інфармацыю ўсіх блакіраваных даменаў эл. пошты
|
||||||
admin:read:ip_blocks: чытаць канфідэнцыяльную інфармацыю ўсіх блакіраваных IP
|
admin:read:ip_blocks: чытаць канфідэнцыяльную інфармацыю ўсіх блакіраваных IP
|
||||||
admin:read:reports: чытаць канфідэнцыйную інфармацыю ўсіх справаздач і справаздачных уліковых запісаў
|
admin:read:reports: чытаць канфідэнцыяльную інфармацыю ўсіх скаргаў і абскарджаных уліковых запісаў
|
||||||
admin:write: змяняць усе даныя на серверы
|
admin:write: змяняць усе даныя на серверы
|
||||||
admin:write:accounts: выконваць дзеянні па мадэрацыі акаўнтаў
|
admin:write:accounts: выконваць дзеянні па мадэрацыі ўліковых запісаў
|
||||||
admin:write:canonical_email_blocks: выконваць дзеянні па мадэрацыі кананічных блокаў электроннай пошты
|
admin:write:canonical_email_blocks: выконваць дзеянні па мадэрацыі кананічных блокаў электроннай пошты
|
||||||
admin:write:domain_allows: дазваляе праводзіць мадэрацыю ў дамене
|
admin:write:domain_allows: дазваляе праводзіць мадэрацыю ў дамене
|
||||||
admin:write:domain_blocks: мадэраваць блакіраваныя дамены
|
admin:write:domain_blocks: мадэраваць блакіраваныя дамены
|
||||||
@ -189,7 +189,7 @@ be:
|
|||||||
write:conversations: ігнараваць і выдаляць размовы
|
write:conversations: ігнараваць і выдаляць размовы
|
||||||
write:favourites: упадабаныя допісы
|
write:favourites: упадабаныя допісы
|
||||||
write:filters: ствараць фільтры
|
write:filters: ствараць фільтры
|
||||||
write:follows: Сачыць за людзьмі
|
write:follows: сачыць за людзьмі
|
||||||
write:lists: ствараць спiсы
|
write:lists: ствараць спiсы
|
||||||
write:media: запампоўваць медыяфайлы
|
write:media: запампоўваць медыяфайлы
|
||||||
write:mutes: ігнараваць людзей і размовы
|
write:mutes: ігнараваць людзей і размовы
|
||||||
|
|||||||
@ -19,7 +19,7 @@ fi:
|
|||||||
following: Sinun täytyy seurata käyttäjää, jota haluat tukea
|
following: Sinun täytyy seurata käyttäjää, jota haluat tukea
|
||||||
posts:
|
posts:
|
||||||
one: Julkaisu
|
one: Julkaisu
|
||||||
other: viestiä
|
other: Julkaisua
|
||||||
posts_tab_heading: Julkaisut
|
posts_tab_heading: Julkaisut
|
||||||
self_follow_error: Oman tilisi seuraaminen ei ole sallittua
|
self_follow_error: Oman tilisi seuraaminen ei ole sallittua
|
||||||
admin:
|
admin:
|
||||||
@ -507,12 +507,14 @@ fi:
|
|||||||
registration_requested: Rekisteröintiä pyydetty
|
registration_requested: Rekisteröintiä pyydetty
|
||||||
registrations:
|
registrations:
|
||||||
confirm: Vahvista
|
confirm: Vahvista
|
||||||
|
description: Sait rekisteröinnin FASP:lta. Hylkää se, jos et aloittanut sitä. Jos aloitat tämän, vertaile huolellisesti nimeä ja sormenjälkeä ennen rekisteröinnin vahvistamista.
|
||||||
reject: Hylkää
|
reject: Hylkää
|
||||||
title: Vahvista FASP-rekisteröinti
|
title: Vahvista FASP-rekisteröinti
|
||||||
save: Tallenna
|
save: Tallenna
|
||||||
select_capabilities: Valitse kyvykkyydet
|
select_capabilities: Valitse kyvykkyydet
|
||||||
sign_in: Kirjaudu sisään
|
sign_in: Kirjaudu sisään
|
||||||
status: Tila
|
status: Tila
|
||||||
|
title: Fediversumin Tukitoimintojen Tarjoajat
|
||||||
title: FASP
|
title: FASP
|
||||||
follow_recommendations:
|
follow_recommendations:
|
||||||
description_html: "<strong>Seurantasuositukset auttavat uusia käyttäjiä löytämään nopeasti kiinnostavaa sisältöä</strong>. Kun käyttäjä ei ole ollut tarpeeksi vuorovaikutuksessa muiden kanssa, jotta hänelle olisi muodostunut henkilökohtaisia seuraamissuosituksia, suositellaan niiden sijaan näitä tilejä. Ne lasketaan päivittäin uudelleen yhdistelmästä tilejä, jotka ovat viime aikoina olleet aktiivisimmin sitoutuneita ja joilla on suurimmat paikalliset seuraajamäärät tietyllä kielellä."
|
description_html: "<strong>Seurantasuositukset auttavat uusia käyttäjiä löytämään nopeasti kiinnostavaa sisältöä</strong>. Kun käyttäjä ei ole ollut tarpeeksi vuorovaikutuksessa muiden kanssa, jotta hänelle olisi muodostunut henkilökohtaisia seuraamissuosituksia, suositellaan niiden sijaan näitä tilejä. Ne lasketaan päivittäin uudelleen yhdistelmästä tilejä, jotka ovat viime aikoina olleet aktiivisimmin sitoutuneita ja joilla on suurimmat paikalliset seuraajamäärät tietyllä kielellä."
|
||||||
|
|||||||
@ -187,6 +187,7 @@ ko:
|
|||||||
create_relay: 릴레이 생성
|
create_relay: 릴레이 생성
|
||||||
create_unavailable_domain: 사용 불가능한 도메인 생성
|
create_unavailable_domain: 사용 불가능한 도메인 생성
|
||||||
create_user_role: 역할 생성
|
create_user_role: 역할 생성
|
||||||
|
create_username_block: 새 사용자명 규칙 만들기
|
||||||
demote_user: 사용자 강등
|
demote_user: 사용자 강등
|
||||||
destroy_announcement: 공지사항 삭제
|
destroy_announcement: 공지사항 삭제
|
||||||
destroy_canonical_email_block: 이메일 차단 삭제
|
destroy_canonical_email_block: 이메일 차단 삭제
|
||||||
@ -200,6 +201,7 @@ ko:
|
|||||||
destroy_status: 게시물 삭제
|
destroy_status: 게시물 삭제
|
||||||
destroy_unavailable_domain: 사용 불가능한 도메인 제거
|
destroy_unavailable_domain: 사용 불가능한 도메인 제거
|
||||||
destroy_user_role: 역할 삭제
|
destroy_user_role: 역할 삭제
|
||||||
|
destroy_username_block: 사용자명 규칙 삭제
|
||||||
disable_2fa_user: 2단계 인증 비활성화
|
disable_2fa_user: 2단계 인증 비활성화
|
||||||
disable_custom_emoji: 커스텀 에모지 비활성화
|
disable_custom_emoji: 커스텀 에모지 비활성화
|
||||||
disable_relay: 릴레이 비활성화
|
disable_relay: 릴레이 비활성화
|
||||||
@ -234,6 +236,7 @@ ko:
|
|||||||
update_report: 신고 업데이트
|
update_report: 신고 업데이트
|
||||||
update_status: 게시물 수정
|
update_status: 게시물 수정
|
||||||
update_user_role: 역할 수정
|
update_user_role: 역할 수정
|
||||||
|
update_username_block: 사용자명 규칙 업데이트
|
||||||
actions:
|
actions:
|
||||||
approve_appeal_html: "%{name} 님이 %{target}의 중재 결정에 대한 이의 제기를 승인했습니다"
|
approve_appeal_html: "%{name} 님이 %{target}의 중재 결정에 대한 이의 제기를 승인했습니다"
|
||||||
approve_user_html: "%{name} 님이 %{target} 님의 가입을 승인했습니다"
|
approve_user_html: "%{name} 님이 %{target} 님의 가입을 승인했습니다"
|
||||||
@ -252,6 +255,7 @@ ko:
|
|||||||
create_relay_html: "%{name} 님이 릴레이 %{target}를 생성했습니다"
|
create_relay_html: "%{name} 님이 릴레이 %{target}를 생성했습니다"
|
||||||
create_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 중지했습니다"
|
create_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 중지했습니다"
|
||||||
create_user_role_html: "%{name} 님이 %{target} 역할을 생성했습니다"
|
create_user_role_html: "%{name} 님이 %{target} 역할을 생성했습니다"
|
||||||
|
create_username_block_html: "%{name} 님이 %{target}를 포함하는 사용자명에 대한 규칙을 생성했습니다"
|
||||||
demote_user_html: "%{name} 님이 사용자 %{target} 님을 강등했습니다"
|
demote_user_html: "%{name} 님이 사용자 %{target} 님을 강등했습니다"
|
||||||
destroy_announcement_html: "%{name} 님이 공지 %{target}을 삭제했습니다"
|
destroy_announcement_html: "%{name} 님이 공지 %{target}을 삭제했습니다"
|
||||||
destroy_canonical_email_block_html: "%{name} 님이 %{target} 해시를 가진 이메일을 차단 해제했습니다"
|
destroy_canonical_email_block_html: "%{name} 님이 %{target} 해시를 가진 이메일을 차단 해제했습니다"
|
||||||
@ -265,6 +269,7 @@ ko:
|
|||||||
destroy_status_html: "%{name} 님이 %{target} 님의 게시물을 삭제했습니다"
|
destroy_status_html: "%{name} 님이 %{target} 님의 게시물을 삭제했습니다"
|
||||||
destroy_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 재개"
|
destroy_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 재개"
|
||||||
destroy_user_role_html: "%{name} 님이 %{target} 역할을 삭제했습니다"
|
destroy_user_role_html: "%{name} 님이 %{target} 역할을 삭제했습니다"
|
||||||
|
destroy_username_block_html: "%{name} 님이 %{target}를 포함하는 사용자명에 대한 규칙을 삭제했습니다"
|
||||||
disable_2fa_user_html: "%{name} 님이 사용자 %{target} 님의 2단계 인증을 비활성화 했습니다"
|
disable_2fa_user_html: "%{name} 님이 사용자 %{target} 님의 2단계 인증을 비활성화 했습니다"
|
||||||
disable_custom_emoji_html: "%{name} 님이 에모지 %{target}를 비활성화했습니다"
|
disable_custom_emoji_html: "%{name} 님이 에모지 %{target}를 비활성화했습니다"
|
||||||
disable_relay_html: "%{name} 님이 릴레이 %{target}를 비활성화했습니다"
|
disable_relay_html: "%{name} 님이 릴레이 %{target}를 비활성화했습니다"
|
||||||
@ -299,6 +304,7 @@ ko:
|
|||||||
update_report_html: "%{name} 님이 신고 %{target}를 업데이트 했습니다"
|
update_report_html: "%{name} 님이 신고 %{target}를 업데이트 했습니다"
|
||||||
update_status_html: "%{name} 님이 %{target}의 게시물을 업데이트했습니다"
|
update_status_html: "%{name} 님이 %{target}의 게시물을 업데이트했습니다"
|
||||||
update_user_role_html: "%{name} 님이 %{target} 역할을 수정했습니다"
|
update_user_role_html: "%{name} 님이 %{target} 역할을 수정했습니다"
|
||||||
|
update_username_block_html: "%{name} 님이 %{target}를 포함하는 사용자명에 대한 규칙을 수정했습니다"
|
||||||
deleted_account: 계정을 삭제했습니다
|
deleted_account: 계정을 삭제했습니다
|
||||||
empty: 로그를 찾을 수 없습니다
|
empty: 로그를 찾을 수 없습니다
|
||||||
filter_by_action: 동작 별 필터
|
filter_by_action: 동작 별 필터
|
||||||
@ -1071,10 +1077,23 @@ ko:
|
|||||||
trending: 유행 중
|
trending: 유행 중
|
||||||
username_blocks:
|
username_blocks:
|
||||||
add_new: 새로 추가
|
add_new: 새로 추가
|
||||||
|
block_registrations: 가입 차단
|
||||||
|
comparison:
|
||||||
|
contains: 포함
|
||||||
|
equals: 일치
|
||||||
|
contains_html: "%{string} 포함"
|
||||||
|
created_msg: 사용자명 규칙을 생성했습니다
|
||||||
|
delete: 삭제
|
||||||
|
edit:
|
||||||
|
title: 사용자명 규칙 편집
|
||||||
|
matches_exactly_html: "%{string}과 일치"
|
||||||
new:
|
new:
|
||||||
create: 규칙 만들기
|
create: 규칙 만들기
|
||||||
title: 새 유저네임 규칙 만들기
|
title: 새 유저네임 규칙 만들기
|
||||||
|
no_username_block_selected: 아무 것도 선택 되지 않아 어떤 사용자명 규칙도 변경 되지 않았습니다
|
||||||
not_permitted: 허용하지 않음
|
not_permitted: 허용하지 않음
|
||||||
|
title: 사용자명 규칙
|
||||||
|
updated_msg: 사용자명 규칙을 변경했습니다
|
||||||
warning_presets:
|
warning_presets:
|
||||||
add_new: 새로 추가
|
add_new: 새로 추가
|
||||||
delete: 삭제
|
delete: 삭제
|
||||||
@ -1631,6 +1650,10 @@ ko:
|
|||||||
title: 새 답글
|
title: 새 답글
|
||||||
poll:
|
poll:
|
||||||
subject: "%{name}의 설문이 종료됨"
|
subject: "%{name}의 설문이 종료됨"
|
||||||
|
quote:
|
||||||
|
body: '당신의 게시물을 %{name} 님이 인용했습니다:'
|
||||||
|
subject: "%{name} 님이 내 게시물을 인용했습니다"
|
||||||
|
title: 새 인용
|
||||||
reblog:
|
reblog:
|
||||||
body: '당신의 게시물을 %{name} 님이 부스트 했습니다:'
|
body: '당신의 게시물을 %{name} 님이 부스트 했습니다:'
|
||||||
subject: "%{name} 님이 내 게시물을 부스트 했습니다"
|
subject: "%{name} 님이 내 게시물을 부스트 했습니다"
|
||||||
@ -1837,6 +1860,7 @@ ko:
|
|||||||
edited_at_html: "%{date}에 편집됨"
|
edited_at_html: "%{date}에 편집됨"
|
||||||
errors:
|
errors:
|
||||||
in_reply_not_found: 답장하려는 게시물이 존재하지 않습니다.
|
in_reply_not_found: 답장하려는 게시물이 존재하지 않습니다.
|
||||||
|
quoted_status_not_found: 인용하려는 게시물이 존재하지 않습니다.
|
||||||
over_character_limit: 최대 %{max}자까지 입력할 수 있습니다
|
over_character_limit: 최대 %{max}자까지 입력할 수 있습니다
|
||||||
pin_errors:
|
pin_errors:
|
||||||
direct: 멘션된 사용자들에게만 보이는 게시물은 고정될 수 없습니다
|
direct: 멘션된 사용자들에게만 보이는 게시물은 고정될 수 없습니다
|
||||||
@ -1844,6 +1868,8 @@ ko:
|
|||||||
ownership: 다른 사람의 게시물은 고정될 수 없습니다
|
ownership: 다른 사람의 게시물은 고정될 수 없습니다
|
||||||
reblog: 부스트는 고정될 수 없습니다
|
reblog: 부스트는 고정될 수 없습니다
|
||||||
quote_policies:
|
quote_policies:
|
||||||
|
followers: 내 팔로워만
|
||||||
|
nobody: 없음
|
||||||
public: 모두
|
public: 모두
|
||||||
title: '%{name}: "%{quote}"'
|
title: '%{name}: "%{quote}"'
|
||||||
visibilities:
|
visibilities:
|
||||||
|
|||||||
@ -690,6 +690,36 @@ nan:
|
|||||||
remote_user_placeholder: tuì %{instance} 來ê遠距離用者
|
remote_user_placeholder: tuì %{instance} 來ê遠距離用者
|
||||||
reopen: 重頭phah開檢舉
|
reopen: 重頭phah開檢舉
|
||||||
report: '檢舉 #%{id}'
|
report: '檢舉 #%{id}'
|
||||||
|
reported_account: 受檢舉ê口座
|
||||||
|
reported_by: 檢舉人
|
||||||
|
reported_with_application: 用應用程式檢舉
|
||||||
|
resolved: 解決ah
|
||||||
|
resolved_msg: 檢舉成功解決ah!
|
||||||
|
skip_to_actions: 跳kàu行動
|
||||||
|
status: 狀態
|
||||||
|
statuses: 受檢舉ê內容
|
||||||
|
statuses_description_html: 冒犯ê內容ē引用tī kap受檢舉口座ê聯絡
|
||||||
|
summary:
|
||||||
|
action_preambles:
|
||||||
|
delete_html: Lí teh-beh <strong>thâi掉</strong> <strong>@%{acct}</strong> ê tsi̍t-kuá PO文。Tse ē:
|
||||||
|
mark_as_sensitive_html: Lí teh-beh <strong>kā</strong> <strong>@%{acct}</strong> ê tsi̍t-kuá PO文<strong>標做敏感</strong>。Tse ē:
|
||||||
|
silence_html: Lí teh-beh <strong>限制</strong> <strong>@%{acct}</strong> ê口座。Tse ē:
|
||||||
|
suspend_html: Lí teh-beh <strong>停止</strong> <strong>@%{acct}</strong> ê口座權限。Tse ē:
|
||||||
|
actions:
|
||||||
|
delete_html: Thâi掉冒犯ê PO文
|
||||||
|
mark_as_sensitive_html: Kā冒犯êPO文ê媒體標做敏感
|
||||||
|
silence_html: Kā in ê個人資料kap內容標做kan-ta有跟tuè ê,á是手動tshiau伊ê個人檔案ê,通看見,來嚴嚴限制 <strong>@%{acct}</strong> ê傳播範圍
|
||||||
|
suspend_html: Kā <strong>@%{acct}</strong> 停止權限,koh kā in ê 個人資料kap內容標做bē當用,kap bē當hām in互動
|
||||||
|
close_report: 'Kā 檢舉報告 #%{id} 標做解決ah'
|
||||||
|
close_reports_html: Kā <strong>ta̍k ê</strong>tuì <strong>@%{acct}</strong> ê檢舉標做解決ah
|
||||||
|
delete_data_html: Tuì tann起30kang以後,thâi掉 <strong>@%{acct}</strong> ê個人資料kap內容,除非佇tsit ê期限進前,取消停止in ê權限
|
||||||
|
preview_preamble_html: "<strong>@%{acct}</strong> ē收著警告,包含下kha ê內容:"
|
||||||
|
record_strike_html: 記錄tuì <strong>@%{acct}</strong>ê警告,來幫tsān lí提升佇tsit ê口座ê未來違規
|
||||||
|
send_email_html: Kā警告電子phue寄hōo <strong>@%{acct}</strong>
|
||||||
|
warning_placeholder: 通選ê,管理行動ê補充理由
|
||||||
|
target_origin: 受檢舉ê口座ê來源
|
||||||
|
title: 檢舉
|
||||||
|
unassign: 取消分配
|
||||||
roles:
|
roles:
|
||||||
privileges:
|
privileges:
|
||||||
manage_announcements: 管理公告
|
manage_announcements: 管理公告
|
||||||
|
|||||||
@ -190,6 +190,7 @@ nn:
|
|||||||
create_relay: Opprett eit relé
|
create_relay: Opprett eit relé
|
||||||
create_unavailable_domain: Opprett utilgjengeleg domene
|
create_unavailable_domain: Opprett utilgjengeleg domene
|
||||||
create_user_role: Opprett rolle
|
create_user_role: Opprett rolle
|
||||||
|
create_username_block: Lag regel for brukarnamn
|
||||||
demote_user: Degrader brukar
|
demote_user: Degrader brukar
|
||||||
destroy_announcement: Slett lysinga
|
destroy_announcement: Slett lysinga
|
||||||
destroy_canonical_email_block: Fjern e-postblokkering
|
destroy_canonical_email_block: Fjern e-postblokkering
|
||||||
@ -203,6 +204,7 @@ nn:
|
|||||||
destroy_status: Slett status
|
destroy_status: Slett status
|
||||||
destroy_unavailable_domain: Slett utilgjengeleg domene
|
destroy_unavailable_domain: Slett utilgjengeleg domene
|
||||||
destroy_user_role: Øydelegg rolle
|
destroy_user_role: Øydelegg rolle
|
||||||
|
destroy_username_block: Slett regel for brukarnamn
|
||||||
disable_2fa_user: Skruv av 2FA
|
disable_2fa_user: Skruv av 2FA
|
||||||
disable_custom_emoji: Skruv av tilpassa emoji
|
disable_custom_emoji: Skruv av tilpassa emoji
|
||||||
disable_relay: Skru av reléet
|
disable_relay: Skru av reléet
|
||||||
@ -237,6 +239,7 @@ nn:
|
|||||||
update_report: Oppdater rapport
|
update_report: Oppdater rapport
|
||||||
update_status: Oppdater tut
|
update_status: Oppdater tut
|
||||||
update_user_role: Oppdater rolla
|
update_user_role: Oppdater rolla
|
||||||
|
update_username_block: Oppdater regel for brukarnamn
|
||||||
actions:
|
actions:
|
||||||
approve_appeal_html: "%{name} godkjende klagen frå %{target} på modereringa"
|
approve_appeal_html: "%{name} godkjende klagen frå %{target} på modereringa"
|
||||||
approve_user_html: "%{name} godkjende registreringa til %{target}"
|
approve_user_html: "%{name} godkjende registreringa til %{target}"
|
||||||
@ -255,6 +258,7 @@ nn:
|
|||||||
create_relay_html: "%{name} laga reléet %{target}"
|
create_relay_html: "%{name} laga reléet %{target}"
|
||||||
create_unavailable_domain_html: "%{name} stogga levering til domenet %{target}"
|
create_unavailable_domain_html: "%{name} stogga levering til domenet %{target}"
|
||||||
create_user_role_html: "%{name} oppretta rolla %{target}"
|
create_user_role_html: "%{name} oppretta rolla %{target}"
|
||||||
|
create_username_block_html: "%{name} laga ein regel for brukarnamn som inneheld %{target}"
|
||||||
demote_user_html: "%{name} degraderte brukaren %{target}"
|
demote_user_html: "%{name} degraderte brukaren %{target}"
|
||||||
destroy_announcement_html: "%{name} sletta kunngjeringa %{target}"
|
destroy_announcement_html: "%{name} sletta kunngjeringa %{target}"
|
||||||
destroy_canonical_email_block_html: "%{name} avblokkerte e-post med hash %{target}"
|
destroy_canonical_email_block_html: "%{name} avblokkerte e-post med hash %{target}"
|
||||||
@ -268,6 +272,7 @@ nn:
|
|||||||
destroy_status_html: "%{name} fjerna innlegget frå %{target}"
|
destroy_status_html: "%{name} fjerna innlegget frå %{target}"
|
||||||
destroy_unavailable_domain_html: "%{name} tok opp att levering til domenet %{target}"
|
destroy_unavailable_domain_html: "%{name} tok opp att levering til domenet %{target}"
|
||||||
destroy_user_role_html: "%{name} sletta rolla %{target}"
|
destroy_user_role_html: "%{name} sletta rolla %{target}"
|
||||||
|
destroy_username_block_html: "%{name} fjerna regelen for brukarnamn som inneheld %{target}"
|
||||||
disable_2fa_user_html: "%{name} tok vekk krav om tofaktorautentisering for brukaren %{target}"
|
disable_2fa_user_html: "%{name} tok vekk krav om tofaktorautentisering for brukaren %{target}"
|
||||||
disable_custom_emoji_html: "%{name} deaktiverte emojien %{target}"
|
disable_custom_emoji_html: "%{name} deaktiverte emojien %{target}"
|
||||||
disable_relay_html: "%{name} skrudde av reléet %{target}"
|
disable_relay_html: "%{name} skrudde av reléet %{target}"
|
||||||
@ -302,6 +307,7 @@ nn:
|
|||||||
update_report_html: "%{name} oppdaterte rapporten %{target}"
|
update_report_html: "%{name} oppdaterte rapporten %{target}"
|
||||||
update_status_html: "%{name} oppdaterte innlegg av %{target}"
|
update_status_html: "%{name} oppdaterte innlegg av %{target}"
|
||||||
update_user_role_html: "%{name} endret %{target} -rolle"
|
update_user_role_html: "%{name} endret %{target} -rolle"
|
||||||
|
update_username_block_html: "%{name} oppdaterte regelen for brukarnamn som inneheld %{target}"
|
||||||
deleted_account: sletta konto
|
deleted_account: sletta konto
|
||||||
empty: Ingen loggar funne.
|
empty: Ingen loggar funne.
|
||||||
filter_by_action: Sorter etter handling
|
filter_by_action: Sorter etter handling
|
||||||
@ -1085,6 +1091,25 @@ nn:
|
|||||||
other: Brukt av %{count} personer i løpet av den seneste uken
|
other: Brukt av %{count} personer i løpet av den seneste uken
|
||||||
title: Anbefalingar og trendar
|
title: Anbefalingar og trendar
|
||||||
trending: Trender
|
trending: Trender
|
||||||
|
username_blocks:
|
||||||
|
add_new: Lag ny
|
||||||
|
block_registrations: Blokker registreringar
|
||||||
|
comparison:
|
||||||
|
contains: Inneheld
|
||||||
|
equals: Er lik
|
||||||
|
contains_html: Inneheld %{string}
|
||||||
|
created_msg: Laga regelen for brukarnamn
|
||||||
|
delete: Slett
|
||||||
|
edit:
|
||||||
|
title: Rediger regelen for brukarnamn
|
||||||
|
matches_exactly_html: Er lik %{string}
|
||||||
|
new:
|
||||||
|
create: Lag regel
|
||||||
|
title: Lag ein ny regel for brukarnamn
|
||||||
|
no_username_block_selected: Ingen brukarnamnreglar vart endra fordi du ikkje valde nokon
|
||||||
|
not_permitted: Ikkje tillate
|
||||||
|
title: Reglar for brukarnamn
|
||||||
|
updated_msg: Oppdaterte regelen for brukarnamn
|
||||||
warning_presets:
|
warning_presets:
|
||||||
add_new: Legg til ny
|
add_new: Legg til ny
|
||||||
delete: Slett
|
delete: Slett
|
||||||
@ -1349,6 +1374,10 @@ nn:
|
|||||||
basic_information: Grunnleggande informasjon
|
basic_information: Grunnleggande informasjon
|
||||||
hint_html: "<strong>Tilpass kva folk ser på den offentlege profilen din og ved sida av innlegga dine.</strong> Andre vil i større grad fylgja og samhandla med deg når du har eit profilbilete og har fyllt ut profilen din."
|
hint_html: "<strong>Tilpass kva folk ser på den offentlege profilen din og ved sida av innlegga dine.</strong> Andre vil i større grad fylgja og samhandla med deg når du har eit profilbilete og har fyllt ut profilen din."
|
||||||
other: Anna
|
other: Anna
|
||||||
|
emoji_styles:
|
||||||
|
auto: Auto
|
||||||
|
native: Innebygd
|
||||||
|
twemoji: Twemoji
|
||||||
errors:
|
errors:
|
||||||
'400': Søknaden du sende var ugyldig eller sett opp feil.
|
'400': Søknaden du sende var ugyldig eller sett opp feil.
|
||||||
'403': Du har ikkje løyve til å sjå denne sida.
|
'403': Du har ikkje løyve til å sjå denne sida.
|
||||||
@ -1658,6 +1687,10 @@ nn:
|
|||||||
title: Ny omtale
|
title: Ny omtale
|
||||||
poll:
|
poll:
|
||||||
subject: Meiningsmålinga frå %{name} er avslutta
|
subject: Meiningsmålinga frå %{name} er avslutta
|
||||||
|
quote:
|
||||||
|
body: 'Innlegget ditt vart sitert av %{name}:'
|
||||||
|
subject: "%{name} siterte innlegget ditt"
|
||||||
|
title: Nytt sitat
|
||||||
reblog:
|
reblog:
|
||||||
body: 'Statusen din vart framheva av %{name}:'
|
body: 'Statusen din vart framheva av %{name}:'
|
||||||
subject: "%{name} framheva statusen din"
|
subject: "%{name} framheva statusen din"
|
||||||
@ -1868,6 +1901,7 @@ nn:
|
|||||||
edited_at_html: Redigert %{date}
|
edited_at_html: Redigert %{date}
|
||||||
errors:
|
errors:
|
||||||
in_reply_not_found: Det ser ut til at tutet du freistar å svara ikkje finst.
|
in_reply_not_found: Det ser ut til at tutet du freistar å svara ikkje finst.
|
||||||
|
quoted_status_not_found: Innlegget du prøver å sitera ser ikkje ut til å finnast.
|
||||||
over_character_limit: øvregrensa for teikn, %{max}, er nådd
|
over_character_limit: øvregrensa for teikn, %{max}, er nådd
|
||||||
pin_errors:
|
pin_errors:
|
||||||
direct: Innlegg som bare er synlige for nevnte brukere kan ikke festes
|
direct: Innlegg som bare er synlige for nevnte brukere kan ikke festes
|
||||||
@ -1875,6 +1909,8 @@ nn:
|
|||||||
ownership: Du kan ikkje festa andre sine tut
|
ownership: Du kan ikkje festa andre sine tut
|
||||||
reblog: Ei framheving kan ikkje festast
|
reblog: Ei framheving kan ikkje festast
|
||||||
quote_policies:
|
quote_policies:
|
||||||
|
followers: Berre dei som fylgjer deg
|
||||||
|
nobody: Ingen
|
||||||
public: Alle
|
public: Alle
|
||||||
title: "%{name}: «%{quote}»"
|
title: "%{name}: «%{quote}»"
|
||||||
visibilities:
|
visibilities:
|
||||||
|
|||||||
@ -599,6 +599,7 @@ pl:
|
|||||||
limited: Ograniczone
|
limited: Ograniczone
|
||||||
title: Moderacja
|
title: Moderacja
|
||||||
moderation_notes:
|
moderation_notes:
|
||||||
|
create: Dodaj notatkę moderacyjną
|
||||||
title: Notatki moderacyjne
|
title: Notatki moderacyjne
|
||||||
private_comment: Prywatny komentarz
|
private_comment: Prywatny komentarz
|
||||||
public_comment: Publiczny komentarz
|
public_comment: Publiczny komentarz
|
||||||
@ -1109,6 +1110,7 @@ pl:
|
|||||||
trending: Popularne
|
trending: Popularne
|
||||||
username_blocks:
|
username_blocks:
|
||||||
add_new: Dodaj nową
|
add_new: Dodaj nową
|
||||||
|
block_registrations: Zablokuj rejestracje
|
||||||
comparison:
|
comparison:
|
||||||
contains: Zawiera
|
contains: Zawiera
|
||||||
equals: Równa się
|
equals: Równa się
|
||||||
@ -1742,6 +1744,9 @@ pl:
|
|||||||
title: Nowe wspomnienie o Tobie
|
title: Nowe wspomnienie o Tobie
|
||||||
poll:
|
poll:
|
||||||
subject: Ankieta %{name} zakończyła się
|
subject: Ankieta %{name} zakończyła się
|
||||||
|
quote:
|
||||||
|
subject: "%{name} cytował twój post"
|
||||||
|
title: Nowy cytat
|
||||||
reblog:
|
reblog:
|
||||||
body: 'Twój wpis został podbity przez %{name}:'
|
body: 'Twój wpis został podbity przez %{name}:'
|
||||||
subject: Twój wpis został podbity przez %{name}
|
subject: Twój wpis został podbity przez %{name}
|
||||||
@ -2024,6 +2029,9 @@ pl:
|
|||||||
does_not_match_previous_name: nie pasuje do poprzedniej nazwy
|
does_not_match_previous_name: nie pasuje do poprzedniej nazwy
|
||||||
terms_of_service:
|
terms_of_service:
|
||||||
title: Regulamin
|
title: Regulamin
|
||||||
|
terms_of_service_interstitial:
|
||||||
|
review_link: Przeglądnij Warunki Korzystania
|
||||||
|
title: Warunki korzystania z %{domain} zmieniają się
|
||||||
themes:
|
themes:
|
||||||
contrast: Mastodon (Wysoki kontrast)
|
contrast: Mastodon (Wysoki kontrast)
|
||||||
default: Mastodon (Ciemny)
|
default: Mastodon (Ciemny)
|
||||||
|
|||||||
@ -196,6 +196,7 @@ ru:
|
|||||||
create_relay: Создание ретранслятора
|
create_relay: Создание ретранслятора
|
||||||
create_unavailable_domain: Добавление домена в список недоступных
|
create_unavailable_domain: Добавление домена в список недоступных
|
||||||
create_user_role: Создание ролей
|
create_user_role: Создание ролей
|
||||||
|
create_username_block: Создать правило имени пользователя
|
||||||
demote_user: Разжалование пользователей
|
demote_user: Разжалование пользователей
|
||||||
destroy_announcement: Удаление объявлений
|
destroy_announcement: Удаление объявлений
|
||||||
destroy_canonical_email_block: Удаление блокировок e-mail
|
destroy_canonical_email_block: Удаление блокировок e-mail
|
||||||
@ -209,6 +210,7 @@ ru:
|
|||||||
destroy_status: Удаление постов
|
destroy_status: Удаление постов
|
||||||
destroy_unavailable_domain: Исключение доменов из списка недоступных
|
destroy_unavailable_domain: Исключение доменов из списка недоступных
|
||||||
destroy_user_role: Удаление ролей
|
destroy_user_role: Удаление ролей
|
||||||
|
destroy_username_block: Удалить правило имени пользователя
|
||||||
disable_2fa_user: Отключение 2FA
|
disable_2fa_user: Отключение 2FA
|
||||||
disable_custom_emoji: Отключение эмодзи
|
disable_custom_emoji: Отключение эмодзи
|
||||||
disable_relay: Отключение ретранслятора
|
disable_relay: Отключение ретранслятора
|
||||||
@ -243,6 +245,7 @@ ru:
|
|||||||
update_report: Изменение жалоб
|
update_report: Изменение жалоб
|
||||||
update_status: Изменение постов
|
update_status: Изменение постов
|
||||||
update_user_role: Изменение ролей
|
update_user_role: Изменение ролей
|
||||||
|
update_username_block: Обновить правило имени пользователя
|
||||||
actions:
|
actions:
|
||||||
approve_appeal_html: "%{name} одобрил(а) обжалование действий модерации от %{target}"
|
approve_appeal_html: "%{name} одобрил(а) обжалование действий модерации от %{target}"
|
||||||
approve_user_html: "%{name} утвердил(а) регистрацию %{target}"
|
approve_user_html: "%{name} утвердил(а) регистрацию %{target}"
|
||||||
@ -261,6 +264,7 @@ ru:
|
|||||||
create_relay_html: "%{name} создал(а) ретранслятор %{target}"
|
create_relay_html: "%{name} создал(а) ретранслятор %{target}"
|
||||||
create_unavailable_domain_html: "%{name} приостановил доставку на узел %{target}"
|
create_unavailable_domain_html: "%{name} приостановил доставку на узел %{target}"
|
||||||
create_user_role_html: "%{name} создал(а) роль %{target}"
|
create_user_role_html: "%{name} создал(а) роль %{target}"
|
||||||
|
create_username_block_html: "%{name} создал(а) правило для имён пользователей, содержащих %{target}"
|
||||||
demote_user_html: "%{name} разжаловал(а) пользователя %{target}"
|
demote_user_html: "%{name} разжаловал(а) пользователя %{target}"
|
||||||
destroy_announcement_html: "%{name} удалил(а) объявление %{target}"
|
destroy_announcement_html: "%{name} удалил(а) объявление %{target}"
|
||||||
destroy_canonical_email_block_html: "%{name} снял(а) блокировку e-mail с хэшем %{target}"
|
destroy_canonical_email_block_html: "%{name} снял(а) блокировку e-mail с хэшем %{target}"
|
||||||
@ -274,6 +278,7 @@ ru:
|
|||||||
destroy_status_html: "%{name} удалил(а) пост пользователя %{target}"
|
destroy_status_html: "%{name} удалил(а) пост пользователя %{target}"
|
||||||
destroy_unavailable_domain_html: "%{name} возобновил доставку на узел %{target}"
|
destroy_unavailable_domain_html: "%{name} возобновил доставку на узел %{target}"
|
||||||
destroy_user_role_html: "%{name} удалил(а) роль %{target}"
|
destroy_user_role_html: "%{name} удалил(а) роль %{target}"
|
||||||
|
destroy_username_block_html: "%{name} удалил(а) правило для имён пользователей, содержащих %{target}"
|
||||||
disable_2fa_user_html: "%{name} отключил(а) требование двухэтапной авторизации для пользователя %{target}"
|
disable_2fa_user_html: "%{name} отключил(а) требование двухэтапной авторизации для пользователя %{target}"
|
||||||
disable_custom_emoji_html: "%{name} отключил(а) эмодзи %{target}"
|
disable_custom_emoji_html: "%{name} отключил(а) эмодзи %{target}"
|
||||||
disable_relay_html: "%{name} отключил(а) ретранслятор %{target}"
|
disable_relay_html: "%{name} отключил(а) ретранслятор %{target}"
|
||||||
@ -308,6 +313,7 @@ ru:
|
|||||||
update_report_html: "%{name} изменил(а) жалобу %{target}"
|
update_report_html: "%{name} изменил(а) жалобу %{target}"
|
||||||
update_status_html: "%{name} изменил(а) пост пользователя %{target}"
|
update_status_html: "%{name} изменил(а) пост пользователя %{target}"
|
||||||
update_user_role_html: "%{name} изменил(а) роль %{target}"
|
update_user_role_html: "%{name} изменил(а) роль %{target}"
|
||||||
|
update_username_block_html: "%{name} обновил(а) правило для имён пользователей, содержащих %{target}"
|
||||||
deleted_account: удалённая учётная запись
|
deleted_account: удалённая учётная запись
|
||||||
empty: Журнал пуст.
|
empty: Журнал пуст.
|
||||||
filter_by_action: Фильтр по действию
|
filter_by_action: Фильтр по действию
|
||||||
@ -499,15 +505,24 @@ ru:
|
|||||||
fasp:
|
fasp:
|
||||||
debug:
|
debug:
|
||||||
callbacks:
|
callbacks:
|
||||||
|
created_at: Создано в
|
||||||
delete: Удалить
|
delete: Удалить
|
||||||
ip: IP-адрес
|
ip: IP-адрес
|
||||||
|
request_body: Тело запроса
|
||||||
providers:
|
providers:
|
||||||
|
active: Активен
|
||||||
base_url: Основной URL
|
base_url: Основной URL
|
||||||
delete: Удалить
|
delete: Удалить
|
||||||
|
edit: Редактировать поставщика
|
||||||
|
finish_registration: Завершить регистрацию
|
||||||
|
name: Имя
|
||||||
|
providers: Поставщики
|
||||||
|
registration_requested: Требуется регистрация
|
||||||
registrations:
|
registrations:
|
||||||
confirm: Подтвердить
|
confirm: Подтвердить
|
||||||
reject: Отклонить
|
reject: Отклонить
|
||||||
save: Сохранить
|
save: Сохранить
|
||||||
|
select_capabilities: Выберите возможности
|
||||||
sign_in:
|
sign_in:
|
||||||
status: Пост
|
status: Пост
|
||||||
title: FASP
|
title: FASP
|
||||||
@ -585,6 +600,9 @@ ru:
|
|||||||
all: Все
|
all: Все
|
||||||
limited: Ограниченные
|
limited: Ограниченные
|
||||||
title: Модерация
|
title: Модерация
|
||||||
|
moderation_notes:
|
||||||
|
create: Добавить заметку модератора
|
||||||
|
title: Заметки модератора
|
||||||
private_comment: Приватный комментарий
|
private_comment: Приватный комментарий
|
||||||
public_comment: Публичный комментарий
|
public_comment: Публичный комментарий
|
||||||
purge: Удалить данные
|
purge: Удалить данные
|
||||||
@ -799,11 +817,16 @@ ru:
|
|||||||
title: Роли
|
title: Роли
|
||||||
rules:
|
rules:
|
||||||
add_new: Добавить правило
|
add_new: Добавить правило
|
||||||
|
add_translation: Добавить перевод
|
||||||
delete: Удалить
|
delete: Удалить
|
||||||
description_html: Хотя большинство утверждает, что прочитали и согласны с условиями обслуживания, обычно люди не читают их до тех пор, пока не возникнет проблема. <strong>Упростите просмотр правил вашего сервера с первого взгляда, предоставив их в виде простого маркированного списка.</strong> Старайтесь, чтобы отдельные правила были краткими и простыми, но старайтесь не разбивать их на множество отдельных элементов.
|
description_html: Хотя большинство утверждает, что прочитали и согласны с условиями обслуживания, обычно люди не читают их до тех пор, пока не возникнет проблема. <strong>Упростите просмотр правил вашего сервера с первого взгляда, предоставив их в виде простого маркированного списка.</strong> Старайтесь, чтобы отдельные правила были краткими и простыми, но старайтесь не разбивать их на множество отдельных элементов.
|
||||||
edit: Редактировать правило
|
edit: Редактировать правило
|
||||||
empty: Правила сервера еще не определены.
|
empty: Правила сервера еще не определены.
|
||||||
|
move_down: Переместить вниз
|
||||||
|
move_up: Переместить вверх
|
||||||
title: Правила сервера
|
title: Правила сервера
|
||||||
|
translation: Перевод
|
||||||
|
translations: Переводы
|
||||||
settings:
|
settings:
|
||||||
about:
|
about:
|
||||||
manage_rules: Управление правилами на сервере
|
manage_rules: Управление правилами на сервере
|
||||||
@ -829,6 +852,7 @@ ru:
|
|||||||
discovery:
|
discovery:
|
||||||
follow_recommendations: Рекомендации подписок
|
follow_recommendations: Рекомендации подписок
|
||||||
preamble: Наблюдение интересного контента играет важную роль при открытии новых пользователей, которые могут не знать ни одного Mastodon. Контролируйте как работают различные функции обнаружения на вашем сервере.
|
preamble: Наблюдение интересного контента играет важную роль при открытии новых пользователей, которые могут не знать ни одного Mastodon. Контролируйте как работают различные функции обнаружения на вашем сервере.
|
||||||
|
privacy: Конфиденциальность
|
||||||
profile_directory: Каталог профилей
|
profile_directory: Каталог профилей
|
||||||
public_timelines: Публичные ленты
|
public_timelines: Публичные ленты
|
||||||
publish_statistics: Опубликовать стаитстику
|
publish_statistics: Опубликовать стаитстику
|
||||||
@ -1087,6 +1111,23 @@ ru:
|
|||||||
other: За последнюю неделю использовал %{count} человек
|
other: За последнюю неделю использовал %{count} человек
|
||||||
title: Рекомендации и тренды
|
title: Рекомендации и тренды
|
||||||
trending: Популярное
|
trending: Популярное
|
||||||
|
username_blocks:
|
||||||
|
add_new: Добавить новое
|
||||||
|
block_registrations: Блокировать регистрации
|
||||||
|
comparison:
|
||||||
|
contains: Содержит
|
||||||
|
equals: Равен
|
||||||
|
contains_html: Содержит %{string}
|
||||||
|
created_msg: Успешно создано правило имени пользователя
|
||||||
|
delete: Удалить
|
||||||
|
edit:
|
||||||
|
title: Редактировать правило имени пользователя
|
||||||
|
matches_exactly_html: Равен %{string}
|
||||||
|
new:
|
||||||
|
create: Создать правило
|
||||||
|
title: Создать новое правило имени пользователя
|
||||||
|
not_permitted: Не разрешено
|
||||||
|
title: Правила имени пользователя
|
||||||
warning_presets:
|
warning_presets:
|
||||||
add_new: Добавить
|
add_new: Добавить
|
||||||
delete: Удалить
|
delete: Удалить
|
||||||
@ -1705,6 +1746,10 @@ ru:
|
|||||||
title: Новое упоминание
|
title: Новое упоминание
|
||||||
poll:
|
poll:
|
||||||
subject: Опрос %{name} завершился
|
subject: Опрос %{name} завершился
|
||||||
|
quote:
|
||||||
|
body: 'Ваш пост был процитирован %{name}:'
|
||||||
|
subject: "%{name} процитировал(а) ваш пост"
|
||||||
|
title: Новая цитата
|
||||||
reblog:
|
reblog:
|
||||||
body: "%{name} продвинул(а) ваш пост:"
|
body: "%{name} продвинул(а) ваш пост:"
|
||||||
subject: "%{name} продвинул(а) ваш пост"
|
subject: "%{name} продвинул(а) ваш пост"
|
||||||
@ -1987,6 +2032,10 @@ ru:
|
|||||||
does_not_match_previous_name: не совпадает с предыдущим именем
|
does_not_match_previous_name: не совпадает с предыдущим именем
|
||||||
terms_of_service:
|
terms_of_service:
|
||||||
title: Пользовательское соглашение
|
title: Пользовательское соглашение
|
||||||
|
terms_of_service_interstitial:
|
||||||
|
past_preamble_html: Мы изменили наше пользовательское соглашение с момента вашего последнего посещения. Мы рекомендуем вам ознакомиться с обновленным соглашением.
|
||||||
|
review_link: Посмотреть пользовательское соглашение
|
||||||
|
title: Изменяется пользовательское соглашение %{domain}
|
||||||
themes:
|
themes:
|
||||||
contrast: Mastodon (высококонтрастная)
|
contrast: Mastodon (высококонтрастная)
|
||||||
default: Mastodon (тёмная)
|
default: Mastodon (тёмная)
|
||||||
|
|||||||
@ -7,26 +7,78 @@ az:
|
|||||||
defaults:
|
defaults:
|
||||||
current_password: Təhlükəsizlik səbəblərinə görə lütfən hazırkı hesabın parolunu daxil edin
|
current_password: Təhlükəsizlik səbəblərinə görə lütfən hazırkı hesabın parolunu daxil edin
|
||||||
phrase: Mətndəki böyük-kiçik hərfdən və ya göndərişin məzmun xəbərdarlığından asılı olmayaraq uyuşdurulacaq
|
phrase: Mətndəki böyük-kiçik hərfdən və ya göndərişin məzmun xəbərdarlığından asılı olmayaraq uyuşdurulacaq
|
||||||
|
setting_aggregate_reblogs: Təzəlikcə təkrar paylaşılmış göndərişlər üçün yeni təkrar paylaşımlar göstərilməsin (yalnız yeni alınan təkrar paylaşımlara təsir edir).
|
||||||
|
setting_always_send_emails: Normalda, Mastodon-u aktiv olaraq istifadə etdiyiniz zaman e-poçt bildirişləri göndərilməyəcək
|
||||||
|
setting_default_quote_policy: Bu ayar, yalnız növbəti Mastodon versiyası ilə yaradılmış göndərişlər üçün qüvvəyə minəcək, ancaq hazırlıq mərhələsində tərcihinizi edə bilərsiniz.
|
||||||
|
setting_default_sensitive: Həssas media, ilkin olaraq gizlədilir və bir kliklə göstərilə bilər
|
||||||
|
setting_display_media_default: Həssas olaraq işarələnmiş medianı gizlət
|
||||||
|
setting_display_media_hide_all: Medianı həmişə gizlət
|
||||||
|
setting_display_media_show_all: Medianı həmişə göstər
|
||||||
|
setting_system_scrollbars_ui: Yalnız Safari və Chrome əaslı masaüstü brauzerlərinə tətbiq olunur
|
||||||
|
setting_use_blurhash: Meyillər, gizli vizualların rənglərinə əsaslanır, ancaq detalları gizlədir
|
||||||
|
setting_use_pending_items: Lenti avtomatik diyirləmək əvəzinə, zaman xətti güncəlləmələrini tək bir kliklə gizlət
|
||||||
|
featured_tag:
|
||||||
|
name: 'Budur, təzəlikcə istifadə etdiyiniz mövzu etiketlərindən bəziləri:'
|
||||||
|
form_admin_settings:
|
||||||
|
content_cache_retention_period: Digər serverlərdən olan bütün göndərişlər (təkrar paylaşımlar və cavablar daxil olmaqla) göstərilən gün sayından sonra, lokal istifadəçilərin həmin göndərişlərlə qarşılıqlı əlaqəsinə baxılmadan silinəcək. Buna, lokal istifadəçinin həmin göndərişi əlfəcinlərə və ya sevimlilərə əlavə etdiyi hallar da daxildir. Fərqli instansiyalardakı istifadəçilər arasında olan şəxsi adçəkmələr də itəcək və bərpası mümkün olmayacaq. Bu ayarın istifadəsi xüsusi məqsədli instansiyalar üçün nəzərdə tutulub və ümumi məqsədli istifadəyə tətbiq edildikdə bir çox istifadəçi gözləntilərini qarşılamaya bilər.
|
||||||
|
imports:
|
||||||
|
data: Digər Mastodon serverindən xaricə köçürdüyünüz CSV faylı
|
||||||
ip_block:
|
ip_block:
|
||||||
severities:
|
severities:
|
||||||
no_access: Bütün resurslara erişimi əngəllə
|
no_access: Bütün resurslara erişimi əngəllə
|
||||||
sessions:
|
sessions:
|
||||||
otp: 'Telefon tətbiqiniz tərəfindən yaradılmış iki faktorlu kodu daxil edin və ya geri qaytarma kodlarınızdan birini istifadə edin:'
|
otp: 'Telefon tətbiqiniz tərəfindən yaradılmış iki faktorlu kodu daxil edin və ya geri qaytarma kodlarınızdan birini istifadə edin:'
|
||||||
|
user:
|
||||||
|
chosen_languages: İşarələnsə, yalnız seçilmiş dillərdəki göndərişlər ümumi zaman xətlərində nümayiş etdiriləcək
|
||||||
user_role:
|
user_role:
|
||||||
permissions_as_keys: Bu rola sahib istifadəçilər bunlara erişə biləcək...
|
permissions_as_keys: Bu rola sahib istifadəçilər bunlara erişə biləcək...
|
||||||
labels:
|
labels:
|
||||||
|
account:
|
||||||
|
show_collections: Profildə izlənilənləri və izləyiciləri göstər
|
||||||
defaults:
|
defaults:
|
||||||
|
autofollow: Hesabınızı izləməyə dəvət edin
|
||||||
confirm_new_password: Yeni parolu təsdiqlə
|
confirm_new_password: Yeni parolu təsdiqlə
|
||||||
confirm_password: Parolu təsdiqlə
|
confirm_password: Parolu təsdiqlə
|
||||||
current_password: Hazırkı parol
|
current_password: Hazırkı parol
|
||||||
data: Veri
|
data: Veri
|
||||||
|
display_name: Ekran adı
|
||||||
|
header: Örtük şəkli
|
||||||
|
locale: İnterfeys dili
|
||||||
|
max_uses: Maksimum istifadə sayı
|
||||||
new_password: Yeni parol
|
new_password: Yeni parol
|
||||||
password: Parol
|
password: Parol
|
||||||
setting_system_scrollbars_ui: Sistemin ilkin diyircəyini istifadə edin
|
setting_advanced_layout: Qabaqcıl veb interfeysini fəallaşdır
|
||||||
|
setting_aggregate_reblogs: Zaman xəttindəki TP-ları qruplaşdır
|
||||||
|
setting_always_send_emails: E-poçt göndərişlərini həmişə göndər
|
||||||
|
setting_auto_play_gif: Animasiyalı GIF-ləri avto-oxut
|
||||||
|
setting_boost_modal: Bir təkrar paylaşımı silməzdən əvvəl təsdiq dialoq pəncərəsini göstər
|
||||||
|
setting_default_privacy: Göndəriş məxfiliyi
|
||||||
|
setting_default_sensitive: Medianı həmişə həssas olaraq işarələ
|
||||||
|
setting_delete_modal: Bir göndərişi silməzdən əvvəl təsdiq dialoq pəncərəsini göstər
|
||||||
|
setting_disable_hover_cards: Üzərinə gəldikdə profil önizləməsini sıradan çıxart
|
||||||
|
setting_disable_swiping: Sürüşdürmə hərəkətlərini sıradan çıxart
|
||||||
|
setting_display_media: Medianın nümayişi
|
||||||
|
setting_expand_spoilers: Məzmun xəbərdarlığı ilə işarələnmiş göndərişləri həmişə genişləndir
|
||||||
|
setting_missing_alt_text_modal: Alternativ mətni olmayan medianı göndərməzdən əvvəl təsdiq dialoq pəncərəsini göstər
|
||||||
|
setting_reduce_motion: Animasiyalarda hərəkəti azalt
|
||||||
|
setting_system_font_ui: Sistemin ilkin şriftini istifadə et
|
||||||
|
setting_system_scrollbars_ui: Sistemin ilkin sürüşdürmə çubuğunu istifadə et
|
||||||
|
setting_trends: Bugünün trendlərini göstər
|
||||||
|
setting_use_blurhash: Gizli media üçün rəngli meyilləri göstər
|
||||||
|
setting_use_pending_items: Yavaş rejim
|
||||||
|
form_admin_settings:
|
||||||
|
show_domain_blocks: Əngəllənən domenləri göstər
|
||||||
|
timeline_preview: Ümumi zaman xətlərinə səlahiyyətsiz erişimə icazə ver
|
||||||
ip_block:
|
ip_block:
|
||||||
severities:
|
severities:
|
||||||
no_access: Erişimi əngəllə
|
no_access: Erişimi əngəllə
|
||||||
notification_emails:
|
notification_emails:
|
||||||
appeal: Kimsə, bir moderasiya qərarına etiraz edir
|
appeal: Kimsə, bir moderasiya qərarına etiraz edir
|
||||||
|
favourite: Kimsə göndərişinizi sevimlilərinə əlavə etdi
|
||||||
|
follow: Kimsə sizi izləyir
|
||||||
|
follow_request: Kimsə sizi izləmək üçün sorğu göndərdi
|
||||||
|
mention: Kimsə adınızı çəkdi
|
||||||
|
quote: Kimsə sizdən sitat gətirdi
|
||||||
|
reblog: Kimsə göndərişinizi təkrar paylaşdı
|
||||||
username_block:
|
username_block:
|
||||||
username: Uyuşacaq söz
|
username: Uyuşacaq söz
|
||||||
|
|||||||
@ -3,12 +3,14 @@ be:
|
|||||||
simple_form:
|
simple_form:
|
||||||
hints:
|
hints:
|
||||||
account:
|
account:
|
||||||
|
attribution_domains: Адзін на радок. Абараняе ад ілжывых значанняў аўтарства.
|
||||||
discoverable: Вашы публічныя паведамленні і профіль могуць быць паказаны або рэкамендаваны ў розных раздзелах Mastodon, і ваш профіль можа быць прапанаваны іншым карыстальнікам.
|
discoverable: Вашы публічныя паведамленні і профіль могуць быць паказаны або рэкамендаваны ў розных раздзелах Mastodon, і ваш профіль можа быць прапанаваны іншым карыстальнікам.
|
||||||
display_name: Ваша поўнае імя або ваш псеўданім.
|
display_name: Ваша поўнае імя або ваш псеўданім.
|
||||||
fields: Ваша хатняя старонка, займеннікі, узрост, усё, што заўгодна.
|
fields: Ваша хатняя старонка, займеннікі, узрост, усё, што заўгодна.
|
||||||
indexable: Вашыя публічныя допісы могуць з'яўляцца ў рэзультатах пошуку Mastodon. Людзі, якія ўзаемадзейнічалі з вашымі допісамі, усё роўна маюць магчымасць іх знаходзіць.
|
indexable: Вашыя публічныя допісы могуць з'яўляцца ў рэзультатах пошуку Mastodon. Людзі, якія ўзаемадзейнічалі з вашымі допісамі, усё роўна маюць магчымасць іх знаходзіць.
|
||||||
note: 'Вы можаце @згадваць іншых людзей або выкарыстоўваць #хэштэгі.'
|
note: 'Вы можаце @згадваць іншых людзей або выкарыстоўваць #хэштэгі.'
|
||||||
show_collections: Людзі змогуць праглядаць спіс вашых падпісак і падпісчыкаў. Людзі, на якіх вы падпісаны ў любым выпадку будуць бачыць, што вы іх чытаеце.
|
show_collections: Людзі змогуць праглядаць спіс вашых падпісак і падпісчыкаў. Людзі, на якіх вы падпісаны ў любым выпадку будуць бачыць, што вы іх чытаеце.
|
||||||
|
unlocked: Людзі змогуць падпісвацца на Вас без запыту на ўхваленне. Зніміце птушку, калі хочаце разглядаць запыты на падпіску і выбіраць, ці хочаце Вы прымаць або адмаўляць новым падпісчыкам.
|
||||||
account_alias:
|
account_alias:
|
||||||
acct: Прызначце карыстальнік@дамен уліковага запісу з якога вы хочаце пераехаць
|
acct: Прызначце карыстальнік@дамен уліковага запісу з якога вы хочаце пераехаць
|
||||||
account_migration:
|
account_migration:
|
||||||
@ -43,7 +45,7 @@ be:
|
|||||||
context: Адзін ці некалькі кантэкстаў, да якіх трэба прымяніць фільтр
|
context: Адзін ці некалькі кантэкстаў, да якіх трэба прымяніць фільтр
|
||||||
current_password: У мэтах бяспекі, увядзіце пароль бягучага ўліковага запісу
|
current_password: У мэтах бяспекі, увядзіце пароль бягучага ўліковага запісу
|
||||||
current_username: Каб пацвердзіць, увядзіце, калі ласка імя карыстальніка бягучага ўліковага запісу
|
current_username: Каб пацвердзіць, увядзіце, калі ласка імя карыстальніка бягучага ўліковага запісу
|
||||||
digest: Будзе даслана толькі пасля доўгага перыяду неактыўнасці і толькі калі вы атрымалі асабістыя паведамленні падчас вашай адсутнасці
|
digest: Будзе даслана толькі пасля доўгага перыяду неактыўнасці і толькі, калі Вы атрымалі асабістыя паведамленні падчас Вашай адсутнасці
|
||||||
email: Пацвярджэнне будзе выслана па электроннай пошце
|
email: Пацвярджэнне будзе выслана па электроннай пошце
|
||||||
header: WEBP, PNG, GIF ці JPG. Не больш за %{size}. Будзе сціснуты да памеру %{dimensions}} пікселяў
|
header: WEBP, PNG, GIF ці JPG. Не больш за %{size}. Будзе сціснуты да памеру %{dimensions}} пікселяў
|
||||||
inbox_url: Капіраваць URL са старонкі рэтранслятара, якім вы хочаце карыстацца
|
inbox_url: Капіраваць URL са старонкі рэтранслятара, якім вы хочаце карыстацца
|
||||||
@ -54,11 +56,13 @@ be:
|
|||||||
scopes: Абярыце, якімі API праграма зможа карыстацца. Выбар дазволу найвышэйшага ўзроўню ўключае ў сябе дазволу астатніх узроўняў.
|
scopes: Абярыце, якімі API праграма зможа карыстацца. Выбар дазволу найвышэйшага ўзроўню ўключае ў сябе дазволу астатніх узроўняў.
|
||||||
setting_aggregate_reblogs: Не паказваць новыя пашырэнні для допісаў, якія пашырылі нядаўна (закранае толькі нядаўнія пашырэнні)
|
setting_aggregate_reblogs: Не паказваць новыя пашырэнні для допісаў, якія пашырылі нядаўна (закранае толькі нядаўнія пашырэнні)
|
||||||
setting_always_send_emails: Звычайна лісты з апавяшчэннямі не будуць дасылацца, калі вы актыўна карыстаецеся Mastodon
|
setting_always_send_emails: Звычайна лісты з апавяшчэннямі не будуць дасылацца, калі вы актыўна карыстаецеся Mastodon
|
||||||
|
setting_default_quote_policy: Гэтая налада будзе працаваць толькі з допісамі, створанымі ў наступнай версіі Mastodon, але Вы можаце падрыхтавацца і задаць яе.
|
||||||
setting_default_sensitive: Далікатныя медыя прадвызначана схаваныя. Іх можна адкрыць адзіным клікам
|
setting_default_sensitive: Далікатныя медыя прадвызначана схаваныя. Іх можна адкрыць адзіным клікам
|
||||||
setting_display_media_default: Хаваць медыя пазначаныя як далікатныя
|
setting_display_media_default: Хаваць медыя пазначаныя як далікатныя
|
||||||
setting_display_media_hide_all: Заўсёды хаваць медыя
|
setting_display_media_hide_all: Заўсёды хаваць медыя
|
||||||
setting_display_media_show_all: Заўсёды паказваць медыя
|
setting_display_media_show_all: Заўсёды паказваць медыя
|
||||||
setting_emoji_style: Як паказваць эмодзі. "Аўтаматычны" будзе намагацца выкарыстоўваць мясцовыя эмодзі, але для састарэлых браўзераў — Twemoji.
|
setting_emoji_style: Як паказваць эмодзі. "Аўтаматычны" будзе намагацца выкарыстоўваць мясцовыя эмодзі, але для састарэлых браўзераў — Twemoji.
|
||||||
|
setting_system_scrollbars_ui: Працуе толькі ў камп'ютарных браўзерах на аснове Safari і Chrome
|
||||||
setting_use_blurhash: Градыенты заснаваны на колерах схаваных выяў, але размываюць дэталі
|
setting_use_blurhash: Градыенты заснаваны на колерах схаваных выяў, але размываюць дэталі
|
||||||
setting_use_pending_items: Схаваць абнаўленні стужкі за клікам замест аўтаматычнага пракручвання стужкі
|
setting_use_pending_items: Схаваць абнаўленні стужкі за клікам замест аўтаматычнага пракручвання стужкі
|
||||||
username: Вы можаце выкарыстоўваць літары, лічбы і падкрэсліванне
|
username: Вы можаце выкарыстоўваць літары, лічбы і падкрэсліванне
|
||||||
@ -71,8 +75,9 @@ be:
|
|||||||
featured_tag:
|
featured_tag:
|
||||||
name: 'Вось некаторыя з хэштэгаў, якімі вы нядаўна карысталіся:'
|
name: 'Вось некаторыя з хэштэгаў, якімі вы нядаўна карысталіся:'
|
||||||
filters:
|
filters:
|
||||||
action: Абярыце, што зрабіць, калі пост падпадае пад умовы фільтру
|
action: Абярыце, што зрабіць, калі допіс падпадае пад умовы фільтру
|
||||||
actions:
|
actions:
|
||||||
|
blur: Схавайце медыя за знакам папярэджання, не хаваючы пры гэтым тэкст
|
||||||
hide: Поўнасцю схаваць адфільтраванае змесціва, дзейнічаць, нібы яго не існуе
|
hide: Поўнасцю схаваць адфільтраванае змесціва, дзейнічаць, нібы яго не існуе
|
||||||
warn: Схаваць адфільтраваны кантэнт за папярэджаннем з назвай фільтру
|
warn: Схаваць адфільтраваны кантэнт за папярэджаннем з назвай фільтру
|
||||||
form_admin_settings:
|
form_admin_settings:
|
||||||
@ -86,7 +91,8 @@ be:
|
|||||||
favicon: WEBP, PNG, GIF ці JPG. Замяняе прадвызначаны favicon Mastodon на ўласны значок.
|
favicon: WEBP, PNG, GIF ці JPG. Замяняе прадвызначаны favicon Mastodon на ўласны значок.
|
||||||
mascot: Замяняе ілюстрацыю ў пашыраным вэб-інтэрфейсе.
|
mascot: Замяняе ілюстрацыю ў пашыраным вэб-інтэрфейсе.
|
||||||
media_cache_retention_period: Медыяфайлы з допісаў, зробленых выдаленымі карыстальнікамі, кэшыруюцца на вашым серверы. Пры станоўчым значэнні медыяфайлы будуць выдалены праз пазначаную колькасць дзён. Калі медыяданыя будуць запытаны пасля выдалення, яны будуць спампаваны зноў, калі зыходнае змесціва усё яшчэ даступнае. У сувязі з абмежаваннямі на частату абнаўлення картак перадпрагляду іншых сайтаў, рэкамендуецца ўсталяваць значэнне не менш за 14 дзён, інакш гэтыя карткі не будуць абнаўляцца па запыце раней за гэты тэрмін.
|
media_cache_retention_period: Медыяфайлы з допісаў, зробленых выдаленымі карыстальнікамі, кэшыруюцца на вашым серверы. Пры станоўчым значэнні медыяфайлы будуць выдалены праз пазначаную колькасць дзён. Калі медыяданыя будуць запытаны пасля выдалення, яны будуць спампаваны зноў, калі зыходнае змесціва усё яшчэ даступнае. У сувязі з абмежаваннямі на частату абнаўлення картак перадпрагляду іншых сайтаў, рэкамендуецца ўсталяваць значэнне не менш за 14 дзён, інакш гэтыя карткі не будуць абнаўляцца па запыце раней за гэты тэрмін.
|
||||||
peers_api_enabled: Спіс даменных імён, з якімі сутыкнуўся гэты сервер у fediverse. Даныя пра тое, ці знаходзіцеся вы з дадзеным серверам у федэрацыі, не ўключаны. Уключаны толькі даныя пра тое, што ваш сервер ведае пра іншыя серверы. Гэта выкарыстоўваецца сэрвісамі, якія збіраюць статыстыку па федэрацыі ў агульным сэнсе.
|
min_age: Карыстальнікі будуць атрымліваць запыт на пацвярджэнне даты нараджэння падчас рэгістрацыі
|
||||||
|
peers_api_enabled: Спіс даменных імён, з якімі сутыкнуўся гэты сервер у федэральным сусвеце. Даныя пра тое, ці знаходзіцеся вы з дадзеным серверам у федэрацыі, не ўключаны. Уключаны толькі даныя пра тое, што ваш сервер ведае пра іншыя серверы. Гэта выкарыстоўваецца сэрвісамі, якія збіраюць статыстыку па федэрацыі ў агульным сэнсе.
|
||||||
profile_directory: Дырэкторыя профіляў змяшчае спіс усіх карыстальнікаў, якія вырашылі быць бачнымі.
|
profile_directory: Дырэкторыя профіляў змяшчае спіс усіх карыстальнікаў, якія вырашылі быць бачнымі.
|
||||||
require_invite_text: Калі рэгістрацыя патрабуе ручнога пацвержання, зрабіце поле "Чаму вы хочаце далучыцца?" абавязковым
|
require_invite_text: Калі рэгістрацыя патрабуе ручнога пацвержання, зрабіце поле "Чаму вы хочаце далучыцца?" абавязковым
|
||||||
site_contact_email: Як людзі могуць звязацца з вамі па юрыдычных запытах або пытаннях падтрымкі.
|
site_contact_email: Як людзі могуць звязацца з вамі па юрыдычных запытах або пытаннях падтрымкі.
|
||||||
@ -129,21 +135,44 @@ be:
|
|||||||
tag:
|
tag:
|
||||||
name: Вы можаце змяняць толькі рэгістр літар, напрыклад для таго, каб падвысіць чытабельнасць
|
name: Вы можаце змяняць толькі рэгістр літар, напрыклад для таго, каб падвысіць чытабельнасць
|
||||||
terms_of_service:
|
terms_of_service:
|
||||||
|
changelog: Можна карыстацца сінтаксісам Markdown, каб структураваць тэкст.
|
||||||
|
effective_date: Дапушчальны перыяд часу можа вар'іравацца ад 10 да 30 дзён з моманту, як Вы апавясціце сваіх карыстальнікаў.
|
||||||
text: Тэкст можна структураваць з дапамогай сінтаксісу Markdown.
|
text: Тэкст можна структураваць з дапамогай сінтаксісу Markdown.
|
||||||
|
terms_of_service_generator:
|
||||||
|
admin_email: Юрыдычныя абвесткі ўключаюць сустрэчныя абвесткі, судзейскія пастановы, запыты на выдаленне і запыты праваахоўных органаў.
|
||||||
|
arbitration_address: Можа быць такім жа, што і фізічны адрас вышэй, або “N/A”, калі карыстаецеся электроннай поштай.
|
||||||
|
arbitration_website: Можа быць у выглядзе электроннай формы або “N/A”, калі карыстаецеся электроннай поштай.
|
||||||
|
choice_of_law: шашашаГорад, вобласць, тэрыторыя штата (Зша), унутраныя законы якой рэгулююць усе прэтэнзіі.
|
||||||
|
dmca_address: 'Для ўладальнікаў з ЗША: выкарыстоўвайце адрас, які зарэгістраваны ў даведніку ўпаўнаважаных агентаў DMCA. Спіс паштовых адрасоў даступны па прамым запыце, выкарыстоўвайце запыт на адмову ад правоў на пошту ўпаўнаважаных агентаў DMCA, каб адправіць электронны ліст у Офіс па Аўтарскіх Правах і апішыце, што Вы мадэратар, які працуе з уласнага дому, які баіцца помсты ці пакарання за свае дзеянні і якому патрэбны выкарыстаць паштовы адрас, каб прыбраць дамашні адрас з публічнага доступу.'
|
||||||
|
dmca_email: Можа быць такім жа, што і "Электронны адрас для юрыдычных абвестак" вышэй.
|
||||||
|
domain: Унікальны ідэнтыфікатар анлайн сэрвісу, які Вы прадстаўляеце.
|
||||||
|
jurisdiction: Дадайце краіну, дзе жыве той, хто плаціць за рахункі. Калі гэта кампанія ці іншая інстанцыя, дадайце краіну, дзе яна знаходзіцца, а таксама (па меры неабходнасці) горад, вобласць, тэрыторыю штата (ЗША).
|
||||||
|
min_age: Не павінен быць ніжэй за мінімальны ўзрост, які патрабуюць законы Вашай юрысдыкцыі.
|
||||||
user:
|
user:
|
||||||
chosen_languages: У публічных стужках будуць паказвацца допісы толькі на тых мовах, якія вы пазначыце
|
chosen_languages: У публічных стужках будуць паказвацца допісы толькі на тых мовах, якія вы пазначыце
|
||||||
|
date_of_birth:
|
||||||
|
few: Нам трэба ўпэўніцца, што Вы як мінімум %{count} чалавекі з тых, хто карыстаецца %{domain}. Мы не будзем захоўваць гэту інфармацыю.
|
||||||
|
many: Нам трэба ўпэўніцца, што Вы як мінімум %{count} людзей з тых, хто карыстаецца %{domain}. Мы не будзем захоўваць гэту інфармацыю.
|
||||||
|
one: Нам трэба ўпэўніцца, што Вы як мінімум %{count} чалавек з тых, хто карыстаецца %{domain}. Мы не будзем захоўваць гэту інфармацыю.
|
||||||
|
other: Нам трэба ўпэўніцца, што Вы як мінімум %{count} чалавекі з тых, хто карыстаецца %{domain}. Мы не будзем захоўваць гэту інфармацыю.
|
||||||
|
role: Роля кантралюе тое, якія дазволы мае карыстальнік.
|
||||||
user_role:
|
user_role:
|
||||||
color: Колер, які будзе выкарыстоўвацца для гэтай ролі па ўсім UI, у фармаце RGB ці hex
|
color: Колер, які будзе выкарыстоўвацца для гэтай ролі па ўсім UI, у фармаце RGB ці hex
|
||||||
highlighted: Гэта робіць ролю публічна бачнай
|
highlighted: Гэта робіць ролю публічна бачнай
|
||||||
name: Публічная назва ролі, калі роля дэманструецца як значок у профілю
|
name: Публічная назва ролі, калі роля дэманструецца як значок у профілю
|
||||||
permissions_as_keys: Карыстальнікі з гэтай роляй будуць мець доступ да...
|
permissions_as_keys: Карыстальнікі з гэтай роляй будуць мець доступ да...
|
||||||
position: Ролі вышэйшага рангу займаюцца вырашэннем канфліктаў у пэўных сітуацыях. Некаторыя дзеянні можна выкананаць толькі над ролямі з ніжэйшым рангам
|
position: Ролі вышэйшага рангу займаюцца вырашэннем канфліктаў у пэўных сітуацыях. Некаторыя дзеянні можна выкананаць толькі над ролямі з ніжэйшым рангам
|
||||||
|
username_block:
|
||||||
|
allow_with_approval: Рэгістрацыя не будзе цалкам забараняцца. Замест гэтага на адпаведныя рэгістрацыі спатрэбіцца Ваша ўхваленне
|
||||||
|
comparison: Калі ласка, бярыце пад увагу Сканторпскую Праблему, калі блакіруеце частковыя супадзенні
|
||||||
|
username: Супадзе пры любым рэгістры літар і часта ўжывальных амогліфах, накшталт "4" у якасці "а" ці "3" у якасці "е"
|
||||||
webhook:
|
webhook:
|
||||||
events: Выберыце падзеі для адпраўкі
|
events: Выберыце падзеі для адпраўкі
|
||||||
template: Стварыце сваю ўласную карысную нагрузку JSON з дапамогай інтэрпаляцыі зменных. Пакіньце пустым для стандартнага змесціва JSON.
|
template: Стварыце сваю ўласную карысную нагрузку JSON з дапамогай інтэрпаляцыі зменных. Пакіньце пустым для стандартнага змесціва JSON.
|
||||||
url: Куды падзеі будуць адпраўляцца
|
url: Куды падзеі будуць адпраўляцца
|
||||||
labels:
|
labels:
|
||||||
account:
|
account:
|
||||||
|
attribution_domains: Сайтам дазволена пазначаць ваша аўтарства
|
||||||
discoverable: Уключыць профіль і допісы ў алгарытмы рэкамендацый
|
discoverable: Уключыць профіль і допісы ў алгарытмы рэкамендацый
|
||||||
fields:
|
fields:
|
||||||
name: Пазнака
|
name: Пазнака
|
||||||
@ -222,8 +251,10 @@ be:
|
|||||||
setting_emoji_style: Стыль эмодзі
|
setting_emoji_style: Стыль эмодзі
|
||||||
setting_expand_spoilers: Заўжды разгортваць допісы з папярэджаннем аб змесціве
|
setting_expand_spoilers: Заўжды разгортваць допісы з папярэджаннем аб змесціве
|
||||||
setting_hide_network: Схаваць вашы сувязі
|
setting_hide_network: Схаваць вашы сувязі
|
||||||
|
setting_missing_alt_text_modal: Паказваць акно пацвярджэння перад публікацыяй медыя без альтэрнатыўнага тэксту
|
||||||
setting_reduce_motion: Памяншэнне руху ў анімацыях
|
setting_reduce_motion: Памяншэнне руху ў анімацыях
|
||||||
setting_system_font_ui: Выкарыстоўваць прадвызначаны сістэмны шрыфт
|
setting_system_font_ui: Выкарыстоўваць прадвызначаны сістэмны шрыфт
|
||||||
|
setting_system_scrollbars_ui: Паказваць паласу пракручвання па змаўчанні
|
||||||
setting_theme: Тэма сайта
|
setting_theme: Тэма сайта
|
||||||
setting_trends: Паказваць трэнды дня
|
setting_trends: Паказваць трэнды дня
|
||||||
setting_unfollow_modal: Паказваць акно пацвярджэння перад адпісваннем
|
setting_unfollow_modal: Паказваць акно пацвярджэння перад адпісваннем
|
||||||
@ -242,6 +273,7 @@ be:
|
|||||||
name: Хэштэг
|
name: Хэштэг
|
||||||
filters:
|
filters:
|
||||||
actions:
|
actions:
|
||||||
|
blur: Хаваць медыя з папярэджаннем
|
||||||
hide: Схаваць цалкам
|
hide: Схаваць цалкам
|
||||||
warn: Схаваць з папярэджаннем
|
warn: Схаваць з папярэджаннем
|
||||||
form_admin_settings:
|
form_admin_settings:
|
||||||
@ -255,6 +287,7 @@ be:
|
|||||||
favicon: Значок сайта
|
favicon: Значок сайта
|
||||||
mascot: Уласны маскот(спадчына)
|
mascot: Уласны маскот(спадчына)
|
||||||
media_cache_retention_period: Працягласць захавання кэшу для медыя
|
media_cache_retention_period: Працягласць захавання кэшу для медыя
|
||||||
|
min_age: Патрабаванне мінімальнага ўзросту
|
||||||
peers_api_enabled: Апублікаваць спіс знойдзеных сервераў у API
|
peers_api_enabled: Апублікаваць спіс знойдзеных сервераў у API
|
||||||
profile_directory: Уключыць каталог профіляў
|
profile_directory: Уключыць каталог профіляў
|
||||||
registrations_mode: Хто можа зарэгістравацца
|
registrations_mode: Хто можа зарэгістравацца
|
||||||
@ -277,7 +310,7 @@ be:
|
|||||||
interactions:
|
interactions:
|
||||||
must_be_follower: Заблакіраваць апавяшчэнні ад непадпісаных людзей
|
must_be_follower: Заблакіраваць апавяшчэнні ад непадпісаных людзей
|
||||||
must_be_following: Заблакіраваць апавяшчэнні ад людзей на якіх вы не падпісаны
|
must_be_following: Заблакіраваць апавяшчэнні ад людзей на якіх вы не падпісаны
|
||||||
must_be_following_dm: Заблакіраваць асабістыя паведамленні ад людзей на якіх вы не падпісаны
|
must_be_following_dm: Заблакіраваць асабістыя паведамленні ад людзей, на якіх Вы не падпісаныя
|
||||||
invite:
|
invite:
|
||||||
comment: Каментар
|
comment: Каментар
|
||||||
invite_request:
|
invite_request:
|
||||||
@ -298,6 +331,7 @@ be:
|
|||||||
follow_request: Нехта даслаў вам запыт на падпіску
|
follow_request: Нехта даслаў вам запыт на падпіску
|
||||||
mention: Нехта згадаў вас
|
mention: Нехта згадаў вас
|
||||||
pending_account: Новы акаўнт патрабуе разгляду
|
pending_account: Новы акаўнт патрабуе разгляду
|
||||||
|
quote: Хтосьці цытаваў Вас
|
||||||
reblog: Нехта пашырыў ваш допіс
|
reblog: Нехта пашырыў ваш допіс
|
||||||
report: Новая скарга даслана
|
report: Новая скарга даслана
|
||||||
software_updates:
|
software_updates:
|
||||||
@ -320,9 +354,15 @@ be:
|
|||||||
usable: Дазволіць допісам выкарыстоўваць гэты хэштэг лакальна
|
usable: Дазволіць допісам выкарыстоўваць гэты хэштэг лакальна
|
||||||
terms_of_service:
|
terms_of_service:
|
||||||
changelog: Што змянілася?
|
changelog: Што змянілася?
|
||||||
|
effective_date: Дата пачатку дзеяння
|
||||||
text: Умовы выкарыстання
|
text: Умовы выкарыстання
|
||||||
terms_of_service_generator:
|
terms_of_service_generator:
|
||||||
|
admin_email: Адрас электроннай пошты для юрыдычных абвестак
|
||||||
|
arbitration_address: Фізічны адрас для арбітражных абвестак
|
||||||
|
arbitration_website: Сайт для дасылання арбітражных абвестак
|
||||||
choice_of_law: Выбар заканадаўства
|
choice_of_law: Выбар заканадаўства
|
||||||
|
dmca_address: Фізічны адрас для абвестак DMCA/аўтарскага права
|
||||||
|
dmca_email: Адрас электроннай пошты для абвестак DMCA/аўтарскага права
|
||||||
domain: Дамен
|
domain: Дамен
|
||||||
jurisdiction: Юрысдыкцыя
|
jurisdiction: Юрысдыкцыя
|
||||||
min_age: Мінімальны ўзрост
|
min_age: Мінімальны ўзрост
|
||||||
@ -338,6 +378,10 @@ be:
|
|||||||
name: Назва
|
name: Назва
|
||||||
permissions_as_keys: Дазволы
|
permissions_as_keys: Дазволы
|
||||||
position: Прыярытэт
|
position: Прыярытэт
|
||||||
|
username_block:
|
||||||
|
allow_with_approval: Дазваляць рэгістрацыі з ухваленнем
|
||||||
|
comparison: Метад параўнання
|
||||||
|
username: Словы, з якімі трэба параўноўваць
|
||||||
webhook:
|
webhook:
|
||||||
events: Актыўныя падзеі
|
events: Актыўныя падзеі
|
||||||
template: Шаблон карыснай нагрузкі
|
template: Шаблон карыснай нагрузкі
|
||||||
|
|||||||
@ -56,6 +56,7 @@ ko:
|
|||||||
scopes: 애플리케이션에 허용할 API들입니다. 최상위 스코프를 선택하면 개별적인 것은 선택하지 않아도 됩니다.
|
scopes: 애플리케이션에 허용할 API들입니다. 최상위 스코프를 선택하면 개별적인 것은 선택하지 않아도 됩니다.
|
||||||
setting_aggregate_reblogs: 최근에 부스트 됐던 게시물은 새로 부스트 되어도 보여주지 않기 (새로 받은 부스트에만 적용됩니다)
|
setting_aggregate_reblogs: 최근에 부스트 됐던 게시물은 새로 부스트 되어도 보여주지 않기 (새로 받은 부스트에만 적용됩니다)
|
||||||
setting_always_send_emails: 기본적으로 마스토돈을 활동적으로 사용하고 있을 때에는 이메일 알림이 보내지지 않습니다
|
setting_always_send_emails: 기본적으로 마스토돈을 활동적으로 사용하고 있을 때에는 이메일 알림이 보내지지 않습니다
|
||||||
|
setting_default_quote_policy: 이 설정은 다음 마스토돈 버전부터 효과가 적용되지만 미리 준비할 수 있도록 설정을 제공합니다.
|
||||||
setting_default_sensitive: 민감한 미디어는 기본적으로 가려져 있으며 클릭해서 볼 수 있습니다
|
setting_default_sensitive: 민감한 미디어는 기본적으로 가려져 있으며 클릭해서 볼 수 있습니다
|
||||||
setting_display_media_default: 민감함으로 표시된 미디어 가리기
|
setting_display_media_default: 민감함으로 표시된 미디어 가리기
|
||||||
setting_display_media_hide_all: 모든 미디어를 가리기
|
setting_display_media_hide_all: 모든 미디어를 가리기
|
||||||
@ -158,6 +159,9 @@ ko:
|
|||||||
name: 역할이 배지로 표시될 경우, 그 역할에 대한 공개적인 이름입니다
|
name: 역할이 배지로 표시될 경우, 그 역할에 대한 공개적인 이름입니다
|
||||||
permissions_as_keys: 이 역할을 가진 사용자는 다음에 접근할 수 있게 됩니다...
|
permissions_as_keys: 이 역할을 가진 사용자는 다음에 접근할 수 있게 됩니다...
|
||||||
position: 특정 상황에서 충돌이 발생할 경우 더 높은 역할이 충돌을 해결합니다. 특정 작업은 우선순위가 낮은 역할에 대해서만 수행될 수 있습니다
|
position: 특정 상황에서 충돌이 발생할 경우 더 높은 역할이 충돌을 해결합니다. 특정 작업은 우선순위가 낮은 역할에 대해서만 수행될 수 있습니다
|
||||||
|
username_block:
|
||||||
|
allow_with_approval: 바로 가입을 막는 대신, 일치하는 가입에 승인을 요구합니다
|
||||||
|
username: 대소문자와 관계 없고 "4"를 "a"로, "3"을 "e"로 사용하는 등의 보편적으로 사용되는 비슷한 문자까지 매치됩니다
|
||||||
webhook:
|
webhook:
|
||||||
events: 전송할 이벤트를 선택하세요
|
events: 전송할 이벤트를 선택하세요
|
||||||
template: 원하는 JSON 페이로드를 변수와 함께 작성하거나, 그대로 두어 기본 JSON을 사용할 수 있습니다.
|
template: 원하는 JSON 페이로드를 변수와 함께 작성하거나, 그대로 두어 기본 JSON을 사용할 수 있습니다.
|
||||||
@ -323,6 +327,7 @@ ko:
|
|||||||
follow_request: 누군가 나를 팔로우 하길 요청할 때
|
follow_request: 누군가 나를 팔로우 하길 요청할 때
|
||||||
mention: 누군가 나를 언급했을 때
|
mention: 누군가 나를 언급했을 때
|
||||||
pending_account: 새 계정이 심사가 필요할 때
|
pending_account: 새 계정이 심사가 필요할 때
|
||||||
|
quote: 누군가 나를 인용했을 때
|
||||||
reblog: 누군가 내 게시물을 부스트 했을 때
|
reblog: 누군가 내 게시물을 부스트 했을 때
|
||||||
report: 새 신고가 접수되었을 때
|
report: 새 신고가 접수되었을 때
|
||||||
software_updates:
|
software_updates:
|
||||||
@ -369,6 +374,10 @@ ko:
|
|||||||
name: 이름
|
name: 이름
|
||||||
permissions_as_keys: 권한
|
permissions_as_keys: 권한
|
||||||
position: 우선순위
|
position: 우선순위
|
||||||
|
username_block:
|
||||||
|
allow_with_approval: 승인을 통한 가입 허용
|
||||||
|
comparison: 비교 방식
|
||||||
|
username: 일치할 단어
|
||||||
webhook:
|
webhook:
|
||||||
events: 활성화된 이벤트
|
events: 활성화된 이벤트
|
||||||
template: 페이로드 템플릿
|
template: 페이로드 템플릿
|
||||||
|
|||||||
@ -56,10 +56,12 @@ nn:
|
|||||||
scopes: API-ane som programmet vil få tilgjenge til. Ettersom du vel eit toppnivåomfang tarv du ikkje velja einskilde API-ar.
|
scopes: API-ane som programmet vil få tilgjenge til. Ettersom du vel eit toppnivåomfang tarv du ikkje velja einskilde API-ar.
|
||||||
setting_aggregate_reblogs: Ikkje vis nye framhevingar for tut som nyleg har vorte heva fram (Påverkar berre nylege framhevingar)
|
setting_aggregate_reblogs: Ikkje vis nye framhevingar for tut som nyleg har vorte heva fram (Påverkar berre nylege framhevingar)
|
||||||
setting_always_send_emails: Vanlegvis vil ikkje e-postvarsel bli sendt når du brukar Mastodon aktivt
|
setting_always_send_emails: Vanlegvis vil ikkje e-postvarsel bli sendt når du brukar Mastodon aktivt
|
||||||
|
setting_default_quote_policy: Denne innstillinga har berre verknad for innlegg som er laga med den neste utgåva av Mastodon, men du kan velja kva du vil ha i førebuingane.
|
||||||
setting_default_sensitive: Sensitive media vert gøymde som standard, og du syner dei ved å klikka på dei
|
setting_default_sensitive: Sensitive media vert gøymde som standard, og du syner dei ved å klikka på dei
|
||||||
setting_display_media_default: Gøym media som er merka som sensitive
|
setting_display_media_default: Gøym media som er merka som sensitive
|
||||||
setting_display_media_hide_all: Alltid skjul alt media
|
setting_display_media_hide_all: Alltid skjul alt media
|
||||||
setting_display_media_show_all: Vis alltid media
|
setting_display_media_show_all: Vis alltid media
|
||||||
|
setting_emoji_style: Korleis du skal visa smilefjes. «Auto» prøver å visa innebygde smilefjes, men bruker Twemoji som reserveløysing for eldre nettlesarar.
|
||||||
setting_system_scrollbars_ui: Gjeld berre skrivebordsnettlesarar som er bygde på Safari og Chrome
|
setting_system_scrollbars_ui: Gjeld berre skrivebordsnettlesarar som er bygde på Safari og Chrome
|
||||||
setting_use_blurhash: Overgangar er basert på fargane til skjulte grafikkelement, men gjer detaljar utydelege
|
setting_use_blurhash: Overgangar er basert på fargane til skjulte grafikkelement, men gjer detaljar utydelege
|
||||||
setting_use_pending_items: Gøym tidslineoppdateringar bak eit klikk, i staden for å rulla ned automatisk
|
setting_use_pending_items: Gøym tidslineoppdateringar bak eit klikk, i staden for å rulla ned automatisk
|
||||||
@ -148,6 +150,9 @@ nn:
|
|||||||
min_age: Skal ikkje vere under minstealder som krevst av lover i jurisdiksjonen din.
|
min_age: Skal ikkje vere under minstealder som krevst av lover i jurisdiksjonen din.
|
||||||
user:
|
user:
|
||||||
chosen_languages: Når merka vil berre tuta på dei valde språka synast på offentlege tidsliner
|
chosen_languages: Når merka vil berre tuta på dei valde språka synast på offentlege tidsliner
|
||||||
|
date_of_birth:
|
||||||
|
one: Me må sikra oss at du er minst %{count} for å bruka %{domain}. Me lagrar ikkje dette.
|
||||||
|
other: Me må sikra oss at du er minst %{count} for å bruka %{domain}. Me lagrar ikkje dette.
|
||||||
role: Rolla kontrollerer kva løyve brukaren har.
|
role: Rolla kontrollerer kva løyve brukaren har.
|
||||||
user_role:
|
user_role:
|
||||||
color: Fargen som skal nyttast for denne rolla i heile brukargrensesnittet, som RGB i hex-format
|
color: Fargen som skal nyttast for denne rolla i heile brukargrensesnittet, som RGB i hex-format
|
||||||
@ -155,6 +160,10 @@ nn:
|
|||||||
name: Offentleg namn på rolla, dersom rolla skal visast som eit emblem
|
name: Offentleg namn på rolla, dersom rolla skal visast som eit emblem
|
||||||
permissions_as_keys: Brukarar med denne rolla vil ha tilgang til...
|
permissions_as_keys: Brukarar med denne rolla vil ha tilgang til...
|
||||||
position: Høgare rolle avgjer konfliktløysing i visse situasjonar. Visse handlingar kan berre utførast på roller med lågare prioritet
|
position: Høgare rolle avgjer konfliktløysing i visse situasjonar. Visse handlingar kan berre utførast på roller med lågare prioritet
|
||||||
|
username_block:
|
||||||
|
allow_with_approval: I staden for å hindra registreringar i det heile, må du godkjenna registreringar som passar
|
||||||
|
comparison: Ver merksam på Scunthorpe-problemet når du blokkerer delvise treff
|
||||||
|
username: Vil passa uansett store og små bokstavar og vanlege homoglyfar som «4» for «a» eller «3» for «e»
|
||||||
webhook:
|
webhook:
|
||||||
events: Vel hendingar å senda
|
events: Vel hendingar å senda
|
||||||
template: Skriv di eiga JSON nyttelast ved å bruka variabel interpolering. La stå tom for standard JSON.
|
template: Skriv di eiga JSON nyttelast ved å bruka variabel interpolering. La stå tom for standard JSON.
|
||||||
@ -237,6 +246,7 @@ nn:
|
|||||||
setting_display_media_default: Standard
|
setting_display_media_default: Standard
|
||||||
setting_display_media_hide_all: Gøym alle
|
setting_display_media_hide_all: Gøym alle
|
||||||
setting_display_media_show_all: Vis alle
|
setting_display_media_show_all: Vis alle
|
||||||
|
setting_emoji_style: Stil for smilefjes
|
||||||
setting_expand_spoilers: Vid alltid ut tut som er merka med innhaldsåtvaringar
|
setting_expand_spoilers: Vid alltid ut tut som er merka med innhaldsåtvaringar
|
||||||
setting_hide_network: Gøym nettverket ditt
|
setting_hide_network: Gøym nettverket ditt
|
||||||
setting_missing_alt_text_modal: Vis stadfestingsdialog før du legg ut media utan alt-tekst
|
setting_missing_alt_text_modal: Vis stadfestingsdialog før du legg ut media utan alt-tekst
|
||||||
@ -319,6 +329,7 @@ nn:
|
|||||||
follow_request: Send e-post når nokon spør om å fylgja deg
|
follow_request: Send e-post når nokon spør om å fylgja deg
|
||||||
mention: Send e-post når nokon nemner deg
|
mention: Send e-post når nokon nemner deg
|
||||||
pending_account: Send e-post når ein ny konto treng gjennomgang
|
pending_account: Send e-post når ein ny konto treng gjennomgang
|
||||||
|
quote: Nokon siterte deg
|
||||||
reblog: Send e-post når nokon framhevar statusen din
|
reblog: Send e-post når nokon framhevar statusen din
|
||||||
report: Ny rapport er sendt
|
report: Ny rapport er sendt
|
||||||
software_updates:
|
software_updates:
|
||||||
@ -365,6 +376,10 @@ nn:
|
|||||||
name: Namn
|
name: Namn
|
||||||
permissions_as_keys: Løyve
|
permissions_as_keys: Løyve
|
||||||
position: Prioritet
|
position: Prioritet
|
||||||
|
username_block:
|
||||||
|
allow_with_approval: Tillat registreringar med godkjenning
|
||||||
|
comparison: Samanlikningsmetode
|
||||||
|
username: Ord som skal passa
|
||||||
webhook:
|
webhook:
|
||||||
events: Aktiverte hendingar
|
events: Aktiverte hendingar
|
||||||
template: Nyttelastmal
|
template: Nyttelastmal
|
||||||
|
|||||||
@ -56,10 +56,12 @@ pl:
|
|||||||
scopes: Wybór API, do których aplikacja będzie miała dostęp. Jeżeli wybierzesz nadrzędny zakres, nie musisz wybierać jego elementów.
|
scopes: Wybór API, do których aplikacja będzie miała dostęp. Jeżeli wybierzesz nadrzędny zakres, nie musisz wybierać jego elementów.
|
||||||
setting_aggregate_reblogs: Nie pokazuj nowych podbić dla wpisów, które zostały niedawno podbite (dotyczy tylko nowo otrzymanych podbić)
|
setting_aggregate_reblogs: Nie pokazuj nowych podbić dla wpisów, które zostały niedawno podbite (dotyczy tylko nowo otrzymanych podbić)
|
||||||
setting_always_send_emails: Powiadomienia e-mail zwykle nie będą wysyłane, gdy używasz Mastodon
|
setting_always_send_emails: Powiadomienia e-mail zwykle nie będą wysyłane, gdy używasz Mastodon
|
||||||
|
setting_default_quote_policy: To ustawienie będzie skuteczne tylko dla postów utworzonych z następną wersją Mastodon, ale możesz wybrać swoje preferencje w przygotowaniu.
|
||||||
setting_default_sensitive: Wrażliwe multimedia są domyślnie schowane i mogą być odkryte kliknięciem
|
setting_default_sensitive: Wrażliwe multimedia są domyślnie schowane i mogą być odkryte kliknięciem
|
||||||
setting_display_media_default: Ukrywaj zawartość multimedialną oznaczoną jako wrażliwa
|
setting_display_media_default: Ukrywaj zawartość multimedialną oznaczoną jako wrażliwa
|
||||||
setting_display_media_hide_all: Zawsze ukrywaj zawartość multimedialną
|
setting_display_media_hide_all: Zawsze ukrywaj zawartość multimedialną
|
||||||
setting_display_media_show_all: Zawsze pokazuj zawartość multimedialną
|
setting_display_media_show_all: Zawsze pokazuj zawartość multimedialną
|
||||||
|
setting_emoji_style: Jak wyświetlić emotikony. "Auto" spróbuje użyć natywnych emoji, ale wróci do Twemoji dla starszych przeglądarek.
|
||||||
setting_system_scrollbars_ui: Stosuje się tylko do przeglądarek komputerowych opartych na Safari i Chrome
|
setting_system_scrollbars_ui: Stosuje się tylko do przeglądarek komputerowych opartych na Safari i Chrome
|
||||||
setting_use_blurhash: Gradienty są oparte na kolorach ukrywanej zawartości, ale uniewidaczniają wszystkie szczegóły
|
setting_use_blurhash: Gradienty są oparte na kolorach ukrywanej zawartości, ale uniewidaczniają wszystkie szczegóły
|
||||||
setting_use_pending_items: Ukryj aktualizacje osi czasu za kliknięciem, zamiast automatycznego przewijania strumienia
|
setting_use_pending_items: Ukryj aktualizacje osi czasu za kliknięciem, zamiast automatycznego przewijania strumienia
|
||||||
@ -75,6 +77,7 @@ pl:
|
|||||||
filters:
|
filters:
|
||||||
action: Wybierz akcję do wykonania, gdy post pasuje do filtra
|
action: Wybierz akcję do wykonania, gdy post pasuje do filtra
|
||||||
actions:
|
actions:
|
||||||
|
blur: Ukryj media za ostrzeżeniem, bez ukrywania samego tekstu
|
||||||
hide: Całkowicie ukryj przefiltrowaną zawartość, jakby nie istniała
|
hide: Całkowicie ukryj przefiltrowaną zawartość, jakby nie istniała
|
||||||
warn: Ukryj filtrowaną zawartość za ostrzeżeniem wskazującym tytuł filtra
|
warn: Ukryj filtrowaną zawartość za ostrzeżeniem wskazującym tytuł filtra
|
||||||
form_admin_settings:
|
form_admin_settings:
|
||||||
@ -88,6 +91,7 @@ pl:
|
|||||||
favicon: WEBP, PNG, GIF, albo JPEG. Nadpisuje domyślną faviconę Mastodona.
|
favicon: WEBP, PNG, GIF, albo JPEG. Nadpisuje domyślną faviconę Mastodona.
|
||||||
mascot: Nadpisuje ilustrację w zaawansowanym interfejsie internetowym.
|
mascot: Nadpisuje ilustrację w zaawansowanym interfejsie internetowym.
|
||||||
media_cache_retention_period: Media z wpisów od obcych użytkowników są cache'owane na twoim serwerze. Kiedy dana wartość jest dodatnia, media te będą usunięte po tylu dniach. Jeżeli usunięte media zostaną potem zażądane, oryginał zostanie ponownie pobrany (o ile jest dalej dostępny). Z powodu ograniczeń dot. częstotliwości z jaką karty podglądu linków dopytują się o dane od stron trzecich, zalecana wartość to min. 14 dni, bo karty podglądu linków nie będą wcześniej odświeżane na żądane.
|
media_cache_retention_period: Media z wpisów od obcych użytkowników są cache'owane na twoim serwerze. Kiedy dana wartość jest dodatnia, media te będą usunięte po tylu dniach. Jeżeli usunięte media zostaną potem zażądane, oryginał zostanie ponownie pobrany (o ile jest dalej dostępny). Z powodu ograniczeń dot. częstotliwości z jaką karty podglądu linków dopytują się o dane od stron trzecich, zalecana wartość to min. 14 dni, bo karty podglądu linków nie będą wcześniej odświeżane na żądane.
|
||||||
|
min_age: Użytkownicy zostaną poproszeni o potwierdzenie daty urodzenia podczas rejestracji
|
||||||
peers_api_enabled: Lista nazw domen, z którymi ten serwer spotkał się w fediverse. Nie są tu zawarte żadne dane o tym, czy użytkownik dokonuje federacji z danym serwerem, a jedynie, że jego serwer o tym wie. Jest to wykorzystywane przez serwisy, które zbierają statystyki dotyczące federacji w ogólnym sensie.
|
peers_api_enabled: Lista nazw domen, z którymi ten serwer spotkał się w fediverse. Nie są tu zawarte żadne dane o tym, czy użytkownik dokonuje federacji z danym serwerem, a jedynie, że jego serwer o tym wie. Jest to wykorzystywane przez serwisy, które zbierają statystyki dotyczące federacji w ogólnym sensie.
|
||||||
profile_directory: Katalog profili zawiera listę wszystkich użytkowników, którzy zgodzili się na bycie znalezionymi.
|
profile_directory: Katalog profili zawiera listę wszystkich użytkowników, którzy zgodzili się na bycie znalezionymi.
|
||||||
require_invite_text: Kiedy rejestracje wymagają ręcznego zatwierdzenia, ustaw pole "Dlaczego chcesz dołączyć?" jako obowiązkowe, a nie opcjonalne
|
require_invite_text: Kiedy rejestracje wymagają ręcznego zatwierdzenia, ustaw pole "Dlaczego chcesz dołączyć?" jako obowiązkowe, a nie opcjonalne
|
||||||
@ -132,13 +136,18 @@ pl:
|
|||||||
name: Możesz zmieniać tylko wielkość liter, np. aby były bardziej widoczne
|
name: Możesz zmieniać tylko wielkość liter, np. aby były bardziej widoczne
|
||||||
terms_of_service:
|
terms_of_service:
|
||||||
changelog: Może być stworzony przy pomocy składni Markdown.
|
changelog: Może być stworzony przy pomocy składni Markdown.
|
||||||
|
effective_date: Uzasadnione ramy czasowe mogą być różne w dowolnym miejscu od 10 do 30 dni od daty powiadomienia użytkowników.
|
||||||
text: Może być stworzony przy pomocy składni Markdown.
|
text: Może być stworzony przy pomocy składni Markdown.
|
||||||
terms_of_service_generator:
|
terms_of_service_generator:
|
||||||
admin_email: Zawiadomienia prawne obejmują środki zapobiegawcze, nakazy sądowe, wnioski o popełnienie sprawy oraz wnioski organów ścigania.
|
admin_email: Zawiadomienia prawne obejmują środki zapobiegawcze, nakazy sądowe, wnioski o popełnienie sprawy oraz wnioski organów ścigania.
|
||||||
|
arbitration_address: Czy może być taki sam jak adres fizyczny powyżej lub „N/A” jeśli używasz adresu e-mail.
|
||||||
|
arbitration_website: Może być formularzem internetowym lub „N/A”, jeśli używasz adresu e-mail.
|
||||||
choice_of_law: Miasto, region, terytorium lub stan, którego wewnętrzne prawo będzie regulowało wszelkie roszczenia.
|
choice_of_law: Miasto, region, terytorium lub stan, którego wewnętrzne prawo będzie regulowało wszelkie roszczenia.
|
||||||
dmca_address: W przypadku operatorów z USA należy użyć adresu zarejestrowanego w DMCA Designated Agent Directory. Lista skrytek pocztowych dostępna jest na bezpośrednią prośbę użytkownika. Użyj DMCA Agent Post Office Box Waiver Request, aby wysłać email do Copyright Office z informacją, że jesteś domowym administratorm treści i z powodu obawy o zemstę lub odwetu za swoje działania, musisz użyć skrytki pocztowej, żeby usunąć swój adres domowy z dostępu publicznego.
|
dmca_address: W przypadku operatorów z USA należy użyć adresu zarejestrowanego w DMCA Designated Agent Directory. Lista skrytek pocztowych dostępna jest na bezpośrednią prośbę użytkownika. Użyj DMCA Agent Post Office Box Waiver Request, aby wysłać email do Copyright Office z informacją, że jesteś domowym administratorm treści i z powodu obawy o zemstę lub odwetu za swoje działania, musisz użyć skrytki pocztowej, żeby usunąć swój adres domowy z dostępu publicznego.
|
||||||
|
dmca_email: Czy może ten sam adres e-mail używany dla powyższego "Adres e-mail dla prawnych zawiadomień"?
|
||||||
domain: Unikalny numer identyfikacji świadczonej przez Ciebie usługi online.
|
domain: Unikalny numer identyfikacji świadczonej przez Ciebie usługi online.
|
||||||
jurisdiction: Wymień państwo, w którym mieszkają osoby płacące rachunki. Jeżeli jest to spółka lub inny zarejestrowany podmiot, w zależności od przypadku podaj państwo, w którym jest zarejestrowany, a także miasto, region czy województwo.
|
jurisdiction: Wymień państwo, w którym mieszkają osoby płacące rachunki. Jeżeli jest to spółka lub inny zarejestrowany podmiot, w zależności od przypadku podaj państwo, w którym jest zarejestrowany, a także miasto, region czy województwo.
|
||||||
|
min_age: Nie powinien być niższy niż minimalny wiek wymagany przez prawo twojego państwa.
|
||||||
user:
|
user:
|
||||||
chosen_languages: Jeżeli zaznaczone, tylko wpisy w wybranych językach będą wyświetlane na publicznych osiach czasu
|
chosen_languages: Jeżeli zaznaczone, tylko wpisy w wybranych językach będą wyświetlane na publicznych osiach czasu
|
||||||
role: Rola kontroluje uprawnienia użytkownika.
|
role: Rola kontroluje uprawnienia użytkownika.
|
||||||
@ -148,6 +157,10 @@ pl:
|
|||||||
name: Publiczna nazwa roli, jeśli włączone jest wyświetlanie odznaki
|
name: Publiczna nazwa roli, jeśli włączone jest wyświetlanie odznaki
|
||||||
permissions_as_keys: Użytkownicy z tą rolą będą mieli dostęp do...
|
permissions_as_keys: Użytkownicy z tą rolą będą mieli dostęp do...
|
||||||
position: Wyższa rola decyduje o rozwiązywaniu konfliktów w pewnych sytuacjach. Niektóre działania mogą być wykonywane tylko na rolach z niższym priorytetem
|
position: Wyższa rola decyduje o rozwiązywaniu konfliktów w pewnych sytuacjach. Niektóre działania mogą być wykonywane tylko na rolach z niższym priorytetem
|
||||||
|
username_block:
|
||||||
|
allow_with_approval: Zamiast bezwzględnie uniemożliwiać rejestrację, pasujące rejestracje będą wymagały Twojej zgody
|
||||||
|
comparison: Proszę pamiętać o problemie Scunthorpe podczas blokowania częściowych dopasowań
|
||||||
|
username: Będą dopasowane niezależnie od otoczki i zwykłych homoglików, takich jak "4" dla "a" lub "3" dla "e"
|
||||||
webhook:
|
webhook:
|
||||||
events: Wybierz zdarzenia do wysłania
|
events: Wybierz zdarzenia do wysłania
|
||||||
template: Poskładaj zawartość JSON, podstawiając zmienne. Użyjemy domyślnej wartości, jeżeli pole zostawisz pustym.
|
template: Poskładaj zawartość JSON, podstawiając zmienne. Użyjemy domyślnej wartości, jeżeli pole zostawisz pustym.
|
||||||
@ -255,6 +268,7 @@ pl:
|
|||||||
name: Hasztag
|
name: Hasztag
|
||||||
filters:
|
filters:
|
||||||
actions:
|
actions:
|
||||||
|
blur: Ukryj media z ostrzeżeniem
|
||||||
hide: Ukryj całkowicie
|
hide: Ukryj całkowicie
|
||||||
warn: Ukryj z ostrzeżeniem
|
warn: Ukryj z ostrzeżeniem
|
||||||
form_admin_settings:
|
form_admin_settings:
|
||||||
@ -312,6 +326,7 @@ pl:
|
|||||||
follow_request: Powiadamiaj mnie e-mailem, gdy ktoś poprosi o pozwolenie na obserwowanie mnie
|
follow_request: Powiadamiaj mnie e-mailem, gdy ktoś poprosi o pozwolenie na obserwowanie mnie
|
||||||
mention: Powiadamiaj mnie e-mailem, gdy ktoś o mnie wspomni
|
mention: Powiadamiaj mnie e-mailem, gdy ktoś o mnie wspomni
|
||||||
pending_account: Wyślij e-mail kiedy nowe konto potrzebuje recenzji
|
pending_account: Wyślij e-mail kiedy nowe konto potrzebuje recenzji
|
||||||
|
quote: Ktoś Cię cytował
|
||||||
reblog: Powiadamiaj mnie e-mailem, gdy ktoś podbije mój wpis
|
reblog: Powiadamiaj mnie e-mailem, gdy ktoś podbije mój wpis
|
||||||
report: Nowe zgłoszenie zostało wysłane
|
report: Nowe zgłoszenie zostało wysłane
|
||||||
software_updates:
|
software_updates:
|
||||||
|
|||||||
@ -237,6 +237,7 @@ ru:
|
|||||||
setting_display_media_default: По умолчанию
|
setting_display_media_default: По умолчанию
|
||||||
setting_display_media_hide_all: Скрывать все
|
setting_display_media_hide_all: Скрывать все
|
||||||
setting_display_media_show_all: Показывать все
|
setting_display_media_show_all: Показывать все
|
||||||
|
setting_emoji_style: Стиль эмодзи
|
||||||
setting_expand_spoilers: Разворачивать все посты с предупреждением о содержании
|
setting_expand_spoilers: Разворачивать все посты с предупреждением о содержании
|
||||||
setting_hide_network: Скрыть мои связи
|
setting_hide_network: Скрыть мои связи
|
||||||
setting_missing_alt_text_modal: Запрашивать подтверждение при публикации медиа без альтернативного текста
|
setting_missing_alt_text_modal: Запрашивать подтверждение при публикации медиа без альтернативного текста
|
||||||
@ -319,6 +320,7 @@ ru:
|
|||||||
follow_request: Мне пришёл запрос на подписку
|
follow_request: Мне пришёл запрос на подписку
|
||||||
mention: Меня упомянули в посте
|
mention: Меня упомянули в посте
|
||||||
pending_account: Новая заявка на создание аккаунта
|
pending_account: Новая заявка на создание аккаунта
|
||||||
|
quote: Кто-то процитировал вас
|
||||||
reblog: Мой пост продвинули
|
reblog: Мой пост продвинули
|
||||||
report: Новое обращение отправлено
|
report: Новое обращение отправлено
|
||||||
software_updates:
|
software_updates:
|
||||||
@ -365,6 +367,9 @@ ru:
|
|||||||
name: Название
|
name: Название
|
||||||
permissions_as_keys: Разрешения
|
permissions_as_keys: Разрешения
|
||||||
position: Приоритет
|
position: Приоритет
|
||||||
|
username_block:
|
||||||
|
allow_with_approval: Разрешить регистрацию с одобрением
|
||||||
|
comparison: Метод сравнения
|
||||||
webhook:
|
webhook:
|
||||||
events: Включенные события
|
events: Включенные события
|
||||||
template: Шаблон полезной нагрузки
|
template: Шаблон полезной нагрузки
|
||||||
|
|||||||
@ -39,6 +39,8 @@ namespace :api, format: false do
|
|||||||
resource :history, only: :show
|
resource :history, only: :show
|
||||||
resource :source, only: :show
|
resource :source, only: :show
|
||||||
|
|
||||||
|
resource :interaction_policy, only: :update
|
||||||
|
|
||||||
post :translate, to: 'translations#create'
|
post :translate, to: 'translations#create'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -73,8 +73,8 @@ module Paperclip
|
|||||||
@url_generator.for_as_default(style_name)
|
@url_generator.for_as_default(style_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
STOPLIGHT_COOL_OFF_TIME = 30
|
||||||
STOPLIGHT_THRESHOLD = 10
|
STOPLIGHT_THRESHOLD = 10
|
||||||
STOPLIGHT_COOLDOWN = 30
|
|
||||||
|
|
||||||
# We overwrite this method to put a circuit breaker around
|
# We overwrite this method to put a circuit breaker around
|
||||||
# calls to object storage, to stop hitting APIs that are slow
|
# calls to object storage, to stop hitting APIs that are slow
|
||||||
@ -84,11 +84,12 @@ 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')
|
Stoplight(
|
||||||
.with_threshold(STOPLIGHT_THRESHOLD)
|
'object-storage',
|
||||||
.with_cool_off_time(STOPLIGHT_COOLDOWN)
|
cool_off_time: STOPLIGHT_COOL_OFF_TIME,
|
||||||
.with_error_handler { |error, handle| error.is_a?(Seahorse::Client::NetworkingError) ? handle.call(error) : raise(error) }
|
threshold: STOPLIGHT_THRESHOLD,
|
||||||
.run { super }
|
tracked_errors: [Seahorse::Client::NetworkingError]
|
||||||
|
).run { super }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
51
package.json
51
package.json
@ -47,12 +47,12 @@
|
|||||||
"@gamestdio/websocket": "^0.3.2",
|
"@gamestdio/websocket": "^0.3.2",
|
||||||
"@github/webauthn-json": "^2.1.1",
|
"@github/webauthn-json": "^2.1.1",
|
||||||
"@optimize-lodash/rollup-plugin": "^5.0.2",
|
"@optimize-lodash/rollup-plugin": "^5.0.2",
|
||||||
"@rails/ujs": "7.1.501",
|
"@rails/ujs": "7.1.502",
|
||||||
"@react-spring/web": "^9.7.5",
|
"@react-spring/web": "^9.7.5",
|
||||||
"@reduxjs/toolkit": "^2.0.1",
|
"@reduxjs/toolkit": "^2.0.1",
|
||||||
"@use-gesture/react": "^10.3.1",
|
"@use-gesture/react": "^10.3.1",
|
||||||
"@vitejs/plugin-legacy": "^6.1.1",
|
"@vitejs/plugin-legacy": "^7.2.1",
|
||||||
"@vitejs/plugin-react": "^4.2.1",
|
"@vitejs/plugin-react": "^5.0.0",
|
||||||
"arrow-key-navigation": "^1.2.0",
|
"arrow-key-navigation": "^1.2.0",
|
||||||
"async-mutex": "^0.5.0",
|
"async-mutex": "^0.5.0",
|
||||||
"atrament": "0.2.4",
|
"atrament": "0.2.4",
|
||||||
@ -110,7 +110,7 @@
|
|||||||
"regenerator-runtime": "^0.14.0",
|
"regenerator-runtime": "^0.14.0",
|
||||||
"requestidlecallback": "^0.3.0",
|
"requestidlecallback": "^0.3.0",
|
||||||
"rollup-plugin-gzip": "^4.1.1",
|
"rollup-plugin-gzip": "^4.1.1",
|
||||||
"rollup-plugin-visualizer": "^6.0.0",
|
"rollup-plugin-visualizer": "^6.0.3",
|
||||||
"sass": "^1.62.1",
|
"sass": "^1.62.1",
|
||||||
"stacktrace-js": "^2.0.2",
|
"stacktrace-js": "^2.0.2",
|
||||||
"stringz": "^2.1.0",
|
"stringz": "^2.1.0",
|
||||||
@ -119,27 +119,27 @@
|
|||||||
"tiny-queue": "^0.2.1",
|
"tiny-queue": "^0.2.1",
|
||||||
"twitter-text": "3.1.0",
|
"twitter-text": "3.1.0",
|
||||||
"use-debounce": "^10.0.0",
|
"use-debounce": "^10.0.0",
|
||||||
"vite": "^6.3.5",
|
"vite": "^7.1.1",
|
||||||
"vite-plugin-manifest-sri": "^0.2.0",
|
"vite-plugin-manifest-sri": "^0.2.0",
|
||||||
"vite-plugin-pwa": "^1.0.0",
|
"vite-plugin-pwa": "^1.0.2",
|
||||||
"vite-plugin-static-copy": "^3.1.0",
|
"vite-plugin-static-copy": "^3.1.1",
|
||||||
"vite-plugin-svgr": "^4.3.0",
|
"vite-plugin-svgr": "^4.3.0",
|
||||||
"vite-tsconfig-paths": "^5.1.4",
|
"vite-tsconfig-paths": "^5.1.4",
|
||||||
"wicg-inert": "^3.1.2",
|
"wicg-inert": "^3.1.2",
|
||||||
"workbox-expiration": "^7.0.0",
|
"workbox-expiration": "^7.3.0",
|
||||||
"workbox-routing": "^7.0.0",
|
"workbox-routing": "^7.3.0",
|
||||||
"workbox-strategies": "^7.0.0",
|
"workbox-strategies": "^7.3.0",
|
||||||
"workbox-window": "^7.0.0"
|
"workbox-window": "^7.3.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^9.23.0",
|
"@eslint/js": "^9.23.0",
|
||||||
"@formatjs/cli": "^6.1.1",
|
"@formatjs/cli": "^6.1.1",
|
||||||
"@storybook/addon-a11y": "^9.0.4",
|
"@storybook/addon-a11y": "^9.1.1",
|
||||||
"@storybook/addon-docs": "^9.0.4",
|
"@storybook/addon-docs": "^9.1.1",
|
||||||
"@storybook/addon-vitest": "^9.0.4",
|
"@storybook/addon-vitest": "^9.1.1",
|
||||||
"@storybook/react-vite": "^9.0.4",
|
"@storybook/react-vite": "^9.1.1",
|
||||||
"@testing-library/dom": "^10.2.0",
|
"@testing-library/dom": "^10.4.1",
|
||||||
"@testing-library/react": "^16.0.0",
|
"@testing-library/react": "^16.3.0",
|
||||||
"@types/debug": "^4",
|
"@types/debug": "^4",
|
||||||
"@types/emoji-mart": "3.0.14",
|
"@types/emoji-mart": "3.0.14",
|
||||||
"@types/escape-html": "^1.0.2",
|
"@types/escape-html": "^1.0.2",
|
||||||
@ -164,15 +164,15 @@
|
|||||||
"@types/react-toggle": "^4.0.3",
|
"@types/react-toggle": "^4.0.3",
|
||||||
"@types/redux-immutable": "^4.0.3",
|
"@types/redux-immutable": "^4.0.3",
|
||||||
"@types/requestidlecallback": "^0.3.5",
|
"@types/requestidlecallback": "^0.3.5",
|
||||||
"@vitest/browser": "^3.2.1",
|
"@vitest/browser": "^3.2.4",
|
||||||
"@vitest/coverage-v8": "^3.2.0",
|
"@vitest/coverage-v8": "^3.2.4",
|
||||||
"@vitest/ui": "^3.2.1",
|
"@vitest/ui": "^3.2.4",
|
||||||
"chromatic": "^13.0.0",
|
"chromatic": "^13.1.3",
|
||||||
"eslint": "^9.23.0",
|
"eslint": "^9.23.0",
|
||||||
"eslint-import-resolver-typescript": "^4.2.5",
|
"eslint-import-resolver-typescript": "^4.2.5",
|
||||||
"eslint-plugin-formatjs": "^5.3.1",
|
"eslint-plugin-formatjs": "^5.3.1",
|
||||||
"eslint-plugin-import": "~2.32.0",
|
"eslint-plugin-import": "~2.32.0",
|
||||||
"eslint-plugin-jsdoc": "^52.0.0",
|
"eslint-plugin-jsdoc": "^54.0.0",
|
||||||
"eslint-plugin-jsx-a11y": "~6.10.2",
|
"eslint-plugin-jsx-a11y": "~6.10.2",
|
||||||
"eslint-plugin-promise": "~7.2.1",
|
"eslint-plugin-promise": "~7.2.1",
|
||||||
"eslint-plugin-react": "^7.37.4",
|
"eslint-plugin-react": "^7.37.4",
|
||||||
@ -187,19 +187,18 @@
|
|||||||
"playwright": "^1.54.1",
|
"playwright": "^1.54.1",
|
||||||
"prettier": "^3.3.3",
|
"prettier": "^3.3.3",
|
||||||
"react-test-renderer": "^18.2.0",
|
"react-test-renderer": "^18.2.0",
|
||||||
"storybook": "^9.0.4",
|
"storybook": "^9.1.1",
|
||||||
"stylelint": "^16.19.1",
|
"stylelint": "^16.19.1",
|
||||||
"stylelint-config-prettier-scss": "^1.0.0",
|
"stylelint-config-prettier-scss": "^1.0.0",
|
||||||
"stylelint-config-standard-scss": "^15.0.1",
|
"stylelint-config-standard-scss": "^15.0.1",
|
||||||
"typescript": "~5.7.3",
|
"typescript": "~5.7.3",
|
||||||
"typescript-eslint": "^8.29.1",
|
"typescript-eslint": "^8.29.1",
|
||||||
"vitest": "^3.2.1"
|
"vitest": "^3.2.4"
|
||||||
},
|
},
|
||||||
"resolutions": {
|
"resolutions": {
|
||||||
"@types/react": "^18.2.7",
|
"@types/react": "^18.2.7",
|
||||||
"@types/react-dom": "^18.2.4",
|
"@types/react-dom": "^18.2.4",
|
||||||
"kind-of": "^6.0.3",
|
"kind-of": "^6.0.3"
|
||||||
"vite": "^6.3.5"
|
|
||||||
},
|
},
|
||||||
"peerDependenciesMeta": {
|
"peerDependenciesMeta": {
|
||||||
"react": {
|
"react": {
|
||||||
|
|||||||
@ -12,27 +12,22 @@ RSpec.describe ActivityPub::Activity::Delete do
|
|||||||
id: 'foo',
|
id: 'foo',
|
||||||
type: 'Delete',
|
type: 'Delete',
|
||||||
actor: ActivityPub::TagManager.instance.uri_for(sender),
|
actor: ActivityPub::TagManager.instance.uri_for(sender),
|
||||||
object: ActivityPub::TagManager.instance.uri_for(status),
|
object: object_json,
|
||||||
signature: 'foo',
|
signature: 'foo',
|
||||||
}.with_indifferent_access
|
}.deep_stringify_keys
|
||||||
end
|
end
|
||||||
|
|
||||||
|
let(:object_json) { ActivityPub::TagManager.instance.uri_for(status) }
|
||||||
|
|
||||||
describe '#perform' do
|
describe '#perform' do
|
||||||
subject { described_class.new(json, sender) }
|
subject { described_class.new(json, sender) }
|
||||||
|
|
||||||
before do
|
|
||||||
subject.perform
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'deletes sender\'s status' do
|
it 'deletes sender\'s status' do
|
||||||
|
subject.perform
|
||||||
expect(Status.find_by(id: status.id)).to be_nil
|
expect(Status.find_by(id: status.id)).to be_nil
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
context 'when the status has been reblogged' do
|
|
||||||
describe '#perform' do
|
|
||||||
subject { described_class.new(json, sender) }
|
|
||||||
|
|
||||||
|
context 'when the status has been reblogged' do
|
||||||
let!(:reblogger) { Fabricate(:account) }
|
let!(:reblogger) { Fabricate(:account) }
|
||||||
let!(:follower) { Fabricate(:account, username: 'follower', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
|
let!(:follower) { Fabricate(:account, username: 'follower', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
|
||||||
let!(:reblog) { Fabricate(:status, account: reblogger, reblog: status) }
|
let!(:reblog) { Fabricate(:status, account: reblogger, reblog: status) }
|
||||||
@ -55,12 +50,8 @@ RSpec.describe ActivityPub::Activity::Delete do
|
|||||||
expect { reblog.reload }.to raise_error(ActiveRecord::RecordNotFound)
|
expect { reblog.reload }.to raise_error(ActiveRecord::RecordNotFound)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
context 'when the status has been reported' do
|
|
||||||
describe '#perform' do
|
|
||||||
subject { described_class.new(json, sender) }
|
|
||||||
|
|
||||||
|
context 'when the status has been reported' do
|
||||||
let!(:reporter) { Fabricate(:account) }
|
let!(:reporter) { Fabricate(:account) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
@ -76,23 +67,9 @@ RSpec.describe ActivityPub::Activity::Delete do
|
|||||||
expect(Status.with_discarded.find_by(id: status.id)).to_not be_nil
|
expect(Status.with_discarded.find_by(id: status.id)).to_not be_nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
context 'when the deleted object is an account' do
|
|
||||||
let(:json) do
|
|
||||||
{
|
|
||||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
|
||||||
id: 'foo',
|
|
||||||
type: 'Delete',
|
|
||||||
actor: ActivityPub::TagManager.instance.uri_for(sender),
|
|
||||||
object: ActivityPub::TagManager.instance.uri_for(sender),
|
|
||||||
signature: 'foo',
|
|
||||||
}.with_indifferent_access
|
|
||||||
end
|
|
||||||
|
|
||||||
describe '#perform' do
|
|
||||||
subject { described_class.new(json, sender) }
|
|
||||||
|
|
||||||
|
context 'when the deleted object is an account' do
|
||||||
|
let(:object_json) { ActivityPub::TagManager.instance.uri_for(sender) }
|
||||||
let(:service) { instance_double(DeleteAccountService, call: true) }
|
let(:service) { instance_double(DeleteAccountService, call: true) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
@ -106,27 +83,36 @@ RSpec.describe ActivityPub::Activity::Delete do
|
|||||||
.to have_received(:call).with(sender, { reserve_username: false, skip_activitypub: true })
|
.to have_received(:call).with(sender, { reserve_username: false, skip_activitypub: true })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
context 'when the deleted object is a quote authorization' do
|
context 'when the deleted object is a quote authorization' do
|
||||||
let(:quoter) { Fabricate(:account, domain: 'b.example.com') }
|
let(:quoter) { Fabricate(:account, domain: 'b.example.com') }
|
||||||
let(:status) { Fabricate(:status, account: quoter) }
|
let(:status) { Fabricate(:status, account: quoter) }
|
||||||
let(:quoted_status) { Fabricate(:status, account: sender, uri: 'https://example.com/statuses/1234') }
|
let(:quoted_status) { Fabricate(:status, account: sender, uri: 'https://example.com/statuses/1234') }
|
||||||
let!(:quote) { Fabricate(:quote, approval_uri: 'https://example.com/approvals/1234', state: :accepted, status: status, quoted_status: quoted_status) }
|
let!(:quote) { Fabricate(:quote, approval_uri: 'https://example.com/approvals/1234', state: :accepted, status: status, quoted_status: quoted_status) }
|
||||||
|
|
||||||
let(:json) do
|
let(:object_json) { quote.approval_uri }
|
||||||
{
|
|
||||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
it 'revokes the authorization' do
|
||||||
id: 'foo',
|
expect { subject.perform }
|
||||||
type: 'Delete',
|
.to change { quote.reload.state }.to('revoked')
|
||||||
actor: ActivityPub::TagManager.instance.uri_for(sender),
|
end
|
||||||
object: quote.approval_uri,
|
|
||||||
signature: 'foo',
|
|
||||||
}.with_indifferent_access
|
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#perform' do
|
context 'when the deleted object is an inlined quote authorization' do
|
||||||
subject { described_class.new(json, sender) }
|
let(:quoter) { Fabricate(:account, domain: 'b.example.com') }
|
||||||
|
let(:status) { Fabricate(:status, account: quoter) }
|
||||||
|
let(:quoted_status) { Fabricate(:status, account: sender, uri: 'https://example.com/statuses/1234') }
|
||||||
|
let!(:quote) { Fabricate(:quote, approval_uri: 'https://example.com/approvals/1234', state: :accepted, status: status, quoted_status: quoted_status) }
|
||||||
|
|
||||||
|
let(:object_json) do
|
||||||
|
{
|
||||||
|
type: 'QuoteAuthorization',
|
||||||
|
id: quote.approval_uri,
|
||||||
|
attributedTo: ActivityPub::TagManager.instance.uri_for(quoted_status.account),
|
||||||
|
interactionTarget: ActivityPub::TagManager.instance.uri_for(quoted_status),
|
||||||
|
interactingObject: ActivityPub::TagManager.instance.uri_for(status),
|
||||||
|
}.deep_stringify_keys
|
||||||
|
end
|
||||||
|
|
||||||
it 'revokes the authorization' do
|
it 'revokes the authorization' do
|
||||||
expect { subject.perform }
|
expect { subject.perform }
|
||||||
|
|||||||
47
spec/lib/antispam_spec.rb
Normal file
47
spec/lib/antispam_spec.rb
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe Antispam do
|
||||||
|
describe '#local_preflight_check!' do
|
||||||
|
subject { described_class.new.local_preflight_check!(status) }
|
||||||
|
|
||||||
|
let(:status) { Fabricate :status }
|
||||||
|
|
||||||
|
context 'when there is no spammy text registered' do
|
||||||
|
it { is_expected.to be_nil }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'with spammy text' do
|
||||||
|
before { redis.sadd 'antispam:spammy_texts', 'https://banned.example' }
|
||||||
|
|
||||||
|
context 'when status matches' do
|
||||||
|
let(:status) { Fabricate :status, text: 'I use https://banned.example urls in my text' }
|
||||||
|
|
||||||
|
it 'raises error and reports' do
|
||||||
|
expect { subject }
|
||||||
|
.to raise_error(described_class::SilentlyDrop)
|
||||||
|
.and change(spam_reports, :count).by(1)
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when report already exists' do
|
||||||
|
before { Fabricate :report, account: Account.representative, target_account: status.account }
|
||||||
|
|
||||||
|
it 'raises error and does not report' do
|
||||||
|
expect { subject }
|
||||||
|
.to raise_error(described_class::SilentlyDrop)
|
||||||
|
.and not_change(spam_reports, :count)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def spam_reports
|
||||||
|
Account.representative.reports.where(target_account: status.account).spam
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when status does not match' do
|
||||||
|
it { is_expected.to be_nil }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -32,6 +32,7 @@ RSpec.describe Mastodon::CLI::Accounts do
|
|||||||
|
|
||||||
describe '#create' do
|
describe '#create' do
|
||||||
let(:action) { :create }
|
let(:action) { :create }
|
||||||
|
let(:username) { 'tootctl_username' }
|
||||||
|
|
||||||
shared_examples 'a new user with given email address and username' do
|
shared_examples 'a new user with given email address and username' do
|
||||||
it 'creates user and accounts from options and displays success message' do
|
it 'creates user and accounts from options and displays success message' do
|
||||||
@ -48,18 +49,24 @@ RSpec.describe Mastodon::CLI::Accounts do
|
|||||||
end
|
end
|
||||||
|
|
||||||
def account_from_options
|
def account_from_options
|
||||||
Account.find_local('tootctl_username')
|
Account.find_local(username)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when required USERNAME and --email are provided' do
|
context 'when required USERNAME and --email are provided' do
|
||||||
let(:arguments) { ['tootctl_username'] }
|
let(:arguments) { [username] }
|
||||||
|
|
||||||
context 'with USERNAME and --email only' do
|
context 'with USERNAME and --email only' do
|
||||||
let(:options) { { email: 'tootctl@example.com' } }
|
let(:options) { { email: 'tootctl@example.com' } }
|
||||||
|
|
||||||
it_behaves_like 'a new user with given email address and username'
|
it_behaves_like 'a new user with given email address and username'
|
||||||
|
|
||||||
|
context 'with a reserved username' do
|
||||||
|
let(:username) { 'security' }
|
||||||
|
|
||||||
|
it_behaves_like 'a new user with given email address and username'
|
||||||
|
end
|
||||||
|
|
||||||
context 'with invalid --email value' do
|
context 'with invalid --email value' do
|
||||||
let(:options) { { email: 'invalid' } }
|
let(:options) { { email: 'invalid' } }
|
||||||
|
|
||||||
|
|||||||
@ -80,6 +80,7 @@ RSpec.describe CustomEmoji, :attachment_processing do
|
|||||||
|
|
||||||
describe 'Normalizations' do
|
describe 'Normalizations' do
|
||||||
describe 'domain' do
|
describe 'domain' do
|
||||||
|
it { is_expected.to normalize(:domain).from(' www.mastodon.host ').to('www.mastodon.host') }
|
||||||
it { is_expected.to normalize(:domain).from('wWw.MaStOdOn.CoM').to('www.mastodon.com') }
|
it { is_expected.to normalize(:domain).from('wWw.MaStOdOn.CoM').to('www.mastodon.com') }
|
||||||
it { is_expected.to normalize(:domain).from(nil).to(nil) }
|
it { is_expected.to normalize(:domain).from(nil).to(nil) }
|
||||||
end
|
end
|
||||||
|
|||||||
120
spec/requests/api/v1/statuses/interaction_policies_spec.rb
Normal file
120
spec/requests/api/v1/statuses/interaction_policies_spec.rb
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe 'Interaction policies', feature: :outgoing_quotes do
|
||||||
|
let(:user) { Fabricate(:user) }
|
||||||
|
let(:scopes) { 'write:statuses' }
|
||||||
|
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
|
||||||
|
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
|
||||||
|
let(:status) { Fabricate(:status, account: user.account) }
|
||||||
|
let(:params) { { quote_approval_policy: 'followers' } }
|
||||||
|
|
||||||
|
describe 'PUT /api/v1/statuses/:status_id/interaction_policy' do
|
||||||
|
subject do
|
||||||
|
put "/api/v1/statuses/#{status.id}/interaction_policy", headers: headers, params: params
|
||||||
|
end
|
||||||
|
|
||||||
|
it_behaves_like 'forbidden for wrong scope', 'read read:statuses'
|
||||||
|
|
||||||
|
context 'without an authorization header' do
|
||||||
|
let(:headers) { {} }
|
||||||
|
|
||||||
|
it 'returns http unauthorized' do
|
||||||
|
expect { subject }
|
||||||
|
.to_not(change { status.reload.quote_approval_policy })
|
||||||
|
|
||||||
|
expect(response).to have_http_status(401)
|
||||||
|
expect(response.content_type)
|
||||||
|
.to start_with('application/json')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'with a status from a different user' do
|
||||||
|
let(:status) { Fabricate(:status) }
|
||||||
|
|
||||||
|
it 'returns http unauthorized' do
|
||||||
|
expect { subject }
|
||||||
|
.to_not(change { status.reload.quote_approval_policy })
|
||||||
|
|
||||||
|
expect(response).to have_http_status(403)
|
||||||
|
expect(response.content_type)
|
||||||
|
.to start_with('application/json')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when changing the interaction policy' do
|
||||||
|
it 'changes the interaction policy, returns the updated status, and schedules distribution jobs' do
|
||||||
|
expect { subject }
|
||||||
|
.to change { status.reload.quote_approval_policy }.to(Status::QUOTE_APPROVAL_POLICY_FLAGS[:followers] << 16)
|
||||||
|
|
||||||
|
expect(response).to have_http_status(200)
|
||||||
|
expect(response.content_type)
|
||||||
|
.to start_with('application/json')
|
||||||
|
expect(response.parsed_body).to include(
|
||||||
|
'quote_approval' => match(
|
||||||
|
'automatic' => ['followers'],
|
||||||
|
'manual' => [],
|
||||||
|
'current_user' => 'automatic'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(DistributionWorker)
|
||||||
|
.to have_enqueued_sidekiq_job(status.id, { 'update' => true })
|
||||||
|
expect(ActivityPub::StatusUpdateDistributionWorker)
|
||||||
|
.to have_enqueued_sidekiq_job(status.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when not changing the interaction policy' do
|
||||||
|
let(:params) { { quote_approval_policy: 'nobody' } }
|
||||||
|
|
||||||
|
it 'keeps the interaction policy, returns the status, and does not schedule distribution jobs' do
|
||||||
|
expect { subject }
|
||||||
|
.to_not(change { status.reload.quote_approval_policy }.from(0))
|
||||||
|
|
||||||
|
expect(response).to have_http_status(200)
|
||||||
|
expect(response.content_type)
|
||||||
|
.to start_with('application/json')
|
||||||
|
expect(response.parsed_body).to include(
|
||||||
|
'quote_approval' => match(
|
||||||
|
'automatic' => [],
|
||||||
|
'manual' => [],
|
||||||
|
'current_user' => 'automatic'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(DistributionWorker)
|
||||||
|
.to_not have_enqueued_sidekiq_job
|
||||||
|
expect(ActivityPub::StatusUpdateDistributionWorker)
|
||||||
|
.to_not have_enqueued_sidekiq_job
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when trying to change the interaction policy of a private post' do
|
||||||
|
let(:status) { Fabricate(:status, account: user.account, visibility: :private) }
|
||||||
|
let(:params) { { quote_approval_policy: 'public' } }
|
||||||
|
|
||||||
|
it 'keeps the interaction policy, returns the status, and does not schedule distribution jobs' do
|
||||||
|
expect { subject }
|
||||||
|
.to_not(change { status.reload.quote_approval_policy }.from(0))
|
||||||
|
|
||||||
|
expect(response).to have_http_status(200)
|
||||||
|
expect(response.content_type)
|
||||||
|
.to start_with('application/json')
|
||||||
|
expect(response.parsed_body).to include(
|
||||||
|
'quote_approval' => match(
|
||||||
|
'automatic' => [],
|
||||||
|
'manual' => [],
|
||||||
|
'current_user' => 'automatic'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(DistributionWorker)
|
||||||
|
.to_not have_enqueued_sidekiq_job
|
||||||
|
expect(ActivityPub::StatusUpdateDistributionWorker)
|
||||||
|
.to_not have_enqueued_sidekiq_job
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -13,7 +13,10 @@ RSpec.describe ActivityPub::DeleteQuoteAuthorizationSerializer do
|
|||||||
expect(subject.deep_symbolize_keys)
|
expect(subject.deep_symbolize_keys)
|
||||||
.to include(
|
.to include(
|
||||||
actor: eq(ActivityPub::TagManager.instance.uri_for(status.account)),
|
actor: eq(ActivityPub::TagManager.instance.uri_for(status.account)),
|
||||||
object: ActivityPub::TagManager.instance.approval_uri_for(quote, check_approval: false),
|
object: a_hash_including(
|
||||||
|
type: 'QuoteAuthorization',
|
||||||
|
id: ActivityPub::TagManager.instance.approval_uri_for(quote, check_approval: false)
|
||||||
|
),
|
||||||
type: 'Delete'
|
type: 'Delete'
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|||||||
@ -316,6 +316,23 @@ RSpec.describe ActivityPub::FetchRemoteStatusService do
|
|||||||
expect(existing_status.edits).to_not be_empty
|
expect(existing_status.edits).to_not be_empty
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'with an implicit update to quoting policy' do
|
||||||
|
let(:object) do
|
||||||
|
note.merge({
|
||||||
|
'content' => existing_status.text,
|
||||||
|
'interactionPolicy' => {
|
||||||
|
'canQuote' => {
|
||||||
|
'automaticApproval' => ['https://www.w3.org/ns/activitystreams#Public'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'updates status' do
|
||||||
|
expect(existing_status.reload.quote_approval_policy).to eq(Status::QUOTE_APPROVAL_POLICY_FLAGS[:public] << 16)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -23,7 +23,7 @@ RSpec.describe 'Share page', :js, :streaming do
|
|||||||
fill_in_form
|
fill_in_form
|
||||||
|
|
||||||
expect(page)
|
expect(page)
|
||||||
.to have_css('.notification-bar-message', text: frontend_translations('compose.published.body'))
|
.to have_current_path(%r{/@bob/[0-9]+})
|
||||||
end
|
end
|
||||||
|
|
||||||
def fill_in_form
|
def fill_in_form
|
||||||
|
|||||||
@ -73,6 +73,7 @@ export const config: UserConfigFnPromise = async ({ mode, command }) => {
|
|||||||
port: 3036,
|
port: 3036,
|
||||||
},
|
},
|
||||||
build: {
|
build: {
|
||||||
|
target: 'modules',
|
||||||
commonjsOptions: { transformMixedEsModules: true },
|
commonjsOptions: { transformMixedEsModules: true },
|
||||||
chunkSizeWarningLimit: 1 * 1024 * 1024, // 1MB
|
chunkSizeWarningLimit: 1 * 1024 * 1024, // 1MB
|
||||||
sourcemap: true,
|
sourcemap: true,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user