Merge remote-tracking branch 'parent/main' into upstream-20240906
This commit is contained in:
commit
f18eabfe75
689 changed files with 4369 additions and 2434 deletions
|
@ -11,5 +11,8 @@ RUN apt-get update && \
|
||||||
export DEBIAN_FRONTEND=noninteractive && \
|
export DEBIAN_FRONTEND=noninteractive && \
|
||||||
apt-get -y install --no-install-recommends libicu-dev libidn11-dev ffmpeg imagemagick libvips42 libpam-dev
|
apt-get -y install --no-install-recommends libicu-dev libidn11-dev ffmpeg imagemagick libvips42 libpam-dev
|
||||||
|
|
||||||
|
# Disable download prompt for Corepack
|
||||||
|
ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||||
|
|
||||||
# Move welcome message to where VS Code expects it
|
# Move welcome message to where VS Code expects it
|
||||||
COPY .devcontainer/welcome-message.txt /usr/local/etc/vscode-dev-containers/first-run-notice.txt
|
COPY .devcontainer/welcome-message.txt /usr/local/etc/vscode-dev-containers/first-run-notice.txt
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
"onCreateCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
|
"onCreateCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}",
|
||||||
"postCreateCommand": "COREPACK_ENABLE_DOWNLOAD_PROMPT=0 bin/setup",
|
"postCreateCommand": "bin/setup",
|
||||||
"waitFor": "postCreateCommand",
|
"waitFor": "postCreateCommand",
|
||||||
|
|
||||||
"customizations": {
|
"customizations": {
|
||||||
|
|
|
@ -69,7 +69,7 @@ services:
|
||||||
hard: -1
|
hard: -1
|
||||||
|
|
||||||
libretranslate:
|
libretranslate:
|
||||||
image: libretranslate/libretranslate:v1.5.7
|
image: libretranslate/libretranslate:v1.6.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- lt-data:/home/libretranslate/.local
|
- lt-data:/home/libretranslate/.local
|
||||||
|
|
1
.github/renovate.json5
vendored
1
.github/renovate.json5
vendored
|
@ -7,6 +7,7 @@
|
||||||
':prConcurrentLimitNone', // Remove limit for open PRs at any time.
|
':prConcurrentLimitNone', // Remove limit for open PRs at any time.
|
||||||
':prHourlyLimit2', // Rate limit PR creation to a maximum of two per hour.
|
':prHourlyLimit2', // Rate limit PR creation to a maximum of two per hour.
|
||||||
],
|
],
|
||||||
|
rebaseWhen: 'conflicted',
|
||||||
minimumReleaseAge: '3', // Wait 3 days after the package has been published before upgrading it
|
minimumReleaseAge: '3', // Wait 3 days after the package has been published before upgrading it
|
||||||
// packageRules order is important, they are applied from top to bottom and are merged,
|
// packageRules order is important, they are applied from top to bottom and are merged,
|
||||||
// meaning the most important ones must be at the bottom, for example grouping rules
|
// meaning the most important ones must be at the bottom, for example grouping rules
|
||||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -74,3 +74,6 @@ docker-compose.override.yml
|
||||||
|
|
||||||
# Ignore dotenv .local files
|
# Ignore dotenv .local files
|
||||||
.env*.local
|
.env*.local
|
||||||
|
|
||||||
|
# Ignore local-only rspec configuration
|
||||||
|
.rspec-local
|
||||||
|
|
1
.profile
1
.profile
|
@ -1 +0,0 @@
|
||||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/app/.apt/lib/x86_64-linux-gnu:/app/.apt/usr/lib/x86_64-linux-gnu/mesa:/app/.apt/usr/lib/x86_64-linux-gnu/pulseaudio:/app/.apt/usr/lib/x86_64-linux-gnu/openblas-pthread
|
|
1
.rspec
1
.rspec
|
@ -1,3 +1,2 @@
|
||||||
--color
|
--color
|
||||||
--require spec_helper
|
--require spec_helper
|
||||||
--format Fuubar
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# This configuration was generated by
|
# This configuration was generated by
|
||||||
# `rubocop --auto-gen-config --auto-gen-only-exclude --no-offense-counts --no-auto-gen-timestamp`
|
# `rubocop --auto-gen-config --auto-gen-only-exclude --no-offense-counts --no-auto-gen-timestamp`
|
||||||
# using RuboCop version 1.65.0.
|
# using RuboCop version 1.66.1.
|
||||||
# The point is for the user to remove these configuration records
|
# The point is for the user to remove these configuration records
|
||||||
# one by one as the offenses are removed from the code base.
|
# one by one as the offenses are removed from the code base.
|
||||||
# Note that changes in the inspected code, or installation of new
|
# Note that changes in the inspected code, or installation of new
|
||||||
|
@ -39,7 +39,6 @@ Rails/OutputSafety:
|
||||||
# Configuration parameters: AllowedVars.
|
# Configuration parameters: AllowedVars.
|
||||||
Style/FetchEnvVar:
|
Style/FetchEnvVar:
|
||||||
Exclude:
|
Exclude:
|
||||||
- 'app/lib/redis_configuration.rb'
|
|
||||||
- 'app/lib/translation_service.rb'
|
- 'app/lib/translation_service.rb'
|
||||||
- 'config/environments/production.rb'
|
- 'config/environments/production.rb'
|
||||||
- 'config/initializers/2_limited_federation_mode.rb'
|
- 'config/initializers/2_limited_federation_mode.rb'
|
||||||
|
@ -48,7 +47,6 @@ Style/FetchEnvVar:
|
||||||
- 'config/initializers/devise.rb'
|
- 'config/initializers/devise.rb'
|
||||||
- 'config/initializers/paperclip.rb'
|
- 'config/initializers/paperclip.rb'
|
||||||
- 'config/initializers/vapid.rb'
|
- 'config/initializers/vapid.rb'
|
||||||
- 'lib/mastodon/redis_config.rb'
|
|
||||||
- 'lib/tasks/repo.rake'
|
- 'lib/tasks/repo.rake'
|
||||||
|
|
||||||
# This cop supports safe autocorrection (--autocorrect).
|
# This cop supports safe autocorrection (--autocorrect).
|
||||||
|
@ -97,7 +95,6 @@ Style/OptionalBooleanParameter:
|
||||||
- 'app/services/fetch_resource_service.rb'
|
- 'app/services/fetch_resource_service.rb'
|
||||||
- 'app/workers/domain_block_worker.rb'
|
- 'app/workers/domain_block_worker.rb'
|
||||||
- 'app/workers/unfollow_follow_worker.rb'
|
- 'app/workers/unfollow_follow_worker.rb'
|
||||||
- 'lib/mastodon/redis_config.rb'
|
|
||||||
|
|
||||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
# This cop supports unsafe autocorrection (--autocorrect-all).
|
||||||
# Configuration parameters: EnforcedStyle.
|
# Configuration parameters: EnforcedStyle.
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
3.3.4
|
3.3.5
|
||||||
|
|
10
Aptfile
10
Aptfile
|
@ -1,5 +1,5 @@
|
||||||
ffmpeg
|
libidn12
|
||||||
libopenblas0-pthread
|
# for idn-ruby on heroku-24 stack
|
||||||
libpq-dev
|
|
||||||
libxdamage1
|
# use https://github.com/heroku/heroku-buildpack-activestorage-preview
|
||||||
libxfixes3
|
# in place for ffmpeg and its dependent packages to reduce slag size
|
||||||
|
|
|
@ -12,7 +12,7 @@ ARG BUILDPLATFORM=${BUILDPLATFORM}
|
||||||
|
|
||||||
# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.3.x"]
|
# Ruby image to use for base image, change with [--build-arg RUBY_VERSION="3.3.x"]
|
||||||
# renovate: datasource=docker depName=docker.io/ruby
|
# renovate: datasource=docker depName=docker.io/ruby
|
||||||
ARG RUBY_VERSION="3.3.4"
|
ARG RUBY_VERSION="3.3.5"
|
||||||
# # Node version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="20"]
|
# # Node version to use in base image, change with [--build-arg NODE_MAJOR_VERSION="20"]
|
||||||
# renovate: datasource=node-version depName=node
|
# renovate: datasource=node-version depName=node
|
||||||
ARG NODE_MAJOR_VERSION="20"
|
ARG NODE_MAJOR_VERSION="20"
|
||||||
|
|
9
Gemfile
9
Gemfile
|
@ -126,9 +126,6 @@ group :test do
|
||||||
# Adds RSpec Error/Warning annotations to GitHub PRs on the Files tab
|
# Adds RSpec Error/Warning annotations to GitHub PRs on the Files tab
|
||||||
gem 'rspec-github', '~> 2.4', require: false
|
gem 'rspec-github', '~> 2.4', require: false
|
||||||
|
|
||||||
# RSpec progress bar formatter
|
|
||||||
gem 'fuubar', '~> 2.5'
|
|
||||||
|
|
||||||
# RSpec helpers for email specs
|
# RSpec helpers for email specs
|
||||||
gem 'email_spec'
|
gem 'email_spec'
|
||||||
|
|
||||||
|
@ -149,11 +146,13 @@ group :test do
|
||||||
gem 'rails-controller-testing', '~> 1.0'
|
gem 'rails-controller-testing', '~> 1.0'
|
||||||
|
|
||||||
# Validate schemas in specs
|
# Validate schemas in specs
|
||||||
gem 'json-schema', '~> 4.0'
|
gem 'json-schema', '~> 5.0'
|
||||||
|
|
||||||
# Test harness fo rack components
|
# Test harness fo rack components
|
||||||
gem 'rack-test', '~> 2.1'
|
gem 'rack-test', '~> 2.1'
|
||||||
|
|
||||||
|
gem 'shoulda-matchers'
|
||||||
|
|
||||||
# Coverage formatter for RSpec test if DISABLE_SIMPLECOV is false
|
# Coverage formatter for RSpec test if DISABLE_SIMPLECOV is false
|
||||||
gem 'simplecov', '~> 0.22', require: false
|
gem 'simplecov', '~> 0.22', require: false
|
||||||
gem 'simplecov-lcov', '~> 0.8', require: false
|
gem 'simplecov-lcov', '~> 0.8', require: false
|
||||||
|
@ -210,7 +209,7 @@ group :development, :test do
|
||||||
gem 'test-prof'
|
gem 'test-prof'
|
||||||
|
|
||||||
# RSpec runner for rails
|
# RSpec runner for rails
|
||||||
gem 'rspec-rails', '~> 6.0'
|
gem 'rspec-rails', '~> 7.0'
|
||||||
end
|
end
|
||||||
|
|
||||||
group :production do
|
group :production do
|
||||||
|
|
111
Gemfile.lock
111
Gemfile.lock
|
@ -100,17 +100,17 @@ GEM
|
||||||
attr_required (1.0.2)
|
attr_required (1.0.2)
|
||||||
awrence (1.2.1)
|
awrence (1.2.1)
|
||||||
aws-eventstream (1.3.0)
|
aws-eventstream (1.3.0)
|
||||||
aws-partitions (1.966.0)
|
aws-partitions (1.970.0)
|
||||||
aws-sdk-core (3.201.5)
|
aws-sdk-core (3.203.0)
|
||||||
aws-eventstream (~> 1, >= 1.3.0)
|
aws-eventstream (~> 1, >= 1.3.0)
|
||||||
aws-partitions (~> 1, >= 1.651.0)
|
aws-partitions (~> 1, >= 1.651.0)
|
||||||
aws-sigv4 (~> 1.9)
|
aws-sigv4 (~> 1.9)
|
||||||
jmespath (~> 1, >= 1.6.1)
|
jmespath (~> 1, >= 1.6.1)
|
||||||
aws-sdk-kms (1.88.0)
|
aws-sdk-kms (1.89.0)
|
||||||
aws-sdk-core (~> 3, >= 3.201.0)
|
aws-sdk-core (~> 3, >= 3.203.0)
|
||||||
aws-sigv4 (~> 1.5)
|
aws-sigv4 (~> 1.5)
|
||||||
aws-sdk-s3 (1.159.0)
|
aws-sdk-s3 (1.160.0)
|
||||||
aws-sdk-core (~> 3, >= 3.201.0)
|
aws-sdk-core (~> 3, >= 3.203.0)
|
||||||
aws-sdk-kms (~> 1)
|
aws-sdk-kms (~> 1)
|
||||||
aws-sigv4 (~> 1.5)
|
aws-sigv4 (~> 1.5)
|
||||||
aws-sigv4 (1.9.1)
|
aws-sigv4 (1.9.1)
|
||||||
|
@ -164,20 +164,22 @@ GEM
|
||||||
activesupport (>= 5.2)
|
activesupport (>= 5.2)
|
||||||
elasticsearch (>= 7.14.0, < 8)
|
elasticsearch (>= 7.14.0, < 8)
|
||||||
elasticsearch-dsl
|
elasticsearch-dsl
|
||||||
|
childprocess (5.1.0)
|
||||||
|
logger (~> 1.5)
|
||||||
chunky_png (1.4.0)
|
chunky_png (1.4.0)
|
||||||
climate_control (1.2.0)
|
climate_control (1.2.0)
|
||||||
cocoon (1.2.15)
|
cocoon (1.2.15)
|
||||||
color_diff (0.1)
|
color_diff (0.1)
|
||||||
concurrent-ruby (1.3.4)
|
concurrent-ruby (1.3.4)
|
||||||
connection_pool (2.4.1)
|
connection_pool (2.4.1)
|
||||||
cose (1.3.0)
|
cose (1.3.1)
|
||||||
cbor (~> 0.5.9)
|
cbor (~> 0.5.9)
|
||||||
openssl-signature_algorithm (~> 1.0)
|
openssl-signature_algorithm (~> 1.0)
|
||||||
crack (1.0.0)
|
crack (1.0.0)
|
||||||
bigdecimal
|
bigdecimal
|
||||||
rexml
|
rexml
|
||||||
crass (1.0.6)
|
crass (1.0.6)
|
||||||
css_parser (1.17.1)
|
css_parser (1.19.0)
|
||||||
addressable
|
addressable
|
||||||
csv (3.3.0)
|
csv (3.3.0)
|
||||||
database_cleaner-active_record (2.2.0)
|
database_cleaner-active_record (2.2.0)
|
||||||
|
@ -206,20 +208,21 @@ GEM
|
||||||
diff-lcs (1.5.1)
|
diff-lcs (1.5.1)
|
||||||
discard (1.3.0)
|
discard (1.3.0)
|
||||||
activerecord (>= 4.2, < 8)
|
activerecord (>= 4.2, < 8)
|
||||||
docile (1.4.0)
|
docile (1.4.1)
|
||||||
domain_name (0.6.20240107)
|
domain_name (0.6.20240107)
|
||||||
doorkeeper (5.7.1)
|
doorkeeper (5.7.1)
|
||||||
railties (>= 5)
|
railties (>= 5)
|
||||||
dotenv (3.1.2)
|
dotenv (3.1.2)
|
||||||
drb (2.2.1)
|
drb (2.2.1)
|
||||||
ed25519 (1.3.0)
|
ed25519 (1.3.0)
|
||||||
elasticsearch (7.17.10)
|
elasticsearch (7.17.11)
|
||||||
elasticsearch-api (= 7.17.10)
|
elasticsearch-api (= 7.17.11)
|
||||||
elasticsearch-transport (= 7.17.10)
|
elasticsearch-transport (= 7.17.11)
|
||||||
elasticsearch-api (7.17.10)
|
elasticsearch-api (7.17.11)
|
||||||
multi_json
|
multi_json
|
||||||
elasticsearch-dsl (0.1.10)
|
elasticsearch-dsl (0.1.10)
|
||||||
elasticsearch-transport (7.17.10)
|
elasticsearch-transport (7.17.11)
|
||||||
|
base64
|
||||||
faraday (>= 1, < 3)
|
faraday (>= 1, < 3)
|
||||||
multi_json
|
multi_json
|
||||||
email_spec (2.3.0)
|
email_spec (2.3.0)
|
||||||
|
@ -251,7 +254,7 @@ GEM
|
||||||
faraday-httpclient (1.0.1)
|
faraday-httpclient (1.0.1)
|
||||||
faraday-multipart (1.0.4)
|
faraday-multipart (1.0.4)
|
||||||
multipart-post (~> 2)
|
multipart-post (~> 2)
|
||||||
faraday-net_http (1.0.1)
|
faraday-net_http (1.0.2)
|
||||||
faraday-net_http_persistent (1.2.0)
|
faraday-net_http_persistent (1.2.0)
|
||||||
faraday-patron (1.0.0)
|
faraday-patron (1.0.0)
|
||||||
faraday-rack (1.0.0)
|
faraday-rack (1.0.0)
|
||||||
|
@ -285,9 +288,6 @@ GEM
|
||||||
fugit (1.11.1)
|
fugit (1.11.1)
|
||||||
et-orbi (~> 1, >= 1.2.11)
|
et-orbi (~> 1, >= 1.2.11)
|
||||||
raabro (~> 1.4)
|
raabro (~> 1.4)
|
||||||
fuubar (2.5.1)
|
|
||||||
rspec-core (~> 3.0)
|
|
||||||
ruby-progressbar (~> 1.4)
|
|
||||||
globalid (1.2.1)
|
globalid (1.2.1)
|
||||||
activesupport (>= 6.1)
|
activesupport (>= 6.1)
|
||||||
google-protobuf (3.25.4)
|
google-protobuf (3.25.4)
|
||||||
|
@ -308,11 +308,12 @@ GEM
|
||||||
rainbow
|
rainbow
|
||||||
rubocop (>= 1.0)
|
rubocop (>= 1.0)
|
||||||
sysexits (~> 1.1)
|
sysexits (~> 1.1)
|
||||||
hashdiff (1.1.0)
|
hashdiff (1.1.1)
|
||||||
hashie (5.0.0)
|
hashie (5.0.0)
|
||||||
hcaptcha (7.1.0)
|
hcaptcha (7.1.0)
|
||||||
json
|
json
|
||||||
highline (3.0.1)
|
highline (3.1.1)
|
||||||
|
reline
|
||||||
hiredis (0.6.3)
|
hiredis (0.6.3)
|
||||||
hkdf (0.3.0)
|
hkdf (0.3.0)
|
||||||
htmlentities (4.3.4)
|
htmlentities (4.3.4)
|
||||||
|
@ -343,7 +344,7 @@ GEM
|
||||||
rainbow (>= 2.2.2, < 4.0)
|
rainbow (>= 2.2.2, < 4.0)
|
||||||
terminal-table (>= 1.5.1)
|
terminal-table (>= 1.5.1)
|
||||||
idn-ruby (0.1.5)
|
idn-ruby (0.1.5)
|
||||||
inline_svg (1.9.0)
|
inline_svg (1.10.0)
|
||||||
activesupport (>= 3.0)
|
activesupport (>= 3.0)
|
||||||
nokogiri (>= 1.6)
|
nokogiri (>= 1.6)
|
||||||
io-console (0.7.2)
|
io-console (0.7.2)
|
||||||
|
@ -369,8 +370,8 @@ GEM
|
||||||
json-ld-preloaded (3.3.0)
|
json-ld-preloaded (3.3.0)
|
||||||
json-ld (~> 3.3)
|
json-ld (~> 3.3)
|
||||||
rdf (~> 3.3)
|
rdf (~> 3.3)
|
||||||
json-schema (4.3.1)
|
json-schema (5.0.0)
|
||||||
addressable (>= 2.8)
|
addressable (~> 2.8)
|
||||||
jsonapi-renderer (0.2.2)
|
jsonapi-renderer (0.2.2)
|
||||||
jwt (2.7.1)
|
jwt (2.7.1)
|
||||||
kaminari (1.2.2)
|
kaminari (1.2.2)
|
||||||
|
@ -392,8 +393,9 @@ GEM
|
||||||
mime-types
|
mime-types
|
||||||
terrapin (>= 0.6.0, < 2.0)
|
terrapin (>= 0.6.0, < 2.0)
|
||||||
language_server-protocol (3.17.0.3)
|
language_server-protocol (3.17.0.3)
|
||||||
launchy (2.5.2)
|
launchy (3.0.1)
|
||||||
addressable (~> 2.8)
|
addressable (~> 2.8)
|
||||||
|
childprocess (~> 5.0)
|
||||||
letter_opener (1.10.0)
|
letter_opener (1.10.0)
|
||||||
launchy (>= 2.2, < 4)
|
launchy (>= 2.2, < 4)
|
||||||
letter_opener_web (3.0.0)
|
letter_opener_web (3.0.0)
|
||||||
|
@ -430,19 +432,19 @@ GEM
|
||||||
memory_profiler (1.0.2)
|
memory_profiler (1.0.2)
|
||||||
mime-types (3.5.2)
|
mime-types (3.5.2)
|
||||||
mime-types-data (~> 3.2015)
|
mime-types-data (~> 3.2015)
|
||||||
mime-types-data (3.2024.0702)
|
mime-types-data (3.2024.0820)
|
||||||
mini_mime (1.1.5)
|
mini_mime (1.1.5)
|
||||||
mini_portile2 (2.8.7)
|
mini_portile2 (2.8.7)
|
||||||
minitest (5.25.1)
|
minitest (5.25.1)
|
||||||
msgpack (1.7.2)
|
msgpack (1.7.2)
|
||||||
multi_json (1.15.0)
|
multi_json (1.15.0)
|
||||||
multipart-post (2.4.0)
|
multipart-post (2.4.1)
|
||||||
mutex_m (0.2.0)
|
mutex_m (0.2.0)
|
||||||
net-http (0.4.1)
|
net-http (0.4.1)
|
||||||
uri
|
uri
|
||||||
net-http-persistent (4.0.2)
|
net-http-persistent (4.0.2)
|
||||||
connection_pool (~> 2.2)
|
connection_pool (~> 2.2)
|
||||||
net-imap (0.4.14)
|
net-imap (0.4.15)
|
||||||
date
|
date
|
||||||
net-protocol
|
net-protocol
|
||||||
net-ldap (0.19.0)
|
net-ldap (0.19.0)
|
||||||
|
@ -581,8 +583,8 @@ GEM
|
||||||
orm_adapter (0.5.0)
|
orm_adapter (0.5.0)
|
||||||
ostruct (0.6.0)
|
ostruct (0.6.0)
|
||||||
ox (2.14.18)
|
ox (2.14.18)
|
||||||
parallel (1.25.1)
|
parallel (1.26.3)
|
||||||
parser (3.3.4.0)
|
parser (3.3.5.0)
|
||||||
ast (~> 2.4.1)
|
ast (~> 2.4.1)
|
||||||
racc
|
racc
|
||||||
parslet (2.0.0)
|
parslet (2.0.0)
|
||||||
|
@ -591,9 +593,9 @@ GEM
|
||||||
pg (1.5.7)
|
pg (1.5.7)
|
||||||
pghero (3.6.0)
|
pghero (3.6.0)
|
||||||
activerecord (>= 6.1)
|
activerecord (>= 6.1)
|
||||||
premailer (1.23.0)
|
premailer (1.27.0)
|
||||||
addressable
|
addressable
|
||||||
css_parser (>= 1.12.0)
|
css_parser (>= 1.19.0)
|
||||||
htmlentities (>= 4.0.0)
|
htmlentities (>= 4.0.0)
|
||||||
premailer-rails (1.12.0)
|
premailer-rails (1.12.0)
|
||||||
actionmailer (>= 3)
|
actionmailer (>= 3)
|
||||||
|
@ -696,10 +698,9 @@ GEM
|
||||||
responders (3.1.1)
|
responders (3.1.1)
|
||||||
actionpack (>= 5.2)
|
actionpack (>= 5.2)
|
||||||
railties (>= 5.2)
|
railties (>= 5.2)
|
||||||
rexml (3.3.6)
|
rexml (3.3.7)
|
||||||
strscan
|
|
||||||
rotp (6.3.0)
|
rotp (6.3.0)
|
||||||
rouge (4.2.1)
|
rouge (4.3.0)
|
||||||
rpam2 (4.0.2)
|
rpam2 (4.0.2)
|
||||||
rqrcode (2.2.0)
|
rqrcode (2.2.0)
|
||||||
chunky_png (~> 1.0)
|
chunky_png (~> 1.0)
|
||||||
|
@ -709,7 +710,7 @@ GEM
|
||||||
rspec-core (~> 3.13.0)
|
rspec-core (~> 3.13.0)
|
||||||
rspec-expectations (~> 3.13.0)
|
rspec-expectations (~> 3.13.0)
|
||||||
rspec-mocks (~> 3.13.0)
|
rspec-mocks (~> 3.13.0)
|
||||||
rspec-core (3.13.0)
|
rspec-core (3.13.1)
|
||||||
rspec-support (~> 3.13.0)
|
rspec-support (~> 3.13.0)
|
||||||
rspec-expectations (3.13.2)
|
rspec-expectations (3.13.2)
|
||||||
diff-lcs (>= 1.2.0, < 2.0)
|
diff-lcs (>= 1.2.0, < 2.0)
|
||||||
|
@ -719,10 +720,10 @@ GEM
|
||||||
rspec-mocks (3.13.1)
|
rspec-mocks (3.13.1)
|
||||||
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 (6.1.4)
|
rspec-rails (7.0.1)
|
||||||
actionpack (>= 6.1)
|
actionpack (>= 7.0)
|
||||||
activesupport (>= 6.1)
|
activesupport (>= 7.0)
|
||||||
railties (>= 6.1)
|
railties (>= 7.0)
|
||||||
rspec-core (~> 3.13)
|
rspec-core (~> 3.13)
|
||||||
rspec-expectations (~> 3.13)
|
rspec-expectations (~> 3.13)
|
||||||
rspec-mocks (~> 3.13)
|
rspec-mocks (~> 3.13)
|
||||||
|
@ -733,18 +734,17 @@ GEM
|
||||||
rspec-mocks (~> 3.0)
|
rspec-mocks (~> 3.0)
|
||||||
sidekiq (>= 5, < 8)
|
sidekiq (>= 5, < 8)
|
||||||
rspec-support (3.13.1)
|
rspec-support (3.13.1)
|
||||||
rubocop (1.65.1)
|
rubocop (1.66.1)
|
||||||
json (~> 2.3)
|
json (~> 2.3)
|
||||||
language_server-protocol (>= 3.17.0)
|
language_server-protocol (>= 3.17.0)
|
||||||
parallel (~> 1.10)
|
parallel (~> 1.10)
|
||||||
parser (>= 3.3.0.2)
|
parser (>= 3.3.0.2)
|
||||||
rainbow (>= 2.2.2, < 4.0)
|
rainbow (>= 2.2.2, < 4.0)
|
||||||
regexp_parser (>= 2.4, < 3.0)
|
regexp_parser (>= 2.4, < 3.0)
|
||||||
rexml (>= 3.2.5, < 4.0)
|
rubocop-ast (>= 1.32.2, < 2.0)
|
||||||
rubocop-ast (>= 1.31.1, < 2.0)
|
|
||||||
ruby-progressbar (~> 1.7)
|
ruby-progressbar (~> 1.7)
|
||||||
unicode-display_width (>= 2.4.0, < 3.0)
|
unicode-display_width (>= 2.4.0, < 3.0)
|
||||||
rubocop-ast (1.31.3)
|
rubocop-ast (1.32.3)
|
||||||
parser (>= 3.3.1.0)
|
parser (>= 3.3.1.0)
|
||||||
rubocop-capybara (2.21.0)
|
rubocop-capybara (2.21.0)
|
||||||
rubocop (~> 1.41)
|
rubocop (~> 1.41)
|
||||||
|
@ -788,6 +788,8 @@ GEM
|
||||||
rubyzip (>= 1.2.2, < 3.0)
|
rubyzip (>= 1.2.2, < 3.0)
|
||||||
websocket (~> 1.0)
|
websocket (~> 1.0)
|
||||||
semantic_range (3.0.0)
|
semantic_range (3.0.0)
|
||||||
|
shoulda-matchers (6.4.0)
|
||||||
|
activesupport (>= 5.2.0)
|
||||||
sidekiq (6.5.12)
|
sidekiq (6.5.12)
|
||||||
connection_pool (>= 2.2.5, < 3)
|
connection_pool (>= 2.2.5, < 3)
|
||||||
rack (~> 2.0)
|
rack (~> 2.0)
|
||||||
|
@ -822,7 +824,6 @@ GEM
|
||||||
stringio (3.1.1)
|
stringio (3.1.1)
|
||||||
strong_migrations (2.0.0)
|
strong_migrations (2.0.0)
|
||||||
activerecord (>= 6.1)
|
activerecord (>= 6.1)
|
||||||
strscan (3.1.0)
|
|
||||||
swd (1.3.0)
|
swd (1.3.0)
|
||||||
activesupport (>= 3)
|
activesupport (>= 3)
|
||||||
attr_required (>= 0.0.5)
|
attr_required (>= 0.0.5)
|
||||||
|
@ -833,11 +834,11 @@ GEM
|
||||||
unicode-display_width (>= 1.1.1, < 3)
|
unicode-display_width (>= 1.1.1, < 3)
|
||||||
terrapin (1.0.1)
|
terrapin (1.0.1)
|
||||||
climate_control
|
climate_control
|
||||||
test-prof (1.4.1)
|
test-prof (1.4.2)
|
||||||
thor (1.3.1)
|
thor (1.3.2)
|
||||||
tilt (2.3.0)
|
tilt (2.4.0)
|
||||||
timeout (0.4.1)
|
timeout (0.4.1)
|
||||||
tpm-key_attestation (0.12.0)
|
tpm-key_attestation (0.12.1)
|
||||||
bindata (~> 2.4)
|
bindata (~> 2.4)
|
||||||
openssl (> 2.0)
|
openssl (> 2.0)
|
||||||
openssl-signature_algorithm (~> 1.0)
|
openssl-signature_algorithm (~> 1.0)
|
||||||
|
@ -862,7 +863,7 @@ GEM
|
||||||
unf_ext
|
unf_ext
|
||||||
unf_ext (0.0.9.1)
|
unf_ext (0.0.9.1)
|
||||||
unicode-display_width (2.5.0)
|
unicode-display_width (2.5.0)
|
||||||
uri (0.13.0)
|
uri (0.13.1)
|
||||||
validate_email (0.1.6)
|
validate_email (0.1.6)
|
||||||
activemodel (>= 3.0)
|
activemodel (>= 3.0)
|
||||||
mail (>= 2.2.5)
|
mail (>= 2.2.5)
|
||||||
|
@ -901,7 +902,7 @@ GEM
|
||||||
xorcist (1.1.3)
|
xorcist (1.1.3)
|
||||||
xpath (3.2.0)
|
xpath (3.2.0)
|
||||||
nokogiri (~> 1.8)
|
nokogiri (~> 1.8)
|
||||||
zeitwerk (2.6.17)
|
zeitwerk (2.6.18)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
|
@ -944,7 +945,6 @@ DEPENDENCIES
|
||||||
flatware-rspec
|
flatware-rspec
|
||||||
fog-core (<= 2.5.0)
|
fog-core (<= 2.5.0)
|
||||||
fog-openstack (~> 1.0)
|
fog-openstack (~> 1.0)
|
||||||
fuubar (~> 2.5)
|
|
||||||
haml-rails (~> 2.0)
|
haml-rails (~> 2.0)
|
||||||
haml_lint
|
haml_lint
|
||||||
hcaptcha (~> 7.1)
|
hcaptcha (~> 7.1)
|
||||||
|
@ -960,7 +960,7 @@ DEPENDENCIES
|
||||||
irb (~> 1.8)
|
irb (~> 1.8)
|
||||||
json-ld
|
json-ld
|
||||||
json-ld-preloaded (~> 3.2)
|
json-ld-preloaded (~> 3.2)
|
||||||
json-schema (~> 4.0)
|
json-schema (~> 5.0)
|
||||||
kaminari (~> 1.2)
|
kaminari (~> 1.2)
|
||||||
kt-paperclip (~> 7.2)
|
kt-paperclip (~> 7.2)
|
||||||
letter_opener (~> 1.8)
|
letter_opener (~> 1.8)
|
||||||
|
@ -1019,7 +1019,7 @@ DEPENDENCIES
|
||||||
redis-namespace (~> 1.10)
|
redis-namespace (~> 1.10)
|
||||||
rqrcode (~> 2.2)
|
rqrcode (~> 2.2)
|
||||||
rspec-github (~> 2.4)
|
rspec-github (~> 2.4)
|
||||||
rspec-rails (~> 6.0)
|
rspec-rails (~> 7.0)
|
||||||
rspec-sidekiq (~> 5.0)
|
rspec-sidekiq (~> 5.0)
|
||||||
rubocop
|
rubocop
|
||||||
rubocop-capybara
|
rubocop-capybara
|
||||||
|
@ -1034,6 +1034,7 @@ DEPENDENCIES
|
||||||
sanitize (~> 6.0)
|
sanitize (~> 6.0)
|
||||||
scenic (~> 1.7)
|
scenic (~> 1.7)
|
||||||
selenium-webdriver
|
selenium-webdriver
|
||||||
|
shoulda-matchers
|
||||||
sidekiq (~> 6.5)
|
sidekiq (~> 6.5)
|
||||||
sidekiq-bulk (~> 0.2.0)
|
sidekiq-bulk (~> 0.2.0)
|
||||||
sidekiq-scheduler (~> 5.0)
|
sidekiq-scheduler (~> 5.0)
|
||||||
|
@ -1057,7 +1058,7 @@ DEPENDENCIES
|
||||||
xorcist (~> 1.1)
|
xorcist (~> 1.1)
|
||||||
|
|
||||||
RUBY VERSION
|
RUBY VERSION
|
||||||
ruby 3.3.2p78
|
ruby 3.3.4p94
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.5.11
|
2.5.18
|
||||||
|
|
2
Procfile
2
Procfile
|
@ -11,4 +11,4 @@ worker: bundle exec sidekiq
|
||||||
#
|
#
|
||||||
# and let the main app use the separate app:
|
# and let the main app use the separate app:
|
||||||
#
|
#
|
||||||
# heroku config:set STREAMING_API_BASE_URL=wss://<streaming-app>.herokuapp.com -a <main-app>
|
# heroku config:set STREAMING_API_BASE_URL=wss://<streaming-app-random>.herokuapp.com -a <main-app>
|
||||||
|
|
9
app.json
9
app.json
|
@ -90,9 +90,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"buildpacks": [
|
"buildpacks": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/heroku/heroku-buildpack-activestorage-preview"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"url": "https://github.com/heroku/heroku-buildpack-apt"
|
"url": "https://github.com/heroku/heroku-buildpack-apt"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"url": "heroku/nodejs"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"url": "heroku/ruby"
|
"url": "heroku/ruby"
|
||||||
}
|
}
|
||||||
|
@ -100,5 +106,6 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postdeploy": "bundle exec rails db:migrate && bundle exec rails db:seed"
|
"postdeploy": "bundle exec rails db:migrate && bundle exec rails db:seed"
|
||||||
},
|
},
|
||||||
"addons": ["heroku-postgresql", "heroku-redis"]
|
"addons": ["heroku-postgresql", "heroku-redis"],
|
||||||
|
"stack": "heroku-24"
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Api::V2Alpha::Notifications::AccountsController < Api::BaseController
|
||||||
|
before_action -> { doorkeeper_authorize! :read, :'read:notifications' }
|
||||||
|
before_action :require_user!
|
||||||
|
before_action :set_notifications!
|
||||||
|
after_action :insert_pagination_headers, only: :index
|
||||||
|
|
||||||
|
def index
|
||||||
|
@accounts = load_accounts
|
||||||
|
render json: @accounts, each_serializer: REST::AccountSerializer
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def load_accounts
|
||||||
|
@paginated_notifications.map(&:from_account)
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_notifications!
|
||||||
|
@paginated_notifications = begin
|
||||||
|
current_account
|
||||||
|
.notifications
|
||||||
|
.without_suspended
|
||||||
|
.where(group_key: params[:notification_group_key])
|
||||||
|
.includes(from_account: [:account_stat, :user])
|
||||||
|
.paginate_by_max_id(
|
||||||
|
limit_param(DEFAULT_ACCOUNTS_LIMIT),
|
||||||
|
params[:max_id],
|
||||||
|
params[:since_id]
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def next_path
|
||||||
|
api_v2_alpha_notification_accounts_url pagination_params(max_id: pagination_max_id) if records_continue?
|
||||||
|
end
|
||||||
|
|
||||||
|
def prev_path
|
||||||
|
api_v2_alpha_notification_accounts_url pagination_params(min_id: pagination_since_id) unless @paginated_notifications.empty?
|
||||||
|
end
|
||||||
|
|
||||||
|
def pagination_collection
|
||||||
|
@paginated_notifications
|
||||||
|
end
|
||||||
|
|
||||||
|
def records_continue?
|
||||||
|
@paginated_notifications.size == limit_param(DEFAULT_ACCOUNTS_LIMIT)
|
||||||
|
end
|
||||||
|
end
|
|
@ -13,7 +13,6 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
||||||
def index
|
def index
|
||||||
with_read_replica do
|
with_read_replica do
|
||||||
@notifications = load_notifications
|
@notifications = load_notifications
|
||||||
@group_metadata = load_group_metadata
|
|
||||||
@grouped_notifications = load_grouped_notifications
|
@grouped_notifications = load_grouped_notifications
|
||||||
@relationships = StatusRelationshipsPresenter.new(target_statuses_from_notifications, current_user&.account_id)
|
@relationships = StatusRelationshipsPresenter.new(target_statuses_from_notifications, current_user&.account_id)
|
||||||
@presenter = GroupedNotificationsPresenter.new(@grouped_notifications, expand_accounts: expand_accounts_param)
|
@presenter = GroupedNotificationsPresenter.new(@grouped_notifications, expand_accounts: expand_accounts_param)
|
||||||
|
@ -34,7 +33,7 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
||||||
'app.notification_grouping.expand_accounts_param' => expand_accounts_param
|
'app.notification_grouping.expand_accounts_param' => expand_accounts_param
|
||||||
)
|
)
|
||||||
|
|
||||||
render json: @presenter, serializer: REST::DedupNotificationGroupSerializer, relationships: @relationships, group_metadata: @group_metadata, expand_accounts: expand_accounts_param
|
render json: @presenter, serializer: REST::DedupNotificationGroupSerializer, relationships: @relationships, expand_accounts: expand_accounts_param
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -47,8 +46,8 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@notification = current_account.notifications.without_suspended.find_by!(group_key: params[:id])
|
@notification = current_account.notifications.without_suspended.find_by!(group_key: params[:group_key])
|
||||||
presenter = GroupedNotificationsPresenter.new([NotificationGroup.from_notification(@notification)])
|
presenter = GroupedNotificationsPresenter.new(NotificationGroup.from_notifications([@notification]))
|
||||||
render json: presenter, serializer: REST::DedupNotificationGroupSerializer
|
render json: presenter, serializer: REST::DedupNotificationGroupSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -58,7 +57,7 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
||||||
end
|
end
|
||||||
|
|
||||||
def dismiss
|
def dismiss
|
||||||
current_account.notifications.where(group_key: params[:id]).destroy_all
|
current_account.notifications.where(group_key: params[:group_key]).destroy_all
|
||||||
render_empty
|
render_empty
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -77,22 +76,11 @@ class Api::V2Alpha::NotificationsController < Api::BaseController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_group_metadata
|
|
||||||
return {} if @notifications.empty?
|
|
||||||
|
|
||||||
MastodonOTELTracer.in_span('Api::V2Alpha::NotificationsController#load_group_metadata') do
|
|
||||||
browserable_account_notifications
|
|
||||||
.where(group_key: @notifications.filter_map(&:group_key))
|
|
||||||
.where(id: (@notifications.last.id)..(@notifications.first.id))
|
|
||||||
.group(:group_key)
|
|
||||||
.pluck(:group_key, 'min(notifications.id) as min_id', 'max(notifications.id) as max_id', 'max(notifications.created_at) as latest_notification_at')
|
|
||||||
.to_h { |group_key, min_id, max_id, latest_notification_at| [group_key, { min_id: min_id, max_id: max_id, latest_notification_at: latest_notification_at }] }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def load_grouped_notifications
|
def load_grouped_notifications
|
||||||
|
return [] if @notifications.empty?
|
||||||
|
|
||||||
MastodonOTELTracer.in_span('Api::V2Alpha::NotificationsController#load_grouped_notifications') do
|
MastodonOTELTracer.in_span('Api::V2Alpha::NotificationsController#load_grouped_notifications') do
|
||||||
@notifications.map { |notification| NotificationGroup.from_notification(notification, max_id: @group_metadata.dig(notification.group_key, :max_id), grouped_types: params[:grouped_types]) }
|
NotificationGroup.from_notifications(@notifications, pagination_range: (@notifications.last.id)..(@notifications.first.id), grouped_types: params[:grouped_types])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ module AccountControllerConcern
|
||||||
webfinger_account_link,
|
webfinger_account_link,
|
||||||
actor_url_link,
|
actor_url_link,
|
||||||
]
|
]
|
||||||
)
|
).to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
def webfinger_account_link
|
def webfinger_account_link
|
||||||
|
|
|
@ -19,7 +19,7 @@ module Api::Pagination
|
||||||
links = []
|
links = []
|
||||||
links << [next_path, [%w(rel next)]] if next_path
|
links << [next_path, [%w(rel next)]] if next_path
|
||||||
links << [prev_path, [%w(rel prev)]] if prev_path
|
links << [prev_path, [%w(rel prev)]] if prev_path
|
||||||
response.headers['Link'] = LinkHeader.new(links) unless links.empty?
|
response.headers['Link'] = LinkHeader.new(links).to_s unless links.empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
def require_valid_pagination_options!
|
def require_valid_pagination_options!
|
||||||
|
|
|
@ -56,7 +56,9 @@ class StatusesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_link_headers
|
def set_link_headers
|
||||||
response.headers['Link'] = LinkHeader.new([[ActivityPub::TagManager.instance.uri_for(@status), [%w(rel alternate), %w(type application/activity+json)]]])
|
response.headers['Link'] = LinkHeader.new(
|
||||||
|
[[ActivityPub::TagManager.instance.uri_for(@status), [%w(rel alternate), %w(type application/activity+json)]]]
|
||||||
|
).to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_status
|
def set_status
|
||||||
|
|
|
@ -108,11 +108,16 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def material_symbol(icon, attributes = {})
|
def material_symbol(icon, attributes = {})
|
||||||
inline_svg_tag(
|
safe_join(
|
||||||
"400-24px/#{icon}.svg",
|
[
|
||||||
class: ['icon', "material-#{icon}"].concat(attributes[:class].to_s.split),
|
inline_svg_tag(
|
||||||
role: :img,
|
"400-24px/#{icon}.svg",
|
||||||
data: attributes[:data]
|
class: ['icon', "material-#{icon}"].concat(attributes[:class].to_s.split),
|
||||||
|
role: :img,
|
||||||
|
data: attributes[:data]
|
||||||
|
),
|
||||||
|
' ',
|
||||||
|
]
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -208,14 +208,6 @@ module JsonLdHelper
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def merge_context(context, new_context)
|
|
||||||
if context.is_a?(Array)
|
|
||||||
context << new_context
|
|
||||||
else
|
|
||||||
[context, new_context]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def response_successful?(response)
|
def response_successful?(response)
|
||||||
(200...300).cover?(response.code)
|
(200...300).cover?(response.code)
|
||||||
end
|
end
|
||||||
|
|
|
@ -238,9 +238,7 @@ module LanguagesHelper
|
||||||
|
|
||||||
# Helper for self.sorted_locale_keys
|
# Helper for self.sorted_locale_keys
|
||||||
private_class_method def self.locale_name_for_sorting(locale)
|
private_class_method def self.locale_name_for_sorting(locale)
|
||||||
if locale.blank? || locale == 'und'
|
if (supported_locale = SUPPORTED_LOCALES[locale.to_sym])
|
||||||
'000'
|
|
||||||
elsif (supported_locale = SUPPORTED_LOCALES[locale.to_sym])
|
|
||||||
ASCIIFolding.new.fold(supported_locale[1]).downcase
|
ASCIIFolding.new.fold(supported_locale[1]).downcase
|
||||||
elsif (regional_locale = REGIONAL_LOCALE_NAMES[locale.to_sym])
|
elsif (regional_locale = REGIONAL_LOCALE_NAMES[locale.to_sym])
|
||||||
ASCIIFolding.new.fold(regional_locale).downcase
|
ASCIIFolding.new.fold(regional_locale).downcase
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
import { saveSettings } from './settings';
|
|
||||||
|
|
||||||
export const LANGUAGE_USE = 'LANGUAGE_USE';
|
|
||||||
|
|
||||||
export const useLanguage = language => dispatch => {
|
|
||||||
dispatch({
|
|
||||||
type: LANGUAGE_USE,
|
|
||||||
language,
|
|
||||||
});
|
|
||||||
|
|
||||||
dispatch(saveSettings());
|
|
||||||
};
|
|
|
@ -18,7 +18,7 @@ import {
|
||||||
selectSettingsNotificationsQuickFilterActive,
|
selectSettingsNotificationsQuickFilterActive,
|
||||||
selectSettingsNotificationsShows,
|
selectSettingsNotificationsShows,
|
||||||
} from 'mastodon/selectors/settings';
|
} from 'mastodon/selectors/settings';
|
||||||
import type { AppDispatch } from 'mastodon/store';
|
import type { AppDispatch, RootState } from 'mastodon/store';
|
||||||
import {
|
import {
|
||||||
createAppAsyncThunk,
|
createAppAsyncThunk,
|
||||||
createDataLoadingThunk,
|
createDataLoadingThunk,
|
||||||
|
@ -32,6 +32,14 @@ function excludeAllTypesExcept(filter: string) {
|
||||||
return allNotificationTypes.filter((item) => item !== filter);
|
return allNotificationTypes.filter((item) => item !== filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getExcludedTypes(state: RootState) {
|
||||||
|
const activeFilter = selectSettingsNotificationsQuickFilterActive(state);
|
||||||
|
|
||||||
|
return activeFilter === 'all'
|
||||||
|
? selectSettingsNotificationsExcludedTypes(state)
|
||||||
|
: excludeAllTypesExcept(activeFilter);
|
||||||
|
}
|
||||||
|
|
||||||
function dispatchAssociatedRecords(
|
function dispatchAssociatedRecords(
|
||||||
dispatch: AppDispatch,
|
dispatch: AppDispatch,
|
||||||
notifications: ApiNotificationGroupJSON[] | ApiNotificationJSON[],
|
notifications: ApiNotificationGroupJSON[] | ApiNotificationJSON[],
|
||||||
|
@ -62,17 +70,8 @@ function dispatchAssociatedRecords(
|
||||||
|
|
||||||
export const fetchNotifications = createDataLoadingThunk(
|
export const fetchNotifications = createDataLoadingThunk(
|
||||||
'notificationGroups/fetch',
|
'notificationGroups/fetch',
|
||||||
async (_params, { getState }) => {
|
async (_params, { getState }) =>
|
||||||
const activeFilter =
|
apiFetchNotifications({ exclude_types: getExcludedTypes(getState()) }),
|
||||||
selectSettingsNotificationsQuickFilterActive(getState());
|
|
||||||
|
|
||||||
return apiFetchNotifications({
|
|
||||||
exclude_types:
|
|
||||||
activeFilter === 'all'
|
|
||||||
? selectSettingsNotificationsExcludedTypes(getState())
|
|
||||||
: excludeAllTypesExcept(activeFilter),
|
|
||||||
});
|
|
||||||
},
|
|
||||||
({ notifications, accounts, statuses }, { dispatch }) => {
|
({ notifications, accounts, statuses }, { dispatch }) => {
|
||||||
dispatch(importFetchedAccounts(accounts));
|
dispatch(importFetchedAccounts(accounts));
|
||||||
dispatch(importFetchedStatuses(statuses));
|
dispatch(importFetchedStatuses(statuses));
|
||||||
|
@ -92,9 +91,11 @@ export const fetchNotifications = createDataLoadingThunk(
|
||||||
|
|
||||||
export const fetchNotificationsGap = createDataLoadingThunk(
|
export const fetchNotificationsGap = createDataLoadingThunk(
|
||||||
'notificationGroups/fetchGap',
|
'notificationGroups/fetchGap',
|
||||||
async (params: { gap: NotificationGap }) =>
|
async (params: { gap: NotificationGap }, { getState }) =>
|
||||||
apiFetchNotifications({ max_id: params.gap.maxId }),
|
apiFetchNotifications({
|
||||||
|
max_id: params.gap.maxId,
|
||||||
|
exclude_types: getExcludedTypes(getState()),
|
||||||
|
}),
|
||||||
({ notifications, accounts, statuses }, { dispatch }) => {
|
({ notifications, accounts, statuses }, { dispatch }) => {
|
||||||
dispatch(importFetchedAccounts(accounts));
|
dispatch(importFetchedAccounts(accounts));
|
||||||
dispatch(importFetchedStatuses(statuses));
|
dispatch(importFetchedStatuses(statuses));
|
||||||
|
@ -109,6 +110,7 @@ export const pollRecentNotifications = createDataLoadingThunk(
|
||||||
async (_params, { getState }) => {
|
async (_params, { getState }) => {
|
||||||
return apiFetchNotifications({
|
return apiFetchNotifications({
|
||||||
max_id: undefined,
|
max_id: undefined,
|
||||||
|
exclude_types: getExcludedTypes(getState()),
|
||||||
// In slow mode, we don't want to include notifications that duplicate the already-displayed ones
|
// In slow mode, we don't want to include notifications that duplicate the already-displayed ones
|
||||||
since_id: usePendingItems
|
since_id: usePendingItems
|
||||||
? getState().notificationGroups.groups.find(
|
? getState().notificationGroups.groups.find(
|
||||||
|
@ -183,7 +185,6 @@ export const setNotificationsFilter = createAppAsyncThunk(
|
||||||
path: ['notifications', 'quickFilter', 'active'],
|
path: ['notifications', 'quickFilter', 'active'],
|
||||||
value: filterType,
|
value: filterType,
|
||||||
});
|
});
|
||||||
// dispatch(expandNotifications({ forceLoad: true }));
|
|
||||||
void dispatch(fetchNotifications());
|
void dispatch(fetchNotifications());
|
||||||
dispatch(saveSettings());
|
dispatch(saveSettings());
|
||||||
},
|
},
|
||||||
|
|
|
@ -240,7 +240,6 @@ class LanguageDropdown extends PureComponent {
|
||||||
frequentlyUsedLanguages: PropTypes.arrayOf(PropTypes.string),
|
frequentlyUsedLanguages: PropTypes.arrayOf(PropTypes.string),
|
||||||
intl: PropTypes.object.isRequired,
|
intl: PropTypes.object.isRequired,
|
||||||
onChange: PropTypes.func,
|
onChange: PropTypes.func,
|
||||||
onClose: PropTypes.func,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
state = {
|
state = {
|
||||||
|
@ -257,14 +256,11 @@ class LanguageDropdown extends PureComponent {
|
||||||
};
|
};
|
||||||
|
|
||||||
handleClose = () => {
|
handleClose = () => {
|
||||||
const { value, onClose } = this.props;
|
|
||||||
|
|
||||||
if (this.state.open && this.activeElement) {
|
if (this.state.open && this.activeElement) {
|
||||||
this.activeElement.focus({ preventScroll: true });
|
this.activeElement.focus({ preventScroll: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setState({ open: false });
|
this.setState({ open: false });
|
||||||
onClose(value);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
handleChange = value => {
|
handleChange = value => {
|
||||||
|
|
|
@ -4,7 +4,6 @@ import { connect } from 'react-redux';
|
||||||
|
|
||||||
|
|
||||||
import { changeComposeLanguage } from 'mastodon/actions/compose';
|
import { changeComposeLanguage } from 'mastodon/actions/compose';
|
||||||
import { useLanguage } from 'mastodon/actions/languages';
|
|
||||||
|
|
||||||
import LanguageDropdown from '../components/language_dropdown';
|
import LanguageDropdown from '../components/language_dropdown';
|
||||||
|
|
||||||
|
@ -28,11 +27,6 @@ const mapDispatchToProps = dispatch => ({
|
||||||
dispatch(changeComposeLanguage(value));
|
dispatch(changeComposeLanguage(value));
|
||||||
},
|
},
|
||||||
|
|
||||||
onClose (value) {
|
|
||||||
// eslint-disable-next-line react-hooks/rules-of-hooks -- this is not a react hook
|
|
||||||
dispatch(useLanguage(value));
|
|
||||||
},
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
export default connect(mapStateToProps, mapDispatchToProps)(LanguageDropdown);
|
export default connect(mapStateToProps, mapDispatchToProps)(LanguageDropdown);
|
||||||
|
|
|
@ -170,7 +170,7 @@ export const Conversation = ({ conversation, scrollKey, onMoveUp, onMoveDown })
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<HotKeys handlers={handlers}>
|
<HotKeys handlers={handlers}>
|
||||||
<div className={classNames('conversation focusable muted', { 'conversation--unread': unread })} tabIndex={0}>
|
<div className={classNames('conversation focusable muted', { unread })} tabIndex={0}>
|
||||||
<div className='conversation__avatar' onClick={handleClick} role='presentation'>
|
<div className='conversation__avatar' onClick={handleClick} role='presentation'>
|
||||||
<AvatarComposite accounts={accounts} size={48} />
|
<AvatarComposite accounts={accounts} size={48} />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -34,12 +34,12 @@ import { RelationshipsSeveranceEvent } from './relationships_severance_event';
|
||||||
import Report from './report';
|
import Report from './report';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
favourite: { id: 'notification.favourite', defaultMessage: '{name} favorited your status' },
|
favourite: { id: 'notification.favourite', defaultMessage: '{name} favorited your post' },
|
||||||
emojiReaction: { id: 'notification.emoji_reaction', defaultMessage: '{name} reacted your status with emoji' },
|
emojiReaction: { id: 'notification.emoji_reaction', defaultMessage: '{name} reacted your status with emoji' },
|
||||||
follow: { id: 'notification.follow', defaultMessage: '{name} followed you' },
|
follow: { id: 'notification.follow', defaultMessage: '{name} followed you' },
|
||||||
ownPoll: { id: 'notification.own_poll', defaultMessage: 'Your poll has ended' },
|
ownPoll: { id: 'notification.own_poll', defaultMessage: 'Your poll has ended' },
|
||||||
poll: { id: 'notification.poll', defaultMessage: 'A poll you voted in has ended' },
|
poll: { id: 'notification.poll', defaultMessage: 'A poll you voted in has ended' },
|
||||||
reblog: { id: 'notification.reblog', defaultMessage: '{name} boosted your status' },
|
reblog: { id: 'notification.reblog', defaultMessage: '{name} boosted your post' },
|
||||||
status: { id: 'notification.status', defaultMessage: '{name} just posted' },
|
status: { id: 'notification.status', defaultMessage: '{name} just posted' },
|
||||||
listStatus: { id: 'notification.list_status', defaultMessage: '{name} post is added to {listName}' },
|
listStatus: { id: 'notification.list_status', defaultMessage: '{name} post is added to {listName}' },
|
||||||
statusReference: { id: 'notification.status_reference', defaultMessage: '{name} quoted your post' },
|
statusReference: { id: 'notification.status_reference', defaultMessage: '{name} quoted your post' },
|
||||||
|
@ -207,7 +207,7 @@ class Notification extends ImmutablePureComponent {
|
||||||
<Icon id='star' icon={StarIcon} className='star-icon' />
|
<Icon id='star' icon={StarIcon} className='star-icon' />
|
||||||
|
|
||||||
<span title={notification.get('created_at')}>
|
<span title={notification.get('created_at')}>
|
||||||
<FormattedMessage id='notification.favourite' defaultMessage='{name} favorited your status' values={{ name: link }} />
|
<FormattedMessage id='notification.favourite' defaultMessage='{name} favorited your post' values={{ name: link }} />
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -272,7 +272,7 @@ class Notification extends ImmutablePureComponent {
|
||||||
<Icon id='retweet' icon={RepeatIcon} />
|
<Icon id='retweet' icon={RepeatIcon} />
|
||||||
|
|
||||||
<span title={notification.get('created_at')}>
|
<span title={notification.get('created_at')}>
|
||||||
<FormattedMessage id='notification.reblog' defaultMessage='{name} boosted your status' values={{ name: link }} />
|
<FormattedMessage id='notification.reblog' defaultMessage='{name} boosted your post' values={{ name: link }} />
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -42,19 +42,11 @@ export const NotificationAdminReport: React.FC<{
|
||||||
|
|
||||||
if (!account || !targetAccount) return null;
|
if (!account || !targetAccount) return null;
|
||||||
|
|
||||||
|
const domain = account.acct.split('@')[1];
|
||||||
|
|
||||||
const values = {
|
const values = {
|
||||||
name: (
|
name: <bdi>{domain ?? `@${account.acct}`}</bdi>,
|
||||||
<bdi
|
target: <bdi>@{targetAccount.acct}</bdi>,
|
||||||
dangerouslySetInnerHTML={{ __html: account.get('display_name_html') }}
|
|
||||||
/>
|
|
||||||
),
|
|
||||||
target: (
|
|
||||||
<bdi
|
|
||||||
dangerouslySetInnerHTML={{
|
|
||||||
__html: targetAccount.get('display_name_html'),
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
),
|
|
||||||
category: intl.formatMessage(messages[report.category]),
|
category: intl.formatMessage(messages[report.category]),
|
||||||
count: report.status_ids.length,
|
count: report.status_ids.length,
|
||||||
};
|
};
|
||||||
|
|
|
@ -14,7 +14,7 @@ const labelRenderer: LabelRenderer = (displayedName, total, seeMoreHref) => {
|
||||||
return (
|
return (
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='notification.favourite'
|
id='notification.favourite'
|
||||||
defaultMessage='{name} favorited your status'
|
defaultMessage='{name} favorited your post'
|
||||||
values={{ name: displayedName }}
|
values={{ name: displayedName }}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|
|
@ -11,7 +11,7 @@ import type { IconProp } from 'mastodon/components/icon';
|
||||||
import { Icon } from 'mastodon/components/icon';
|
import { Icon } from 'mastodon/components/icon';
|
||||||
import { RelativeTimestamp } from 'mastodon/components/relative_timestamp';
|
import { RelativeTimestamp } from 'mastodon/components/relative_timestamp';
|
||||||
import type { EmojiReactionGroup } from 'mastodon/models/notification_group';
|
import type { EmojiReactionGroup } from 'mastodon/models/notification_group';
|
||||||
import { useAppDispatch } from 'mastodon/store';
|
import { useAppSelector, useAppDispatch } from 'mastodon/store';
|
||||||
|
|
||||||
import { AvatarGroup } from './avatar_group';
|
import { AvatarGroup } from './avatar_group';
|
||||||
import { DisplayedName } from './displayed_name';
|
import { DisplayedName } from './displayed_name';
|
||||||
|
@ -64,6 +64,10 @@ export const NotificationGroupWithStatus: React.FC<{
|
||||||
[labelRenderer, accountIds, count, labelSeeMoreHref],
|
[labelRenderer, accountIds, count, labelSeeMoreHref],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const isPrivateMention = useAppSelector(
|
||||||
|
(state) => state.statuses.getIn([statusId, 'visibility']) === 'direct',
|
||||||
|
);
|
||||||
|
|
||||||
const handlers = useMemo(
|
const handlers = useMemo(
|
||||||
() => ({
|
() => ({
|
||||||
open: () => {
|
open: () => {
|
||||||
|
@ -83,7 +87,10 @@ export const NotificationGroupWithStatus: React.FC<{
|
||||||
role='button'
|
role='button'
|
||||||
className={classNames(
|
className={classNames(
|
||||||
`notification-group focusable notification-group--${type}`,
|
`notification-group focusable notification-group--${type}`,
|
||||||
{ 'notification-group--unread': unread },
|
{
|
||||||
|
'notification-group--unread': unread,
|
||||||
|
'notification-group--direct': isPrivateMention,
|
||||||
|
},
|
||||||
)}
|
)}
|
||||||
tabIndex={0}
|
tabIndex={0}
|
||||||
>
|
>
|
||||||
|
|
|
@ -14,7 +14,7 @@ const labelRenderer: LabelRenderer = (displayedName, total, seeMoreHref) => {
|
||||||
return (
|
return (
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='notification.reblog'
|
id='notification.reblog'
|
||||||
defaultMessage='{name} boosted your status'
|
defaultMessage='{name} boosted your post'
|
||||||
values={{ name: displayedName }}
|
values={{ name: displayedName }}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|
|
@ -95,6 +95,8 @@
|
||||||
"block_modal.title": "أتريد حظر هذا المستخدم؟",
|
"block_modal.title": "أتريد حظر هذا المستخدم؟",
|
||||||
"block_modal.you_wont_see_mentions": "لن تر المنشورات التي يُشار فيهم إليه.",
|
"block_modal.you_wont_see_mentions": "لن تر المنشورات التي يُشار فيهم إليه.",
|
||||||
"boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة",
|
"boost_modal.combo": "يُمكنك الضّغط على {combo} لتخطي هذا في المرة المُقبلة",
|
||||||
|
"boost_modal.reblog": "أتريد إعادة نشر المنشور؟",
|
||||||
|
"boost_modal.undo_reblog": "أتريد إلغاء إعادة نشر المنشور؟",
|
||||||
"bundle_column_error.copy_stacktrace": "انسخ تقرير الخطأ",
|
"bundle_column_error.copy_stacktrace": "انسخ تقرير الخطأ",
|
||||||
"bundle_column_error.error.body": "لا يمكن تقديم الصفحة المطلوبة. قد يكون بسبب خطأ في التعليمات البرمجية، أو مشكلة توافق المتصفح.",
|
"bundle_column_error.error.body": "لا يمكن تقديم الصفحة المطلوبة. قد يكون بسبب خطأ في التعليمات البرمجية، أو مشكلة توافق المتصفح.",
|
||||||
"bundle_column_error.error.title": "أوه لا!",
|
"bundle_column_error.error.title": "أوه لا!",
|
||||||
|
@ -230,7 +232,7 @@
|
||||||
"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": "إليك ما سيبدو عليه:",
|
||||||
|
@ -290,7 +292,7 @@
|
||||||
"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": "منتهية الصلاحيّة",
|
||||||
|
@ -348,6 +350,9 @@
|
||||||
"hashtag.follow": "اتبع الوسم",
|
"hashtag.follow": "اتبع الوسم",
|
||||||
"hashtag.unfollow": "ألغِ متابعة الوسم",
|
"hashtag.unfollow": "ألغِ متابعة الوسم",
|
||||||
"hashtags.and_other": "…و {count, plural, zero {} one {# واحد آخر} two {# اثنان آخران} few {# آخرون} many {# آخَرًا}other {# آخرون}}",
|
"hashtags.and_other": "…و {count, plural, zero {} one {# واحد آخر} two {# اثنان آخران} few {# آخرون} many {# آخَرًا}other {# آخرون}}",
|
||||||
|
"hints.profiles.see_more_followers": "عرض المزيد من المتابعين على {domain}",
|
||||||
|
"hints.profiles.see_more_posts": "عرض المزيد من المنشورات من {domain}",
|
||||||
|
"hints.threads.see_more": "اطلع على المزيد من الردود على {domain}",
|
||||||
"home.column_settings.show_reblogs": "اعرض المعاد نشرها",
|
"home.column_settings.show_reblogs": "اعرض المعاد نشرها",
|
||||||
"home.column_settings.show_replies": "اعرض الردود",
|
"home.column_settings.show_replies": "اعرض الردود",
|
||||||
"home.hide_announcements": "إخفاء الإعلانات",
|
"home.hide_announcements": "إخفاء الإعلانات",
|
||||||
|
@ -356,8 +361,10 @@
|
||||||
"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.ignore": "تجاهل الإشعارات",
|
"ignore_notifications_modal.ignore": "تجاهل الإشعارات",
|
||||||
"ignore_notifications_modal.limited_accounts_title": "تجاهل الإشعارات من الحسابات التي هي تحت الإشراف؟",
|
"ignore_notifications_modal.limited_accounts_title": "تجاهل الإشعارات من الحسابات التي هي تحت الإشراف؟",
|
||||||
|
"ignore_notifications_modal.new_accounts_title": "تجاهل الإشعارات الصادرة من الحسابات الجديدة؟",
|
||||||
"interaction_modal.description.favourite": "بفضل حساب على ماستدون، يمكنك إضافة هذا المنشور إلى مفضلتك لإبلاغ الناشر عن تقديرك وكذا للاحتفاظ بالمنشور إلى وقت لاحق.",
|
"interaction_modal.description.favourite": "بفضل حساب على ماستدون، يمكنك إضافة هذا المنشور إلى مفضلتك لإبلاغ الناشر عن تقديرك وكذا للاحتفاظ بالمنشور إلى وقت لاحق.",
|
||||||
"interaction_modal.description.follow": "بفضل حساب في ماستدون، يمكنك متابعة {name} وتلقي منشوراته في موجزات خيطك الرئيس.",
|
"interaction_modal.description.follow": "بفضل حساب في ماستدون، يمكنك متابعة {name} وتلقي منشوراته في موجزات خيطك الرئيس.",
|
||||||
"interaction_modal.description.reblog": "مع حساب في ماستدون، يمكنك تعزيز هذا المنشور ومشاركته مع مُتابِعيك.",
|
"interaction_modal.description.reblog": "مع حساب في ماستدون، يمكنك تعزيز هذا المنشور ومشاركته مع مُتابِعيك.",
|
||||||
|
@ -447,6 +454,7 @@
|
||||||
"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.administration": "الإدارة",
|
||||||
"navigation_bar.advanced_interface": "افتحه في واجهة الويب المتقدمة",
|
"navigation_bar.advanced_interface": "افتحه في واجهة الويب المتقدمة",
|
||||||
"navigation_bar.blocks": "الحسابات المحجوبة",
|
"navigation_bar.blocks": "الحسابات المحجوبة",
|
||||||
"navigation_bar.bookmarks": "الفواصل المرجعية",
|
"navigation_bar.bookmarks": "الفواصل المرجعية",
|
||||||
|
@ -463,6 +471,7 @@
|
||||||
"navigation_bar.follows_and_followers": "المتابِعون والمتابَعون",
|
"navigation_bar.follows_and_followers": "المتابِعون والمتابَعون",
|
||||||
"navigation_bar.lists": "القوائم",
|
"navigation_bar.lists": "القوائم",
|
||||||
"navigation_bar.logout": "خروج",
|
"navigation_bar.logout": "خروج",
|
||||||
|
"navigation_bar.moderation": "الإشراف",
|
||||||
"navigation_bar.mutes": "الحسابات المكتومة",
|
"navigation_bar.mutes": "الحسابات المكتومة",
|
||||||
"navigation_bar.opened_in_classic_interface": "تُفتَح المنشورات والحسابات وغيرها من الصفحات الخاصة بشكل مبدئي على واجهة الويب التقليدية.",
|
"navigation_bar.opened_in_classic_interface": "تُفتَح المنشورات والحسابات وغيرها من الصفحات الخاصة بشكل مبدئي على واجهة الويب التقليدية.",
|
||||||
"navigation_bar.personal": "شخصي",
|
"navigation_bar.personal": "شخصي",
|
||||||
|
@ -484,7 +493,7 @@
|
||||||
"notification.mention": "إشارة",
|
"notification.mention": "إشارة",
|
||||||
"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": "لقد تلقى حسابك تحذيرا بالإشراف.",
|
||||||
|
@ -502,12 +511,15 @@
|
||||||
"notification.status": "{name} نشر للتو",
|
"notification.status": "{name} نشر للتو",
|
||||||
"notification.update": "عدّلَ {name} منشورًا",
|
"notification.update": "عدّلَ {name} منشورًا",
|
||||||
"notification_requests.accept": "موافقة",
|
"notification_requests.accept": "موافقة",
|
||||||
|
"notification_requests.confirm_accept_multiple.title": "قبول طلبات الإشعار؟",
|
||||||
|
"notification_requests.confirm_dismiss_multiple.title": "تجاهل طلبات الإشعار؟",
|
||||||
"notification_requests.dismiss": "تخطي",
|
"notification_requests.dismiss": "تخطي",
|
||||||
"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.notifications_from": "إشعارات من {name}",
|
"notification_requests.notifications_from": "إشعارات من {name}",
|
||||||
"notification_requests.title": "الإشعارات المصفاة",
|
"notification_requests.title": "الإشعارات المصفاة",
|
||||||
|
"notification_requests.view": "عرض الإشعارات",
|
||||||
"notifications.clear": "مسح الإشعارات",
|
"notifications.clear": "مسح الإشعارات",
|
||||||
"notifications.clear_confirmation": "متأكد من أنك تود مسح جميع الإشعارات الخاصة بك و المتلقاة إلى حد الآن ؟",
|
"notifications.clear_confirmation": "متأكد من أنك تود مسح جميع الإشعارات الخاصة بك و المتلقاة إلى حد الآن ؟",
|
||||||
"notifications.clear_title": "أترغب في مسح الإشعارات؟",
|
"notifications.clear_title": "أترغب في مسح الإشعارات؟",
|
||||||
|
@ -520,7 +532,7 @@
|
||||||
"notifications.column_settings.filter_bar.advanced": "عرض جميع الفئات",
|
"notifications.column_settings.filter_bar.advanced": "عرض جميع الفئات",
|
||||||
"notifications.column_settings.filter_bar.category": "شريط التصفية السريعة",
|
"notifications.column_settings.filter_bar.category": "شريط التصفية السريعة",
|
||||||
"notifications.column_settings.follow": "متابعُون جُدُد:",
|
"notifications.column_settings.follow": "متابعُون جُدُد:",
|
||||||
"notifications.column_settings.follow_request": "الطلبات الجديد لِمتابَعتك:",
|
"notifications.column_settings.follow_request": "الطلبات الجديدة لِمتابَعتك:",
|
||||||
"notifications.column_settings.mention": "الإشارات:",
|
"notifications.column_settings.mention": "الإشارات:",
|
||||||
"notifications.column_settings.poll": "نتائج استطلاع الرأي:",
|
"notifications.column_settings.poll": "نتائج استطلاع الرأي:",
|
||||||
"notifications.column_settings.push": "الإشعارات",
|
"notifications.column_settings.push": "الإشعارات",
|
||||||
|
@ -747,7 +759,7 @@
|
||||||
"status.history.edited": "عدله {name} {date}",
|
"status.history.edited": "عدله {name} {date}",
|
||||||
"status.load_more": "حمّل المزيد",
|
"status.load_more": "حمّل المزيد",
|
||||||
"status.media.open": "اضغط للفتح",
|
"status.media.open": "اضغط للفتح",
|
||||||
"status.media.show": "اضغط للإظهار",
|
"status.media.show": "اضغط لإظهاره",
|
||||||
"status.media_hidden": "وسائط مخفية",
|
"status.media_hidden": "وسائط مخفية",
|
||||||
"status.mention": "أذكُر @{name}",
|
"status.mention": "أذكُر @{name}",
|
||||||
"status.more": "المزيد",
|
"status.more": "المزيد",
|
||||||
|
|
|
@ -97,6 +97,8 @@
|
||||||
"block_modal.title": "Блокирате ли потребителя?",
|
"block_modal.title": "Блокирате ли потребителя?",
|
||||||
"block_modal.you_wont_see_mentions": "Няма да виждате публикациите, които ги споменават.",
|
"block_modal.you_wont_see_mentions": "Няма да виждате публикациите, които ги споменават.",
|
||||||
"boost_modal.combo": "Можете да натиснете {combo}, за да пропуснете това следващия път",
|
"boost_modal.combo": "Можете да натиснете {combo}, за да пропуснете това следващия път",
|
||||||
|
"boost_modal.reblog": "Подсилвате ли публикация?",
|
||||||
|
"boost_modal.undo_reblog": "Без подсилване на публикация ли?",
|
||||||
"bundle_column_error.copy_stacktrace": "Копиране на доклада за грешката",
|
"bundle_column_error.copy_stacktrace": "Копиране на доклада за грешката",
|
||||||
"bundle_column_error.error.body": "Заявената страница не може да се изобрази. Това може да е заради грешка в кода ни или проблем със съвместимостта на браузъра.",
|
"bundle_column_error.error.body": "Заявената страница не може да се изобрази. Това може да е заради грешка в кода ни или проблем със съвместимостта на браузъра.",
|
||||||
"bundle_column_error.error.title": "О, не!",
|
"bundle_column_error.error.title": "О, не!",
|
||||||
|
@ -349,6 +351,14 @@
|
||||||
"hashtag.follow": "Следване на хаштаг",
|
"hashtag.follow": "Следване на хаштаг",
|
||||||
"hashtag.unfollow": "Спиране на следване на хаштаг",
|
"hashtag.unfollow": "Спиране на следване на хаштаг",
|
||||||
"hashtags.and_other": "…и {count, plural, other {# още}}",
|
"hashtags.and_other": "…и {count, plural, other {# още}}",
|
||||||
|
"hints.profiles.followers_may_be_missing": "Последователи за този профил може да липсват.",
|
||||||
|
"hints.profiles.follows_may_be_missing": "Последванията за този профил може да липсват.",
|
||||||
|
"hints.profiles.posts_may_be_missing": "Някои публикации от този профил може да липсват.",
|
||||||
|
"hints.profiles.see_more_followers": "Преглед на още последователи на {domain}",
|
||||||
|
"hints.profiles.see_more_follows": "Преглед на още последвания на {domain}",
|
||||||
|
"hints.profiles.see_more_posts": "Преглед на още публикации на {domain}",
|
||||||
|
"hints.threads.replies_may_be_missing": "Отговори от други сървъри може да липсват.",
|
||||||
|
"hints.threads.see_more": "Преглед на още отговори на {domain}",
|
||||||
"home.column_settings.show_reblogs": "Показване на подсилванията",
|
"home.column_settings.show_reblogs": "Показване на подсилванията",
|
||||||
"home.column_settings.show_replies": "Показване на отговорите",
|
"home.column_settings.show_replies": "Показване на отговорите",
|
||||||
"home.hide_announcements": "Скриване на оповестяванията",
|
"home.hide_announcements": "Скриване на оповестяванията",
|
||||||
|
@ -446,6 +456,7 @@
|
||||||
"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.administration": "Администрация",
|
||||||
"navigation_bar.advanced_interface": "Отваряне в разширен уебинтерфейс",
|
"navigation_bar.advanced_interface": "Отваряне в разширен уебинтерфейс",
|
||||||
"navigation_bar.blocks": "Блокирани потребители",
|
"navigation_bar.blocks": "Блокирани потребители",
|
||||||
"navigation_bar.bookmarks": "Отметки",
|
"navigation_bar.bookmarks": "Отметки",
|
||||||
|
@ -462,6 +473,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Последвания и последователи",
|
"navigation_bar.follows_and_followers": "Последвания и последователи",
|
||||||
"navigation_bar.lists": "Списъци",
|
"navigation_bar.lists": "Списъци",
|
||||||
"navigation_bar.logout": "Излизане",
|
"navigation_bar.logout": "Излизане",
|
||||||
|
"navigation_bar.moderation": "Модериране",
|
||||||
"navigation_bar.mutes": "Заглушени потребители",
|
"navigation_bar.mutes": "Заглушени потребители",
|
||||||
"navigation_bar.opened_in_classic_interface": "Публикации, акаунти и други особени страници се отварят по подразбиране в класическия мрежови интерфейс.",
|
"navigation_bar.opened_in_classic_interface": "Публикации, акаунти и други особени страници се отварят по подразбиране в класическия мрежови интерфейс.",
|
||||||
"navigation_bar.personal": "Лично",
|
"navigation_bar.personal": "Лично",
|
||||||
|
@ -477,10 +489,17 @@
|
||||||
"notification.admin.report_statuses": "{name} докладва {target} за {category}",
|
"notification.admin.report_statuses": "{name} докладва {target} за {category}",
|
||||||
"notification.admin.report_statuses_other": "{name} докладва {target}",
|
"notification.admin.report_statuses_other": "{name} докладва {target}",
|
||||||
"notification.admin.sign_up": "{name} се регистрира",
|
"notification.admin.sign_up": "{name} се регистрира",
|
||||||
|
"notification.admin.sign_up.name_and_others": "{name} и {count, plural, one {# друг} other {# други}} се регистрираха",
|
||||||
"notification.favourite": "{name} направи любима публикацията ви",
|
"notification.favourite": "{name} направи любима публикацията ви",
|
||||||
|
"notification.favourite.name_and_others_with_link": "{name} и <a>{count, plural, one {# друг} other {# други}}</a> направиха любима ваша публикация",
|
||||||
"notification.follow": "{name} ви последва",
|
"notification.follow": "{name} ви последва",
|
||||||
|
"notification.follow.name_and_others": "{name} и {count, plural, one {# друг} other {# други}} ви последваха",
|
||||||
"notification.follow_request": "{name} поиска да ви последва",
|
"notification.follow_request": "{name} поиска да ви последва",
|
||||||
|
"notification.follow_request.name_and_others": "{name} и {count, plural, one {# друг} other {# други}} поискаха да ви последват",
|
||||||
"notification.label.mention": "Споменаване",
|
"notification.label.mention": "Споменаване",
|
||||||
|
"notification.label.private_mention": "Частно споменаване",
|
||||||
|
"notification.label.private_reply": "Личен отговор",
|
||||||
|
"notification.label.reply": "Отговор",
|
||||||
"notification.mention": "Споменаване",
|
"notification.mention": "Споменаване",
|
||||||
"notification.moderation-warning.learn_more": "Научете повече",
|
"notification.moderation-warning.learn_more": "Научете повече",
|
||||||
"notification.moderation_warning": "Получихте предупреждение за модериране",
|
"notification.moderation_warning": "Получихте предупреждение за модериране",
|
||||||
|
@ -494,6 +513,7 @@
|
||||||
"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 {# друг} 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 {# акаунт, който} other {# акаунта, които}} следвате.",
|
"notification.relationships_severance_event.domain_block": "Администратор от {from} блокира {target}, вкючващо {followersCount} от последователите ви и {followingCount, plural, one {# акаунт, който} other {# акаунта, които}} следвате.",
|
||||||
|
@ -502,6 +522,9 @@
|
||||||
"notification.status": "{name} току-що публикува",
|
"notification.status": "{name} току-що публикува",
|
||||||
"notification.update": "{name} промени публикация",
|
"notification.update": "{name} промени публикация",
|
||||||
"notification_requests.accept": "Приемам",
|
"notification_requests.accept": "Приемам",
|
||||||
|
"notification_requests.confirm_accept_multiple.message": "На път сте да приемете {count, plural, one {едно известие за заявка} other {# известия за заявки}}. Наистина ли искате да продължите?",
|
||||||
|
"notification_requests.confirm_accept_multiple.title": "Приемате ли заявките за известие?",
|
||||||
|
"notification_requests.confirm_dismiss_multiple.title": "Отхвърляте ли заявките за известие?",
|
||||||
"notification_requests.dismiss": "Отхвърлям",
|
"notification_requests.dismiss": "Отхвърлям",
|
||||||
"notification_requests.edit_selection": "Редактиране",
|
"notification_requests.edit_selection": "Редактиране",
|
||||||
"notification_requests.exit_selection": "Готово",
|
"notification_requests.exit_selection": "Готово",
|
||||||
|
@ -561,6 +584,7 @@
|
||||||
"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_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": "Никога не пропускайте нищо",
|
||||||
|
|
|
@ -67,7 +67,7 @@
|
||||||
"account.unblock_domain": "Malbloki la domajnon {domain}",
|
"account.unblock_domain": "Malbloki la domajnon {domain}",
|
||||||
"account.unblock_short": "Malbloki",
|
"account.unblock_short": "Malbloki",
|
||||||
"account.unendorse": "Ne plu rekomendi ĉe la profilo",
|
"account.unendorse": "Ne plu rekomendi ĉe la profilo",
|
||||||
"account.unfollow": "Malaboni",
|
"account.unfollow": "Ĉesi sekvi",
|
||||||
"account.unmute": "Ne plu silentigi @{name}",
|
"account.unmute": "Ne plu silentigi @{name}",
|
||||||
"account.unmute_notifications_short": "Malsilentigu Sciigojn",
|
"account.unmute_notifications_short": "Malsilentigu Sciigojn",
|
||||||
"account.unmute_short": "Ne plu silentigi",
|
"account.unmute_short": "Ne plu silentigi",
|
||||||
|
|
|
@ -97,6 +97,8 @@
|
||||||
"block_modal.title": "¿Bloquear usuario?",
|
"block_modal.title": "¿Bloquear usuario?",
|
||||||
"block_modal.you_wont_see_mentions": "No verás publicaciones que los mencionen.",
|
"block_modal.you_wont_see_mentions": "No verás publicaciones que los mencionen.",
|
||||||
"boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez",
|
"boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez",
|
||||||
|
"boost_modal.reblog": "¿Impulsar la publicación?",
|
||||||
|
"boost_modal.undo_reblog": "¿Dejar de impulsar la publicación?",
|
||||||
"bundle_column_error.copy_stacktrace": "Copiar informe de error",
|
"bundle_column_error.copy_stacktrace": "Copiar informe de error",
|
||||||
"bundle_column_error.error.body": "La página solicitada no pudo ser renderizada. Podría deberse a un error en nuestro código o a un problema de compatibilidad con el navegador.",
|
"bundle_column_error.error.body": "La página solicitada no pudo ser renderizada. Podría deberse a un error en nuestro código o a un problema de compatibilidad con el navegador.",
|
||||||
"bundle_column_error.error.title": "¡Oh, no!",
|
"bundle_column_error.error.title": "¡Oh, no!",
|
||||||
|
@ -467,6 +469,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "No verás publicaciones que los mencionen.",
|
"mute_modal.you_wont_see_mentions": "No verás publicaciones que los mencionen.",
|
||||||
"mute_modal.you_wont_see_posts": "Todavía pueden ver tus publicaciones, pero tú no verás las de ellos.",
|
"mute_modal.you_wont_see_posts": "Todavía pueden ver tus publicaciones, pero tú no verás las de ellos.",
|
||||||
"navigation_bar.about": "Acerca de",
|
"navigation_bar.about": "Acerca de",
|
||||||
|
"navigation_bar.administration": "Administración",
|
||||||
"navigation_bar.advanced_interface": "Abrir en interfaz web avanzada",
|
"navigation_bar.advanced_interface": "Abrir en interfaz web avanzada",
|
||||||
"navigation_bar.blocks": "Usuarios bloqueados",
|
"navigation_bar.blocks": "Usuarios bloqueados",
|
||||||
"navigation_bar.bookmarks": "Marcadores",
|
"navigation_bar.bookmarks": "Marcadores",
|
||||||
|
@ -483,6 +486,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Siguiendo y seguidores",
|
"navigation_bar.follows_and_followers": "Siguiendo y seguidores",
|
||||||
"navigation_bar.lists": "Listas",
|
"navigation_bar.lists": "Listas",
|
||||||
"navigation_bar.logout": "Cerrar sesión",
|
"navigation_bar.logout": "Cerrar sesión",
|
||||||
|
"navigation_bar.moderation": "Moderación",
|
||||||
"navigation_bar.mutes": "Usuarios silenciados",
|
"navigation_bar.mutes": "Usuarios silenciados",
|
||||||
"navigation_bar.opened_in_classic_interface": "Publicaciones, cuentas y otras páginas específicas se abren por defecto en la interfaz web clásica.",
|
"navigation_bar.opened_in_classic_interface": "Publicaciones, cuentas y otras páginas específicas se abren por defecto en la interfaz web clásica.",
|
||||||
"navigation_bar.personal": "Personal",
|
"navigation_bar.personal": "Personal",
|
||||||
|
|
|
@ -97,6 +97,8 @@
|
||||||
"block_modal.title": "¿Bloquear usuario?",
|
"block_modal.title": "¿Bloquear usuario?",
|
||||||
"block_modal.you_wont_see_mentions": "No verás mensajes que los mencionen.",
|
"block_modal.you_wont_see_mentions": "No verás mensajes que los mencionen.",
|
||||||
"boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez",
|
"boost_modal.combo": "Puedes hacer clic en {combo} para saltar este aviso la próxima vez",
|
||||||
|
"boost_modal.reblog": "¿Impulsar la publicación?",
|
||||||
|
"boost_modal.undo_reblog": "¿Dejar de impulsar la publicación?",
|
||||||
"bundle_column_error.copy_stacktrace": "Copiar informe de error",
|
"bundle_column_error.copy_stacktrace": "Copiar informe de error",
|
||||||
"bundle_column_error.error.body": "La página solicitada no pudo ser renderizada. Podría deberse a un error en nuestro código o a un problema de compatibilidad con el navegador.",
|
"bundle_column_error.error.body": "La página solicitada no pudo ser renderizada. Podría deberse a un error en nuestro código o a un problema de compatibilidad con el navegador.",
|
||||||
"bundle_column_error.error.title": "¡Oh, no!",
|
"bundle_column_error.error.title": "¡Oh, no!",
|
||||||
|
@ -467,6 +469,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "No verás mensajes que los mencionen.",
|
"mute_modal.you_wont_see_mentions": "No verás mensajes que los mencionen.",
|
||||||
"mute_modal.you_wont_see_posts": "Todavía pueden ver tus publicaciones, pero tú no verás las suyas.",
|
"mute_modal.you_wont_see_posts": "Todavía pueden ver tus publicaciones, pero tú no verás las suyas.",
|
||||||
"navigation_bar.about": "Acerca de",
|
"navigation_bar.about": "Acerca de",
|
||||||
|
"navigation_bar.administration": "Administración",
|
||||||
"navigation_bar.advanced_interface": "Abrir en la interfaz web avanzada",
|
"navigation_bar.advanced_interface": "Abrir en la interfaz web avanzada",
|
||||||
"navigation_bar.blocks": "Usuarios bloqueados",
|
"navigation_bar.blocks": "Usuarios bloqueados",
|
||||||
"navigation_bar.bookmarks": "Marcadores",
|
"navigation_bar.bookmarks": "Marcadores",
|
||||||
|
@ -483,6 +486,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Siguiendo y seguidores",
|
"navigation_bar.follows_and_followers": "Siguiendo y seguidores",
|
||||||
"navigation_bar.lists": "Listas",
|
"navigation_bar.lists": "Listas",
|
||||||
"navigation_bar.logout": "Cerrar sesión",
|
"navigation_bar.logout": "Cerrar sesión",
|
||||||
|
"navigation_bar.moderation": "Moderación",
|
||||||
"navigation_bar.mutes": "Usuarios silenciados",
|
"navigation_bar.mutes": "Usuarios silenciados",
|
||||||
"navigation_bar.opened_in_classic_interface": "Publicaciones, cuentas y otras páginas específicas se abren por defecto en la interfaz web clásica.",
|
"navigation_bar.opened_in_classic_interface": "Publicaciones, cuentas y otras páginas específicas se abren por defecto en la interfaz web clásica.",
|
||||||
"navigation_bar.personal": "Personal",
|
"navigation_bar.personal": "Personal",
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"about.not_available": "See info ei ole sellel serveril saadavaks tehtud.",
|
"about.not_available": "See info ei ole sellel serveril saadavaks tehtud.",
|
||||||
"about.powered_by": "Hajutatud sotsiaalmeedia, mille taga on {mastodon}",
|
"about.powered_by": "Hajutatud sotsiaalmeedia, mille taga on {mastodon}",
|
||||||
"about.rules": "Serveri reeglid",
|
"about.rules": "Serveri reeglid",
|
||||||
|
"account.account_note_header": "Isiklik märge",
|
||||||
"account.add_or_remove_from_list": "Lisa või Eemalda nimekirjadest",
|
"account.add_or_remove_from_list": "Lisa või Eemalda nimekirjadest",
|
||||||
"account.badges.bot": "Robot",
|
"account.badges.bot": "Robot",
|
||||||
"account.badges.group": "Grupp",
|
"account.badges.group": "Grupp",
|
||||||
|
@ -96,6 +97,8 @@
|
||||||
"block_modal.title": "Blokeeri kasutaja?",
|
"block_modal.title": "Blokeeri kasutaja?",
|
||||||
"block_modal.you_wont_see_mentions": "Sa ei näe postitusi, mis mainivad teda.",
|
"block_modal.you_wont_see_mentions": "Sa ei näe postitusi, mis mainivad teda.",
|
||||||
"boost_modal.combo": "Vajutades {combo}, saab selle edaspidi vahele jätta",
|
"boost_modal.combo": "Vajutades {combo}, saab selle edaspidi vahele jätta",
|
||||||
|
"boost_modal.reblog": "Jagada postitust?",
|
||||||
|
"boost_modal.undo_reblog": "Tühista postituse jagamine?",
|
||||||
"bundle_column_error.copy_stacktrace": "Kopeeri veateade",
|
"bundle_column_error.copy_stacktrace": "Kopeeri veateade",
|
||||||
"bundle_column_error.error.body": "Soovitud lehte ei õnnestunud esitada. See võib olla meie koodiviga või probleem brauseri ühilduvusega.",
|
"bundle_column_error.error.body": "Soovitud lehte ei õnnestunud esitada. See võib olla meie koodiviga või probleem brauseri ühilduvusega.",
|
||||||
"bundle_column_error.error.title": "Oh, ei!",
|
"bundle_column_error.error.title": "Oh, ei!",
|
||||||
|
@ -169,21 +172,30 @@
|
||||||
"confirmations.block.confirm": "Blokeeri",
|
"confirmations.block.confirm": "Blokeeri",
|
||||||
"confirmations.delete.confirm": "Kustuta",
|
"confirmations.delete.confirm": "Kustuta",
|
||||||
"confirmations.delete.message": "Oled kindel, et soovid postituse kustutada?",
|
"confirmations.delete.message": "Oled kindel, et soovid postituse kustutada?",
|
||||||
|
"confirmations.delete.title": "Kustutada postitus?",
|
||||||
"confirmations.delete_list.confirm": "Kustuta",
|
"confirmations.delete_list.confirm": "Kustuta",
|
||||||
"confirmations.delete_list.message": "Oled kindel, et soovid selle loetelu pöördumatult kustutada?",
|
"confirmations.delete_list.message": "Oled kindel, et soovid selle loetelu pöördumatult kustutada?",
|
||||||
|
"confirmations.delete_list.title": "Kustutada loetelu?",
|
||||||
"confirmations.discard_edit_media.confirm": "Hülga",
|
"confirmations.discard_edit_media.confirm": "Hülga",
|
||||||
"confirmations.discard_edit_media.message": "Sul on salvestamata muudatusi meediakirjelduses või eelvaates, kas hülgad need?",
|
"confirmations.discard_edit_media.message": "Sul on salvestamata muudatusi meediakirjelduses või eelvaates, kas hülgad need?",
|
||||||
"confirmations.edit.confirm": "Muuda",
|
"confirmations.edit.confirm": "Muuda",
|
||||||
"confirmations.edit.message": "Muutes praegu kirjutatakse hetkel loodav sõnum üle. Kas oled kindel, et soovid jätkata?",
|
"confirmations.edit.message": "Muutes praegu kirjutatakse hetkel loodav sõnum üle. Kas oled kindel, et soovid jätkata?",
|
||||||
|
"confirmations.edit.title": "Kirjutada postitus üle?",
|
||||||
"confirmations.logout.confirm": "Välju",
|
"confirmations.logout.confirm": "Välju",
|
||||||
"confirmations.logout.message": "Kas oled kindel, et soovid välja logida?",
|
"confirmations.logout.message": "Kas oled kindel, et soovid välja logida?",
|
||||||
|
"confirmations.logout.title": "Logida välja?",
|
||||||
"confirmations.mute.confirm": "Vaigista",
|
"confirmations.mute.confirm": "Vaigista",
|
||||||
"confirmations.redraft.confirm": "Kustuta & taasalusta",
|
"confirmations.redraft.confirm": "Kustuta & taasalusta",
|
||||||
"confirmations.redraft.message": "Kindel, et soovid postituse kustutada ja võtta uue aluseks? Lemmikuks märkimised ja jagamised lähevad kaotsi ning vastused jäävad ilma algse postituseta.",
|
"confirmations.redraft.message": "Kindel, et soovid postituse kustutada ja võtta uue aluseks? Lemmikuks märkimised ja jagamised lähevad kaotsi ning vastused jäävad ilma algse postituseta.",
|
||||||
|
"confirmations.redraft.title": "Kustudada ja luua postituse mustand?",
|
||||||
"confirmations.reply.confirm": "Vasta",
|
"confirmations.reply.confirm": "Vasta",
|
||||||
"confirmations.reply.message": "Praegu vastamine kirjutab hetkel koostatava sõnumi üle. Oled kindel, et soovid jätkata?",
|
"confirmations.reply.message": "Praegu vastamine kirjutab hetkel koostatava sõnumi üle. Oled kindel, et soovid jätkata?",
|
||||||
|
"confirmations.reply.title": "Kirjutada postitus üle?",
|
||||||
"confirmations.unfollow.confirm": "Ära jälgi",
|
"confirmations.unfollow.confirm": "Ära jälgi",
|
||||||
"confirmations.unfollow.message": "Oled kindel, et ei soovi rohkem jälgida kasutajat {name}?",
|
"confirmations.unfollow.message": "Oled kindel, et ei soovi rohkem jälgida kasutajat {name}?",
|
||||||
|
"confirmations.unfollow.title": "Ei jälgi enam kasutajat?",
|
||||||
|
"content_warning.hide": "Peida postitus",
|
||||||
|
"content_warning.show": "Näita ikkagi",
|
||||||
"conversation.delete": "Kustuta vestlus",
|
"conversation.delete": "Kustuta vestlus",
|
||||||
"conversation.mark_as_read": "Märgi loetuks",
|
"conversation.mark_as_read": "Märgi loetuks",
|
||||||
"conversation.open": "Vaata vestlust",
|
"conversation.open": "Vaata vestlust",
|
||||||
|
@ -291,6 +303,8 @@
|
||||||
"filter_modal.select_filter.subtitle": "Kasuta olemasolevat kategooriat või loo uus",
|
"filter_modal.select_filter.subtitle": "Kasuta olemasolevat kategooriat või loo uus",
|
||||||
"filter_modal.select_filter.title": "Filtreeri seda postitust",
|
"filter_modal.select_filter.title": "Filtreeri seda postitust",
|
||||||
"filter_modal.title.status": "Postituse filtreerimine",
|
"filter_modal.title.status": "Postituse filtreerimine",
|
||||||
|
"filter_warning.matches_filter": "Sobib filtriga “{title}”",
|
||||||
|
"filtered_notifications_banner.pending_requests": "{count, plural, =0 {Mitte üheltki inimeselt} one {Ühelt inimeselt} other {# inimeselt}}, keda võid teada",
|
||||||
"filtered_notifications_banner.title": "Filtreeritud teavitused",
|
"filtered_notifications_banner.title": "Filtreeritud teavitused",
|
||||||
"firehose.all": "Kõik",
|
"firehose.all": "Kõik",
|
||||||
"firehose.local": "See server",
|
"firehose.local": "See server",
|
||||||
|
@ -436,6 +450,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "Sa ei näe postitusi, mis teda mainivad.",
|
"mute_modal.you_wont_see_mentions": "Sa ei näe postitusi, mis teda mainivad.",
|
||||||
"mute_modal.you_wont_see_posts": "Ta näeb jätkuvalt sinu postitusi, kuid sa ei näe tema omi.",
|
"mute_modal.you_wont_see_posts": "Ta näeb jätkuvalt sinu postitusi, kuid sa ei näe tema omi.",
|
||||||
"navigation_bar.about": "Teave",
|
"navigation_bar.about": "Teave",
|
||||||
|
"navigation_bar.administration": "Administreerimine",
|
||||||
"navigation_bar.advanced_interface": "Ava kohandatud veebiliides",
|
"navigation_bar.advanced_interface": "Ava kohandatud veebiliides",
|
||||||
"navigation_bar.blocks": "Blokeeritud kasutajad",
|
"navigation_bar.blocks": "Blokeeritud kasutajad",
|
||||||
"navigation_bar.bookmarks": "Järjehoidjad",
|
"navigation_bar.bookmarks": "Järjehoidjad",
|
||||||
|
@ -452,6 +467,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Jälgitavad ja jälgijad",
|
"navigation_bar.follows_and_followers": "Jälgitavad ja jälgijad",
|
||||||
"navigation_bar.lists": "Nimekirjad",
|
"navigation_bar.lists": "Nimekirjad",
|
||||||
"navigation_bar.logout": "Logi välja",
|
"navigation_bar.logout": "Logi välja",
|
||||||
|
"navigation_bar.moderation": "Modereerimine",
|
||||||
"navigation_bar.mutes": "Vaigistatud kasutajad",
|
"navigation_bar.mutes": "Vaigistatud kasutajad",
|
||||||
"navigation_bar.opened_in_classic_interface": "Postitused, kontod ja teised spetsiaalsed lehed avatakse vaikimisi klassikalises veebiliideses.",
|
"navigation_bar.opened_in_classic_interface": "Postitused, kontod ja teised spetsiaalsed lehed avatakse vaikimisi klassikalises veebiliideses.",
|
||||||
"navigation_bar.personal": "Isiklik",
|
"navigation_bar.personal": "Isiklik",
|
||||||
|
@ -462,10 +478,19 @@
|
||||||
"navigation_bar.security": "Turvalisus",
|
"navigation_bar.security": "Turvalisus",
|
||||||
"not_signed_in_indicator.not_signed_in": "Pead sisse logima, et saada ligipääsu sellele ressursile.",
|
"not_signed_in_indicator.not_signed_in": "Pead sisse logima, et saada ligipääsu sellele ressursile.",
|
||||||
"notification.admin.report": "{name} saatis teavituse {target} kohta",
|
"notification.admin.report": "{name} saatis teavituse {target} kohta",
|
||||||
|
"notification.admin.report_account": "{name} raporteeris {count, plural, one {ühest postitusest} other {# postitusest}} kohast {target} kategooriast {category}",
|
||||||
|
"notification.admin.report_account_other": "{name} raporteeris {count, plural, one {ühest postitusest} other {# postitusest}} kohast {target}",
|
||||||
|
"notification.admin.report_statuses": "{name} raporteeris {target} kategooriast {category}",
|
||||||
|
"notification.admin.report_statuses_other": "{name} raporteeris kohast {target}",
|
||||||
"notification.admin.sign_up": "{name} registreerus",
|
"notification.admin.sign_up": "{name} registreerus",
|
||||||
"notification.favourite": "{name} märkis su postituse lemmikuks",
|
"notification.favourite": "{name} märkis su postituse lemmikuks",
|
||||||
"notification.follow": "{name} alustas su jälgimist",
|
"notification.follow": "{name} alustas su jälgimist",
|
||||||
"notification.follow_request": "{name} soovib sind jälgida",
|
"notification.follow_request": "{name} soovib sind jälgida",
|
||||||
|
"notification.label.mention": "Mainimine",
|
||||||
|
"notification.label.private_mention": "Privaatne mainimine",
|
||||||
|
"notification.label.private_reply": "Privaatne vastus",
|
||||||
|
"notification.label.reply": "Vastus",
|
||||||
|
"notification.mention": "Mainimine",
|
||||||
"notification.moderation-warning.learn_more": "Vaata lisa",
|
"notification.moderation-warning.learn_more": "Vaata lisa",
|
||||||
"notification.moderation_warning": "Said modereerimise hoiatuse",
|
"notification.moderation_warning": "Said modereerimise hoiatuse",
|
||||||
"notification.moderation_warning.action_delete_statuses": "Mõni su postitus on eemaldatud.",
|
"notification.moderation_warning.action_delete_statuses": "Mõni su postitus on eemaldatud.",
|
||||||
|
@ -476,6 +501,7 @@
|
||||||
"notification.moderation_warning.action_silence": "Su kontole pandi piirang.",
|
"notification.moderation_warning.action_silence": "Su kontole pandi piirang.",
|
||||||
"notification.moderation_warning.action_suspend": "Su konto on peatatud.",
|
"notification.moderation_warning.action_suspend": "Su konto on peatatud.",
|
||||||
"notification.own_poll": "Su küsitlus on lõppenud",
|
"notification.own_poll": "Su küsitlus on lõppenud",
|
||||||
|
"notification.poll": "Hääletus, millel osalesid, on lõppenud",
|
||||||
"notification.reblog": "{name} jagas edasi postitust",
|
"notification.reblog": "{name} jagas edasi postitust",
|
||||||
"notification.relationships_severance_event": "Kadunud ühendus kasutajaga {name}",
|
"notification.relationships_severance_event": "Kadunud ühendus kasutajaga {name}",
|
||||||
"notification.relationships_severance_event.account_suspension": "{from} admin on kustutanud {target}, mis tähendab, et sa ei saa enam neilt uuendusi või suhelda nendega.",
|
"notification.relationships_severance_event.account_suspension": "{from} admin on kustutanud {target}, mis tähendab, et sa ei saa enam neilt uuendusi või suhelda nendega.",
|
||||||
|
@ -486,13 +512,20 @@
|
||||||
"notification.update": "{name} muutis postitust",
|
"notification.update": "{name} muutis postitust",
|
||||||
"notification_requests.accept": "Nõus",
|
"notification_requests.accept": "Nõus",
|
||||||
"notification_requests.dismiss": "Hülga",
|
"notification_requests.dismiss": "Hülga",
|
||||||
|
"notification_requests.explainer_for_limited_account": "Sellelt kontolt tulevad teavitused on filtreeritud, sest moderaator on seda kontot piiranud.",
|
||||||
|
"notification_requests.explainer_for_limited_remote_account": "Sellelt kontolt tulevad teavitused on filtreeritud, sest moderaator on seda kontot või serverit piiranud.",
|
||||||
|
"notification_requests.maximize": "Maksimeeri",
|
||||||
|
"notification_requests.minimize_banner": "Minimeeri filtreeritud teavituste bänner",
|
||||||
"notification_requests.notifications_from": "Teavitus kasutajalt {name}",
|
"notification_requests.notifications_from": "Teavitus kasutajalt {name}",
|
||||||
"notification_requests.title": "Filtreeritud teavitused",
|
"notification_requests.title": "Filtreeritud teavitused",
|
||||||
"notifications.clear": "Puhasta teated",
|
"notifications.clear": "Puhasta teated",
|
||||||
"notifications.clear_confirmation": "Oled kindel, et soovid püsivalt kõik oma teated eemaldada?",
|
"notifications.clear_confirmation": "Oled kindel, et soovid püsivalt kõik oma teated eemaldada?",
|
||||||
|
"notifications.clear_title": "Tühjenda teavitus?",
|
||||||
"notifications.column_settings.admin.report": "Uued teavitused:",
|
"notifications.column_settings.admin.report": "Uued teavitused:",
|
||||||
"notifications.column_settings.admin.sign_up": "Uued kasutajad:",
|
"notifications.column_settings.admin.sign_up": "Uued kasutajad:",
|
||||||
"notifications.column_settings.alert": "Töölauateated",
|
"notifications.column_settings.alert": "Töölauateated",
|
||||||
|
"notifications.column_settings.beta.category": "Eksperimentaalsed oskused",
|
||||||
|
"notifications.column_settings.beta.grouping": "Teavituste rühmitamine",
|
||||||
"notifications.column_settings.favourite": "Lemmikud:",
|
"notifications.column_settings.favourite": "Lemmikud:",
|
||||||
"notifications.column_settings.filter_bar.advanced": "Näita kõiki kategooriaid",
|
"notifications.column_settings.filter_bar.advanced": "Näita kõiki kategooriaid",
|
||||||
"notifications.column_settings.filter_bar.category": "Kiirfiltri riba",
|
"notifications.column_settings.filter_bar.category": "Kiirfiltri riba",
|
||||||
|
@ -521,6 +554,8 @@
|
||||||
"notifications.permission_denied": "Töölauamärguanded pole saadaval, kuna eelnevalt keelduti lehitsejale teavituste luba andmast",
|
"notifications.permission_denied": "Töölauamärguanded pole saadaval, kuna eelnevalt keelduti lehitsejale teavituste luba andmast",
|
||||||
"notifications.permission_denied_alert": "Töölaua märguandeid ei saa lubada, kuna brauseri luba on varem keeldutud",
|
"notifications.permission_denied_alert": "Töölaua märguandeid ei saa lubada, kuna brauseri luba on varem keeldutud",
|
||||||
"notifications.permission_required": "Töölaua märguanded ei ole saadaval, kuna vajalik luba pole antud.",
|
"notifications.permission_required": "Töölaua märguanded ei ole saadaval, kuna vajalik luba pole antud.",
|
||||||
|
"notifications.policy.filter_limited_accounts_hint": "Piiratud serveri moderaatorite poolt",
|
||||||
|
"notifications.policy.filter_limited_accounts_title": "Modereeritud kontod",
|
||||||
"notifications.policy.filter_new_accounts.hint": "Loodud viimase {days, plural, one {ühe päeva} other {# päeva}} jooksul",
|
"notifications.policy.filter_new_accounts.hint": "Loodud viimase {days, plural, one {ühe päeva} other {# päeva}} jooksul",
|
||||||
"notifications.policy.filter_new_accounts_title": "Uued kontod",
|
"notifications.policy.filter_new_accounts_title": "Uued kontod",
|
||||||
"notifications.policy.filter_not_followers_hint": "Kaasates kasutajad, kes on sind jälginud vähem kui {days, plural, one {ühe päeva} other {# päeva}}",
|
"notifications.policy.filter_not_followers_hint": "Kaasates kasutajad, kes on sind jälginud vähem kui {days, plural, one {ühe päeva} other {# päeva}}",
|
||||||
|
@ -655,9 +690,13 @@
|
||||||
"report.unfollow_explanation": "Jälgid seda kontot. Et mitte näha tema postitusi oma koduvoos, lõpeta ta jälgimine.",
|
"report.unfollow_explanation": "Jälgid seda kontot. Et mitte näha tema postitusi oma koduvoos, lõpeta ta jälgimine.",
|
||||||
"report_notification.attached_statuses": "{count, plural, one {{count} postitus} other {{count} postitust}} listatud",
|
"report_notification.attached_statuses": "{count, plural, one {{count} postitus} other {{count} postitust}} listatud",
|
||||||
"report_notification.categories.legal": "Õiguslik",
|
"report_notification.categories.legal": "Õiguslik",
|
||||||
|
"report_notification.categories.legal_sentence": "ebaseaduslik sisu",
|
||||||
"report_notification.categories.other": "Muu",
|
"report_notification.categories.other": "Muu",
|
||||||
|
"report_notification.categories.other_sentence": "muu",
|
||||||
"report_notification.categories.spam": "Rämpspost",
|
"report_notification.categories.spam": "Rämpspost",
|
||||||
|
"report_notification.categories.spam_sentence": "rämps",
|
||||||
"report_notification.categories.violation": "Reeglite rikkumine",
|
"report_notification.categories.violation": "Reeglite rikkumine",
|
||||||
|
"report_notification.categories.violation_sentence": "reeglite rikkumine",
|
||||||
"report_notification.open": "Ava teavitus",
|
"report_notification.open": "Ava teavitus",
|
||||||
"search.no_recent_searches": "Pole viimatisi otsinguid",
|
"search.no_recent_searches": "Pole viimatisi otsinguid",
|
||||||
"search.placeholder": "Otsi",
|
"search.placeholder": "Otsi",
|
||||||
|
|
|
@ -97,6 +97,7 @@
|
||||||
"block_modal.you_wont_see_mentions": "Vous ne verrez pas les publications qui le mentionne.",
|
"block_modal.you_wont_see_mentions": "Vous ne verrez pas les publications qui le mentionne.",
|
||||||
"boost_modal.combo": "Vous pouvez appuyer sur {combo} pour sauter ceci la prochaine fois",
|
"boost_modal.combo": "Vous pouvez appuyer sur {combo} pour sauter ceci la prochaine fois",
|
||||||
"boost_modal.reblog": "Booster le message ?",
|
"boost_modal.reblog": "Booster le message ?",
|
||||||
|
"boost_modal.undo_reblog": "Annuler le boost du message ?",
|
||||||
"bundle_column_error.copy_stacktrace": "Copier le rapport d'erreur",
|
"bundle_column_error.copy_stacktrace": "Copier le rapport d'erreur",
|
||||||
"bundle_column_error.error.body": "La page demandée n'a pas pu être affichée. Cela pourrait être dû à un bogue dans notre code, ou à un problème de compatibilité avec le navigateur.",
|
"bundle_column_error.error.body": "La page demandée n'a pas pu être affichée. Cela pourrait être dû à un bogue dans notre code, ou à un problème de compatibilité avec le navigateur.",
|
||||||
"bundle_column_error.error.title": "Oh non!",
|
"bundle_column_error.error.title": "Oh non!",
|
||||||
|
@ -351,8 +352,13 @@
|
||||||
"hashtag.follow": "Suivre ce hashtag",
|
"hashtag.follow": "Suivre ce hashtag",
|
||||||
"hashtag.unfollow": "Ne plus suivre ce hashtag",
|
"hashtag.unfollow": "Ne plus suivre ce hashtag",
|
||||||
"hashtags.and_other": "…et {count, plural, other {# de plus}}",
|
"hashtags.and_other": "…et {count, plural, other {# de plus}}",
|
||||||
|
"hints.profiles.followers_may_be_missing": "Les abonné·e·s à ce profil peuvent être manquant·e·s.",
|
||||||
|
"hints.profiles.follows_may_be_missing": "Les abonnements pour ce profil peuvent être manquants.",
|
||||||
|
"hints.profiles.posts_may_be_missing": "Certains messages de ce profil peuvent être manquants.",
|
||||||
"hints.profiles.see_more_followers": "Afficher plus d'abonné·e·s sur {domain}",
|
"hints.profiles.see_more_followers": "Afficher plus d'abonné·e·s sur {domain}",
|
||||||
|
"hints.profiles.see_more_follows": "Afficher plus d'abonné·e·s sur {domain}",
|
||||||
"hints.profiles.see_more_posts": "Voir plus de messages sur {domain}",
|
"hints.profiles.see_more_posts": "Voir plus de messages sur {domain}",
|
||||||
|
"hints.threads.replies_may_be_missing": "Les réponses provenant des autres serveurs pourraient être manquantes.",
|
||||||
"hints.threads.see_more": "Afficher plus de réponses sur {domain}",
|
"hints.threads.see_more": "Afficher plus de réponses sur {domain}",
|
||||||
"home.column_settings.show_reblogs": "Afficher boosts",
|
"home.column_settings.show_reblogs": "Afficher boosts",
|
||||||
"home.column_settings.show_replies": "Afficher réponses",
|
"home.column_settings.show_replies": "Afficher réponses",
|
||||||
|
@ -533,7 +539,7 @@
|
||||||
"notification_requests.confirm_accept_multiple.message": "Vous êtes sur le point d'accepter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Êtes-vous sûr de vouloir continuer ?",
|
"notification_requests.confirm_accept_multiple.message": "Vous êtes sur le point d'accepter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Êtes-vous sûr de vouloir continuer ?",
|
||||||
"notification_requests.confirm_accept_multiple.title": "Accepter les requêtes de notification ?",
|
"notification_requests.confirm_accept_multiple.title": "Accepter les requêtes de notification ?",
|
||||||
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Ignorer la requête} other {Ignorer les requêtes}}",
|
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Ignorer la requête} other {Ignorer les requêtes}}",
|
||||||
"notification_requests.confirm_dismiss_multiple.message": "Vous êtes sur le point de rejeter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Vous ne serez plus en mesure d'{count, plural, one {y} other {y}} accéder facilement, ultérieurement. Êtes-vous sûr de vouloir continuer ?",
|
"notification_requests.confirm_dismiss_multiple.message": "Vous êtes sur le point de rejeter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Vous ne serez plus en mesure d’{count, plural, one {y} other {y}} accéder facilement, ultérieurement. Êtes-vous sûr de vouloir continuer ?",
|
||||||
"notification_requests.confirm_dismiss_multiple.title": "Rejeter les requêtes de notification ?",
|
"notification_requests.confirm_dismiss_multiple.title": "Rejeter les requêtes de notification ?",
|
||||||
"notification_requests.dismiss": "Rejeter",
|
"notification_requests.dismiss": "Rejeter",
|
||||||
"notification_requests.dismiss_multiple": "{count, plural, one {Rejeter # requête …} other {Rejeter # requêtes …}}",
|
"notification_requests.dismiss_multiple": "{count, plural, one {Rejeter # requête …} other {Rejeter # requêtes …}}",
|
||||||
|
|
|
@ -97,6 +97,7 @@
|
||||||
"block_modal.you_wont_see_mentions": "Vous ne verrez pas les publications qui le mentionne.",
|
"block_modal.you_wont_see_mentions": "Vous ne verrez pas les publications qui le mentionne.",
|
||||||
"boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois",
|
"boost_modal.combo": "Vous pouvez appuyer sur {combo} pour passer ceci la prochaine fois",
|
||||||
"boost_modal.reblog": "Booster le message ?",
|
"boost_modal.reblog": "Booster le message ?",
|
||||||
|
"boost_modal.undo_reblog": "Annuler le boost du message ?",
|
||||||
"bundle_column_error.copy_stacktrace": "Copier le rapport d'erreur",
|
"bundle_column_error.copy_stacktrace": "Copier le rapport d'erreur",
|
||||||
"bundle_column_error.error.body": "La page demandée n'a pas pu être affichée. Cela peut être dû à un bogue dans notre code, ou à un problème de compatibilité avec le navigateur.",
|
"bundle_column_error.error.body": "La page demandée n'a pas pu être affichée. Cela peut être dû à un bogue dans notre code, ou à un problème de compatibilité avec le navigateur.",
|
||||||
"bundle_column_error.error.title": "Oh non !",
|
"bundle_column_error.error.title": "Oh non !",
|
||||||
|
@ -351,8 +352,13 @@
|
||||||
"hashtag.follow": "Suivre le hashtag",
|
"hashtag.follow": "Suivre le hashtag",
|
||||||
"hashtag.unfollow": "Ne plus suivre le hashtag",
|
"hashtag.unfollow": "Ne plus suivre le hashtag",
|
||||||
"hashtags.and_other": "…et {count, plural, other {# de plus}}",
|
"hashtags.and_other": "…et {count, plural, other {# de plus}}",
|
||||||
|
"hints.profiles.followers_may_be_missing": "Les abonné·e·s à ce profil peuvent être manquant·e·s.",
|
||||||
|
"hints.profiles.follows_may_be_missing": "Les abonnements pour ce profil peuvent être manquants.",
|
||||||
|
"hints.profiles.posts_may_be_missing": "Certains messages de ce profil peuvent être manquants.",
|
||||||
"hints.profiles.see_more_followers": "Afficher plus d'abonné·e·s sur {domain}",
|
"hints.profiles.see_more_followers": "Afficher plus d'abonné·e·s sur {domain}",
|
||||||
|
"hints.profiles.see_more_follows": "Afficher plus d'abonné·e·s sur {domain}",
|
||||||
"hints.profiles.see_more_posts": "Voir plus de messages sur {domain}",
|
"hints.profiles.see_more_posts": "Voir plus de messages sur {domain}",
|
||||||
|
"hints.threads.replies_may_be_missing": "Les réponses provenant des autres serveurs pourraient être manquantes.",
|
||||||
"hints.threads.see_more": "Afficher plus de réponses sur {domain}",
|
"hints.threads.see_more": "Afficher plus de réponses sur {domain}",
|
||||||
"home.column_settings.show_reblogs": "Afficher les partages",
|
"home.column_settings.show_reblogs": "Afficher les partages",
|
||||||
"home.column_settings.show_replies": "Afficher les réponses",
|
"home.column_settings.show_replies": "Afficher les réponses",
|
||||||
|
@ -533,7 +539,7 @@
|
||||||
"notification_requests.confirm_accept_multiple.message": "Vous êtes sur le point d'accepter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Êtes-vous sûr de vouloir continuer ?",
|
"notification_requests.confirm_accept_multiple.message": "Vous êtes sur le point d'accepter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Êtes-vous sûr de vouloir continuer ?",
|
||||||
"notification_requests.confirm_accept_multiple.title": "Accepter les requêtes de notification ?",
|
"notification_requests.confirm_accept_multiple.title": "Accepter les requêtes de notification ?",
|
||||||
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Ignorer la requête} other {Ignorer les requêtes}}",
|
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Ignorer la requête} other {Ignorer les requêtes}}",
|
||||||
"notification_requests.confirm_dismiss_multiple.message": "Vous êtes sur le point de rejeter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Vous ne serez plus en mesure d'{count, plural, one {y} other {y}} accéder facilement, ultérieurement. Êtes-vous sûr de vouloir continuer ?",
|
"notification_requests.confirm_dismiss_multiple.message": "Vous êtes sur le point de rejeter {count, plural, one {une requête de notification} other {# requêtes de notification}}. Vous ne serez plus en mesure d’{count, plural, one {y} other {y}} accéder facilement, ultérieurement. Êtes-vous sûr de vouloir continuer ?",
|
||||||
"notification_requests.confirm_dismiss_multiple.title": "Rejeter les requêtes de notification ?",
|
"notification_requests.confirm_dismiss_multiple.title": "Rejeter les requêtes de notification ?",
|
||||||
"notification_requests.dismiss": "Rejeter",
|
"notification_requests.dismiss": "Rejeter",
|
||||||
"notification_requests.dismiss_multiple": "{count, plural, one {Rejeter # requête …} other {Rejeter # requêtes …}}",
|
"notification_requests.dismiss_multiple": "{count, plural, one {Rejeter # requête …} other {Rejeter # requêtes …}}",
|
||||||
|
@ -722,7 +728,7 @@
|
||||||
"report.thanks.title": "Vous ne voulez pas voir cela ?",
|
"report.thanks.title": "Vous ne voulez pas voir cela ?",
|
||||||
"report.thanks.title_actionable": "Merci pour votre signalement, nous allons investiguer.",
|
"report.thanks.title_actionable": "Merci pour votre signalement, nous allons investiguer.",
|
||||||
"report.unfollow": "Ne plus suivre @{name}",
|
"report.unfollow": "Ne plus suivre @{name}",
|
||||||
"report.unfollow_explanation": "Vous êtes abonné à ce compte. Pour ne plus voir ses publications dans votre flux principal, retirez-le de votre liste d'abonnements.",
|
"report.unfollow_explanation": "Vous êtes abonné à ce compte. Pour ne plus voir ses publications dans votre fil principal, retirez-le de votre liste d'abonnements.",
|
||||||
"report_notification.attached_statuses": "{count, plural, one {{count} message lié} other {{count} messages liés}}",
|
"report_notification.attached_statuses": "{count, plural, one {{count} message lié} other {{count} messages liés}}",
|
||||||
"report_notification.categories.legal": "Légal",
|
"report_notification.categories.legal": "Légal",
|
||||||
"report_notification.categories.legal_sentence": "contenu illégal",
|
"report_notification.categories.legal_sentence": "contenu illégal",
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"about.not_available": "Dizze ynformaasje is troch dizze server net iepenbier makke.",
|
"about.not_available": "Dizze ynformaasje is troch dizze server net iepenbier makke.",
|
||||||
"about.powered_by": "Desintralisearre sosjale media, mooglik makke troch {mastodon}",
|
"about.powered_by": "Desintralisearre sosjale media, mooglik makke troch {mastodon}",
|
||||||
"about.rules": "Serverrigels",
|
"about.rules": "Serverrigels",
|
||||||
|
"account.account_note_header": "Persoanlike opmerking",
|
||||||
"account.add_or_remove_from_list": "Tafoegje oan of fuortsmite út listen",
|
"account.add_or_remove_from_list": "Tafoegje oan of fuortsmite út listen",
|
||||||
"account.badges.bot": "Automatisearre",
|
"account.badges.bot": "Automatisearre",
|
||||||
"account.badges.group": "Groep",
|
"account.badges.group": "Groep",
|
||||||
|
@ -96,6 +97,8 @@
|
||||||
"block_modal.title": "Brûker blokkearje?",
|
"block_modal.title": "Brûker blokkearje?",
|
||||||
"block_modal.you_wont_see_mentions": "Jo sjogge gjin berjochten mear dy’t dizze account fermelde.",
|
"block_modal.you_wont_see_mentions": "Jo sjogge gjin berjochten mear dy’t dizze account fermelde.",
|
||||||
"boost_modal.combo": "Jo kinne op {combo} drukke om dit de folgjende kear oer te slaan",
|
"boost_modal.combo": "Jo kinne op {combo} drukke om dit de folgjende kear oer te slaan",
|
||||||
|
"boost_modal.reblog": "Berjocht booste?",
|
||||||
|
"boost_modal.undo_reblog": "Berjocht net langer booste?",
|
||||||
"bundle_column_error.copy_stacktrace": "Flaterrapport kopiearje",
|
"bundle_column_error.copy_stacktrace": "Flaterrapport kopiearje",
|
||||||
"bundle_column_error.error.body": "De opfrege side koe net werjûn wurde. It kin wêze troch in flater yn ús koade, of in probleem mei browserkompatibiliteit.",
|
"bundle_column_error.error.body": "De opfrege side koe net werjûn wurde. It kin wêze troch in flater yn ús koade, of in probleem mei browserkompatibiliteit.",
|
||||||
"bundle_column_error.error.title": "Oh nee!",
|
"bundle_column_error.error.title": "Oh nee!",
|
||||||
|
@ -169,21 +172,30 @@
|
||||||
"confirmations.block.confirm": "Blokkearje",
|
"confirmations.block.confirm": "Blokkearje",
|
||||||
"confirmations.delete.confirm": "Fuortsmite",
|
"confirmations.delete.confirm": "Fuortsmite",
|
||||||
"confirmations.delete.message": "Binne jo wis dat jo dit berjocht fuortsmite wolle?",
|
"confirmations.delete.message": "Binne jo wis dat jo dit berjocht fuortsmite wolle?",
|
||||||
|
"confirmations.delete.title": "Berjocht fuortsmite?",
|
||||||
"confirmations.delete_list.confirm": "Fuortsmite",
|
"confirmations.delete_list.confirm": "Fuortsmite",
|
||||||
"confirmations.delete_list.message": "Binne jo wis dat jo dizze list foar permanint fuortsmite wolle?",
|
"confirmations.delete_list.message": "Binne jo wis dat jo dizze list foar permanint fuortsmite wolle?",
|
||||||
|
"confirmations.delete_list.title": "List fuortsmite?",
|
||||||
"confirmations.discard_edit_media.confirm": "Fuortsmite",
|
"confirmations.discard_edit_media.confirm": "Fuortsmite",
|
||||||
"confirmations.discard_edit_media.message": "Jo hawwe net-bewarre wizigingen yn de mediabeskriuwing of foarfertoaning, wolle jo dizze dochs fuortsmite?",
|
"confirmations.discard_edit_media.message": "Jo hawwe net-bewarre wizigingen yn de mediabeskriuwing of foarfertoaning, wolle jo dizze dochs fuortsmite?",
|
||||||
"confirmations.edit.confirm": "Bewurkje",
|
"confirmations.edit.confirm": "Bewurkje",
|
||||||
"confirmations.edit.message": "Troch no te bewurkjen sil it berjocht dat jo no oan it skriuwen binne oerskreaun wurde. Wolle jo trochgean?",
|
"confirmations.edit.message": "Troch no te bewurkjen sil it berjocht dat jo no oan it skriuwen binne oerskreaun wurde. Wolle jo trochgean?",
|
||||||
|
"confirmations.edit.title": "Berjocht oerskriuwe?",
|
||||||
"confirmations.logout.confirm": "Ofmelde",
|
"confirmations.logout.confirm": "Ofmelde",
|
||||||
"confirmations.logout.message": "Binne jo wis dat jo ôfmelde wolle?",
|
"confirmations.logout.message": "Binne jo wis dat jo ôfmelde wolle?",
|
||||||
|
"confirmations.logout.title": "Ofmelde?",
|
||||||
"confirmations.mute.confirm": "Negearje",
|
"confirmations.mute.confirm": "Negearje",
|
||||||
"confirmations.redraft.confirm": "Fuortsmite en opnij opstelle",
|
"confirmations.redraft.confirm": "Fuortsmite en opnij opstelle",
|
||||||
"confirmations.redraft.message": "Binne jo wis dat jo dit berjocht fuortsmite en opnij opstelle wolle? Favoriten en boosts geane dan ferlern en reaksjes op it oarspronklike berjocht reitsje jo kwyt.",
|
"confirmations.redraft.message": "Binne jo wis dat jo dit berjocht fuortsmite en opnij opstelle wolle? Favoriten en boosts geane dan ferlern en reaksjes op it oarspronklike berjocht reitsje jo kwyt.",
|
||||||
|
"confirmations.redraft.title": "Berjocht fuortsmite en opnij opstelle?",
|
||||||
"confirmations.reply.confirm": "Reagearje",
|
"confirmations.reply.confirm": "Reagearje",
|
||||||
"confirmations.reply.message": "Troch no te reagearjen sil it berjocht dat jo no oan it skriuwen binne oerskreaun wurde. Wolle jo trochgean?",
|
"confirmations.reply.message": "Troch no te reagearjen sil it berjocht dat jo no oan it skriuwen binne oerskreaun wurde. Wolle jo trochgean?",
|
||||||
|
"confirmations.reply.title": "Berjocht oerskriuwe?",
|
||||||
"confirmations.unfollow.confirm": "Net mear folgje",
|
"confirmations.unfollow.confirm": "Net mear folgje",
|
||||||
"confirmations.unfollow.message": "Binne jo wis dat jo {name} net mear folgje wolle?",
|
"confirmations.unfollow.message": "Binne jo wis dat jo {name} net mear folgje wolle?",
|
||||||
|
"confirmations.unfollow.title": "Brûker net mear folgje?",
|
||||||
|
"content_warning.hide": "Berjocht ferstopje",
|
||||||
|
"content_warning.show": "Dochs toane",
|
||||||
"conversation.delete": "Petear fuortsmite",
|
"conversation.delete": "Petear fuortsmite",
|
||||||
"conversation.mark_as_read": "As lêzen markearje",
|
"conversation.mark_as_read": "As lêzen markearje",
|
||||||
"conversation.open": "Petear toane",
|
"conversation.open": "Petear toane",
|
||||||
|
@ -220,7 +232,9 @@
|
||||||
"domain_pill.username": "Brûkersnamme",
|
"domain_pill.username": "Brûkersnamme",
|
||||||
"domain_pill.whats_in_a_handle": "Wat is in fediverse-adres?",
|
"domain_pill.whats_in_a_handle": "Wat is in fediverse-adres?",
|
||||||
"domain_pill.who_they_are": "Omdat jo oan in fediverse-adres sjen kinne hoe’t ien hjit en op hokker server dy sit, kinne jo mei minsken op it troch <button>ActivityPub oandreaune</button> sosjale web (fediverse) kommunisearje.",
|
"domain_pill.who_they_are": "Omdat jo oan in fediverse-adres sjen kinne hoe’t ien hjit en op hokker server dy sit, kinne jo mei minsken op it troch <button>ActivityPub oandreaune</button> sosjale web (fediverse) kommunisearje.",
|
||||||
|
"domain_pill.who_you_are": "Omdat jo oan in fediverse-adres sjen kinne hoe’t jo hjitte en op hokker server jo sitte, kinne jo mei minsken op it troch <button>ActivityPub oandreaune</button> sosjale web (fediverse) kommunisearje.",
|
||||||
"domain_pill.your_handle": "Jo fediverse-adres:",
|
"domain_pill.your_handle": "Jo fediverse-adres:",
|
||||||
|
"domain_pill.your_server": "Jo digitale thús, wer't al jo berjochten stean. Is dizze server dochs net nei jo winsk? Dan kinne jo op elk momint nei in oare server ferhúzje en ek jo folgers oerbringe.",
|
||||||
"domain_pill.your_username": "Jo unike identifikaasje-adres op dizze server. It is mooglik dat der brûkers mei deselde brûkersnamme op ferskate servers te finen binne.",
|
"domain_pill.your_username": "Jo unike identifikaasje-adres op dizze server. It is mooglik dat der brûkers mei deselde brûkersnamme op ferskate servers te finen binne.",
|
||||||
"embed.instructions": "Embed this status on your website by copying the code below.",
|
"embed.instructions": "Embed this status on your website by copying the code below.",
|
||||||
"embed.preview": "Sa komt it der út te sjen:",
|
"embed.preview": "Sa komt it der út te sjen:",
|
||||||
|
@ -258,6 +272,7 @@
|
||||||
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
|
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
|
||||||
"empty_column.lists": "Jo hawwe noch gjin inkelde list. Wannear’t jo der ien oanmakke hawwe, falt dat hjir te sjen.",
|
"empty_column.lists": "Jo hawwe noch gjin inkelde list. Wannear’t jo der ien oanmakke hawwe, falt dat hjir te sjen.",
|
||||||
"empty_column.mutes": "Jo hawwe noch gjin brûkers negearre.",
|
"empty_column.mutes": "Jo hawwe noch gjin brûkers negearre.",
|
||||||
|
"empty_column.notification_requests": "Hielendal leech! Der is hjir neat. Wannear’t jo nije meldingen ûntfange, ferskine dizze hjir neffens jo ynstellingen.",
|
||||||
"empty_column.notifications": "Jo hawwe noch gjin meldingen. Ynteraksjes mei oare minsken sjogge jo hjir.",
|
"empty_column.notifications": "Jo hawwe noch gjin meldingen. Ynteraksjes mei oare minsken sjogge jo hjir.",
|
||||||
"empty_column.public": "Der is hjir neat! Skriuw eat publyklik, of folgje sels brûkers fan oare servers om it hjir te foljen",
|
"empty_column.public": "Der is hjir neat! Skriuw eat publyklik, of folgje sels brûkers fan oare servers om it hjir te foljen",
|
||||||
"error.unexpected_crash.explanation": "Troch in bug in ús koade of in probleem mei de komptabiliteit fan jo browser, koe dizze side net toand wurde.",
|
"error.unexpected_crash.explanation": "Troch in bug in ús koade of in probleem mei de komptabiliteit fan jo browser, koe dizze side net toand wurde.",
|
||||||
|
@ -288,6 +303,8 @@
|
||||||
"filter_modal.select_filter.subtitle": "In besteande kategory brûke of in nije oanmeitsje",
|
"filter_modal.select_filter.subtitle": "In besteande kategory brûke of in nije oanmeitsje",
|
||||||
"filter_modal.select_filter.title": "Dit berjocht filterje",
|
"filter_modal.select_filter.title": "Dit berjocht filterje",
|
||||||
"filter_modal.title.status": "In berjocht filterje",
|
"filter_modal.title.status": "In berjocht filterje",
|
||||||
|
"filter_warning.matches_filter": "Komt oerien mei filter ‘{title}’",
|
||||||
|
"filtered_notifications_banner.pending_requests": "Fan {count, plural, =0 {net ien} one {ien persoan} other {# persoanen}} dy’t jo mooglik kinne",
|
||||||
"filtered_notifications_banner.title": "Filtere meldingen",
|
"filtered_notifications_banner.title": "Filtere meldingen",
|
||||||
"firehose.all": "Alles",
|
"firehose.all": "Alles",
|
||||||
"firehose.local": "Dizze server",
|
"firehose.local": "Dizze server",
|
||||||
|
@ -336,6 +353,14 @@
|
||||||
"hashtag.follow": "Hashtag folgje",
|
"hashtag.follow": "Hashtag folgje",
|
||||||
"hashtag.unfollow": "Hashtag ûntfolgje",
|
"hashtag.unfollow": "Hashtag ûntfolgje",
|
||||||
"hashtags.and_other": "…en {count, plural, one {}other {# mear}}",
|
"hashtags.and_other": "…en {count, plural, one {}other {# mear}}",
|
||||||
|
"hints.profiles.followers_may_be_missing": "Folgers foar dit profyl kinne ûntbrekke.",
|
||||||
|
"hints.profiles.follows_may_be_missing": "De folgers foar dit profyl kinne ûntbrekke.",
|
||||||
|
"hints.profiles.posts_may_be_missing": "Der ûntbrekke mooglik berjochten fan dit profyl.",
|
||||||
|
"hints.profiles.see_more_followers": "Besjoch mear folgers op {domain}",
|
||||||
|
"hints.profiles.see_more_follows": "Besjoch mear folge accounts op {domain}",
|
||||||
|
"hints.profiles.see_more_posts": "Besjoch mear berjochten op {domain}",
|
||||||
|
"hints.threads.replies_may_be_missing": "Antwurden fan oare servers kinne ûntbrekke.",
|
||||||
|
"hints.threads.see_more": "Besjoch mear reaksjes op {domain}",
|
||||||
"home.column_settings.show_reblogs": "Boosts toane",
|
"home.column_settings.show_reblogs": "Boosts toane",
|
||||||
"home.column_settings.show_replies": "Reaksjes toane",
|
"home.column_settings.show_replies": "Reaksjes toane",
|
||||||
"home.hide_announcements": "Meidielingen ferstopje",
|
"home.hide_announcements": "Meidielingen ferstopje",
|
||||||
|
@ -343,6 +368,17 @@
|
||||||
"home.pending_critical_update.link": "Fernijingen besjen",
|
"home.pending_critical_update.link": "Fernijingen besjen",
|
||||||
"home.pending_critical_update.title": "Kritike befeiligingsfernijing beskikber!",
|
"home.pending_critical_update.title": "Kritike befeiligingsfernijing beskikber!",
|
||||||
"home.show_announcements": "Meidielingen toane",
|
"home.show_announcements": "Meidielingen toane",
|
||||||
|
"ignore_notifications_modal.disclaimer": "Mastodon kin brûkers net ynformearje dat jo harren meldingen negearre hawwe. Meldingen negearje sil net foarkomme dat de berjochten sels ferstjoerd wurde.",
|
||||||
|
"ignore_notifications_modal.filter_instead": "Yn stee derfan filterje",
|
||||||
|
"ignore_notifications_modal.filter_to_act_users": "Jo binne noch hieltyd yn steat om folchfersiken goed- of ôf te karren en om brûkers te rapportearjen",
|
||||||
|
"ignore_notifications_modal.filter_to_avoid_confusion": "Filterjen foarkomt potinsjele betizing",
|
||||||
|
"ignore_notifications_modal.filter_to_review_separately": "Jo kinne filtere meldingen ôfsûnderlik beoardiele",
|
||||||
|
"ignore_notifications_modal.ignore": "Meldingen negearje",
|
||||||
|
"ignore_notifications_modal.limited_accounts_title": "Meldingen fan beheinde accounts negearje?",
|
||||||
|
"ignore_notifications_modal.new_accounts_title": "Meldingen fan nije accounts negearje?",
|
||||||
|
"ignore_notifications_modal.not_followers_title": "Meldingen negearje fan minsken dy’t jo net folgje?",
|
||||||
|
"ignore_notifications_modal.not_following_title": "Meldingen negearje fan minsken dy’t josels net folgje?",
|
||||||
|
"ignore_notifications_modal.private_mentions_title": "Meldingen negearje fan net frege priveeberjochten?",
|
||||||
"interaction_modal.description.favourite": "Jo kinne mei in Mastodon-account dit berjocht as favoryt markearje, om dy brûker witte te litten dat jo it berjocht wurdearje en om it te bewarjen.",
|
"interaction_modal.description.favourite": "Jo kinne mei in Mastodon-account dit berjocht as favoryt markearje, om dy brûker witte te litten dat jo it berjocht wurdearje en om it te bewarjen.",
|
||||||
"interaction_modal.description.follow": "Jo kinne mei in Mastodon-account {name} folgje, om sa harren berjochten op jo starttiidline te ûntfangen.",
|
"interaction_modal.description.follow": "Jo kinne mei in Mastodon-account {name} folgje, om sa harren berjochten op jo starttiidline te ûntfangen.",
|
||||||
"interaction_modal.description.reblog": "Jo kinne mei in Mastodon-account dit berjocht booste, om it sa mei jo folgers te dielen.",
|
"interaction_modal.description.reblog": "Jo kinne mei in Mastodon-account dit berjocht booste, om it sa mei jo folgers te dielen.",
|
||||||
|
@ -433,6 +469,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "Jo sjogge gjin berjochten mear dy’t dizze account fermelde.",
|
"mute_modal.you_wont_see_mentions": "Jo sjogge gjin berjochten mear dy’t dizze account fermelde.",
|
||||||
"mute_modal.you_wont_see_posts": "De persoan kin jo berjochten noch hieltyd sjen, mar jo sjogge harren berjochten net mear.",
|
"mute_modal.you_wont_see_posts": "De persoan kin jo berjochten noch hieltyd sjen, mar jo sjogge harren berjochten net mear.",
|
||||||
"navigation_bar.about": "Oer",
|
"navigation_bar.about": "Oer",
|
||||||
|
"navigation_bar.administration": "Behear",
|
||||||
"navigation_bar.advanced_interface": "Yn avansearre webomjouwing iepenje",
|
"navigation_bar.advanced_interface": "Yn avansearre webomjouwing iepenje",
|
||||||
"navigation_bar.blocks": "Blokkearre brûkers",
|
"navigation_bar.blocks": "Blokkearre brûkers",
|
||||||
"navigation_bar.bookmarks": "Blêdwizers",
|
"navigation_bar.bookmarks": "Blêdwizers",
|
||||||
|
@ -449,6 +486,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Folgers en folgjenden",
|
"navigation_bar.follows_and_followers": "Folgers en folgjenden",
|
||||||
"navigation_bar.lists": "Listen",
|
"navigation_bar.lists": "Listen",
|
||||||
"navigation_bar.logout": "Ofmelde",
|
"navigation_bar.logout": "Ofmelde",
|
||||||
|
"navigation_bar.moderation": "Moderaasje",
|
||||||
"navigation_bar.mutes": "Negearre brûkers",
|
"navigation_bar.mutes": "Negearre brûkers",
|
||||||
"navigation_bar.opened_in_classic_interface": "Berjochten, accounts en oare spesifike siden, wurde standert iepene yn de klassike webinterface.",
|
"navigation_bar.opened_in_classic_interface": "Berjochten, accounts en oare spesifike siden, wurde standert iepene yn de klassike webinterface.",
|
||||||
"navigation_bar.personal": "Persoanlik",
|
"navigation_bar.personal": "Persoanlik",
|
||||||
|
@ -464,9 +502,18 @@
|
||||||
"notification.admin.report_statuses": "{name} rapportearre {target} foar {category}",
|
"notification.admin.report_statuses": "{name} rapportearre {target} foar {category}",
|
||||||
"notification.admin.report_statuses_other": "{name} hat {target} rapportearre",
|
"notification.admin.report_statuses_other": "{name} hat {target} rapportearre",
|
||||||
"notification.admin.sign_up": "{name} hat harren registrearre",
|
"notification.admin.sign_up": "{name} hat harren registrearre",
|
||||||
|
"notification.admin.sign_up.name_and_others": "{name} en {count, plural, one {# oar} other {# oaren}} hawwe harren registrearre",
|
||||||
"notification.favourite": "{name} hat jo berjocht as favoryt markearre",
|
"notification.favourite": "{name} hat jo berjocht as favoryt markearre",
|
||||||
|
"notification.favourite.name_and_others_with_link": "{name} en <a>{count, plural, one {# oar} other {# oaren}}</a> hawwe jo berjocht as favoryt markearre",
|
||||||
"notification.follow": "{name} folget dy",
|
"notification.follow": "{name} folget dy",
|
||||||
|
"notification.follow.name_and_others": "{name} en {count, plural, one {# oar} other {# oaren}} hawwe jo folge",
|
||||||
"notification.follow_request": "{name} hat dy in folchfersyk stjoerd",
|
"notification.follow_request": "{name} hat dy in folchfersyk stjoerd",
|
||||||
|
"notification.follow_request.name_and_others": "{name} en {count, plural, one {# oar} other {# oaren}} hawwe frege om jo te folgjen",
|
||||||
|
"notification.label.mention": "Fermelding",
|
||||||
|
"notification.label.private_mention": "Priveeberjocht",
|
||||||
|
"notification.label.private_reply": "Priveereaksje",
|
||||||
|
"notification.label.reply": "Beäntwurdzje",
|
||||||
|
"notification.mention": "Fermelding",
|
||||||
"notification.moderation-warning.learn_more": "Mear ynfo",
|
"notification.moderation-warning.learn_more": "Mear ynfo",
|
||||||
"notification.moderation_warning": "Jo hawwe in moderaasje-warskôging ûntfongen",
|
"notification.moderation_warning": "Jo hawwe in moderaasje-warskôging ûntfongen",
|
||||||
"notification.moderation_warning.action_delete_statuses": "Guon fan jo berjochten binne fuortsmiten.",
|
"notification.moderation_warning.action_delete_statuses": "Guon fan jo berjochten binne fuortsmiten.",
|
||||||
|
@ -479,23 +526,44 @@
|
||||||
"notification.own_poll": "Jo poll is beëinige",
|
"notification.own_poll": "Jo poll is beëinige",
|
||||||
"notification.poll": "In enkête dêr’t jo oan meidien hawwe is beëinige",
|
"notification.poll": "In enkête dêr’t jo oan meidien hawwe is beëinige",
|
||||||
"notification.reblog": "{name} hat jo berjocht boost",
|
"notification.reblog": "{name} hat jo berjocht boost",
|
||||||
|
"notification.reblog.name_and_others_with_link": "{name} en <a>{count, plural, one {# oar} other {# oaren}}</a> hawwe jo berjocht boost",
|
||||||
"notification.relationships_severance_event": "Ferlerne ferbiningen mei {name}",
|
"notification.relationships_severance_event": "Ferlerne ferbiningen mei {name}",
|
||||||
"notification.relationships_severance_event.account_suspension": "In behearder fan {from} hat {target} útsteld, wat betsjut dat jo gjin updates mear fan harren ûntfange kinne of mei harren kommunisearje kinne.",
|
"notification.relationships_severance_event.account_suspension": "In behearder fan {from} hat {target} útsteld, wat betsjut dat jo gjin updates mear fan harren ûntfange kinne of mei harren kommunisearje kinne.",
|
||||||
"notification.relationships_severance_event.domain_block": "In behearder fan {from} hat {target} blokkearre, ynklusyf {followersCount} fan jo folgers en {followingCount, plural, one {# account} other {# accounts}} dy’t jo folgje.",
|
"notification.relationships_severance_event.domain_block": "In behearder fan {from} hat {target} blokkearre, ynklusyf {followersCount} fan jo folgers en {followingCount, plural, one {# account} other {# accounts}} dy’t jo folgje.",
|
||||||
"notification.relationships_severance_event.learn_more": "Mear ynfo",
|
"notification.relationships_severance_event.learn_more": "Mear ynfo",
|
||||||
|
"notification.relationships_severance_event.user_domain_block": "Jo hawwe {target} blokkearre, wêrmei’t jo {followersCount} fan jo folgers en {followingCount, plural, one {# account} other {# accounts}} dy’t jo folgje ferlern binne.",
|
||||||
"notification.status": "{name} hat in berjocht pleatst",
|
"notification.status": "{name} hat in berjocht pleatst",
|
||||||
"notification.update": "{name} hat in berjocht bewurke",
|
"notification.update": "{name} hat in berjocht bewurke",
|
||||||
"notification_requests.accept": "Akseptearje",
|
"notification_requests.accept": "Akseptearje",
|
||||||
|
"notification_requests.accept_multiple": "{count, plural, one {# fersyk akseptearje…} other {# fersiken akseptearje…}}",
|
||||||
|
"notification_requests.confirm_accept_multiple.button": "{count, plural, one {Fersyk akseptearje} other {Fersiken akseptearje}}",
|
||||||
|
"notification_requests.confirm_accept_multiple.message": "Jo steane op it punt om {count, plural, one {ien meldingsfersyk} other {# meldingsfersiken}} te akseptearjen. Binne jo wis dat jo trochgean wolle?",
|
||||||
|
"notification_requests.confirm_accept_multiple.title": "Meldingsfersiken akseptearje?",
|
||||||
|
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Fersyk ôfwize} other {Fersiken ôfwize}}",
|
||||||
|
"notification_requests.confirm_dismiss_multiple.message": "Jo steane op it punt om {count, plural, one {ien meldingsfersyk} other {# meldingsfersiken}} ôf te wizen. Jo sille net yn steat wêze om {count, plural, one {hier} other {hier}} wer maklik tagong ta te krijen. Wolle jo trochgean?",
|
||||||
|
"notification_requests.confirm_dismiss_multiple.title": "Meldingsfersiken ôfwize?",
|
||||||
"notification_requests.dismiss": "Ofwize",
|
"notification_requests.dismiss": "Ofwize",
|
||||||
|
"notification_requests.dismiss_multiple": "{count, plural, one {# fersyk ôfwize…} other {# fersiken ôfwize…}}",
|
||||||
|
"notification_requests.edit_selection": "Bewurkje",
|
||||||
|
"notification_requests.exit_selection": "Klear",
|
||||||
|
"notification_requests.explainer_for_limited_account": "Meldingen fan dizze account binne filtere, omdat dizze account troch in moderator beheind is.",
|
||||||
|
"notification_requests.explainer_for_limited_remote_account": "Meldingen fan dizze account binne filtere, omdat dizze account of harren server troch in moderator beheind is.",
|
||||||
|
"notification_requests.maximize": "Maksimalisearje",
|
||||||
|
"notification_requests.minimize_banner": "Banner mei filtere meldingen minimalisearje",
|
||||||
"notification_requests.notifications_from": "Meldingen fan {name}",
|
"notification_requests.notifications_from": "Meldingen fan {name}",
|
||||||
"notification_requests.title": "Filtere meldingen",
|
"notification_requests.title": "Filtere meldingen",
|
||||||
|
"notification_requests.view": "Meldingen besjen",
|
||||||
"notifications.clear": "Meldingen wiskje",
|
"notifications.clear": "Meldingen wiskje",
|
||||||
"notifications.clear_confirmation": "Binne jo wis dat jo al jo meldingen permanint fuortsmite wolle?",
|
"notifications.clear_confirmation": "Binne jo wis dat jo al jo meldingen permanint fuortsmite wolle?",
|
||||||
|
"notifications.clear_title": "Meldingen fuortsmite?",
|
||||||
"notifications.column_settings.admin.report": "Nije rapportaazjes:",
|
"notifications.column_settings.admin.report": "Nije rapportaazjes:",
|
||||||
"notifications.column_settings.admin.sign_up": "Nije registraasjes:",
|
"notifications.column_settings.admin.sign_up": "Nije registraasjes:",
|
||||||
"notifications.column_settings.alert": "Desktopmeldingen",
|
"notifications.column_settings.alert": "Desktopmeldingen",
|
||||||
|
"notifications.column_settings.beta.category": "Eksperimintele funksjes",
|
||||||
|
"notifications.column_settings.beta.grouping": "Notifikaasjes groepearje",
|
||||||
"notifications.column_settings.favourite": "Favoriten:",
|
"notifications.column_settings.favourite": "Favoriten:",
|
||||||
"notifications.column_settings.filter_bar.advanced": "Alle kategoryen toane",
|
"notifications.column_settings.filter_bar.advanced": "Alle kategoryen toane",
|
||||||
|
"notifications.column_settings.filter_bar.category": "Flugge filterbalke",
|
||||||
"notifications.column_settings.follow": "Nije folgers:",
|
"notifications.column_settings.follow": "Nije folgers:",
|
||||||
"notifications.column_settings.follow_request": "Nij folchfersyk:",
|
"notifications.column_settings.follow_request": "Nij folchfersyk:",
|
||||||
"notifications.column_settings.mention": "Fermeldingen:",
|
"notifications.column_settings.mention": "Fermeldingen:",
|
||||||
|
@ -521,6 +589,23 @@
|
||||||
"notifications.permission_denied": "Desktopmeldingen binne net beskikber, omdat in eardere browsertastimming wegere waard",
|
"notifications.permission_denied": "Desktopmeldingen binne net beskikber, omdat in eardere browsertastimming wegere waard",
|
||||||
"notifications.permission_denied_alert": "Desktopmeldingen kinne net ynskeakele wurde, omdat in eardere browsertastimming wegere waard",
|
"notifications.permission_denied_alert": "Desktopmeldingen kinne net ynskeakele wurde, omdat in eardere browsertastimming wegere waard",
|
||||||
"notifications.permission_required": "Desktopmeldingen binne net beskikber, omdat de nedige tastimming net ferliend is.",
|
"notifications.permission_required": "Desktopmeldingen binne net beskikber, omdat de nedige tastimming net ferliend is.",
|
||||||
|
"notifications.policy.accept": "Akseptearje",
|
||||||
|
"notifications.policy.accept_hint": "Yn meldingen toane",
|
||||||
|
"notifications.policy.drop": "Negearje",
|
||||||
|
"notifications.policy.drop_hint": "Permanint fuortsmite",
|
||||||
|
"notifications.policy.filter": "Filter",
|
||||||
|
"notifications.policy.filter_hint": "Nei filtere ynboks foar meldingen ferstjoere",
|
||||||
|
"notifications.policy.filter_limited_accounts_hint": "Beheind troch servermoderatoren",
|
||||||
|
"notifications.policy.filter_limited_accounts_title": "Moderearre accounts",
|
||||||
|
"notifications.policy.filter_new_accounts.hint": "Yn de ôfrûne {days, plural, one {dei} other {# dagen}} registrearre",
|
||||||
|
"notifications.policy.filter_new_accounts_title": "Nije accounts",
|
||||||
|
"notifications.policy.filter_not_followers_hint": "Ynklusyf minsken dy’t jo koarter as {days, plural, one {dei} other {# dagen}} folgje",
|
||||||
|
"notifications.policy.filter_not_followers_title": "Minsken dy’t jo net folgje",
|
||||||
|
"notifications.policy.filter_not_following_hint": "Oant jo se hânmjittich goedkarre",
|
||||||
|
"notifications.policy.filter_not_following_title": "Minsken dy’t josels net folgje",
|
||||||
|
"notifications.policy.filter_private_mentions_hint": "Unsichtber útsein it in antwurd is op in priveeberjocht fan jo of wannear’t jo de ôfstjoerder folgje",
|
||||||
|
"notifications.policy.filter_private_mentions_title": "Net frege priveeberjochten",
|
||||||
|
"notifications.policy.title": "Meldingen beheare fan…",
|
||||||
"notifications_permission_banner.enable": "Desktopmeldingen ynskeakelje",
|
"notifications_permission_banner.enable": "Desktopmeldingen ynskeakelje",
|
||||||
"notifications_permission_banner.how_to_control": "Om meldingen te ûntfangen wannear’t Mastodon net iepen stiet. Jo kinne krekt bepale hokker soarte fan ynteraksjes wol of gjin desktopmeldingen jouwe fia de boppesteande {icon} knop.",
|
"notifications_permission_banner.how_to_control": "Om meldingen te ûntfangen wannear’t Mastodon net iepen stiet. Jo kinne krekt bepale hokker soarte fan ynteraksjes wol of gjin desktopmeldingen jouwe fia de boppesteande {icon} knop.",
|
||||||
"notifications_permission_banner.title": "Mis neat",
|
"notifications_permission_banner.title": "Mis neat",
|
||||||
|
@ -647,6 +732,7 @@
|
||||||
"report.unfollow_explanation": "Jo folgje dizze account. Om harren berjochten net mear op jo starttiidline te sjen, kinne jo dyjinge ûntfolgje.",
|
"report.unfollow_explanation": "Jo folgje dizze account. Om harren berjochten net mear op jo starttiidline te sjen, kinne jo dyjinge ûntfolgje.",
|
||||||
"report_notification.attached_statuses": "{count, plural, one {{count} berjocht} other {{count} berjochten}} tafoege",
|
"report_notification.attached_statuses": "{count, plural, one {{count} berjocht} other {{count} berjochten}} tafoege",
|
||||||
"report_notification.categories.legal": "Juridysk",
|
"report_notification.categories.legal": "Juridysk",
|
||||||
|
"report_notification.categories.legal_sentence": "yllegale ynhâld",
|
||||||
"report_notification.categories.other": "Oars",
|
"report_notification.categories.other": "Oars",
|
||||||
"report_notification.categories.other_sentence": "oars",
|
"report_notification.categories.other_sentence": "oars",
|
||||||
"report_notification.categories.spam": "Spam",
|
"report_notification.categories.spam": "Spam",
|
||||||
|
@ -680,8 +766,11 @@
|
||||||
"server_banner.about_active_users": "Oantal brûkers yn de ôfrûne 30 dagen (MAU)",
|
"server_banner.about_active_users": "Oantal brûkers yn de ôfrûne 30 dagen (MAU)",
|
||||||
"server_banner.active_users": "warbere brûkers",
|
"server_banner.active_users": "warbere brûkers",
|
||||||
"server_banner.administered_by": "Beheard troch:",
|
"server_banner.administered_by": "Beheard troch:",
|
||||||
|
"server_banner.is_one_of_many": "{domain} is ien fan de protte ôfhinklike Mastodon-servers dy’t jo brûke kinne om diel te nimmen oan de fediverse.",
|
||||||
"server_banner.server_stats": "Serverstatistiken:",
|
"server_banner.server_stats": "Serverstatistiken:",
|
||||||
"sign_in_banner.create_account": "Account registrearje",
|
"sign_in_banner.create_account": "Account registrearje",
|
||||||
|
"sign_in_banner.follow_anyone": "Folgje elkenien yn de fediverse en sjoch it allegearre yn gronologyske folchoarder. Gjin algoritmen, advertinsjes of clickbaits.",
|
||||||
|
"sign_in_banner.mastodon_is": "Mastodon is de beste manier om wat der bart by te hâlden.",
|
||||||
"sign_in_banner.sign_in": "Oanmelde",
|
"sign_in_banner.sign_in": "Oanmelde",
|
||||||
"sign_in_banner.sso_redirect": "Oanmelde of Registrearje",
|
"sign_in_banner.sso_redirect": "Oanmelde of Registrearje",
|
||||||
"status.admin_account": "Moderaasje-omjouwing fan @{name} iepenje",
|
"status.admin_account": "Moderaasje-omjouwing fan @{name} iepenje",
|
||||||
|
|
|
@ -97,6 +97,8 @@
|
||||||
"block_modal.title": "A bheil thu airson an cleachdaiche a bhacadh?",
|
"block_modal.title": "A bheil thu airson an cleachdaiche a bhacadh?",
|
||||||
"block_modal.you_wont_see_mentions": "Chan fhaic thu na postaichean a bheir iomradh orra.",
|
"block_modal.you_wont_see_mentions": "Chan fhaic thu na postaichean a bheir iomradh orra.",
|
||||||
"boost_modal.combo": "Brùth air {combo} nam b’ fheàrr leat leum a ghearradh thar seo an ath-thuras",
|
"boost_modal.combo": "Brùth air {combo} nam b’ fheàrr leat leum a ghearradh thar seo an ath-thuras",
|
||||||
|
"boost_modal.reblog": "A bheil thu airson am post a bhrosnachadh?",
|
||||||
|
"boost_modal.undo_reblog": "A bheil thu airson sgur de bhrosnachadh a’ phuist?",
|
||||||
"bundle_column_error.copy_stacktrace": "Dèan lethbhreac de aithris na mearachd",
|
"bundle_column_error.copy_stacktrace": "Dèan lethbhreac de aithris na mearachd",
|
||||||
"bundle_column_error.error.body": "Cha b’ urrainn dhuinn an duilleag a dh’iarr thu a reandaradh. Dh’fhaoidte gu bheil buga sa chòd againn no duilgheadas co-chòrdalachd leis a’ bhrabhsair.",
|
"bundle_column_error.error.body": "Cha b’ urrainn dhuinn an duilleag a dh’iarr thu a reandaradh. Dh’fhaoidte gu bheil buga sa chòd againn no duilgheadas co-chòrdalachd leis a’ bhrabhsair.",
|
||||||
"bundle_column_error.error.title": "Ìoc!",
|
"bundle_column_error.error.title": "Ìoc!",
|
||||||
|
@ -467,6 +469,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "Chan fhaic thu na postaichean a bheir iomradh orra.",
|
"mute_modal.you_wont_see_mentions": "Chan fhaic thu na postaichean a bheir iomradh orra.",
|
||||||
"mute_modal.you_wont_see_posts": "Chì iad na postaichean agad fhathast ach chan fhaic thu na postaichean aca-san.",
|
"mute_modal.you_wont_see_posts": "Chì iad na postaichean agad fhathast ach chan fhaic thu na postaichean aca-san.",
|
||||||
"navigation_bar.about": "Mu dhèidhinn",
|
"navigation_bar.about": "Mu dhèidhinn",
|
||||||
|
"navigation_bar.administration": "Rianachd",
|
||||||
"navigation_bar.advanced_interface": "Fosgail san eadar-aghaidh-lìn adhartach",
|
"navigation_bar.advanced_interface": "Fosgail san eadar-aghaidh-lìn adhartach",
|
||||||
"navigation_bar.blocks": "Cleachdaichean bacte",
|
"navigation_bar.blocks": "Cleachdaichean bacte",
|
||||||
"navigation_bar.bookmarks": "Comharran-lìn",
|
"navigation_bar.bookmarks": "Comharran-lìn",
|
||||||
|
@ -483,6 +486,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Dàimhean leantainn",
|
"navigation_bar.follows_and_followers": "Dàimhean leantainn",
|
||||||
"navigation_bar.lists": "Liostaichean",
|
"navigation_bar.lists": "Liostaichean",
|
||||||
"navigation_bar.logout": "Clàraich a-mach",
|
"navigation_bar.logout": "Clàraich a-mach",
|
||||||
|
"navigation_bar.moderation": "Maorsainneachd",
|
||||||
"navigation_bar.mutes": "Cleachdaichean mùchte",
|
"navigation_bar.mutes": "Cleachdaichean mùchte",
|
||||||
"navigation_bar.opened_in_classic_interface": "Thèid postaichean, cunntasan ’s duilleagan sònraichte eile fhosgladh san eadar-aghaidh-lìn chlasaigeach a ghnàth.",
|
"navigation_bar.opened_in_classic_interface": "Thèid postaichean, cunntasan ’s duilleagan sònraichte eile fhosgladh san eadar-aghaidh-lìn chlasaigeach a ghnàth.",
|
||||||
"navigation_bar.personal": "Pearsanta",
|
"navigation_bar.personal": "Pearsanta",
|
||||||
|
|
|
@ -98,6 +98,7 @@
|
||||||
"block_modal.you_wont_see_mentions": "Tu non videra le messages que mentiona iste persona.",
|
"block_modal.you_wont_see_mentions": "Tu non videra le messages que mentiona iste persona.",
|
||||||
"boost_modal.combo": "Tu pote premer {combo} pro saltar isto le proxime vice",
|
"boost_modal.combo": "Tu pote premer {combo} pro saltar isto le proxime vice",
|
||||||
"boost_modal.reblog": "Impulsar le message?",
|
"boost_modal.reblog": "Impulsar le message?",
|
||||||
|
"boost_modal.undo_reblog": "Cessar de impulsar le message?",
|
||||||
"bundle_column_error.copy_stacktrace": "Copiar reporto de error",
|
"bundle_column_error.copy_stacktrace": "Copiar reporto de error",
|
||||||
"bundle_column_error.error.body": "Le pagina requestate non pote esser visualisate. Pote esser a causa de un defecto in nostre codice o de un problema de compatibilitate del navigator.",
|
"bundle_column_error.error.body": "Le pagina requestate non pote esser visualisate. Pote esser a causa de un defecto in nostre codice o de un problema de compatibilitate del navigator.",
|
||||||
"bundle_column_error.error.title": "Oh, no!",
|
"bundle_column_error.error.title": "Oh, no!",
|
||||||
|
@ -191,6 +192,8 @@
|
||||||
"confirmations.unfollow.confirm": "Non plus sequer",
|
"confirmations.unfollow.confirm": "Non plus sequer",
|
||||||
"confirmations.unfollow.message": "Es tu secur que tu vole cessar de sequer {name}?",
|
"confirmations.unfollow.message": "Es tu secur que tu vole cessar de sequer {name}?",
|
||||||
"confirmations.unfollow.title": "Cessar de sequer le usator?",
|
"confirmations.unfollow.title": "Cessar de sequer le usator?",
|
||||||
|
"content_warning.hide": "Celar le message",
|
||||||
|
"content_warning.show": "Monstrar in omne caso",
|
||||||
"conversation.delete": "Deler conversation",
|
"conversation.delete": "Deler conversation",
|
||||||
"conversation.mark_as_read": "Marcar como legite",
|
"conversation.mark_as_read": "Marcar como legite",
|
||||||
"conversation.open": "Vider conversation",
|
"conversation.open": "Vider conversation",
|
||||||
|
@ -298,6 +301,7 @@
|
||||||
"filter_modal.select_filter.subtitle": "Usa un categoria existente o crea un nove",
|
"filter_modal.select_filter.subtitle": "Usa un categoria existente o crea un nove",
|
||||||
"filter_modal.select_filter.title": "Filtrar iste message",
|
"filter_modal.select_filter.title": "Filtrar iste message",
|
||||||
"filter_modal.title.status": "Filtrar un message",
|
"filter_modal.title.status": "Filtrar un message",
|
||||||
|
"filter_warning.matches_filter": "Corresponde al filtro “{title}”",
|
||||||
"filtered_notifications_banner.title": "Notificationes filtrate",
|
"filtered_notifications_banner.title": "Notificationes filtrate",
|
||||||
"firehose.all": "Toto",
|
"firehose.all": "Toto",
|
||||||
"firehose.local": "Iste servitor",
|
"firehose.local": "Iste servitor",
|
||||||
|
@ -346,6 +350,10 @@
|
||||||
"hashtag.follow": "Sequer hashtag",
|
"hashtag.follow": "Sequer hashtag",
|
||||||
"hashtag.unfollow": "Non sequer plus le hashtag",
|
"hashtag.unfollow": "Non sequer plus le hashtag",
|
||||||
"hashtags.and_other": "…e {count, plural, one {}other {# plus}}",
|
"hashtags.and_other": "…e {count, plural, one {}other {# plus}}",
|
||||||
|
"hints.profiles.see_more_followers": "Vider plus de sequitores sur {domain}",
|
||||||
|
"hints.profiles.see_more_follows": "Vider plus de sequites sur {domain}",
|
||||||
|
"hints.profiles.see_more_posts": "Vider plus de messages sur {domain}",
|
||||||
|
"hints.threads.see_more": "Vider plus de responsas sur {domain}",
|
||||||
"home.column_settings.show_reblogs": "Monstrar impulsos",
|
"home.column_settings.show_reblogs": "Monstrar impulsos",
|
||||||
"home.column_settings.show_replies": "Monstrar responsas",
|
"home.column_settings.show_replies": "Monstrar responsas",
|
||||||
"home.hide_announcements": "Celar annuncios",
|
"home.hide_announcements": "Celar annuncios",
|
||||||
|
@ -443,6 +451,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "Tu non videra le messages que mentiona iste persona.",
|
"mute_modal.you_wont_see_mentions": "Tu non videra le messages que mentiona iste persona.",
|
||||||
"mute_modal.you_wont_see_posts": "Iste persona pote totevia vider tu messages, ma tu non videra le sues.",
|
"mute_modal.you_wont_see_posts": "Iste persona pote totevia vider tu messages, ma tu non videra le sues.",
|
||||||
"navigation_bar.about": "A proposito",
|
"navigation_bar.about": "A proposito",
|
||||||
|
"navigation_bar.administration": "Administration",
|
||||||
"navigation_bar.advanced_interface": "Aperir in le interfacie web avantiate",
|
"navigation_bar.advanced_interface": "Aperir in le interfacie web avantiate",
|
||||||
"navigation_bar.blocks": "Usatores blocate",
|
"navigation_bar.blocks": "Usatores blocate",
|
||||||
"navigation_bar.bookmarks": "Marcapaginas",
|
"navigation_bar.bookmarks": "Marcapaginas",
|
||||||
|
@ -459,6 +468,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Sequites e sequitores",
|
"navigation_bar.follows_and_followers": "Sequites e sequitores",
|
||||||
"navigation_bar.lists": "Listas",
|
"navigation_bar.lists": "Listas",
|
||||||
"navigation_bar.logout": "Clauder session",
|
"navigation_bar.logout": "Clauder session",
|
||||||
|
"navigation_bar.moderation": "Moderation",
|
||||||
"navigation_bar.mutes": "Usatores silentiate",
|
"navigation_bar.mutes": "Usatores silentiate",
|
||||||
"navigation_bar.opened_in_classic_interface": "Messages, contos e altere paginas specific es aperite per predefinition in le interfacie web classic.",
|
"navigation_bar.opened_in_classic_interface": "Messages, contos e altere paginas specific es aperite per predefinition in le interfacie web classic.",
|
||||||
"navigation_bar.personal": "Personal",
|
"navigation_bar.personal": "Personal",
|
||||||
|
@ -469,6 +479,8 @@
|
||||||
"navigation_bar.security": "Securitate",
|
"navigation_bar.security": "Securitate",
|
||||||
"not_signed_in_indicator.not_signed_in": "Es necessari aperir session pro acceder a iste ressource.",
|
"not_signed_in_indicator.not_signed_in": "Es necessari aperir session pro acceder a iste ressource.",
|
||||||
"notification.admin.report": "{name} ha reportate {target}",
|
"notification.admin.report": "{name} ha reportate {target}",
|
||||||
|
"notification.admin.report_statuses": "{name} ha reportate {target} pro {category}",
|
||||||
|
"notification.admin.report_statuses_other": "{name} ha reportate {target}",
|
||||||
"notification.admin.sign_up": "{name} se ha inscribite",
|
"notification.admin.sign_up": "{name} se ha inscribite",
|
||||||
"notification.favourite": "{name} ha marcate tu message como favorite",
|
"notification.favourite": "{name} ha marcate tu message como favorite",
|
||||||
"notification.follow": "{name} te ha sequite",
|
"notification.follow": "{name} te ha sequite",
|
||||||
|
@ -488,6 +500,7 @@
|
||||||
"notification.moderation_warning.action_silence": "Tu conto ha essite limitate.",
|
"notification.moderation_warning.action_silence": "Tu conto ha essite limitate.",
|
||||||
"notification.moderation_warning.action_suspend": "Tu conto ha essite suspendite.",
|
"notification.moderation_warning.action_suspend": "Tu conto ha essite suspendite.",
|
||||||
"notification.own_poll": "Tu sondage ha finite",
|
"notification.own_poll": "Tu sondage ha finite",
|
||||||
|
"notification.poll": "Un sondage in le qual tu ha votate ha finite",
|
||||||
"notification.reblog": "{name} ha impulsate tu message",
|
"notification.reblog": "{name} ha impulsate tu message",
|
||||||
"notification.relationships_severance_event": "Connexiones perdite con {name}",
|
"notification.relationships_severance_event": "Connexiones perdite con {name}",
|
||||||
"notification.relationships_severance_event.account_suspension": "Un administrator de {from} ha suspendiute {target}. Isto significa que tu non pote plus reciper actualisationes de iste persona o interager con ille.",
|
"notification.relationships_severance_event.account_suspension": "Un administrator de {from} ha suspendiute {target}. Isto significa que tu non pote plus reciper actualisationes de iste persona o interager con ille.",
|
||||||
|
@ -497,9 +510,14 @@
|
||||||
"notification.status": "{name} ha justo ora publicate",
|
"notification.status": "{name} ha justo ora publicate",
|
||||||
"notification.update": "{name} ha modificate un message",
|
"notification.update": "{name} ha modificate un message",
|
||||||
"notification_requests.accept": "Acceptar",
|
"notification_requests.accept": "Acceptar",
|
||||||
|
"notification_requests.confirm_accept_multiple.title": "Acceptar petitiones de notification?",
|
||||||
|
"notification_requests.confirm_dismiss_multiple.title": "Dimitter petitiones de notification?",
|
||||||
"notification_requests.dismiss": "Clauder",
|
"notification_requests.dismiss": "Clauder",
|
||||||
|
"notification_requests.edit_selection": "Modificar",
|
||||||
|
"notification_requests.exit_selection": "Facite",
|
||||||
"notification_requests.notifications_from": "Notificationes de {name}",
|
"notification_requests.notifications_from": "Notificationes de {name}",
|
||||||
"notification_requests.title": "Notificationes filtrate",
|
"notification_requests.title": "Notificationes filtrate",
|
||||||
|
"notification_requests.view": "Vider notificationes",
|
||||||
"notifications.clear": "Rader notificationes",
|
"notifications.clear": "Rader notificationes",
|
||||||
"notifications.clear_confirmation": "Es tu secur que tu vole rader permanentemente tote tu notificationes?",
|
"notifications.clear_confirmation": "Es tu secur que tu vole rader permanentemente tote tu notificationes?",
|
||||||
"notifications.clear_title": "Rader le notificationes?",
|
"notifications.clear_title": "Rader le notificationes?",
|
||||||
|
@ -536,6 +554,11 @@
|
||||||
"notifications.permission_denied": "Le notificationes de scriptorio es indisponibile a causa de un requesta anteriormente refusate de permissiones del navigator",
|
"notifications.permission_denied": "Le notificationes de scriptorio es indisponibile a causa de un requesta anteriormente refusate de permissiones del navigator",
|
||||||
"notifications.permission_denied_alert": "Le notificationes de scriptorio non pote esser activate perque le permission del navigator ha essite refusate anteriormente",
|
"notifications.permission_denied_alert": "Le notificationes de scriptorio non pote esser activate perque le permission del navigator ha essite refusate anteriormente",
|
||||||
"notifications.permission_required": "Le notificationes de scriptorio es indisponibile perque le permission necessari non ha essite concedite.",
|
"notifications.permission_required": "Le notificationes de scriptorio es indisponibile perque le permission necessari non ha essite concedite.",
|
||||||
|
"notifications.policy.accept": "Acceptar",
|
||||||
|
"notifications.policy.accept_hint": "Monstrar in le notificationes",
|
||||||
|
"notifications.policy.filter": "Filtrar",
|
||||||
|
"notifications.policy.filter_hint": "Inviar al cassa de notificationes filtrate",
|
||||||
|
"notifications.policy.filter_limited_accounts_title": "Contos moderate",
|
||||||
"notifications.policy.filter_new_accounts.hint": "Create in le ultime {days, plural, one {die} other {# dies}}",
|
"notifications.policy.filter_new_accounts.hint": "Create in le ultime {days, plural, one {die} other {# dies}}",
|
||||||
"notifications.policy.filter_new_accounts_title": "Nove contos",
|
"notifications.policy.filter_new_accounts_title": "Nove contos",
|
||||||
"notifications.policy.filter_not_followers_hint": "Includente le personas que te ha sequite durante minus de {days, plural, one {un die} other {# dies}}",
|
"notifications.policy.filter_not_followers_hint": "Includente le personas que te ha sequite durante minus de {days, plural, one {un die} other {# dies}}",
|
||||||
|
@ -544,6 +567,7 @@
|
||||||
"notifications.policy.filter_not_following_title": "Personas que tu non seque",
|
"notifications.policy.filter_not_following_title": "Personas que tu non seque",
|
||||||
"notifications.policy.filter_private_mentions_hint": "Filtrate, excepte si es in responsa a tu proprie mention o si tu seque le expeditor",
|
"notifications.policy.filter_private_mentions_hint": "Filtrate, excepte si es in responsa a tu proprie mention o si tu seque le expeditor",
|
||||||
"notifications.policy.filter_private_mentions_title": "Mentiones private indesirate",
|
"notifications.policy.filter_private_mentions_title": "Mentiones private indesirate",
|
||||||
|
"notifications.policy.title": "Gerer notificationes de…",
|
||||||
"notifications_permission_banner.enable": "Activar notificationes de scriptorio",
|
"notifications_permission_banner.enable": "Activar notificationes de scriptorio",
|
||||||
"notifications_permission_banner.how_to_control": "Pro reciper notificationes quando Mastodon non es aperte, activa le notificationes de scriptorio. Post lor activation, es possibile controlar precisemente qual typos de interaction genera notificationes de scriptorio per medio del button {icon} hic supra.",
|
"notifications_permission_banner.how_to_control": "Pro reciper notificationes quando Mastodon non es aperte, activa le notificationes de scriptorio. Post lor activation, es possibile controlar precisemente qual typos de interaction genera notificationes de scriptorio per medio del button {icon} hic supra.",
|
||||||
"notifications_permission_banner.title": "Non mancar jammais a un cosa",
|
"notifications_permission_banner.title": "Non mancar jammais a un cosa",
|
||||||
|
@ -596,8 +620,8 @@
|
||||||
"poll.vote": "Votar",
|
"poll.vote": "Votar",
|
||||||
"poll.voted": "Tu ha votate pro iste responsa",
|
"poll.voted": "Tu ha votate pro iste responsa",
|
||||||
"poll.votes": "{votes, plural, one {# voto} other {# votos}}",
|
"poll.votes": "{votes, plural, one {# voto} other {# votos}}",
|
||||||
"poll_button.add_poll": "Adder un inquesta",
|
"poll_button.add_poll": "Adder un sondage",
|
||||||
"poll_button.remove_poll": "Remover un inquesta",
|
"poll_button.remove_poll": "Remover un sondage",
|
||||||
"privacy.change": "Cambiar le confidentialitate del message",
|
"privacy.change": "Cambiar le confidentialitate del message",
|
||||||
"privacy.direct.long": "Tote le personas mentionate in le message",
|
"privacy.direct.long": "Tote le personas mentionate in le message",
|
||||||
"privacy.direct.short": "Personas specific",
|
"privacy.direct.short": "Personas specific",
|
||||||
|
|
|
@ -157,6 +157,8 @@
|
||||||
"block_modal.title": "ユーザーをブロックしますか?",
|
"block_modal.title": "ユーザーをブロックしますか?",
|
||||||
"block_modal.you_wont_see_mentions": "宛先に相手が入っている投稿も閲覧できなくなります。",
|
"block_modal.you_wont_see_mentions": "宛先に相手が入っている投稿も閲覧できなくなります。",
|
||||||
"boost_modal.combo": "次からは{combo}を押せばスキップできます",
|
"boost_modal.combo": "次からは{combo}を押せばスキップできます",
|
||||||
|
"boost_modal.reblog": "ブーストしますか?",
|
||||||
|
"boost_modal.undo_reblog": "ブーストを解除しますか?",
|
||||||
"bundle_column_error.copy_stacktrace": "エラーレポートをコピー",
|
"bundle_column_error.copy_stacktrace": "エラーレポートをコピー",
|
||||||
"bundle_column_error.error.body": "要求されたページをレンダリングできませんでした。コードのバグ、またはブラウザの互換性の問題が原因である可能性があります。",
|
"bundle_column_error.error.body": "要求されたページをレンダリングできませんでした。コードのバグ、またはブラウザの互換性の問題が原因である可能性があります。",
|
||||||
"bundle_column_error.error.title": "おっと!",
|
"bundle_column_error.error.title": "おっと!",
|
||||||
|
@ -280,7 +282,7 @@
|
||||||
"confirmations.unfollow.confirm": "フォロー解除",
|
"confirmations.unfollow.confirm": "フォロー解除",
|
||||||
"confirmations.unfollow.message": "本当に{name}さんのフォローを解除しますか?",
|
"confirmations.unfollow.message": "本当に{name}さんのフォローを解除しますか?",
|
||||||
"confirmations.unfollow.title": "フォローを解除しようとしています",
|
"confirmations.unfollow.title": "フォローを解除しようとしています",
|
||||||
"content_warning.hide": "投稿を隠す",
|
"content_warning.hide": "内容を隠す",
|
||||||
"content_warning.show": "承知の上で表示",
|
"content_warning.show": "承知の上で表示",
|
||||||
"conversation.delete": "会話を削除",
|
"conversation.delete": "会話を削除",
|
||||||
"conversation.mark_as_read": "既読にする",
|
"conversation.mark_as_read": "既読にする",
|
||||||
|
@ -565,6 +567,7 @@
|
||||||
"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.administration": "管理",
|
||||||
"navigation_bar.advanced_interface": "上級者向けUIに戻る",
|
"navigation_bar.advanced_interface": "上級者向けUIに戻る",
|
||||||
"navigation_bar.antennas": "アンテナ",
|
"navigation_bar.antennas": "アンテナ",
|
||||||
"navigation_bar.blocks": "ブロックしたユーザー",
|
"navigation_bar.blocks": "ブロックしたユーザー",
|
||||||
|
@ -585,6 +588,7 @@
|
||||||
"navigation_bar.follows_and_followers": "フォロー・フォロワー",
|
"navigation_bar.follows_and_followers": "フォロー・フォロワー",
|
||||||
"navigation_bar.lists": "リスト",
|
"navigation_bar.lists": "リスト",
|
||||||
"navigation_bar.logout": "ログアウト",
|
"navigation_bar.logout": "ログアウト",
|
||||||
|
"navigation_bar.moderation": "モデレーション",
|
||||||
"navigation_bar.mutes": "ミュートしたユーザー",
|
"navigation_bar.mutes": "ミュートしたユーザー",
|
||||||
"navigation_bar.opened_in_classic_interface": "投稿やプロフィールを直接開いた場合は一時的に標準UIで表示されます。",
|
"navigation_bar.opened_in_classic_interface": "投稿やプロフィールを直接開いた場合は一時的に標準UIで表示されます。",
|
||||||
"navigation_bar.personal": "個人用",
|
"navigation_bar.personal": "個人用",
|
||||||
|
@ -602,12 +606,21 @@
|
||||||
"notification.admin.report_statuses": "{name}さんが{target}さんを「{category}」として通報しました",
|
"notification.admin.report_statuses": "{name}さんが{target}さんを「{category}」として通報しました",
|
||||||
"notification.admin.report_statuses_other": "{name}さんが{target}さんを通報しました",
|
"notification.admin.report_statuses_other": "{name}さんが{target}さんを通報しました",
|
||||||
"notification.admin.sign_up": "{name}さんがサインアップしました",
|
"notification.admin.sign_up": "{name}さんがサインアップしました",
|
||||||
|
"notification.admin.sign_up.name_and_others": "{name}さんほか{count, plural, other {#人}}がサインアップしました",
|
||||||
"notification.emoji_reaction": "{name}さんがあなたの投稿に絵文字をつけました",
|
"notification.emoji_reaction": "{name}さんがあなたの投稿に絵文字をつけました",
|
||||||
"notification.emoji_reaction.name_and_others_with_link": "{name}さんと<a>{count, plural, other {他#名}}</a>があなたの投稿に絵文字をつけました",
|
"notification.emoji_reaction.name_and_others_with_link": "{name}さんと<a>{count, plural, other {他#名}}</a>があなたの投稿に絵文字をつけました",
|
||||||
"notification.favourite": "{name}さんがお気に入りしました",
|
"notification.favourite": "{name}さんがお気に入りしました",
|
||||||
|
"notification.favourite.name_and_others_with_link": "{name}さん<a>ほか{count, plural, other {#人}}</a>がお気に入りしました",
|
||||||
"notification.follow": "{name}さんにフォローされました",
|
"notification.follow": "{name}さんにフォローされました",
|
||||||
|
"notification.follow.name_and_others": "{name}さんほか{count, plural, other {#人}}にフォローされました",
|
||||||
"notification.follow_request": "{name}さんがあなたにフォローリクエストしました",
|
"notification.follow_request": "{name}さんがあなたにフォローリクエストしました",
|
||||||
|
"notification.follow_request.name_and_others": "{name}さんほか{count, plural, other {#人}}があなたにフォローリクエストしました",
|
||||||
|
"notification.label.mention": "メンション",
|
||||||
|
"notification.label.private_mention": "非公開の返信 (メンション)",
|
||||||
|
"notification.label.private_reply": "非公開の返信",
|
||||||
|
"notification.label.reply": "返信",
|
||||||
"notification.list_status": "{name}さんの投稿が{listName}に追加されました",
|
"notification.list_status": "{name}さんの投稿が{listName}に追加されました",
|
||||||
|
"notification.mention": "メンション",
|
||||||
"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": "あなたによるいくつかの投稿が削除されました。",
|
||||||
|
@ -620,6 +633,7 @@
|
||||||
"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, 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, other {#フォロー}}が失われました。",
|
"notification.relationships_severance_event.domain_block": "{from} の管理者が {target} をブロックしました。これにより{followersCount}フォロワーと{followingCount, plural, other {#フォロー}}が失われました。",
|
||||||
|
@ -642,10 +656,11 @@
|
||||||
"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.minimize_banner": "「保留中の通知」のバナーを最小化する",
|
"notification_requests.minimize_banner": "「保留中の通知」のバナーを最小化する",
|
||||||
"notification_requests.notifications_from": "{name}からの通知",
|
"notification_requests.notifications_from": "{name}からの通知",
|
||||||
"notification_requests.title": "保留中の通知",
|
"notification_requests.title": "保留中の通知",
|
||||||
"notification_requests.view": "通知を確認",
|
"notification_requests.view": "通知を見る",
|
||||||
"notifications.clear": "通知を消去",
|
"notifications.clear": "通知を消去",
|
||||||
"notifications.clear_confirmation": "本当に通知を消去しますか?",
|
"notifications.clear_confirmation": "本当に通知を消去しますか?",
|
||||||
"notifications.clear_title": "通知を消去しようとしています",
|
"notifications.clear_title": "通知を消去しようとしています",
|
||||||
|
@ -700,7 +715,7 @@
|
||||||
"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": "デスクトップ通知を有効にする",
|
||||||
|
|
|
@ -158,6 +158,8 @@
|
||||||
"confirmations.reply.message": "Tiririt akka tura ad k-degger izen-agi i tettaruḍ. Tebɣiḍ ad tkemmleḍ?",
|
"confirmations.reply.message": "Tiririt akka tura ad k-degger izen-agi i tettaruḍ. Tebɣiḍ ad tkemmleḍ?",
|
||||||
"confirmations.unfollow.confirm": "Ur ḍḍafaṛ ara",
|
"confirmations.unfollow.confirm": "Ur ḍḍafaṛ ara",
|
||||||
"confirmations.unfollow.message": "Tetḥeqqeḍ belli tebɣiḍ ur teṭafaṛeḍ ara {name}?",
|
"confirmations.unfollow.message": "Tetḥeqqeḍ belli tebɣiḍ ur teṭafaṛeḍ ara {name}?",
|
||||||
|
"content_warning.hide": "Ffer tasuffeɣt",
|
||||||
|
"content_warning.show": "Ssken-d akken tebɣu tili",
|
||||||
"conversation.delete": "Kkes adiwenni",
|
"conversation.delete": "Kkes adiwenni",
|
||||||
"conversation.mark_as_read": "Creḍ yettwaɣṛa",
|
"conversation.mark_as_read": "Creḍ yettwaɣṛa",
|
||||||
"conversation.open": "Ssken adiwenni",
|
"conversation.open": "Ssken adiwenni",
|
||||||
|
@ -360,6 +362,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "Ur tezmireḍ ara ad twaliḍ tisuffaɣ anda d-yettwabdar.",
|
"mute_modal.you_wont_see_mentions": "Ur tezmireḍ ara ad twaliḍ tisuffaɣ anda d-yettwabdar.",
|
||||||
"mute_modal.you_wont_see_posts": "Yezmer ad yettwali tisuffaɣ-ik·im, maca ur tettwaliḍ ara tidak-is.",
|
"mute_modal.you_wont_see_posts": "Yezmer ad yettwali tisuffaɣ-ik·im, maca ur tettwaliḍ ara tidak-is.",
|
||||||
"navigation_bar.about": "Ɣef",
|
"navigation_bar.about": "Ɣef",
|
||||||
|
"navigation_bar.administration": "Tadbelt",
|
||||||
"navigation_bar.advanced_interface": "Ldi deg ugrudem n web leqqayen",
|
"navigation_bar.advanced_interface": "Ldi deg ugrudem n web leqqayen",
|
||||||
"navigation_bar.blocks": "Iseqdacen yettusḥebsen",
|
"navigation_bar.blocks": "Iseqdacen yettusḥebsen",
|
||||||
"navigation_bar.bookmarks": "Ticraḍ",
|
"navigation_bar.bookmarks": "Ticraḍ",
|
||||||
|
@ -390,6 +393,7 @@
|
||||||
"notification.favourite": "{name} yesmenyaf addad-ik·im",
|
"notification.favourite": "{name} yesmenyaf addad-ik·im",
|
||||||
"notification.follow": "iṭṭafar-ik·em-id {name}",
|
"notification.follow": "iṭṭafar-ik·em-id {name}",
|
||||||
"notification.follow_request": "{name} yessuter-d ad k·m-yeḍfeṛ",
|
"notification.follow_request": "{name} yessuter-d ad k·m-yeḍfeṛ",
|
||||||
|
"notification.label.mention": "Abdar",
|
||||||
"notification.label.private_mention": "Abdar uslig",
|
"notification.label.private_mention": "Abdar uslig",
|
||||||
"notification.label.private_reply": "Tiririt tusligt",
|
"notification.label.private_reply": "Tiririt tusligt",
|
||||||
"notification.label.reply": "Tiririt",
|
"notification.label.reply": "Tiririt",
|
||||||
|
@ -402,6 +406,7 @@
|
||||||
"notification.status": "{name} akken i d-yessufeɣ",
|
"notification.status": "{name} akken i d-yessufeɣ",
|
||||||
"notification_requests.accept": "Qbel",
|
"notification_requests.accept": "Qbel",
|
||||||
"notification_requests.dismiss": "Agi",
|
"notification_requests.dismiss": "Agi",
|
||||||
|
"notification_requests.exit_selection": "Immed",
|
||||||
"notification_requests.notifications_from": "Alɣuten sɣur {name}",
|
"notification_requests.notifications_from": "Alɣuten sɣur {name}",
|
||||||
"notifications.clear": "Sfeḍ alɣuten",
|
"notifications.clear": "Sfeḍ alɣuten",
|
||||||
"notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk alɣuten-inek·em i lebda?",
|
"notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk alɣuten-inek·em i lebda?",
|
||||||
|
|
|
@ -605,7 +605,7 @@
|
||||||
"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": "마스토돈이 열려 있지 않을 때에도 알림을 받으려면, 데스크탑 알림을 활성화 하세요. 당신은 어떤 종류의 반응이 데스크탑 알림을 발생할 지를 {icon} 버튼을 통해 세세하게 설정할 수 있습니다.",
|
"notifications_permission_banner.how_to_control": "마스토돈이 열려 있지 않을 때에도 알림을 받으려면, 데스크탑 알림을 활성화 하세요. 당신은 어떤 종류의 반응이 데스크탑 알림을 발생할 지를 {icon} 버튼을 통해 세세하게 설정할 수 있습니다.",
|
||||||
"notifications_permission_banner.title": "아무것도 놓치지 마세요",
|
"notifications_permission_banner.title": "아무것도 놓치지 마세요",
|
||||||
|
|
|
@ -92,6 +92,7 @@
|
||||||
"block_modal.title": "Bloka utilizador?",
|
"block_modal.title": "Bloka utilizador?",
|
||||||
"block_modal.you_wont_see_mentions": "No veras publikasyones ke lo enmentan.",
|
"block_modal.you_wont_see_mentions": "No veras publikasyones ke lo enmentan.",
|
||||||
"boost_modal.combo": "Puedes klikar {combo} para ometer esto la proksima vez",
|
"boost_modal.combo": "Puedes klikar {combo} para ometer esto la proksima vez",
|
||||||
|
"boost_modal.reblog": "Repartajar puvlikasyon?",
|
||||||
"bundle_column_error.copy_stacktrace": "Kopia el raporto de yerro",
|
"bundle_column_error.copy_stacktrace": "Kopia el raporto de yerro",
|
||||||
"bundle_column_error.error.body": "La pajina solisitada no pudo ser renderada. Podria ser por un yerro en muestro kodiche o un problem de kompatibilita kon el navigador.",
|
"bundle_column_error.error.body": "La pajina solisitada no pudo ser renderada. Podria ser por un yerro en muestro kodiche o un problem de kompatibilita kon el navigador.",
|
||||||
"bundle_column_error.error.title": "Atyo, no!",
|
"bundle_column_error.error.title": "Atyo, no!",
|
||||||
|
@ -185,6 +186,8 @@
|
||||||
"confirmations.unfollow.confirm": "Desige",
|
"confirmations.unfollow.confirm": "Desige",
|
||||||
"confirmations.unfollow.message": "Estas siguro ke keres deshar de segir a {name}?",
|
"confirmations.unfollow.message": "Estas siguro ke keres deshar de segir a {name}?",
|
||||||
"confirmations.unfollow.title": "Desige utilizador?",
|
"confirmations.unfollow.title": "Desige utilizador?",
|
||||||
|
"content_warning.hide": "Eskonde puvlikasyon",
|
||||||
|
"content_warning.show": "Amostra entanto",
|
||||||
"conversation.delete": "Efasa konversasyon",
|
"conversation.delete": "Efasa konversasyon",
|
||||||
"conversation.mark_as_read": "Marka komo meldado",
|
"conversation.mark_as_read": "Marka komo meldado",
|
||||||
"conversation.open": "Ve konversasyon",
|
"conversation.open": "Ve konversasyon",
|
||||||
|
@ -425,6 +428,7 @@
|
||||||
"mute_modal.title": "Silensiar utilizador?",
|
"mute_modal.title": "Silensiar utilizador?",
|
||||||
"mute_modal.you_wont_see_mentions": "No veras publikasyones ke lo enmentan.",
|
"mute_modal.you_wont_see_mentions": "No veras publikasyones ke lo enmentan.",
|
||||||
"navigation_bar.about": "Sovre mozotros",
|
"navigation_bar.about": "Sovre mozotros",
|
||||||
|
"navigation_bar.administration": "Administrasyon",
|
||||||
"navigation_bar.advanced_interface": "Avre en la enterfaz avanzada",
|
"navigation_bar.advanced_interface": "Avre en la enterfaz avanzada",
|
||||||
"navigation_bar.blocks": "Utilizadores blokados",
|
"navigation_bar.blocks": "Utilizadores blokados",
|
||||||
"navigation_bar.bookmarks": "Markadores",
|
"navigation_bar.bookmarks": "Markadores",
|
||||||
|
@ -441,6 +445,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Segidos i suivantes",
|
"navigation_bar.follows_and_followers": "Segidos i suivantes",
|
||||||
"navigation_bar.lists": "Listas",
|
"navigation_bar.lists": "Listas",
|
||||||
"navigation_bar.logout": "Salir",
|
"navigation_bar.logout": "Salir",
|
||||||
|
"navigation_bar.moderation": "Moderasyon",
|
||||||
"navigation_bar.mutes": "Utilizadores silensiados",
|
"navigation_bar.mutes": "Utilizadores silensiados",
|
||||||
"navigation_bar.opened_in_classic_interface": "Publikasyones, kuentos i otras pajinas espesifikas se avren kon preferensyas predeterminadas en la enterfaz web klasika.",
|
"navigation_bar.opened_in_classic_interface": "Publikasyones, kuentos i otras pajinas espesifikas se avren kon preferensyas predeterminadas en la enterfaz web klasika.",
|
||||||
"navigation_bar.personal": "Personal",
|
"navigation_bar.personal": "Personal",
|
||||||
|
@ -475,6 +480,8 @@
|
||||||
"notification.update": "{name} edito una publikasyon",
|
"notification.update": "{name} edito una publikasyon",
|
||||||
"notification_requests.accept": "Acheta",
|
"notification_requests.accept": "Acheta",
|
||||||
"notification_requests.dismiss": "Kita",
|
"notification_requests.dismiss": "Kita",
|
||||||
|
"notification_requests.edit_selection": "Edita",
|
||||||
|
"notification_requests.exit_selection": "Fecho",
|
||||||
"notification_requests.notifications_from": "Avizos de {name}",
|
"notification_requests.notifications_from": "Avizos de {name}",
|
||||||
"notification_requests.title": "Avizos filtrados",
|
"notification_requests.title": "Avizos filtrados",
|
||||||
"notification_requests.view": "Amostra avizos",
|
"notification_requests.view": "Amostra avizos",
|
||||||
|
|
|
@ -635,7 +635,7 @@
|
||||||
"onboarding.steps.share_profile.title": "Bendrink savo Mastodon profilį",
|
"onboarding.steps.share_profile.title": "Bendrink savo Mastodon profilį",
|
||||||
"onboarding.tips.2fa": "<strong>Ar žinojai?</strong> Savo paskyrą gali apsaugoti nustatant dviejų veiksnių tapatybės nustatymą paskyros nustatymuose. Jis veikia su bet kuria pasirinkta TOTP programėle, telefono numeris nebūtinas.",
|
"onboarding.tips.2fa": "<strong>Ar žinojai?</strong> Savo paskyrą gali apsaugoti nustatant dviejų veiksnių tapatybės nustatymą paskyros nustatymuose. Jis veikia su bet kuria pasirinkta TOTP programėle, telefono numeris nebūtinas.",
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Ar žinojai?</strong> Kadangi Mastodon decentralizuotas, kai kurie profiliai, su kuriais susidursi, bus talpinami ne tavo, o kituose serveriuose. Ir vis tiek galėsi su jais sklandžiai bendrauti! Jų serveris yra antroje naudotojo vardo pusėje.",
|
"onboarding.tips.accounts_from_other_servers": "<strong>Ar žinojai?</strong> Kadangi Mastodon decentralizuotas, kai kurie profiliai, su kuriais susidursi, bus talpinami ne tavo, o kituose serveriuose. Ir vis tiek galėsi su jais sklandžiai bendrauti! Jų serveris yra antroje naudotojo vardo pusėje.",
|
||||||
"onboarding.tips.migration": "<strong>Ar žinojai?</strong> Jei manai, kad {domain} serveris ateityje tau netiks, gali persikelti į kitą Mastodon serverį neprarandant savo sekėjų. Gali net talpinti savo paties serverį.",
|
"onboarding.tips.migration": "<strong>Ar žinojai?</strong> Jei manai, kad {domain} serveris ateityje tau netiks, gali persikelti į kitą „Mastodon“ serverį neprarandant savo sekėjų. Gali net talpinti savo paties serverį!",
|
||||||
"onboarding.tips.verification": "<strong>Ar žinojai?</strong> Savo paskyrą gali patvirtinti pateikęs (-usi) nuorodą į Mastodon profilį savo interneto svetainėje ir pridėjęs (-usi) svetainę prie savo profilio. Nereikia jokių mokesčių ar dokumentų.",
|
"onboarding.tips.verification": "<strong>Ar žinojai?</strong> Savo paskyrą gali patvirtinti pateikęs (-usi) nuorodą į Mastodon profilį savo interneto svetainėje ir pridėjęs (-usi) svetainę prie savo profilio. Nereikia jokių mokesčių ar dokumentų.",
|
||||||
"password_confirmation.exceeds_maxlength": "Slaptažodžio patvirtinimas viršija maksimalų slaptažodžio ilgį.",
|
"password_confirmation.exceeds_maxlength": "Slaptažodžio patvirtinimas viršija maksimalų slaptažodžio ilgį.",
|
||||||
"password_confirmation.mismatching": "Slaptažodžio patvirtinimas nesutampa.",
|
"password_confirmation.mismatching": "Slaptažodžio patvirtinimas nesutampa.",
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"about.not_available": "Denne informasjonen er ikke gjort tilgjengelig på denne tjeneren.",
|
"about.not_available": "Denne informasjonen er ikke gjort tilgjengelig på denne tjeneren.",
|
||||||
"about.powered_by": "Desentraliserte sosiale medier drevet av {mastodon}",
|
"about.powered_by": "Desentraliserte sosiale medier drevet av {mastodon}",
|
||||||
"about.rules": "Regler for serveren",
|
"about.rules": "Regler for serveren",
|
||||||
|
"account.account_note_header": "Personlig notat",
|
||||||
"account.add_or_remove_from_list": "Legg til eller fjern fra lister",
|
"account.add_or_remove_from_list": "Legg til eller fjern fra lister",
|
||||||
"account.badges.bot": "Automatisert",
|
"account.badges.bot": "Automatisert",
|
||||||
"account.badges.group": "Gruppe",
|
"account.badges.group": "Gruppe",
|
||||||
|
@ -33,7 +34,9 @@
|
||||||
"account.follow_back": "Følg tilbake",
|
"account.follow_back": "Følg tilbake",
|
||||||
"account.followers": "Følgere",
|
"account.followers": "Følgere",
|
||||||
"account.followers.empty": "Ingen følger denne brukeren ennå.",
|
"account.followers.empty": "Ingen følger denne brukeren ennå.",
|
||||||
|
"account.followers_counter": "{count, plural, one {{counter} følger} other {{counter} følgere}}",
|
||||||
"account.following": "Følger",
|
"account.following": "Følger",
|
||||||
|
"account.following_counter": "{count, plural, one {{counter} som følges} other {{counter} som følges}}",
|
||||||
"account.follows.empty": "Denne brukeren følger ikke noen enda.",
|
"account.follows.empty": "Denne brukeren følger ikke noen enda.",
|
||||||
"account.go_to_profile": "Gå til profil",
|
"account.go_to_profile": "Gå til profil",
|
||||||
"account.hide_reblogs": "Skjul fremhevinger fra @{name}",
|
"account.hide_reblogs": "Skjul fremhevinger fra @{name}",
|
||||||
|
@ -59,6 +62,7 @@
|
||||||
"account.requested_follow": "{name} har bedt om å få følge deg",
|
"account.requested_follow": "{name} har bedt om å få følge deg",
|
||||||
"account.share": "Del @{name} sin profil",
|
"account.share": "Del @{name} sin profil",
|
||||||
"account.show_reblogs": "Vis fremhevinger fra @{name}",
|
"account.show_reblogs": "Vis fremhevinger fra @{name}",
|
||||||
|
"account.statuses_counter": "{count, plural, one {{counter} innlegg} other {{counter} innlegg}}",
|
||||||
"account.unblock": "Opphev blokkering av @{name}",
|
"account.unblock": "Opphev blokkering av @{name}",
|
||||||
"account.unblock_domain": "Opphev blokkering av {domain}",
|
"account.unblock_domain": "Opphev blokkering av {domain}",
|
||||||
"account.unblock_short": "Opphev blokkering",
|
"account.unblock_short": "Opphev blokkering",
|
||||||
|
@ -84,7 +88,17 @@
|
||||||
"announcement.announcement": "Kunngjøring",
|
"announcement.announcement": "Kunngjøring",
|
||||||
"attachments_list.unprocessed": "(ubehandlet)",
|
"attachments_list.unprocessed": "(ubehandlet)",
|
||||||
"audio.hide": "Skjul lyd",
|
"audio.hide": "Skjul lyd",
|
||||||
|
"block_modal.remote_users_caveat": "Vi vil be serveren {domain} om å respektere din beslutning. Det er imidlertid ingen garanti at det blir overholdt, siden noen servere kan håndtere blokkeringer på forskjellig vis. Offentlige innlegg kan fortsatt være synlige for ikke-innloggede brukere.",
|
||||||
|
"block_modal.show_less": "Vis mindre",
|
||||||
|
"block_modal.show_more": "Vis mer",
|
||||||
|
"block_modal.they_cant_mention": "De kan ikke nevne eller følge deg.",
|
||||||
|
"block_modal.they_cant_see_posts": "De kan ikke se dine innlegg og du kommer ikke til å se deres.",
|
||||||
|
"block_modal.they_will_know": "De kan se at de er blitt blokkert.",
|
||||||
|
"block_modal.title": "Blokker bruker?",
|
||||||
|
"block_modal.you_wont_see_mentions": "Du kommer ikke til å se innlegg som nevner dem.",
|
||||||
"boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang",
|
"boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang",
|
||||||
|
"boost_modal.reblog": "Fremhev innlegg?",
|
||||||
|
"boost_modal.undo_reblog": "Fjern fremheving?",
|
||||||
"bundle_column_error.copy_stacktrace": "Kopier feilrapport",
|
"bundle_column_error.copy_stacktrace": "Kopier feilrapport",
|
||||||
"bundle_column_error.error.body": "Den forespurte siden kan ikke gjengis. Den kan skyldes en feil i vår kode eller et kompatibilitetsproblem med nettleseren.",
|
"bundle_column_error.error.body": "Den forespurte siden kan ikke gjengis. Den kan skyldes en feil i vår kode eller et kompatibilitetsproblem med nettleseren.",
|
||||||
"bundle_column_error.error.title": "Å nei!",
|
"bundle_column_error.error.title": "Å nei!",
|
||||||
|
@ -158,21 +172,30 @@
|
||||||
"confirmations.block.confirm": "Blokkèr",
|
"confirmations.block.confirm": "Blokkèr",
|
||||||
"confirmations.delete.confirm": "Slett",
|
"confirmations.delete.confirm": "Slett",
|
||||||
"confirmations.delete.message": "Er du sikker på at du vil slette dette innlegget?",
|
"confirmations.delete.message": "Er du sikker på at du vil slette dette innlegget?",
|
||||||
|
"confirmations.delete.title": "Slett innlegg?",
|
||||||
"confirmations.delete_list.confirm": "Slett",
|
"confirmations.delete_list.confirm": "Slett",
|
||||||
"confirmations.delete_list.message": "Er du sikker på at du vil slette denne listen permanent?",
|
"confirmations.delete_list.message": "Er du sikker på at du vil slette denne listen permanent?",
|
||||||
|
"confirmations.delete_list.title": "Slett liste?",
|
||||||
"confirmations.discard_edit_media.confirm": "Forkast",
|
"confirmations.discard_edit_media.confirm": "Forkast",
|
||||||
"confirmations.discard_edit_media.message": "Du har ulagrede endringer i mediebeskrivelsen eller i forhåndsvisning, forkast dem likevel?",
|
"confirmations.discard_edit_media.message": "Du har ulagrede endringer i mediebeskrivelsen eller i forhåndsvisning, forkast dem likevel?",
|
||||||
"confirmations.edit.confirm": "Redigér",
|
"confirmations.edit.confirm": "Redigér",
|
||||||
"confirmations.edit.message": "Å redigere nå vil overskrive meldingen du skriver for øyeblikket. Er du sikker på at du vil fortsette?",
|
"confirmations.edit.message": "Å redigere nå vil overskrive meldingen du skriver for øyeblikket. Er du sikker på at du vil fortsette?",
|
||||||
|
"confirmations.edit.title": "Overskriv innlegg?",
|
||||||
"confirmations.logout.confirm": "Logg ut",
|
"confirmations.logout.confirm": "Logg ut",
|
||||||
"confirmations.logout.message": "Er du sikker på at du vil logge ut?",
|
"confirmations.logout.message": "Er du sikker på at du vil logge ut?",
|
||||||
|
"confirmations.logout.title": "Logg ut?",
|
||||||
"confirmations.mute.confirm": "Demp",
|
"confirmations.mute.confirm": "Demp",
|
||||||
"confirmations.redraft.confirm": "Slett og skriv på nytt",
|
"confirmations.redraft.confirm": "Slett og skriv på nytt",
|
||||||
"confirmations.redraft.message": "Er du sikker på at du vil slette dette innlegget og lagre det på nytt? Favoritter og fremhevinger vil gå tapt, og svar til det originale innlegget vil bli foreldreløse.",
|
"confirmations.redraft.message": "Er du sikker på at du vil slette dette innlegget og lagre det på nytt? Favoritter og fremhevinger vil gå tapt, og svar til det originale innlegget vil bli foreldreløse.",
|
||||||
|
"confirmations.redraft.title": "Slett og skriv på nytt?",
|
||||||
"confirmations.reply.confirm": "Svar",
|
"confirmations.reply.confirm": "Svar",
|
||||||
"confirmations.reply.message": "Å svare nå vil overskrive meldingen du skriver for øyeblikket. Er du sikker på at du vil fortsette?",
|
"confirmations.reply.message": "Å svare nå vil overskrive meldingen du skriver for øyeblikket. Er du sikker på at du vil fortsette?",
|
||||||
|
"confirmations.reply.title": "Overskriv innlegg?",
|
||||||
"confirmations.unfollow.confirm": "Slutt å følge",
|
"confirmations.unfollow.confirm": "Slutt å følge",
|
||||||
"confirmations.unfollow.message": "Er du sikker på at du vil slutte å følge {name}?",
|
"confirmations.unfollow.message": "Er du sikker på at du vil slutte å følge {name}?",
|
||||||
|
"confirmations.unfollow.title": "Slutt å følge bruker?",
|
||||||
|
"content_warning.hide": "Skjul innlegg",
|
||||||
|
"content_warning.show": "Vis likevel",
|
||||||
"conversation.delete": "Slett samtalen",
|
"conversation.delete": "Slett samtalen",
|
||||||
"conversation.mark_as_read": "Marker som lest",
|
"conversation.mark_as_read": "Marker som lest",
|
||||||
"conversation.open": "Vis samtale",
|
"conversation.open": "Vis samtale",
|
||||||
|
@ -192,6 +215,27 @@
|
||||||
"dismissable_banner.explore_statuses": "Disse innleggene fra denne og andre servere i det desentraliserte nettverket får økt oppmerksomhet på denne serveren akkurat nå. Nyere innlegg med flere fremhevinger og favoritter er rangert høyere.",
|
"dismissable_banner.explore_statuses": "Disse innleggene fra denne og andre servere i det desentraliserte nettverket får økt oppmerksomhet på denne serveren akkurat nå. Nyere innlegg med flere fremhevinger og favoritter er rangert høyere.",
|
||||||
"dismissable_banner.explore_tags": "Disse emneknaggene snakker folk om akkurat nå, på denne og andre servere i det desentraliserte nettverket.",
|
"dismissable_banner.explore_tags": "Disse emneknaggene snakker folk om akkurat nå, på denne og andre servere i det desentraliserte nettverket.",
|
||||||
"dismissable_banner.public_timeline": "Dette er de siste offentlige innleggene fra mennesker på det sosiale nettet som folk på {domain} følger.",
|
"dismissable_banner.public_timeline": "Dette er de siste offentlige innleggene fra mennesker på det sosiale nettet som folk på {domain} følger.",
|
||||||
|
"domain_block_modal.block": "Blokker server",
|
||||||
|
"domain_block_modal.block_account_instead": "Blokker @{name} i stedet",
|
||||||
|
"domain_block_modal.they_can_interact_with_old_posts": "Personer fra denne serveren kan samhandle med dine gamle innlegg.",
|
||||||
|
"domain_block_modal.they_cant_follow": "Ingen fra denne serveren kan følge deg.",
|
||||||
|
"domain_block_modal.they_wont_know": "De kommer ikke til å få vite at du har valgt å blokkere dem.",
|
||||||
|
"domain_block_modal.title": "Blokker domenet?",
|
||||||
|
"domain_block_modal.you_will_lose_followers": "Alle dine følgere fra denne serveren vil bli fjernet.",
|
||||||
|
"domain_block_modal.you_wont_see_posts": "Du vil ikke se innlegg eller få varsler fra brukere på denne serveren.",
|
||||||
|
"domain_pill.activitypub_lets_connect": "Den lar deg koble til og samhandle med folk ikke bare på Mastodon, men også på tvers av forskjellige sosiale apper.",
|
||||||
|
"domain_pill.activitypub_like_language": "ActivityPub er liksom språket Mastodon snakker med andre sosiale nettverk.",
|
||||||
|
"domain_pill.server": "Server",
|
||||||
|
"domain_pill.their_handle": "Deres håndtak:",
|
||||||
|
"domain_pill.their_server": "Deres digitale hjem, hvor alle innleggene deres bor.",
|
||||||
|
"domain_pill.their_username": "Deres unike identifikator på serveren sin. Det er mulig å finne brukere med samme brukernavn på forskjellige servere.",
|
||||||
|
"domain_pill.username": "Brukernavn",
|
||||||
|
"domain_pill.whats_in_a_handle": "Hva er et håndtak?",
|
||||||
|
"domain_pill.who_they_are": "Siden håndtakene sier hvem noen er og hvor de er, kan du samhandle med folk på tvers av det sosiale nettverket bestående av <button>plattformer som støtter ActivityPub</button>.",
|
||||||
|
"domain_pill.who_you_are": "Fordi ditt håndtak sier hvem du er og hvor du er, kan folk kommunisere med deg på tvers av <button>plattformer som støtter ActivityPub</button>.",
|
||||||
|
"domain_pill.your_handle": "Din håndtak:",
|
||||||
|
"domain_pill.your_server": "Ditt digitale hjem, hvor alle dine innlegg bor. Liker du ikke denne? Flytt till en annen server når som helst og ta med følgerne dine.",
|
||||||
|
"domain_pill.your_username": "Din unike identifikator på denne serveren. Det er mulig å finne brukere med samme brukernavn på forskjellige servere.",
|
||||||
"embed.instructions": "Kopier koden under for å bygge inn denne statusen på hjemmesiden din.",
|
"embed.instructions": "Kopier koden under for å bygge inn denne statusen på hjemmesiden din.",
|
||||||
"embed.preview": "Slik kommer det til å se ut:",
|
"embed.preview": "Slik kommer det til å se ut:",
|
||||||
"emoji_button.activity": "Aktivitet",
|
"emoji_button.activity": "Aktivitet",
|
||||||
|
@ -228,6 +272,7 @@
|
||||||
"empty_column.list": "Det er ingenting i denne listen ennå. Når medlemmene av denne listen legger ut nye statuser vil de dukke opp her.",
|
"empty_column.list": "Det er ingenting i denne listen ennå. Når medlemmene av denne listen legger ut nye statuser vil de dukke opp her.",
|
||||||
"empty_column.lists": "Du har ingen lister enda. Når du lager en, vil den dukke opp her.",
|
"empty_column.lists": "Du har ingen lister enda. Når du lager en, vil den dukke opp her.",
|
||||||
"empty_column.mutes": "Du har ikke dempet noen brukere enda.",
|
"empty_column.mutes": "Du har ikke dempet noen brukere enda.",
|
||||||
|
"empty_column.notification_requests": "Alt klart! Det er ingenting her. Når du mottar nye varsler, vises de her i henhold til dine innstillinger.",
|
||||||
"empty_column.notifications": "Du har ingen varsler ennå. Kommuniser med andre for å begynne samtalen.",
|
"empty_column.notifications": "Du har ingen varsler ennå. Kommuniser med andre for å begynne samtalen.",
|
||||||
"empty_column.public": "Det er ingenting her! Skriv noe offentlig, eller følg brukere manuelt fra andre instanser for å fylle den opp",
|
"empty_column.public": "Det er ingenting her! Skriv noe offentlig, eller følg brukere manuelt fra andre instanser for å fylle den opp",
|
||||||
"error.unexpected_crash.explanation": "På grunn av en bug i koden vår eller et nettleserkompatibilitetsproblem, kunne denne siden ikke vises riktig.",
|
"error.unexpected_crash.explanation": "På grunn av en bug i koden vår eller et nettleserkompatibilitetsproblem, kunne denne siden ikke vises riktig.",
|
||||||
|
@ -258,13 +303,30 @@
|
||||||
"filter_modal.select_filter.subtitle": "Bruk en eksisterende kategori eller opprett en ny",
|
"filter_modal.select_filter.subtitle": "Bruk en eksisterende kategori eller opprett en ny",
|
||||||
"filter_modal.select_filter.title": "Filtrer dette innlegget",
|
"filter_modal.select_filter.title": "Filtrer dette innlegget",
|
||||||
"filter_modal.title.status": "Filtrer et innlegg",
|
"filter_modal.title.status": "Filtrer et innlegg",
|
||||||
|
"filter_warning.matches_filter": "Passer med filteret «{title}»",
|
||||||
|
"filtered_notifications_banner.pending_requests": "Fra {count, plural, =0 {ingen} one {en person} other {# folk}} du kanskje kjenner",
|
||||||
|
"filtered_notifications_banner.title": "Filtrerte varsler",
|
||||||
"firehose.all": "Alt",
|
"firehose.all": "Alt",
|
||||||
"firehose.local": "Denne serveren",
|
"firehose.local": "Denne serveren",
|
||||||
"firehose.remote": "Andre servere",
|
"firehose.remote": "Andre servere",
|
||||||
"follow_request.authorize": "Autoriser",
|
"follow_request.authorize": "Autoriser",
|
||||||
"follow_request.reject": "Avvis",
|
"follow_request.reject": "Avvis",
|
||||||
"follow_requests.unlocked_explanation": "Selv om kontoen din ikke er låst, tror {domain} ansatte at du kanskje vil gjennomgå forespørsler fra disse kontoene manuelt.",
|
"follow_requests.unlocked_explanation": "Selv om kontoen din ikke er låst, tror {domain} ansatte at du kanskje vil gjennomgå forespørsler fra disse kontoene manuelt.",
|
||||||
|
"follow_suggestions.curated_suggestion": "Utvalgt av staben",
|
||||||
|
"follow_suggestions.dismiss": "Ikke vis igjen",
|
||||||
|
"follow_suggestions.featured_longer": "Håndplukket av {domain}-teamet",
|
||||||
|
"follow_suggestions.friends_of_friends_longer": "Populært blant personer du følger",
|
||||||
|
"follow_suggestions.hints.featured": "Denne profilen er håndplukket av {domain}-teamet.",
|
||||||
|
"follow_suggestions.hints.friends_of_friends": "Denne profilen er populær blant de du følger.",
|
||||||
|
"follow_suggestions.hints.most_followed": "Denne profilen er en av de på {domain} som har flest følgere.",
|
||||||
|
"follow_suggestions.hints.most_interactions": "Denne profilen fått mye oppmerksomhet i det siste på {domain}.",
|
||||||
|
"follow_suggestions.hints.similar_to_recently_followed": "Denne profilen ligner på profilene du nylig har fulgt.",
|
||||||
|
"follow_suggestions.personalized_suggestion": "Personlig forslag",
|
||||||
|
"follow_suggestions.popular_suggestion": "Populært forslag",
|
||||||
|
"follow_suggestions.popular_suggestion_longer": "Populært på {domain}",
|
||||||
|
"follow_suggestions.similar_to_recently_followed_longer": "Likner på profiler du nylig har fulgt",
|
||||||
"follow_suggestions.view_all": "Vis alle",
|
"follow_suggestions.view_all": "Vis alle",
|
||||||
|
"follow_suggestions.who_to_follow": "Hvem du kan følge",
|
||||||
"followed_tags": "Fulgte emneknagger",
|
"followed_tags": "Fulgte emneknagger",
|
||||||
"footer.about": "Om",
|
"footer.about": "Om",
|
||||||
"footer.directory": "Profilkatalog",
|
"footer.directory": "Profilkatalog",
|
||||||
|
@ -291,6 +353,14 @@
|
||||||
"hashtag.follow": "Følg emneknagg",
|
"hashtag.follow": "Følg emneknagg",
|
||||||
"hashtag.unfollow": "Slutt å følge emneknagg",
|
"hashtag.unfollow": "Slutt å følge emneknagg",
|
||||||
"hashtags.and_other": "…og {count, plural, one{en til} other {# til}}",
|
"hashtags.and_other": "…og {count, plural, one{en til} other {# til}}",
|
||||||
|
"hints.profiles.followers_may_be_missing": "Følgere for denne profilen mangler kanskje.",
|
||||||
|
"hints.profiles.follows_may_be_missing": "Hvem denne profilen følger mangler kanskje.",
|
||||||
|
"hints.profiles.posts_may_be_missing": "Det kan hende at noen av innleggene til denne profilen mangler.",
|
||||||
|
"hints.profiles.see_more_followers": "Se flere følgere på {domain}",
|
||||||
|
"hints.profiles.see_more_follows": "Se flere som følger på {domain}",
|
||||||
|
"hints.profiles.see_more_posts": "Se flere innlegg på {domain}",
|
||||||
|
"hints.threads.replies_may_be_missing": "Svar fra andre servere mangler kanskje.",
|
||||||
|
"hints.threads.see_more": "Se flere svar på {domain}",
|
||||||
"home.column_settings.show_reblogs": "Vis fremhevinger",
|
"home.column_settings.show_reblogs": "Vis fremhevinger",
|
||||||
"home.column_settings.show_replies": "Vis svar",
|
"home.column_settings.show_replies": "Vis svar",
|
||||||
"home.hide_announcements": "Skjul kunngjøring",
|
"home.hide_announcements": "Skjul kunngjøring",
|
||||||
|
@ -298,6 +368,17 @@
|
||||||
"home.pending_critical_update.link": "Se oppdateringer",
|
"home.pending_critical_update.link": "Se oppdateringer",
|
||||||
"home.pending_critical_update.title": "Kritisk sikkerhetsoppdatering er tilgjengelig!",
|
"home.pending_critical_update.title": "Kritisk sikkerhetsoppdatering er tilgjengelig!",
|
||||||
"home.show_announcements": "Vis kunngjøring",
|
"home.show_announcements": "Vis kunngjøring",
|
||||||
|
"ignore_notifications_modal.disclaimer": "Mastodon kan ikke informere brukere at du har ignorert deres varsler. Å ignorere varsler vil ikke stoppe meldinger selv fra å bli sendt.",
|
||||||
|
"ignore_notifications_modal.filter_instead": "Filtrer i stedet",
|
||||||
|
"ignore_notifications_modal.filter_to_act_users": "Du kan fremdeles akseptere, avvise eller rapportere brukere",
|
||||||
|
"ignore_notifications_modal.filter_to_avoid_confusion": "Filtrering bidrar til å unngå potensiell forvirring",
|
||||||
|
"ignore_notifications_modal.filter_to_review_separately": "Du kan gjennomgå filtrerte varsler for seg",
|
||||||
|
"ignore_notifications_modal.ignore": "Overse varsler",
|
||||||
|
"ignore_notifications_modal.limited_accounts_title": "Overse varsler fra modererte kontoer?",
|
||||||
|
"ignore_notifications_modal.new_accounts_title": "Overse varsler fra nye kontoer?",
|
||||||
|
"ignore_notifications_modal.not_followers_title": "Overse varsler fra folk som ikke følger deg?",
|
||||||
|
"ignore_notifications_modal.not_following_title": "Overse varsler fra folk du ikke følger?",
|
||||||
|
"ignore_notifications_modal.private_mentions_title": "Overse varsler fra uoppfordrede private omtaler?",
|
||||||
"interaction_modal.description.favourite": "Med en konto på Mastodon, kan du favorittmarkere dette innlegget for å la forfatteren vite at du satte pris på det, og lagre innlegget til senere.",
|
"interaction_modal.description.favourite": "Med en konto på Mastodon, kan du favorittmarkere dette innlegget for å la forfatteren vite at du satte pris på det, og lagre innlegget til senere.",
|
||||||
"interaction_modal.description.follow": "Med en konto på Mastodon, kan du følge {name} for å få innleggene deres i tidslinjen din.",
|
"interaction_modal.description.follow": "Med en konto på Mastodon, kan du følge {name} for å få innleggene deres i tidslinjen din.",
|
||||||
"interaction_modal.description.reblog": "Med en konto på Mastodon, kan du fremheve dette innlegget for å dele det med dine egne følgere.",
|
"interaction_modal.description.reblog": "Med en konto på Mastodon, kan du fremheve dette innlegget for å dele det med dine egne følgere.",
|
||||||
|
@ -358,6 +439,8 @@
|
||||||
"limited_account_hint.action": "Vis profil likevel",
|
"limited_account_hint.action": "Vis profil likevel",
|
||||||
"limited_account_hint.title": "Denne profilen har blitt skjult av moderatorene til {domain}.",
|
"limited_account_hint.title": "Denne profilen har blitt skjult av moderatorene til {domain}.",
|
||||||
"link_preview.author": "Av {name}",
|
"link_preview.author": "Av {name}",
|
||||||
|
"link_preview.more_from_author": "Mer fra {name}",
|
||||||
|
"link_preview.shares": "{count, plural, one {{counter} innlegg} other {{counter} innlegg}}",
|
||||||
"lists.account.add": "Legg til i listen",
|
"lists.account.add": "Legg til i listen",
|
||||||
"lists.account.remove": "Fjern fra listen",
|
"lists.account.remove": "Fjern fra listen",
|
||||||
"lists.delete": "Slett listen",
|
"lists.delete": "Slett listen",
|
||||||
|
@ -376,7 +459,17 @@
|
||||||
"loading_indicator.label": "Laster…",
|
"loading_indicator.label": "Laster…",
|
||||||
"media_gallery.toggle_visible": "Veksle synlighet",
|
"media_gallery.toggle_visible": "Veksle synlighet",
|
||||||
"moved_to_account_banner.text": "Din konto {disabledAccount} er for øyeblikket deaktivert fordi du flyttet til {movedToAccount}.",
|
"moved_to_account_banner.text": "Din konto {disabledAccount} er for øyeblikket deaktivert fordi du flyttet til {movedToAccount}.",
|
||||||
|
"mute_modal.hide_from_notifications": "Ikke varsle",
|
||||||
|
"mute_modal.hide_options": "Skjul alternativer",
|
||||||
|
"mute_modal.indefinite": "Til jeg opphever dempingen",
|
||||||
|
"mute_modal.show_options": "Vis alternativer",
|
||||||
|
"mute_modal.they_can_mention_and_follow": "De kan nevne og følge deg, men du kommer ikke til å se dem.",
|
||||||
|
"mute_modal.they_wont_know": "De kommer ikke til å få vite at du har valgt å skjule dem.",
|
||||||
|
"mute_modal.title": "Demp bruker?",
|
||||||
|
"mute_modal.you_wont_see_mentions": "Du kommer ikke til å se innlegg som nevner dem.",
|
||||||
|
"mute_modal.you_wont_see_posts": "De kan fremdeles se dine innlegg, men du kommer ikke til å se deres.",
|
||||||
"navigation_bar.about": "Om",
|
"navigation_bar.about": "Om",
|
||||||
|
"navigation_bar.administration": "Administrasjon",
|
||||||
"navigation_bar.advanced_interface": "Åpne i det avanserte nettgrensesnittet",
|
"navigation_bar.advanced_interface": "Åpne i det avanserte nettgrensesnittet",
|
||||||
"navigation_bar.blocks": "Blokkerte brukere",
|
"navigation_bar.blocks": "Blokkerte brukere",
|
||||||
"navigation_bar.bookmarks": "Bokmerker",
|
"navigation_bar.bookmarks": "Bokmerker",
|
||||||
|
@ -393,6 +486,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Følginger og følgere",
|
"navigation_bar.follows_and_followers": "Følginger og følgere",
|
||||||
"navigation_bar.lists": "Lister",
|
"navigation_bar.lists": "Lister",
|
||||||
"navigation_bar.logout": "Logg ut",
|
"navigation_bar.logout": "Logg ut",
|
||||||
|
"navigation_bar.moderation": "Moderering",
|
||||||
"navigation_bar.mutes": "Dempede brukere",
|
"navigation_bar.mutes": "Dempede brukere",
|
||||||
"navigation_bar.opened_in_classic_interface": "Innlegg, kontoer og andre spesifikke sider åpnes som standard i det klassiske webgrensesnittet.",
|
"navigation_bar.opened_in_classic_interface": "Innlegg, kontoer og andre spesifikke sider åpnes som standard i det klassiske webgrensesnittet.",
|
||||||
"navigation_bar.personal": "Personlig",
|
"navigation_bar.personal": "Personlig",
|
||||||
|
@ -403,6 +497,7 @@
|
||||||
"navigation_bar.security": "Sikkerhet",
|
"navigation_bar.security": "Sikkerhet",
|
||||||
"not_signed_in_indicator.not_signed_in": "Du må logge inn for å få tilgang til denne ressursen.",
|
"not_signed_in_indicator.not_signed_in": "Du må logge inn for å få tilgang til denne ressursen.",
|
||||||
"notification.admin.report": "{name} rapporterte {target}",
|
"notification.admin.report": "{name} rapporterte {target}",
|
||||||
|
"notification.admin.report_account": "{name} rapporterte {count, plural, one {et innlegg} other {# innlegg}} fra {target} for {category}",
|
||||||
"notification.admin.sign_up": "{name} registrerte seg",
|
"notification.admin.sign_up": "{name} registrerte seg",
|
||||||
"notification.favourite": "{name} favorittmarkerte innlegget ditt",
|
"notification.favourite": "{name} favorittmarkerte innlegget ditt",
|
||||||
"notification.follow": "{name} fulgte deg",
|
"notification.follow": "{name} fulgte deg",
|
||||||
|
@ -417,6 +512,8 @@
|
||||||
"notifications.column_settings.admin.sign_up": "Nye registreringer:",
|
"notifications.column_settings.admin.sign_up": "Nye registreringer:",
|
||||||
"notifications.column_settings.alert": "Skrivebordsvarslinger",
|
"notifications.column_settings.alert": "Skrivebordsvarslinger",
|
||||||
"notifications.column_settings.favourite": "Favoritter:",
|
"notifications.column_settings.favourite": "Favoritter:",
|
||||||
|
"notifications.column_settings.filter_bar.advanced": "Vis alle kategorier",
|
||||||
|
"notifications.column_settings.filter_bar.category": "Hurtigfiltreringslinje",
|
||||||
"notifications.column_settings.follow": "Nye følgere:",
|
"notifications.column_settings.follow": "Nye følgere:",
|
||||||
"notifications.column_settings.follow_request": "Nye følgerforespørsler:",
|
"notifications.column_settings.follow_request": "Nye følgerforespørsler:",
|
||||||
"notifications.column_settings.mention": "Nevnt:",
|
"notifications.column_settings.mention": "Nevnt:",
|
||||||
|
@ -442,6 +539,23 @@
|
||||||
"notifications.permission_denied": "Skrivebordsvarsler er ikke tilgjengelige på grunn av tidligere nektet nettlesertillatelser",
|
"notifications.permission_denied": "Skrivebordsvarsler er ikke tilgjengelige på grunn av tidligere nektet nettlesertillatelser",
|
||||||
"notifications.permission_denied_alert": "Skrivebordsvarsler kan ikke aktiveres, ettersom lesertillatelse har blitt nektet før",
|
"notifications.permission_denied_alert": "Skrivebordsvarsler kan ikke aktiveres, ettersom lesertillatelse har blitt nektet før",
|
||||||
"notifications.permission_required": "Skrivebordsvarsler er utilgjengelige fordi nødvendige rettigheter ikke er gitt.",
|
"notifications.permission_required": "Skrivebordsvarsler er utilgjengelige fordi nødvendige rettigheter ikke er gitt.",
|
||||||
|
"notifications.policy.accept": "Godta",
|
||||||
|
"notifications.policy.accept_hint": "Vis i varsler",
|
||||||
|
"notifications.policy.drop": "Overse",
|
||||||
|
"notifications.policy.drop_hint": "Send til avgrunnen, for aldri å bli sett igjen",
|
||||||
|
"notifications.policy.filter": "Filter",
|
||||||
|
"notifications.policy.filter_hint": "Send til filtrert varslingsinnboks",
|
||||||
|
"notifications.policy.filter_limited_accounts_hint": "Begrenset av serverens moderatorer",
|
||||||
|
"notifications.policy.filter_limited_accounts_title": "Modererte kontoer",
|
||||||
|
"notifications.policy.filter_new_accounts.hint": "Opprettet {days, plural, one {den siste dagen} other {i de siste # dagene}}",
|
||||||
|
"notifications.policy.filter_new_accounts_title": "Nye kontoer",
|
||||||
|
"notifications.policy.filter_not_followers_hint": "Inkludert personer som har fulgt deg mindre enn {days, plural, one {en dag} other {# dager}}",
|
||||||
|
"notifications.policy.filter_not_followers_title": "Personer som ikke følger deg",
|
||||||
|
"notifications.policy.filter_not_following_hint": "Inntil du manuelt godkjenner dem",
|
||||||
|
"notifications.policy.filter_not_following_title": "Personer du ikke følger",
|
||||||
|
"notifications.policy.filter_private_mentions_hint": "Filtrert med mindre det er et svar som omtaler deg, eller hvis du følger avsenderen",
|
||||||
|
"notifications.policy.filter_private_mentions_title": "Uoppfordrede private omtaler",
|
||||||
|
"notifications.policy.title": "Behandle varsler fra…",
|
||||||
"notifications_permission_banner.enable": "Skru på skrivebordsvarsler",
|
"notifications_permission_banner.enable": "Skru på skrivebordsvarsler",
|
||||||
"notifications_permission_banner.how_to_control": "For å motta varsler når Mastodon ikke er åpne, aktiver desktop varsler. Du kan kontrollere nøyaktig hvilke typer interaksjoner genererer skrivebordsvarsler gjennom {icon} -knappen ovenfor når de er aktivert.",
|
"notifications_permission_banner.how_to_control": "For å motta varsler når Mastodon ikke er åpne, aktiver desktop varsler. Du kan kontrollere nøyaktig hvilke typer interaksjoner genererer skrivebordsvarsler gjennom {icon} -knappen ovenfor når de er aktivert.",
|
||||||
"notifications_permission_banner.title": "Aldri gå glipp av noe",
|
"notifications_permission_banner.title": "Aldri gå glipp av noe",
|
||||||
|
@ -602,7 +716,7 @@
|
||||||
"sign_in_banner.sso_redirect": "Logg inn eller registrer deg",
|
"sign_in_banner.sso_redirect": "Logg inn eller registrer deg",
|
||||||
"status.admin_account": "Åpne moderatorgrensesnittet for @{name}",
|
"status.admin_account": "Åpne moderatorgrensesnittet for @{name}",
|
||||||
"status.admin_domain": "Åpne moderatorgrensesnittet for {domain}",
|
"status.admin_domain": "Åpne moderatorgrensesnittet for {domain}",
|
||||||
"status.admin_status": "Åpne denne statusen i moderatorgrensesnittet",
|
"status.admin_status": "Åpne dette innlegget i moderatorgrensesnittet",
|
||||||
"status.block": "Blokker @{name}",
|
"status.block": "Blokker @{name}",
|
||||||
"status.bookmark": "Bokmerke",
|
"status.bookmark": "Bokmerke",
|
||||||
"status.cancel_reblog_private": "Fjern fremheving",
|
"status.cancel_reblog_private": "Fjern fremheving",
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"about.not_available": "Esta informação não foi disponibilizada neste servidor.",
|
"about.not_available": "Esta informação não foi disponibilizada neste servidor.",
|
||||||
"about.powered_by": "Redes sociais descentralizadas alimentadas por {mastodon}",
|
"about.powered_by": "Redes sociais descentralizadas alimentadas por {mastodon}",
|
||||||
"about.rules": "Regras do servidor",
|
"about.rules": "Regras do servidor",
|
||||||
|
"account.account_note_header": "Nota pessoal",
|
||||||
"account.add_or_remove_from_list": "Adicionar ou remover de listas",
|
"account.add_or_remove_from_list": "Adicionar ou remover de listas",
|
||||||
"account.badges.bot": "Robô",
|
"account.badges.bot": "Robô",
|
||||||
"account.badges.group": "Grupo",
|
"account.badges.group": "Grupo",
|
||||||
|
@ -61,6 +62,7 @@
|
||||||
"account.requested_follow": "{name} quer te seguir",
|
"account.requested_follow": "{name} quer te seguir",
|
||||||
"account.share": "Compartilhar perfil de @{name}",
|
"account.share": "Compartilhar perfil de @{name}",
|
||||||
"account.show_reblogs": "Mostrar boosts de @{name}",
|
"account.show_reblogs": "Mostrar boosts de @{name}",
|
||||||
|
"account.statuses_counter": "{count, plural, one {{counter} publicação} other {{counter} publicações}}",
|
||||||
"account.unblock": "Desbloquear @{name}",
|
"account.unblock": "Desbloquear @{name}",
|
||||||
"account.unblock_domain": "Desbloquear domínio {domain}",
|
"account.unblock_domain": "Desbloquear domínio {domain}",
|
||||||
"account.unblock_short": "Desbloquear",
|
"account.unblock_short": "Desbloquear",
|
||||||
|
@ -95,6 +97,8 @@
|
||||||
"block_modal.title": "Bloquear usuário?",
|
"block_modal.title": "Bloquear usuário?",
|
||||||
"block_modal.you_wont_see_mentions": "Você não verá publicações que os mencionem.",
|
"block_modal.you_wont_see_mentions": "Você não verá publicações que os mencionem.",
|
||||||
"boost_modal.combo": "Pressione {combo} para pular isso na próxima vez",
|
"boost_modal.combo": "Pressione {combo} para pular isso na próxima vez",
|
||||||
|
"boost_modal.reblog": "Impulsionar a publicação?",
|
||||||
|
"boost_modal.undo_reblog": "Retirar o impulsionamento do post?",
|
||||||
"bundle_column_error.copy_stacktrace": "Copiar relatório do erro",
|
"bundle_column_error.copy_stacktrace": "Copiar relatório do erro",
|
||||||
"bundle_column_error.error.body": "A página solicitada não pôde ser renderizada. Pode ser devido a um erro no nosso código, ou um problema de compatibilidade do seu navegador.",
|
"bundle_column_error.error.body": "A página solicitada não pôde ser renderizada. Pode ser devido a um erro no nosso código, ou um problema de compatibilidade do seu navegador.",
|
||||||
"bundle_column_error.error.title": "Ah, não!",
|
"bundle_column_error.error.title": "Ah, não!",
|
||||||
|
@ -190,6 +194,8 @@
|
||||||
"confirmations.unfollow.confirm": "Deixar de seguir",
|
"confirmations.unfollow.confirm": "Deixar de seguir",
|
||||||
"confirmations.unfollow.message": "Você tem certeza de que deseja deixar de seguir {name}?",
|
"confirmations.unfollow.message": "Você tem certeza de que deseja deixar de seguir {name}?",
|
||||||
"confirmations.unfollow.title": "Deixar de seguir o usuário?",
|
"confirmations.unfollow.title": "Deixar de seguir o usuário?",
|
||||||
|
"content_warning.hide": "Ocultar post",
|
||||||
|
"content_warning.show": "Mostrar mesmo assim",
|
||||||
"conversation.delete": "Excluir conversa",
|
"conversation.delete": "Excluir conversa",
|
||||||
"conversation.mark_as_read": "Marcar como lida",
|
"conversation.mark_as_read": "Marcar como lida",
|
||||||
"conversation.open": "Ver conversa",
|
"conversation.open": "Ver conversa",
|
||||||
|
@ -297,6 +303,8 @@
|
||||||
"filter_modal.select_filter.subtitle": "Use uma categoria existente ou crie uma nova",
|
"filter_modal.select_filter.subtitle": "Use uma categoria existente ou crie uma nova",
|
||||||
"filter_modal.select_filter.title": "Filtrar esta publicação",
|
"filter_modal.select_filter.title": "Filtrar esta publicação",
|
||||||
"filter_modal.title.status": "Filtrar uma publicação",
|
"filter_modal.title.status": "Filtrar uma publicação",
|
||||||
|
"filter_warning.matches_filter": "Correspondente ao filtro “{title}”",
|
||||||
|
"filtered_notifications_banner.pending_requests": "Por {count, plural, =0 {no one} one {one person} other {# people}} que você talvez conheça",
|
||||||
"filtered_notifications_banner.title": "Notificações filtradas",
|
"filtered_notifications_banner.title": "Notificações filtradas",
|
||||||
"firehose.all": "Tudo",
|
"firehose.all": "Tudo",
|
||||||
"firehose.local": "Este servidor",
|
"firehose.local": "Este servidor",
|
||||||
|
@ -345,6 +353,14 @@
|
||||||
"hashtag.follow": "Seguir hashtag",
|
"hashtag.follow": "Seguir hashtag",
|
||||||
"hashtag.unfollow": "Parar de seguir hashtag",
|
"hashtag.unfollow": "Parar de seguir hashtag",
|
||||||
"hashtags.and_other": "…e {count, plural, one {}other {outros #}}",
|
"hashtags.and_other": "…e {count, plural, one {}other {outros #}}",
|
||||||
|
"hints.profiles.followers_may_be_missing": "Os seguidores deste perfil podem estar faltando.",
|
||||||
|
"hints.profiles.follows_may_be_missing": "Os seguidores deste perfil podem estar faltando.",
|
||||||
|
"hints.profiles.posts_may_be_missing": "É possível que algumas publicações deste perfil estejam faltando.",
|
||||||
|
"hints.profiles.see_more_followers": "Ver mais seguidores no {domain}",
|
||||||
|
"hints.profiles.see_more_follows": "Ver mais seguidores no {domain}",
|
||||||
|
"hints.profiles.see_more_posts": "Ver mais publicações em {domain}",
|
||||||
|
"hints.threads.replies_may_be_missing": "Respostas de outros servidores podem estar faltando.",
|
||||||
|
"hints.threads.see_more": "Ver mais respostas no {domain}",
|
||||||
"home.column_settings.show_reblogs": "Mostrar boosts",
|
"home.column_settings.show_reblogs": "Mostrar boosts",
|
||||||
"home.column_settings.show_replies": "Mostrar respostas",
|
"home.column_settings.show_replies": "Mostrar respostas",
|
||||||
"home.hide_announcements": "Ocultar comunicados",
|
"home.hide_announcements": "Ocultar comunicados",
|
||||||
|
@ -352,6 +368,13 @@
|
||||||
"home.pending_critical_update.link": "Ver atualizações",
|
"home.pending_critical_update.link": "Ver atualizações",
|
||||||
"home.pending_critical_update.title": "Atualização de segurança crítica disponível!",
|
"home.pending_critical_update.title": "Atualização de segurança crítica disponível!",
|
||||||
"home.show_announcements": "Mostrar comunicados",
|
"home.show_announcements": "Mostrar comunicados",
|
||||||
|
"ignore_notifications_modal.disclaimer": "O Mastodon não pode informar aos usuários que você ignorou suas notificações. Ignorar notificações não impedirá que as próprias mensagens sejam enviadas.",
|
||||||
|
"ignore_notifications_modal.filter_instead": "Filtrar em vez disso",
|
||||||
|
"ignore_notifications_modal.filter_to_act_users": "Você ainda conseguirá aceitar, rejeitar ou denunciar usuários",
|
||||||
|
"ignore_notifications_modal.filter_to_avoid_confusion": "A filtragem ajuda a evitar confusão potencial",
|
||||||
|
"ignore_notifications_modal.filter_to_review_separately": "Você pode rever notificações filtradas separadamente",
|
||||||
|
"ignore_notifications_modal.ignore": "Ignorar notificações",
|
||||||
|
"ignore_notifications_modal.limited_accounts_title": "Ignorar notificações de contas moderadas?",
|
||||||
"ignore_notifications_modal.new_accounts_title": "Ignorar notificações de novas contas?",
|
"ignore_notifications_modal.new_accounts_title": "Ignorar notificações de novas contas?",
|
||||||
"ignore_notifications_modal.not_followers_title": "Ignorar notificações de pessoas que não seguem você?",
|
"ignore_notifications_modal.not_followers_title": "Ignorar notificações de pessoas que não seguem você?",
|
||||||
"ignore_notifications_modal.not_following_title": "Ignorar notificações de pessoas que você não segue?",
|
"ignore_notifications_modal.not_following_title": "Ignorar notificações de pessoas que você não segue?",
|
||||||
|
@ -446,6 +469,7 @@
|
||||||
"mute_modal.you_wont_see_mentions": "Você não verá publicações que os mencionem.",
|
"mute_modal.you_wont_see_mentions": "Você não verá publicações que os mencionem.",
|
||||||
"mute_modal.you_wont_see_posts": "Eles ainda poderão ver suas publicações, mas você não verá as deles.",
|
"mute_modal.you_wont_see_posts": "Eles ainda poderão ver suas publicações, mas você não verá as deles.",
|
||||||
"navigation_bar.about": "Sobre",
|
"navigation_bar.about": "Sobre",
|
||||||
|
"navigation_bar.administration": "Administração",
|
||||||
"navigation_bar.advanced_interface": "Ativar na interface web avançada",
|
"navigation_bar.advanced_interface": "Ativar na interface web avançada",
|
||||||
"navigation_bar.blocks": "Usuários bloqueados",
|
"navigation_bar.blocks": "Usuários bloqueados",
|
||||||
"navigation_bar.bookmarks": "Salvos",
|
"navigation_bar.bookmarks": "Salvos",
|
||||||
|
@ -462,6 +486,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Segue e seguidores",
|
"navigation_bar.follows_and_followers": "Segue e seguidores",
|
||||||
"navigation_bar.lists": "Listas",
|
"navigation_bar.lists": "Listas",
|
||||||
"navigation_bar.logout": "Sair",
|
"navigation_bar.logout": "Sair",
|
||||||
|
"navigation_bar.moderation": "Moderação",
|
||||||
"navigation_bar.mutes": "Usuários silenciados",
|
"navigation_bar.mutes": "Usuários silenciados",
|
||||||
"navigation_bar.opened_in_classic_interface": "Publicações, contas e outras páginas específicas são abertas por padrão na interface 'web' clássica.",
|
"navigation_bar.opened_in_classic_interface": "Publicações, contas e outras páginas específicas são abertas por padrão na interface 'web' clássica.",
|
||||||
"navigation_bar.personal": "Pessoal",
|
"navigation_bar.personal": "Pessoal",
|
||||||
|
@ -472,10 +497,23 @@
|
||||||
"navigation_bar.security": "Segurança",
|
"navigation_bar.security": "Segurança",
|
||||||
"not_signed_in_indicator.not_signed_in": "Você precisa se autenticar para acessar este recurso.",
|
"not_signed_in_indicator.not_signed_in": "Você precisa se autenticar para acessar este recurso.",
|
||||||
"notification.admin.report": "{name} denunciou {target}",
|
"notification.admin.report": "{name} denunciou {target}",
|
||||||
|
"notification.admin.report_account": "{name} reportou {count, plural, one {Um post} other {# posts}} de {target} para {category}",
|
||||||
|
"notification.admin.report_account_other": "{name} reportou {count, plural, one {Um post} other {# posts}} de {target}",
|
||||||
|
"notification.admin.report_statuses": "{name} Reportou {target} para {category}",
|
||||||
|
"notification.admin.report_statuses_other": "{name} denunciou {target}",
|
||||||
"notification.admin.sign_up": "{name} se inscreveu",
|
"notification.admin.sign_up": "{name} se inscreveu",
|
||||||
|
"notification.admin.sign_up.name_and_others": "{name} e {count, plural, one {# other} other {# outros}}",
|
||||||
"notification.favourite": "{name} favoritou sua publicação",
|
"notification.favourite": "{name} favoritou sua publicação",
|
||||||
|
"notification.favourite.name_and_others_with_link": "{name} e <a>{count, plural, one {# outro} other {# others}}</a> favoritaram a publicação",
|
||||||
"notification.follow": "{name} te seguiu",
|
"notification.follow": "{name} te seguiu",
|
||||||
|
"notification.follow.name_and_others": "{name} e {count, plural, one {# other} other {# outros}} seguiu você",
|
||||||
"notification.follow_request": "{name} quer te seguir",
|
"notification.follow_request": "{name} quer te seguir",
|
||||||
|
"notification.follow_request.name_and_others": "{name} e {count, plural, one {# other} other {# outros}} pediu para seguir você",
|
||||||
|
"notification.label.mention": "Menção",
|
||||||
|
"notification.label.private_mention": "Menção privada",
|
||||||
|
"notification.label.private_reply": "Resposta privada",
|
||||||
|
"notification.label.reply": "Resposta",
|
||||||
|
"notification.mention": "Menção",
|
||||||
"notification.moderation-warning.learn_more": "Aprender mais",
|
"notification.moderation-warning.learn_more": "Aprender mais",
|
||||||
"notification.moderation_warning": "Você recebeu um aviso de moderação",
|
"notification.moderation_warning": "Você recebeu um aviso de moderação",
|
||||||
"notification.moderation_warning.action_delete_statuses": "Algumas das suas publicações foram removidas.",
|
"notification.moderation_warning.action_delete_statuses": "Algumas das suas publicações foram removidas.",
|
||||||
|
@ -486,7 +524,9 @@
|
||||||
"notification.moderation_warning.action_silence": "Sua conta foi limitada.",
|
"notification.moderation_warning.action_silence": "Sua conta foi limitada.",
|
||||||
"notification.moderation_warning.action_suspend": "Sua conta foi suspensa.",
|
"notification.moderation_warning.action_suspend": "Sua conta foi suspensa.",
|
||||||
"notification.own_poll": "Sua enquete terminou",
|
"notification.own_poll": "Sua enquete terminou",
|
||||||
|
"notification.poll": "Uma enquete que você votou terminou",
|
||||||
"notification.reblog": "{name} deu boost no teu toot",
|
"notification.reblog": "{name} deu boost no teu toot",
|
||||||
|
"notification.reblog.name_and_others_with_link": "{name} e <a>{count, plural, one {# outra} other {# outras}}</a> impulsionaram a publicação",
|
||||||
"notification.relationships_severance_event": "Conexões perdidas com {name}",
|
"notification.relationships_severance_event": "Conexões perdidas com {name}",
|
||||||
"notification.relationships_severance_event.account_suspension": "Um administrador de {from} suspendeu {target}, o que significa que você não pode mais receber atualizações deles ou interagir com eles.",
|
"notification.relationships_severance_event.account_suspension": "Um administrador de {from} suspendeu {target}, o que significa que você não pode mais receber atualizações deles ou interagir com eles.",
|
||||||
"notification.relationships_severance_event.domain_block": "An admin from {from} has blocked {target}, including {followersCount} of your followers and {followingCount, plural, one {# account} other {# accounts}} you follow.",
|
"notification.relationships_severance_event.domain_block": "An admin from {from} has blocked {target}, including {followersCount} of your followers and {followingCount, plural, one {# account} other {# accounts}} you follow.",
|
||||||
|
@ -495,16 +535,32 @@
|
||||||
"notification.status": "{name} acabou de tootar",
|
"notification.status": "{name} acabou de tootar",
|
||||||
"notification.update": "{name} editou uma publicação",
|
"notification.update": "{name} editou uma publicação",
|
||||||
"notification_requests.accept": "Aceitar",
|
"notification_requests.accept": "Aceitar",
|
||||||
|
"notification_requests.accept_multiple": "{count, plural, one {Aceite # pedido…} other {Aceite # pedidos…}}",
|
||||||
|
"notification_requests.confirm_accept_multiple.button": "{count, plural, one {Aceite # pedido} other {Aceite # pedidos}}",
|
||||||
|
"notification_requests.confirm_accept_multiple.message": "Você está prestes a aceitar {count, plural, one {um pedido de notificação} other {# pedidos de notificação}}. Tem certeza de que deseja continuar?",
|
||||||
|
"notification_requests.confirm_accept_multiple.title": "Aceitar solicitações de notificação?",
|
||||||
|
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Dispensar pedido} other {Dispensar pedidos}}",
|
||||||
|
"notification_requests.confirm_dismiss_multiple.message": "Você está prestes a descartar {count, plural, one {um pedido de notificação} other {# pedidos de notificação}}. Você não será capaz de acessar facilmente{count, plural, one {} other {}} novamente. Tem certeza de que deseja continuar?",
|
||||||
|
"notification_requests.confirm_dismiss_multiple.title": "Descartar solicitações de notificação?",
|
||||||
"notification_requests.dismiss": "Rejeitar",
|
"notification_requests.dismiss": "Rejeitar",
|
||||||
|
"notification_requests.dismiss_multiple": "{count, plural, one {Dispensar # pedido…} other {Dispensar # pedidos…}}",
|
||||||
|
"notification_requests.edit_selection": "Editar",
|
||||||
|
"notification_requests.exit_selection": "Concluído",
|
||||||
|
"notification_requests.explainer_for_limited_account": "As notificações desta conta foram filtradas porque a conta foi limitada por um moderador.",
|
||||||
|
"notification_requests.explainer_for_limited_remote_account": "As notificações desta conta foram filtradas porque a conta ou o seu servidor foi limitado por um moderador.",
|
||||||
"notification_requests.maximize": "Maximizar",
|
"notification_requests.maximize": "Maximizar",
|
||||||
|
"notification_requests.minimize_banner": "Minimizar banner de notificações filtradas",
|
||||||
"notification_requests.notifications_from": "Notificações de {name}",
|
"notification_requests.notifications_from": "Notificações de {name}",
|
||||||
"notification_requests.title": "Notificações filtradas",
|
"notification_requests.title": "Notificações filtradas",
|
||||||
|
"notification_requests.view": "Ver notificações",
|
||||||
"notifications.clear": "Limpar notificações",
|
"notifications.clear": "Limpar notificações",
|
||||||
"notifications.clear_confirmation": "Você tem certeza de que deseja limpar todas as suas notificações?",
|
"notifications.clear_confirmation": "Você tem certeza de que deseja limpar todas as suas notificações?",
|
||||||
"notifications.clear_title": "Limpar notificações?",
|
"notifications.clear_title": "Limpar notificações?",
|
||||||
"notifications.column_settings.admin.report": "Novas denúncias:",
|
"notifications.column_settings.admin.report": "Novas denúncias:",
|
||||||
"notifications.column_settings.admin.sign_up": "Novas inscrições:",
|
"notifications.column_settings.admin.sign_up": "Novas inscrições:",
|
||||||
"notifications.column_settings.alert": "Notificações no computador",
|
"notifications.column_settings.alert": "Notificações no computador",
|
||||||
|
"notifications.column_settings.beta.category": "Recursos experimentais",
|
||||||
|
"notifications.column_settings.beta.grouping": "Agrupar notificações",
|
||||||
"notifications.column_settings.favourite": "Favoritos:",
|
"notifications.column_settings.favourite": "Favoritos:",
|
||||||
"notifications.column_settings.filter_bar.advanced": "Exibir todas as categorias",
|
"notifications.column_settings.filter_bar.advanced": "Exibir todas as categorias",
|
||||||
"notifications.column_settings.filter_bar.category": "Barra de filtro rápido",
|
"notifications.column_settings.filter_bar.category": "Barra de filtro rápido",
|
||||||
|
@ -536,6 +592,11 @@
|
||||||
"notifications.policy.accept": "Aceitar",
|
"notifications.policy.accept": "Aceitar",
|
||||||
"notifications.policy.accept_hint": "Mostrar nas notificações",
|
"notifications.policy.accept_hint": "Mostrar nas notificações",
|
||||||
"notifications.policy.drop": "Ignorar",
|
"notifications.policy.drop": "Ignorar",
|
||||||
|
"notifications.policy.drop_hint": "Envie para o void, para nunca mais ser visto novamente",
|
||||||
|
"notifications.policy.filter": "Filtrar",
|
||||||
|
"notifications.policy.filter_hint": "Enviar para caixa de notificações filtradas",
|
||||||
|
"notifications.policy.filter_limited_accounts_hint": "Limitado pelos moderadores do servidor",
|
||||||
|
"notifications.policy.filter_limited_accounts_title": "Contas moderadas",
|
||||||
"notifications.policy.filter_new_accounts.hint": "Created within the past {days, plural, one {one day} other {# days}}",
|
"notifications.policy.filter_new_accounts.hint": "Created within the past {days, plural, one {one day} other {# days}}",
|
||||||
"notifications.policy.filter_new_accounts_title": "Novas contas",
|
"notifications.policy.filter_new_accounts_title": "Novas contas",
|
||||||
"notifications.policy.filter_not_followers_hint": "Including people who have been following you fewer than {days, plural, one {one day} other {# days}}",
|
"notifications.policy.filter_not_followers_hint": "Including people who have been following you fewer than {days, plural, one {one day} other {# days}}",
|
||||||
|
@ -544,6 +605,7 @@
|
||||||
"notifications.policy.filter_not_following_title": "Pessoas que você não segue",
|
"notifications.policy.filter_not_following_title": "Pessoas que você não segue",
|
||||||
"notifications.policy.filter_private_mentions_hint": "Filtrado, a menos que respondido em sua própria menção ou se você segue o remetente",
|
"notifications.policy.filter_private_mentions_hint": "Filtrado, a menos que respondido em sua própria menção ou se você segue o remetente",
|
||||||
"notifications.policy.filter_private_mentions_title": "Menções privadas não solicitadas",
|
"notifications.policy.filter_private_mentions_title": "Menções privadas não solicitadas",
|
||||||
|
"notifications.policy.title": "Gerenciar notificações de…",
|
||||||
"notifications_permission_banner.enable": "Ativar notificações no computador",
|
"notifications_permission_banner.enable": "Ativar notificações no computador",
|
||||||
"notifications_permission_banner.how_to_control": "Para receber notificações quando o Mastodon não estiver aberto, ative as notificações no computador. Você pode controlar precisamente quais tipos de interações geram notificações no computador através do botão {icon}.",
|
"notifications_permission_banner.how_to_control": "Para receber notificações quando o Mastodon não estiver aberto, ative as notificações no computador. Você pode controlar precisamente quais tipos de interações geram notificações no computador através do botão {icon}.",
|
||||||
"notifications_permission_banner.title": "Nunca perca nada",
|
"notifications_permission_banner.title": "Nunca perca nada",
|
||||||
|
@ -670,9 +732,13 @@
|
||||||
"report.unfollow_explanation": "Você está seguindo esta conta. Para não ver as publicações dela em sua página inicial, deixe de segui-la.",
|
"report.unfollow_explanation": "Você está seguindo esta conta. Para não ver as publicações dela em sua página inicial, deixe de segui-la.",
|
||||||
"report_notification.attached_statuses": "{count, plural, one {{count} publicação anexada} other {{count} publicações anexadas}}",
|
"report_notification.attached_statuses": "{count, plural, one {{count} publicação anexada} other {{count} publicações anexadas}}",
|
||||||
"report_notification.categories.legal": "Legal",
|
"report_notification.categories.legal": "Legal",
|
||||||
|
"report_notification.categories.legal_sentence": "conteúdo ilegal",
|
||||||
"report_notification.categories.other": "Outro",
|
"report_notification.categories.other": "Outro",
|
||||||
|
"report_notification.categories.other_sentence": "outro",
|
||||||
"report_notification.categories.spam": "Spam",
|
"report_notification.categories.spam": "Spam",
|
||||||
|
"report_notification.categories.spam_sentence": "spam",
|
||||||
"report_notification.categories.violation": "Violação de regra",
|
"report_notification.categories.violation": "Violação de regra",
|
||||||
|
"report_notification.categories.violation_sentence": "violação de regra",
|
||||||
"report_notification.open": "Abrir denúncia",
|
"report_notification.open": "Abrir denúncia",
|
||||||
"search.no_recent_searches": "Nenhuma busca recente",
|
"search.no_recent_searches": "Nenhuma busca recente",
|
||||||
"search.placeholder": "Pesquisar",
|
"search.placeholder": "Pesquisar",
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
"account.in_memoriam": "Em Memória.",
|
"account.in_memoriam": "Em Memória.",
|
||||||
"account.joined_short": "Juntou-se a",
|
"account.joined_short": "Juntou-se a",
|
||||||
"account.languages": "Alterar línguas subscritas",
|
"account.languages": "Alterar línguas subscritas",
|
||||||
"account.link_verified_on": "A posse desta ligação foi verificada em {date}",
|
"account.link_verified_on": "O proprietário desta hiperligação foi verificado em {date}",
|
||||||
"account.locked_info": "Esta conta é privada. O proprietário revê manualmente quem o pode seguir.",
|
"account.locked_info": "Esta conta é privada. O proprietário revê manualmente quem o pode seguir.",
|
||||||
"account.media": "Média",
|
"account.media": "Média",
|
||||||
"account.mention": "Mencionar @{name}",
|
"account.mention": "Mencionar @{name}",
|
||||||
|
@ -97,6 +97,8 @@
|
||||||
"block_modal.title": "Bloquear utilizador?",
|
"block_modal.title": "Bloquear utilizador?",
|
||||||
"block_modal.you_wont_see_mentions": "Não verá publicações que os mencionem.",
|
"block_modal.you_wont_see_mentions": "Não verá publicações que os mencionem.",
|
||||||
"boost_modal.combo": "Pode clicar {combo} para não voltar a ver",
|
"boost_modal.combo": "Pode clicar {combo} para não voltar a ver",
|
||||||
|
"boost_modal.reblog": "Impulsionar a publicação?",
|
||||||
|
"boost_modal.undo_reblog": "Retirar post?",
|
||||||
"bundle_column_error.copy_stacktrace": "Copiar relatório de erros",
|
"bundle_column_error.copy_stacktrace": "Copiar relatório de erros",
|
||||||
"bundle_column_error.error.body": "A página solicitada não pôde ser sintetizada. Isto pode ser devido a uma falha no nosso código ou a um problema de compatibilidade com o navegador.",
|
"bundle_column_error.error.body": "A página solicitada não pôde ser sintetizada. Isto pode ser devido a uma falha no nosso código ou a um problema de compatibilidade com o navegador.",
|
||||||
"bundle_column_error.error.title": "Ó, não!",
|
"bundle_column_error.error.title": "Ó, não!",
|
||||||
|
@ -152,15 +154,15 @@
|
||||||
"compose_form.lock_disclaimer": "A sua conta não é {locked}. Qualquer pessoa pode segui-lo e ver as publicações direcionadas apenas a seguidores.",
|
"compose_form.lock_disclaimer": "A sua conta não é {locked}. Qualquer pessoa pode segui-lo e ver as publicações direcionadas apenas a seguidores.",
|
||||||
"compose_form.lock_disclaimer.lock": "fechada",
|
"compose_form.lock_disclaimer.lock": "fechada",
|
||||||
"compose_form.placeholder": "Em que está a pensar?",
|
"compose_form.placeholder": "Em que está a pensar?",
|
||||||
"compose_form.poll.duration": "Duração do inquérito",
|
"compose_form.poll.duration": "Duração da sondagem",
|
||||||
"compose_form.poll.multiple": "Escolha múltipla",
|
"compose_form.poll.multiple": "Escolha múltipla",
|
||||||
"compose_form.poll.option_placeholder": "Opção {number}",
|
"compose_form.poll.option_placeholder": "Opção {number}",
|
||||||
"compose_form.poll.single": "Escolha uma",
|
"compose_form.poll.single": "Escolha uma",
|
||||||
"compose_form.poll.switch_to_multiple": "Alterar o inquérito para permitir várias respostas",
|
"compose_form.poll.switch_to_multiple": "Alterar a sondagem para permitir várias respostas",
|
||||||
"compose_form.poll.switch_to_single": "Alterar o inquérito para permitir uma única resposta",
|
"compose_form.poll.switch_to_single": "Alterar a sondagem para permitir uma única resposta",
|
||||||
"compose_form.poll.type": "Estilo",
|
"compose_form.poll.type": "Estilo",
|
||||||
"compose_form.publish": "Publicar",
|
"compose_form.publish": "Publicar",
|
||||||
"compose_form.publish_form": "Publicar",
|
"compose_form.publish_form": "Nova publicação",
|
||||||
"compose_form.reply": "Responder",
|
"compose_form.reply": "Responder",
|
||||||
"compose_form.save_changes": "Atualizar",
|
"compose_form.save_changes": "Atualizar",
|
||||||
"compose_form.spoiler.marked": "Texto escondido atrás de aviso",
|
"compose_form.spoiler.marked": "Texto escondido atrás de aviso",
|
||||||
|
@ -187,11 +189,13 @@
|
||||||
"confirmations.redraft.message": "Tem a certeza de que quer eliminar e reescrever esta publicação? Os favoritos e partilhas perder-se-ão e as respostas à publicação original ficarão órfãs.",
|
"confirmations.redraft.message": "Tem a certeza de que quer eliminar e reescrever esta publicação? Os favoritos e partilhas perder-se-ão e as respostas à publicação original ficarão órfãs.",
|
||||||
"confirmations.redraft.title": "Eliminar e reescrever publicação?",
|
"confirmations.redraft.title": "Eliminar e reescrever publicação?",
|
||||||
"confirmations.reply.confirm": "Responder",
|
"confirmations.reply.confirm": "Responder",
|
||||||
"confirmations.reply.message": "Responder agora irá reescrever a mensagem que está a compor actualmente. Tem a certeza que quer continuar?",
|
"confirmations.reply.message": "Se responder agora, a mensagem que está a escrever será substituída. Tem a certeza que pretende continuar?",
|
||||||
"confirmations.reply.title": "Sobrescrever publicação?",
|
"confirmations.reply.title": "Sobrescrever publicação?",
|
||||||
"confirmations.unfollow.confirm": "Deixar de seguir",
|
"confirmations.unfollow.confirm": "Deixar de seguir",
|
||||||
"confirmations.unfollow.message": "De certeza que queres deixar de seguir {name}?",
|
"confirmations.unfollow.message": "De certeza que queres deixar de seguir {name}?",
|
||||||
"confirmations.unfollow.title": "Deixar de seguir utilizador?",
|
"confirmations.unfollow.title": "Deixar de seguir utilizador?",
|
||||||
|
"content_warning.hide": "Ocultar publicação",
|
||||||
|
"content_warning.show": "Mostrar mesmo assim",
|
||||||
"conversation.delete": "Eliminar conversa",
|
"conversation.delete": "Eliminar conversa",
|
||||||
"conversation.mark_as_read": "Marcar como lida",
|
"conversation.mark_as_read": "Marcar como lida",
|
||||||
"conversation.open": "Ver conversa",
|
"conversation.open": "Ver conversa",
|
||||||
|
@ -202,14 +206,14 @@
|
||||||
"directory.federated": "Do fediverso conhecido",
|
"directory.federated": "Do fediverso conhecido",
|
||||||
"directory.local": "Apenas de {domain}",
|
"directory.local": "Apenas de {domain}",
|
||||||
"directory.new_arrivals": "Recém chegados",
|
"directory.new_arrivals": "Recém chegados",
|
||||||
"directory.recently_active": "Com actividade recente",
|
"directory.recently_active": "Recentemente ativo",
|
||||||
"disabled_account_banner.account_settings": "Definições da conta",
|
"disabled_account_banner.account_settings": "Definições da conta",
|
||||||
"disabled_account_banner.text": "A sua conta {disabledAccount} está presentemente desativada.",
|
"disabled_account_banner.text": "A sua conta {disabledAccount} está presentemente desativada.",
|
||||||
"dismissable_banner.community_timeline": "Estas são as publicações públicas mais recentes de pessoas cujas contas são hospedadas por {domain}.",
|
"dismissable_banner.community_timeline": "Estas são as publicações públicas mais recentes de pessoas cujas contas são hospedadas por {domain}.",
|
||||||
"dismissable_banner.dismiss": "Descartar",
|
"dismissable_banner.dismiss": "Descartar",
|
||||||
"dismissable_banner.explore_links": "Essas histórias de notícias estão, no momento, a ser faladas por pessoas neste e noutros servidores da rede descentralizada.",
|
"dismissable_banner.explore_links": "Essas histórias de notícias estão, no momento, a ser faladas por pessoas neste e noutros servidores da rede descentralizada.",
|
||||||
"dismissable_banner.explore_statuses": "Estas são publicações de toda a rede social que estão a ganhar popularidade atualmente. As mensagens mais recentes com mais partilhas e favoritos obtêm uma classificação mais elevada.",
|
"dismissable_banner.explore_statuses": "Estas são publicações de toda a rede social que estão a ganhar popularidade atualmente. As mensagens mais recentes com mais partilhas e favoritos obtêm uma classificação mais elevada.",
|
||||||
"dismissable_banner.explore_tags": "Estas #etiquetas estão presentemente a ganhar atenção entre as pessoas neste e noutros servidores da rede descentralizada.",
|
"dismissable_banner.explore_tags": "Estas são hashtags que estão a ganhar força na rede social atualmente. As hashtags que são utilizadas por mais pessoas diferentes têm uma classificação mais elevada.",
|
||||||
"dismissable_banner.public_timeline": "Estas são as publicações públicas mais recentes de pessoas na rede social que as pessoas em {domain} seguem.",
|
"dismissable_banner.public_timeline": "Estas são as publicações públicas mais recentes de pessoas na rede social que as pessoas em {domain} seguem.",
|
||||||
"domain_block_modal.block": "Bloquear servidor",
|
"domain_block_modal.block": "Bloquear servidor",
|
||||||
"domain_block_modal.block_account_instead": "Bloquear @{name} em alternativa",
|
"domain_block_modal.block_account_instead": "Bloquear @{name} em alternativa",
|
||||||
|
@ -234,7 +238,7 @@
|
||||||
"domain_pill.your_username": "O seu identificador único neste servidor. É possível encontrar utilizadores com o mesmo nome de utilizador em diferentes servidores.",
|
"domain_pill.your_username": "O seu identificador único neste servidor. É possível encontrar utilizadores com o mesmo nome de utilizador em diferentes servidores.",
|
||||||
"embed.instructions": "Incorpore esta publicação no seu site copiando o código abaixo.",
|
"embed.instructions": "Incorpore esta publicação no seu site copiando o código abaixo.",
|
||||||
"embed.preview": "Podes ver aqui como irá ficar:",
|
"embed.preview": "Podes ver aqui como irá ficar:",
|
||||||
"emoji_button.activity": "Actividade",
|
"emoji_button.activity": "Atividade",
|
||||||
"emoji_button.clear": "Limpar",
|
"emoji_button.clear": "Limpar",
|
||||||
"emoji_button.custom": "Personalizar",
|
"emoji_button.custom": "Personalizar",
|
||||||
"emoji_button.flags": "Bandeiras",
|
"emoji_button.flags": "Bandeiras",
|
||||||
|
@ -242,7 +246,7 @@
|
||||||
"emoji_button.label": "Inserir Emoji",
|
"emoji_button.label": "Inserir Emoji",
|
||||||
"emoji_button.nature": "Natureza",
|
"emoji_button.nature": "Natureza",
|
||||||
"emoji_button.not_found": "Nenhum emoji correspondente encontrado",
|
"emoji_button.not_found": "Nenhum emoji correspondente encontrado",
|
||||||
"emoji_button.objects": "Objectos",
|
"emoji_button.objects": "Objetos",
|
||||||
"emoji_button.people": "Pessoas",
|
"emoji_button.people": "Pessoas",
|
||||||
"emoji_button.recent": "Utilizados regularmente",
|
"emoji_button.recent": "Utilizados regularmente",
|
||||||
"emoji_button.search": "Pesquisar...",
|
"emoji_button.search": "Pesquisar...",
|
||||||
|
@ -254,24 +258,24 @@
|
||||||
"empty_column.account_timeline": "Sem publicações por aqui!",
|
"empty_column.account_timeline": "Sem publicações por aqui!",
|
||||||
"empty_column.account_unavailable": "Perfil indisponível",
|
"empty_column.account_unavailable": "Perfil indisponível",
|
||||||
"empty_column.blocks": "Ainda não bloqueaste qualquer utilizador.",
|
"empty_column.blocks": "Ainda não bloqueaste qualquer utilizador.",
|
||||||
"empty_column.bookmarked_statuses": "Ainda não adicionou nenhuma publicação aos itens salvos. Quando adicionar, eles serão exibidos aqui.",
|
"empty_column.bookmarked_statuses": "Ainda não tem nenhuma publicação marcada. Quando marcar uma, ela aparecerá aqui.",
|
||||||
"empty_column.community": "A cronologia local está vazia. Escreve algo público para começar!",
|
"empty_column.community": "A cronologia local está vazia. Escreve algo público para começar!",
|
||||||
"empty_column.direct": "Ainda não tem qualquer menção privada. Quando enviar ou receber uma, ela irá aparecer aqui.",
|
"empty_column.direct": "Ainda não tem qualquer menção privada. Quando enviar ou receber uma, ela irá aparecer aqui.",
|
||||||
"empty_column.domain_blocks": "Ainda não há qualquer domínio escondido.",
|
"empty_column.domain_blocks": "Ainda não há qualquer domínio escondido.",
|
||||||
"empty_column.explore_statuses": "Nada está em alta no momento. Volte mais tarde!",
|
"empty_column.explore_statuses": "Nada é tendência neste momento. Volte mais tarde!",
|
||||||
"empty_column.favourited_statuses": "Ainda não assinalou qualquer publicação como favorita. Quando o fizer, aparecerá aqui.",
|
"empty_column.favourited_statuses": "Ainda não assinalou qualquer publicação como favorita. Quando o fizer, aparecerá aqui.",
|
||||||
"empty_column.favourites": "Ainda ninguém assinalou esta publicação como favorita. Quando alguém o fizer, aparecerá aqui.",
|
"empty_column.favourites": "Ainda ninguém assinalou esta publicação como favorita. Quando alguém o fizer, aparecerá aqui.",
|
||||||
"empty_column.follow_requests": "Ainda não tens nenhum pedido de seguidor. Quando receberes algum, ele irá aparecer aqui.",
|
"empty_column.follow_requests": "Ainda não tens nenhum pedido de seguidor. Quando receberes algum, ele irá aparecer aqui.",
|
||||||
"empty_column.followed_tags": "Ainda não segue nenhuma hashtag. Quando o fizer, ela aparecerá aqui.",
|
"empty_column.followed_tags": "Ainda não segue nenhuma hashtag. Quando o fizer, ela aparecerá aqui.",
|
||||||
"empty_column.hashtag": "Não foram encontradas publicações com essa #etiqueta.",
|
"empty_column.hashtag": "Não foram encontradas publicações com essa #etiqueta.",
|
||||||
"empty_column.home": "Ainda não segues qualquer utilizador. Visita {public} ou utiliza a pesquisa para procurar outros utilizadores.",
|
"empty_column.home": "A sua linha cronológica inicial está vazia! Siga mais pessoas para a preencher.",
|
||||||
"empty_column.list": "Ainda não existem publicações nesta lista. Quando membros desta lista fizerem novas publicações, elas aparecerão aqui.",
|
"empty_column.list": "Ainda não existem publicações nesta lista. Quando membros desta lista fizerem novas publicações, elas aparecerão aqui.",
|
||||||
"empty_column.lists": "Ainda não tem qualquer lista. Quando criar uma, ela irá aparecer aqui.",
|
"empty_column.lists": "Ainda não tem qualquer lista. Quando criar uma, ela irá aparecer aqui.",
|
||||||
"empty_column.mutes": "Ainda não silenciaste qualquer utilizador.",
|
"empty_column.mutes": "Ainda não silenciaste qualquer utilizador.",
|
||||||
"empty_column.notification_requests": "Tudo limpo! Não há nada aqui. Quando você receber novas notificações, elas aparecerão aqui conforme as suas configurações.",
|
"empty_column.notification_requests": "Tudo limpo! Não há nada aqui. Quando você receber novas notificações, elas aparecerão aqui conforme as suas configurações.",
|
||||||
"empty_column.notifications": "Não tens notificações. Interage com outros utilizadores para iniciar uma conversa.",
|
"empty_column.notifications": "Não tens notificações. Interage com outros utilizadores para iniciar uma conversa.",
|
||||||
"empty_column.public": "Não há nada aqui! Escreve algo publicamente ou segue outros utilizadores para veres aqui os conteúdos públicos",
|
"empty_column.public": "Não há nada aqui! Escreve algo publicamente ou segue outros utilizadores para veres aqui os conteúdos públicos",
|
||||||
"error.unexpected_crash.explanation": "Devido a um erro no nosso código ou a uma compatilidade com o seu navegador, esta página não pôde ser apresentada correctamente.",
|
"error.unexpected_crash.explanation": "Devido a um erro no nosso código ou a um problema de compatibilidade do navegador, esta página não pôde ser apresentada corretamente.",
|
||||||
"error.unexpected_crash.explanation_addons": "Esta página não pôde ser exibida corretamente. Este erro provavelmente é causado por um complemento do navegador ou ferramentas de tradução automática.",
|
"error.unexpected_crash.explanation_addons": "Esta página não pôde ser exibida corretamente. Este erro provavelmente é causado por um complemento do navegador ou ferramentas de tradução automática.",
|
||||||
"error.unexpected_crash.next_steps": "Tente atualizar a página. Se isso não ajudar, pode usar o Mastodon através de um navegador diferente ou uma aplicação nativa.",
|
"error.unexpected_crash.next_steps": "Tente atualizar a página. Se isso não ajudar, pode usar o Mastodon através de um navegador diferente ou uma aplicação nativa.",
|
||||||
"error.unexpected_crash.next_steps_addons": "Tente desabilitá-los e atualizar a página. Se isso não ajudar, você ainda poderá usar o Mastodon por meio de um navegador diferente ou de um aplicativo nativo.",
|
"error.unexpected_crash.next_steps_addons": "Tente desabilitá-los e atualizar a página. Se isso não ajudar, você ainda poderá usar o Mastodon por meio de um navegador diferente ou de um aplicativo nativo.",
|
||||||
|
@ -299,6 +303,7 @@
|
||||||
"filter_modal.select_filter.subtitle": "Utilize uma categoria existente ou crie uma nova",
|
"filter_modal.select_filter.subtitle": "Utilize uma categoria existente ou crie uma nova",
|
||||||
"filter_modal.select_filter.title": "Filtrar esta publicação",
|
"filter_modal.select_filter.title": "Filtrar esta publicação",
|
||||||
"filter_modal.title.status": "Filtrar uma publicação",
|
"filter_modal.title.status": "Filtrar uma publicação",
|
||||||
|
"filter_warning.matches_filter": "Corresponde ao filtro “{title}”",
|
||||||
"filtered_notifications_banner.pending_requests": "De {count, plural, =0 {ninguém} one {uma pessoa} other {# pessoas}} que pode conhecer",
|
"filtered_notifications_banner.pending_requests": "De {count, plural, =0 {ninguém} one {uma pessoa} other {# pessoas}} que pode conhecer",
|
||||||
"filtered_notifications_banner.title": "Notificações filtradas",
|
"filtered_notifications_banner.title": "Notificações filtradas",
|
||||||
"firehose.all": "Todas",
|
"firehose.all": "Todas",
|
||||||
|
@ -348,6 +353,12 @@
|
||||||
"hashtag.follow": "Seguir #etiqueta",
|
"hashtag.follow": "Seguir #etiqueta",
|
||||||
"hashtag.unfollow": "Deixar de seguir #etiqueta",
|
"hashtag.unfollow": "Deixar de seguir #etiqueta",
|
||||||
"hashtags.and_other": "…e {count, plural, other {mais #}}",
|
"hashtags.and_other": "…e {count, plural, other {mais #}}",
|
||||||
|
"hints.profiles.followers_may_be_missing": "Podem faltar seguidores neste perfil.",
|
||||||
|
"hints.profiles.follows_may_be_missing": "O número de perfis seguidos por este perfil pode faltar.",
|
||||||
|
"hints.profiles.posts_may_be_missing": "Podem faltar algumas publicações deste perfil.",
|
||||||
|
"hints.profiles.see_more_followers": "Ver mais seguidores no {domain}",
|
||||||
|
"hints.profiles.see_more_follows": "Veja mais perfis seguidos em {domain}",
|
||||||
|
"hints.profiles.see_more_posts": "Ver mais publicações em {domain}",
|
||||||
"home.column_settings.show_reblogs": "Mostrar impulsos",
|
"home.column_settings.show_reblogs": "Mostrar impulsos",
|
||||||
"home.column_settings.show_replies": "Mostrar respostas",
|
"home.column_settings.show_replies": "Mostrar respostas",
|
||||||
"home.hide_announcements": "Ocultar comunicações",
|
"home.hide_announcements": "Ocultar comunicações",
|
||||||
|
@ -395,7 +406,7 @@
|
||||||
"keyboard_shortcuts.my_profile": "para abrir o teu perfil",
|
"keyboard_shortcuts.my_profile": "para abrir o teu perfil",
|
||||||
"keyboard_shortcuts.notifications": "para abrir a coluna das notificações",
|
"keyboard_shortcuts.notifications": "para abrir a coluna das notificações",
|
||||||
"keyboard_shortcuts.open_media": "para abrir media",
|
"keyboard_shortcuts.open_media": "para abrir media",
|
||||||
"keyboard_shortcuts.pinned": "para abrir a lista dos toots fixados",
|
"keyboard_shortcuts.pinned": "Abrir lista de publicações fixadas",
|
||||||
"keyboard_shortcuts.profile": "para abrir o perfil do autor",
|
"keyboard_shortcuts.profile": "para abrir o perfil do autor",
|
||||||
"keyboard_shortcuts.reply": "para responder",
|
"keyboard_shortcuts.reply": "para responder",
|
||||||
"keyboard_shortcuts.requests": "para abrir a lista dos pedidos de seguidor",
|
"keyboard_shortcuts.requests": "para abrir a lista dos pedidos de seguidor",
|
||||||
|
@ -464,7 +475,7 @@
|
||||||
"navigation_bar.mutes": "Utilizadores silenciados",
|
"navigation_bar.mutes": "Utilizadores silenciados",
|
||||||
"navigation_bar.opened_in_classic_interface": "Por norma, publicações, contas, e outras páginas específicas são abertas na interface web clássica.",
|
"navigation_bar.opened_in_classic_interface": "Por norma, publicações, contas, e outras páginas específicas são abertas na interface web clássica.",
|
||||||
"navigation_bar.personal": "Pessoal",
|
"navigation_bar.personal": "Pessoal",
|
||||||
"navigation_bar.pins": "Toots afixados",
|
"navigation_bar.pins": "Publicações fixadas",
|
||||||
"navigation_bar.preferences": "Preferências",
|
"navigation_bar.preferences": "Preferências",
|
||||||
"navigation_bar.public_timeline": "Cronologia federada",
|
"navigation_bar.public_timeline": "Cronologia federada",
|
||||||
"navigation_bar.search": "Pesquisar",
|
"navigation_bar.search": "Pesquisar",
|
||||||
|
@ -493,8 +504,8 @@
|
||||||
"notification.moderation_warning.action_sensitive": "As suas publicações serão, a partir de agora, assinaladas como sensíveis.",
|
"notification.moderation_warning.action_sensitive": "As suas publicações serão, a partir de agora, assinaladas como sensíveis.",
|
||||||
"notification.moderation_warning.action_silence": "A sua conta foi limitada.",
|
"notification.moderation_warning.action_silence": "A sua conta foi limitada.",
|
||||||
"notification.moderation_warning.action_suspend": "A sua conta foi suspensa.",
|
"notification.moderation_warning.action_suspend": "A sua conta foi suspensa.",
|
||||||
"notification.own_poll": "A sua votação terminou",
|
"notification.own_poll": "A sua sondagem terminou",
|
||||||
"notification.poll": "Uma votação em que participaste chegou ao fim",
|
"notification.poll": "Terminou uma sondagem em que votou",
|
||||||
"notification.reblog": "{name} reforçou a tua publicação",
|
"notification.reblog": "{name} reforçou a tua publicação",
|
||||||
"notification.relationships_severance_event": "Perdeu as ligações com {name}",
|
"notification.relationships_severance_event": "Perdeu as ligações com {name}",
|
||||||
"notification.relationships_severance_event.account_suspension": "Um administrador de {from} suspendeu {target}, o que significa que já não pode receber atualizações dele ou interagir com ele.",
|
"notification.relationships_severance_event.account_suspension": "Um administrador de {from} suspendeu {target}, o que significa que já não pode receber atualizações dele ou interagir com ele.",
|
||||||
|
@ -525,7 +536,7 @@
|
||||||
"notifications.column_settings.follow": "Novos seguidores:",
|
"notifications.column_settings.follow": "Novos seguidores:",
|
||||||
"notifications.column_settings.follow_request": "Novos pedidos de seguidor:",
|
"notifications.column_settings.follow_request": "Novos pedidos de seguidor:",
|
||||||
"notifications.column_settings.mention": "Menções:",
|
"notifications.column_settings.mention": "Menções:",
|
||||||
"notifications.column_settings.poll": "Resultados do inquérito:",
|
"notifications.column_settings.poll": "Resultados da sondagem:",
|
||||||
"notifications.column_settings.push": "Notificações Push",
|
"notifications.column_settings.push": "Notificações Push",
|
||||||
"notifications.column_settings.reblog": "Reforços:",
|
"notifications.column_settings.reblog": "Reforços:",
|
||||||
"notifications.column_settings.show": "Mostrar na coluna",
|
"notifications.column_settings.show": "Mostrar na coluna",
|
||||||
|
@ -539,7 +550,7 @@
|
||||||
"notifications.filter.favourites": "Favoritos",
|
"notifications.filter.favourites": "Favoritos",
|
||||||
"notifications.filter.follows": "Seguidores",
|
"notifications.filter.follows": "Seguidores",
|
||||||
"notifications.filter.mentions": "Menções",
|
"notifications.filter.mentions": "Menções",
|
||||||
"notifications.filter.polls": "Resultados do inquérito",
|
"notifications.filter.polls": "Resultados da sondagem",
|
||||||
"notifications.filter.statuses": "Atualizações de pessoas que você segue",
|
"notifications.filter.statuses": "Atualizações de pessoas que você segue",
|
||||||
"notifications.grant_permission": "Conceder permissão.",
|
"notifications.grant_permission": "Conceder permissão.",
|
||||||
"notifications.group": "{count} notificações",
|
"notifications.group": "{count} notificações",
|
||||||
|
@ -562,7 +573,7 @@
|
||||||
"notifications_permission_banner.title": "Nunca perca nada",
|
"notifications_permission_banner.title": "Nunca perca nada",
|
||||||
"onboarding.action.back": "Voltar atrás",
|
"onboarding.action.back": "Voltar atrás",
|
||||||
"onboarding.actions.back": "Voltar atrás",
|
"onboarding.actions.back": "Voltar atrás",
|
||||||
"onboarding.actions.go_to_explore": "Veja as tendências atuais",
|
"onboarding.actions.go_to_explore": "Ver tendências atuais",
|
||||||
"onboarding.actions.go_to_home": "Ir para a sua página inicial",
|
"onboarding.actions.go_to_home": "Ir para a sua página inicial",
|
||||||
"onboarding.compose.template": "Olá #Mastodon!",
|
"onboarding.compose.template": "Olá #Mastodon!",
|
||||||
"onboarding.follows.empty": "Infelizmente, não é possível mostrar resultados neste momento. Pode tentar utilizar a pesquisa ou navegar na página \"Explorar\" para encontrar pessoas para seguir ou tentar novamente mais tarde.",
|
"onboarding.follows.empty": "Infelizmente, não é possível mostrar resultados neste momento. Pode tentar utilizar a pesquisa ou navegar na página \"Explorar\" para encontrar pessoas para seguir ou tentar novamente mais tarde.",
|
||||||
|
@ -588,7 +599,7 @@
|
||||||
"onboarding.start.title": "Conseguiu!",
|
"onboarding.start.title": "Conseguiu!",
|
||||||
"onboarding.steps.follow_people.body": "Seguir pessoas interessantes é o propósito do Mastodon. ",
|
"onboarding.steps.follow_people.body": "Seguir pessoas interessantes é o propósito do Mastodon. ",
|
||||||
"onboarding.steps.follow_people.title": "Personalize o seu feed",
|
"onboarding.steps.follow_people.title": "Personalize o seu feed",
|
||||||
"onboarding.steps.publish_status.body": "Diga olá ao mundo com texto, fotos, vídeos ou votos {emoji}",
|
"onboarding.steps.publish_status.body": "Diga olá ao mundo com texto, fotos, vídeos ou sondagens {emoji}",
|
||||||
"onboarding.steps.publish_status.title": "Faça a sua primeira publicação",
|
"onboarding.steps.publish_status.title": "Faça a sua primeira publicação",
|
||||||
"onboarding.steps.setup_profile.body": "Promova as suas interações para ter um perfil preenchido. ",
|
"onboarding.steps.setup_profile.body": "Promova as suas interações para ter um perfil preenchido. ",
|
||||||
"onboarding.steps.setup_profile.title": "Personalize o seu perfil",
|
"onboarding.steps.setup_profile.title": "Personalize o seu perfil",
|
||||||
|
@ -597,19 +608,19 @@
|
||||||
"onboarding.tips.2fa": "<strong>Sabia?</strong> Pode proteger a sua conta ativando a autenticação em duas etapas nas configurações de conta. Funciona com qualquer aplicativo TOTP à sua escolha, sem necessitar de um número de telefone!",
|
"onboarding.tips.2fa": "<strong>Sabia?</strong> Pode proteger a sua conta ativando a autenticação em duas etapas nas configurações de conta. Funciona com qualquer aplicativo TOTP à sua escolha, sem necessitar de um número de telefone!",
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Sabia?</strong> Como o Mastodon é descentralizado, alguns perfis que encontra estarão hospedados noutros servidores que não os seus. E ainda assim pode interagir com eles perfeitamente! O servidor deles está na segunda metade do nome de utilizador!",
|
"onboarding.tips.accounts_from_other_servers": "<strong>Sabia?</strong> Como o Mastodon é descentralizado, alguns perfis que encontra estarão hospedados noutros servidores que não os seus. E ainda assim pode interagir com eles perfeitamente! O servidor deles está na segunda metade do nome de utilizador!",
|
||||||
"onboarding.tips.migration": "<strong>Sabia?</strong> Se sentir que o {domain} não é um bom servidor para si, no futuro pode mudar para outro servidor Mastodon sem perder os seus seguidores. Pode até mesmo hospedar o seu próprio servidor!",
|
"onboarding.tips.migration": "<strong>Sabia?</strong> Se sentir que o {domain} não é um bom servidor para si, no futuro pode mudar para outro servidor Mastodon sem perder os seus seguidores. Pode até mesmo hospedar o seu próprio servidor!",
|
||||||
"onboarding.tips.verification": "<strong>Sabia que?</strong> Pode fazer a verificação do seu site, adicionando o link do seu perfil à primeira página do seu site, como também pode adicionar o seu site ao seu perfil? Sem taxas ou documentos!",
|
"onboarding.tips.verification": "<strong>Sabia que?</strong> Pode verificar a sua conta colocando uma hiperligação para o seu perfil Mastodon no seu próprio site e adicionando o site ao seu perfil. Sem taxas ou documentos!",
|
||||||
"password_confirmation.exceeds_maxlength": "A confirmação da palavra-passe excedeu o tamanho máximo ",
|
"password_confirmation.exceeds_maxlength": "A confirmação da palavra-passe excedeu o tamanho máximo ",
|
||||||
"password_confirmation.mismatching": "A confirmação da palavra-passe não corresponde",
|
"password_confirmation.mismatching": "A confirmação da palavra-passe não corresponde",
|
||||||
"picture_in_picture.restore": "Colocá-lo de volta",
|
"picture_in_picture.restore": "Colocá-lo de volta",
|
||||||
"poll.closed": "Fechado",
|
"poll.closed": "Fechado",
|
||||||
"poll.refresh": "Recarregar",
|
"poll.refresh": "Atualizar",
|
||||||
"poll.reveal": "Ver resultados",
|
"poll.reveal": "Ver resultados",
|
||||||
"poll.total_people": "{count, plural, one {# pessoa} other {# pessoas}}",
|
"poll.total_people": "{count, plural, one {# pessoa} other {# pessoas}}",
|
||||||
"poll.total_votes": "{count, plural, one {# voto} other {# votos}}",
|
"poll.total_votes": "{count, plural, one {# voto} other {# votos}}",
|
||||||
"poll.vote": "Votar",
|
"poll.vote": "Votar",
|
||||||
"poll.voted": "Votaste nesta resposta",
|
"poll.voted": "Votou nesta resposta",
|
||||||
"poll.votes": "{votes, plural, one {# voto } other {# votos}}",
|
"poll.votes": "{votes, plural, one {# voto } other {# votos}}",
|
||||||
"poll_button.add_poll": "Adicionar votação",
|
"poll_button.add_poll": "Adicionar uma sondagem",
|
||||||
"poll_button.remove_poll": "Remover sondagem",
|
"poll_button.remove_poll": "Remover sondagem",
|
||||||
"privacy.change": "Ajustar a privacidade da publicação",
|
"privacy.change": "Ajustar a privacidade da publicação",
|
||||||
"privacy.direct.long": "Todos os mencionados na publicação",
|
"privacy.direct.long": "Todos os mencionados na publicação",
|
||||||
|
@ -624,7 +635,7 @@
|
||||||
"privacy_policy.last_updated": "Última atualização em {date}",
|
"privacy_policy.last_updated": "Última atualização em {date}",
|
||||||
"privacy_policy.title": "Política de privacidade",
|
"privacy_policy.title": "Política de privacidade",
|
||||||
"recommended": "Recomendado",
|
"recommended": "Recomendado",
|
||||||
"refresh": "Actualizar",
|
"refresh": "Atualizar",
|
||||||
"regeneration_indicator.label": "A carregar…",
|
"regeneration_indicator.label": "A carregar…",
|
||||||
"regeneration_indicator.sublabel": "A tua página inicial está a ser preparada!",
|
"regeneration_indicator.sublabel": "A tua página inicial está a ser preparada!",
|
||||||
"relative_time.days": "{number}d",
|
"relative_time.days": "{number}d",
|
||||||
|
@ -666,7 +677,7 @@
|
||||||
"report.reasons.other": "É outra coisa",
|
"report.reasons.other": "É outra coisa",
|
||||||
"report.reasons.other_description": "O problema não se encaixa nas outras categorias",
|
"report.reasons.other_description": "O problema não se encaixa nas outras categorias",
|
||||||
"report.reasons.spam": "É spam",
|
"report.reasons.spam": "É spam",
|
||||||
"report.reasons.spam_description": "Hiperligações maliciosas, contactos falsos, ou respostas repetitivas",
|
"report.reasons.spam_description": "Hiperligações maliciosas, contactos falsos ou respostas repetitivas",
|
||||||
"report.reasons.violation": "Viola as regras do servidor",
|
"report.reasons.violation": "Viola as regras do servidor",
|
||||||
"report.reasons.violation_description": "Está ciente de que infringe regras específicas",
|
"report.reasons.violation_description": "Está ciente de que infringe regras específicas",
|
||||||
"report.rules.subtitle": "Selecione tudo o que se aplicar",
|
"report.rules.subtitle": "Selecione tudo o que se aplicar",
|
||||||
|
@ -722,8 +733,8 @@
|
||||||
"sign_in_banner.create_account": "Criar conta",
|
"sign_in_banner.create_account": "Criar conta",
|
||||||
"sign_in_banner.follow_anyone": "Siga alguém no fediverso e veja tudo em ordem cronológica. Sem algoritmos, anúncios ou clickbait à vista.",
|
"sign_in_banner.follow_anyone": "Siga alguém no fediverso e veja tudo em ordem cronológica. Sem algoritmos, anúncios ou clickbait à vista.",
|
||||||
"sign_in_banner.mastodon_is": "O Mastodon é a melhor maneira de acompanhar o que está a acontecer.",
|
"sign_in_banner.mastodon_is": "O Mastodon é a melhor maneira de acompanhar o que está a acontecer.",
|
||||||
"sign_in_banner.sign_in": "Iniciar Sessão",
|
"sign_in_banner.sign_in": "Iniciar sessão",
|
||||||
"sign_in_banner.sso_redirect": "Inicie Sessão ou Registe-se",
|
"sign_in_banner.sso_redirect": "Inicie sessão ou registe-se",
|
||||||
"status.admin_account": "Abrir a interface de moderação para @{name}",
|
"status.admin_account": "Abrir a interface de moderação para @{name}",
|
||||||
"status.admin_domain": "Abrir interface de moderação para {domain}",
|
"status.admin_domain": "Abrir interface de moderação para {domain}",
|
||||||
"status.admin_status": "Abrir esta publicação na interface de moderação",
|
"status.admin_status": "Abrir esta publicação na interface de moderação",
|
||||||
|
@ -731,7 +742,7 @@
|
||||||
"status.bookmark": "Guardar nos marcadores",
|
"status.bookmark": "Guardar nos marcadores",
|
||||||
"status.cancel_reblog_private": "Deixar de reforçar",
|
"status.cancel_reblog_private": "Deixar de reforçar",
|
||||||
"status.cannot_reblog": "Não é possível partilhar esta publicação",
|
"status.cannot_reblog": "Não é possível partilhar esta publicação",
|
||||||
"status.copy": "Copiar ligação para a publicação",
|
"status.copy": "Copiar hiperligação para a publicação",
|
||||||
"status.delete": "Eliminar",
|
"status.delete": "Eliminar",
|
||||||
"status.detailed_status": "Vista pormenorizada da conversa",
|
"status.detailed_status": "Vista pormenorizada da conversa",
|
||||||
"status.direct": "Mencionar @{name} em privado",
|
"status.direct": "Mencionar @{name} em privado",
|
||||||
|
@ -790,15 +801,15 @@
|
||||||
"time_remaining.moments": "Momentos restantes",
|
"time_remaining.moments": "Momentos restantes",
|
||||||
"time_remaining.seconds": "{número, plural, um {# second} outro {# seconds}} faltam",
|
"time_remaining.seconds": "{número, plural, um {# second} outro {# seconds}} faltam",
|
||||||
"trends.counter_by_accounts": "{count, plural, one {{counter} pessoa} other {{counter} pessoas}} {days, plural, one {no último dia} other {nos últimos {days} dias}}",
|
"trends.counter_by_accounts": "{count, plural, one {{counter} pessoa} other {{counter} pessoas}} {days, plural, one {no último dia} other {nos últimos {days} dias}}",
|
||||||
"trends.trending_now": "Em alta neste momento",
|
"trends.trending_now": "Tendências atuais",
|
||||||
"ui.beforeunload": "O teu rascunho será perdido se abandonares o Mastodon.",
|
"ui.beforeunload": "O teu rascunho será perdido se abandonares o Mastodon.",
|
||||||
"units.short.billion": "{count}MM",
|
"units.short.billion": "{count}MM",
|
||||||
"units.short.million": "{count}M",
|
"units.short.million": "{count}M",
|
||||||
"units.short.thousand": "{count}m",
|
"units.short.thousand": "{count}m",
|
||||||
"upload_area.title": "Arraste e solte para enviar",
|
"upload_area.title": "Arrastar e largar para enviar",
|
||||||
"upload_button.label": "Juntar imagens, um vídeo, ou um ficheiro de som",
|
"upload_button.label": "Adicionar imagens, um vídeo ou um ficheiro de som",
|
||||||
"upload_error.limit": "Limite máximo do ficheiro a carregar excedido.",
|
"upload_error.limit": "Limite de envio de ficheiros excedido.",
|
||||||
"upload_error.poll": "O carregamento de ficheiros não é permitido em sondagens.",
|
"upload_error.poll": "Não é permitido o envio de ficheiros em sondagens.",
|
||||||
"upload_form.audio_description": "Descreva para pessoas com diminuição da acuidade auditiva",
|
"upload_form.audio_description": "Descreva para pessoas com diminuição da acuidade auditiva",
|
||||||
"upload_form.description": "Descreva para pessoas com diminuição da acuidade visual",
|
"upload_form.description": "Descreva para pessoas com diminuição da acuidade visual",
|
||||||
"upload_form.edit": "Editar",
|
"upload_form.edit": "Editar",
|
||||||
|
@ -809,7 +820,7 @@
|
||||||
"upload_modal.applying": "A aplicar…",
|
"upload_modal.applying": "A aplicar…",
|
||||||
"upload_modal.choose_image": "Escolher imagem",
|
"upload_modal.choose_image": "Escolher imagem",
|
||||||
"upload_modal.description_placeholder": "Grave e cabisbaixo, o filho justo zelava pela querida mãe doente",
|
"upload_modal.description_placeholder": "Grave e cabisbaixo, o filho justo zelava pela querida mãe doente",
|
||||||
"upload_modal.detect_text": "Detectar texto na imagem",
|
"upload_modal.detect_text": "Detetar texto na imagem",
|
||||||
"upload_modal.edit_media": "Editar media",
|
"upload_modal.edit_media": "Editar media",
|
||||||
"upload_modal.hint": "Clique ou arraste o círculo na pré-visualização para escolher o ponto focal que será sempre visível em todas as miniaturas.",
|
"upload_modal.hint": "Clique ou arraste o círculo na pré-visualização para escolher o ponto focal que será sempre visível em todas as miniaturas.",
|
||||||
"upload_modal.preparing_ocr": "A preparar o reconhecimento de caracteres (OCR)…",
|
"upload_modal.preparing_ocr": "A preparar o reconhecimento de caracteres (OCR)…",
|
||||||
|
|
|
@ -189,6 +189,7 @@
|
||||||
"confirmations.unfollow.confirm": "Отписаться",
|
"confirmations.unfollow.confirm": "Отписаться",
|
||||||
"confirmations.unfollow.message": "Вы уверены, что хотите отписаться от {name}?",
|
"confirmations.unfollow.message": "Вы уверены, что хотите отписаться от {name}?",
|
||||||
"confirmations.unfollow.title": "Отписаться?",
|
"confirmations.unfollow.title": "Отписаться?",
|
||||||
|
"content_warning.hide": "Скрыть пост",
|
||||||
"conversation.delete": "Удалить беседу",
|
"conversation.delete": "Удалить беседу",
|
||||||
"conversation.mark_as_read": "Отметить как прочитанное",
|
"conversation.mark_as_read": "Отметить как прочитанное",
|
||||||
"conversation.open": "Просмотр беседы",
|
"conversation.open": "Просмотр беседы",
|
||||||
|
|
|
@ -148,6 +148,11 @@
|
||||||
"compose_form.publish_form": "Нова публикація",
|
"compose_form.publish_form": "Нова публикація",
|
||||||
"compose_form.reply": "Удповідь",
|
"compose_form.reply": "Удповідь",
|
||||||
"compose_form.save_changes": "Усокотити",
|
"compose_form.save_changes": "Усокотити",
|
||||||
|
"confirmations.logout.confirm": "Уйти гет",
|
||||||
|
"confirmations.logout.message": "Бизувні сьте ож хочете уйти?",
|
||||||
|
"confirmations.logout.title": "Уйти гет?",
|
||||||
|
"confirmations.mute.confirm": "Стишити",
|
||||||
|
"confirmations.reply.confirm": "Удповісти",
|
||||||
"copypaste.copy_to_clipboard": "Копіровати у памнять",
|
"copypaste.copy_to_clipboard": "Копіровати у памнять",
|
||||||
"directory.recently_active": "Недавно актівні",
|
"directory.recently_active": "Недавно актівні",
|
||||||
"disabled_account_banner.account_settings": "Штімованя акаунта",
|
"disabled_account_banner.account_settings": "Штімованя акаунта",
|
||||||
|
|
|
@ -92,6 +92,7 @@
|
||||||
"block_modal.title": "Blokovať užívateľa?",
|
"block_modal.title": "Blokovať užívateľa?",
|
||||||
"block_modal.you_wont_see_mentions": "Neuvidíš príspevky, ktoré ich spomínajú.",
|
"block_modal.you_wont_see_mentions": "Neuvidíš príspevky, ktoré ich spomínajú.",
|
||||||
"boost_modal.combo": "Nabudúce môžete preskočiť stlačením {combo}",
|
"boost_modal.combo": "Nabudúce môžete preskočiť stlačením {combo}",
|
||||||
|
"boost_modal.reblog": "Vyzdvihnúť príspevok?",
|
||||||
"bundle_column_error.copy_stacktrace": "Kopírovať chybovú hlášku",
|
"bundle_column_error.copy_stacktrace": "Kopírovať chybovú hlášku",
|
||||||
"bundle_column_error.error.body": "Požadovanú stránku nebolo možné vykresliť. Môže to byť spôsobené chybou v našom kóde alebo problémom s kompatibilitou prehliadača.",
|
"bundle_column_error.error.body": "Požadovanú stránku nebolo možné vykresliť. Môže to byť spôsobené chybou v našom kóde alebo problémom s kompatibilitou prehliadača.",
|
||||||
"bundle_column_error.error.title": "Ale nie!",
|
"bundle_column_error.error.title": "Ale nie!",
|
||||||
|
@ -187,6 +188,8 @@
|
||||||
"confirmations.unfollow.confirm": "Prestať sledovať",
|
"confirmations.unfollow.confirm": "Prestať sledovať",
|
||||||
"confirmations.unfollow.message": "Určite chcete prestať sledovať {name}?",
|
"confirmations.unfollow.message": "Určite chcete prestať sledovať {name}?",
|
||||||
"confirmations.unfollow.title": "Prestať sledovať užívateľa?",
|
"confirmations.unfollow.title": "Prestať sledovať užívateľa?",
|
||||||
|
"content_warning.hide": "Skryť príspevok",
|
||||||
|
"content_warning.show": "Aj tak zobraziť",
|
||||||
"conversation.delete": "Vymazať konverzáciu",
|
"conversation.delete": "Vymazať konverzáciu",
|
||||||
"conversation.mark_as_read": "Označiť ako prečítanú",
|
"conversation.mark_as_read": "Označiť ako prečítanú",
|
||||||
"conversation.open": "Zobraziť konverzáciu",
|
"conversation.open": "Zobraziť konverzáciu",
|
||||||
|
@ -285,6 +288,7 @@
|
||||||
"filter_modal.select_filter.subtitle": "Použite existujúcu kategóriu alebo vytvorte novú",
|
"filter_modal.select_filter.subtitle": "Použite existujúcu kategóriu alebo vytvorte novú",
|
||||||
"filter_modal.select_filter.title": "Filtrovanie tohto príspevku",
|
"filter_modal.select_filter.title": "Filtrovanie tohto príspevku",
|
||||||
"filter_modal.title.status": "Filtrovanie príspevku",
|
"filter_modal.title.status": "Filtrovanie príspevku",
|
||||||
|
"filter_warning.matches_filter": "Zhody triedenia “{title}”",
|
||||||
"filtered_notifications_banner.title": "Filtrované oznámenia",
|
"filtered_notifications_banner.title": "Filtrované oznámenia",
|
||||||
"firehose.all": "Všetko",
|
"firehose.all": "Všetko",
|
||||||
"firehose.local": "Tento server",
|
"firehose.local": "Tento server",
|
||||||
|
@ -424,6 +428,7 @@
|
||||||
"mute_modal.show_options": "Zobraziť možnosti",
|
"mute_modal.show_options": "Zobraziť možnosti",
|
||||||
"mute_modal.title": "Stíšiť užívateľa?",
|
"mute_modal.title": "Stíšiť užívateľa?",
|
||||||
"navigation_bar.about": "O tomto serveri",
|
"navigation_bar.about": "O tomto serveri",
|
||||||
|
"navigation_bar.administration": "Spravovanie",
|
||||||
"navigation_bar.advanced_interface": "Otvoriť v pokročilom webovom rozhraní",
|
"navigation_bar.advanced_interface": "Otvoriť v pokročilom webovom rozhraní",
|
||||||
"navigation_bar.blocks": "Blokované účty",
|
"navigation_bar.blocks": "Blokované účty",
|
||||||
"navigation_bar.bookmarks": "Záložky",
|
"navigation_bar.bookmarks": "Záložky",
|
||||||
|
@ -440,6 +445,7 @@
|
||||||
"navigation_bar.follows_and_followers": "Sledovania a sledovatelia",
|
"navigation_bar.follows_and_followers": "Sledovania a sledovatelia",
|
||||||
"navigation_bar.lists": "Zoznamy",
|
"navigation_bar.lists": "Zoznamy",
|
||||||
"navigation_bar.logout": "Odhlásiť sa",
|
"navigation_bar.logout": "Odhlásiť sa",
|
||||||
|
"navigation_bar.moderation": "Moderovanie",
|
||||||
"navigation_bar.mutes": "Stíšené účty",
|
"navigation_bar.mutes": "Stíšené účty",
|
||||||
"navigation_bar.opened_in_classic_interface": "Príspevky, účty a iné špeciálne stránky sú predvolene otvárané v klasickom webovom rozhraní.",
|
"navigation_bar.opened_in_classic_interface": "Príspevky, účty a iné špeciálne stránky sú predvolene otvárané v klasickom webovom rozhraní.",
|
||||||
"navigation_bar.personal": "Osobné",
|
"navigation_bar.personal": "Osobné",
|
||||||
|
@ -474,8 +480,11 @@
|
||||||
"notification.update": "{name} upravuje príspevok",
|
"notification.update": "{name} upravuje príspevok",
|
||||||
"notification_requests.accept": "Prijať",
|
"notification_requests.accept": "Prijať",
|
||||||
"notification_requests.dismiss": "Zamietnuť",
|
"notification_requests.dismiss": "Zamietnuť",
|
||||||
|
"notification_requests.edit_selection": "Uprav",
|
||||||
|
"notification_requests.exit_selection": "Hotovo",
|
||||||
"notification_requests.notifications_from": "Oboznámenia od {name}",
|
"notification_requests.notifications_from": "Oboznámenia od {name}",
|
||||||
"notification_requests.title": "Filtrované oboznámenia",
|
"notification_requests.title": "Filtrované oboznámenia",
|
||||||
|
"notification_requests.view": "Zobraz upozornenia",
|
||||||
"notifications.clear": "Vyčistiť upozornenia",
|
"notifications.clear": "Vyčistiť upozornenia",
|
||||||
"notifications.clear_confirmation": "Určite chcete nenávratne odstrániť všetky svoje upozornenia?",
|
"notifications.clear_confirmation": "Určite chcete nenávratne odstrániť všetky svoje upozornenia?",
|
||||||
"notifications.clear_title": "Vyčistiť upozornenia?",
|
"notifications.clear_title": "Vyčistiť upozornenia?",
|
||||||
|
@ -509,6 +518,9 @@
|
||||||
"notifications.permission_denied": "Upozornenia na ploche sú nedostupné pre už skôr zamietnutú požiadavku prehliadača",
|
"notifications.permission_denied": "Upozornenia na ploche sú nedostupné pre už skôr zamietnutú požiadavku prehliadača",
|
||||||
"notifications.permission_denied_alert": "Upozornenia na ploche nemôžu byť zapnuté, pretože požiadavka prehliadača bola už skôr zamietnutá",
|
"notifications.permission_denied_alert": "Upozornenia na ploche nemôžu byť zapnuté, pretože požiadavka prehliadača bola už skôr zamietnutá",
|
||||||
"notifications.permission_required": "Upozornenia na ploche sú nedostupné, pretože neboli udelené potrebné povolenia.",
|
"notifications.permission_required": "Upozornenia na ploche sú nedostupné, pretože neboli udelené potrebné povolenia.",
|
||||||
|
"notifications.policy.drop": "Ignoruj",
|
||||||
|
"notifications.policy.filter": "Triediť",
|
||||||
|
"notifications.policy.filter_limited_accounts_title": "Moderované účty",
|
||||||
"notifications.policy.filter_new_accounts_title": "Nové účty",
|
"notifications.policy.filter_new_accounts_title": "Nové účty",
|
||||||
"notifications.policy.filter_not_followers_title": "Ľudia, ktorí ťa nenasledujú",
|
"notifications.policy.filter_not_followers_title": "Ľudia, ktorí ťa nenasledujú",
|
||||||
"notifications.policy.filter_not_following_title": "Ľudia, ktorých nenasleduješ",
|
"notifications.policy.filter_not_following_title": "Ľudia, ktorých nenasleduješ",
|
||||||
|
|
|
@ -514,13 +514,13 @@
|
||||||
"notification.label.private_reply": "Приватна відповідь",
|
"notification.label.private_reply": "Приватна відповідь",
|
||||||
"notification.label.reply": "Відповідь",
|
"notification.label.reply": "Відповідь",
|
||||||
"notification.mention": "Згадка",
|
"notification.mention": "Згадка",
|
||||||
"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": "Ваше опитування завершилося",
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
"account.no_bio": "Chưa có miêu tả.",
|
"account.no_bio": "Chưa có miêu tả.",
|
||||||
"account.open_original_page": "Mở trang gốc",
|
"account.open_original_page": "Mở trang gốc",
|
||||||
"account.posts": "Tút",
|
"account.posts": "Tút",
|
||||||
"account.posts_with_replies": "Lượt trả lời",
|
"account.posts_with_replies": "Trả lời",
|
||||||
"account.report": "Báo cáo @{name}",
|
"account.report": "Báo cáo @{name}",
|
||||||
"account.requested": "Đang chờ chấp thuận. Nhấp vào đây để hủy yêu cầu theo dõi",
|
"account.requested": "Đang chờ chấp thuận. Nhấp vào đây để hủy yêu cầu theo dõi",
|
||||||
"account.requested_follow": "{name} yêu cầu theo dõi bạn",
|
"account.requested_follow": "{name} yêu cầu theo dõi bạn",
|
||||||
|
@ -118,15 +118,15 @@
|
||||||
"closed_registrations_modal.title": "Đăng ký Mastodon",
|
"closed_registrations_modal.title": "Đăng ký Mastodon",
|
||||||
"column.about": "Giới thiệu",
|
"column.about": "Giới thiệu",
|
||||||
"column.blocks": "Người đã chặn",
|
"column.blocks": "Người đã chặn",
|
||||||
"column.bookmarks": "Đã lưu",
|
"column.bookmarks": "Những tút đã lưu",
|
||||||
"column.community": "Máy chủ này",
|
"column.community": "Máy chủ này",
|
||||||
"column.direct": "Nhắn riêng",
|
"column.direct": "Nhắn riêng",
|
||||||
"column.directory": "Tìm người cùng sở thích",
|
"column.directory": "Tìm người cùng sở thích",
|
||||||
"column.domain_blocks": "Máy chủ đã chặn",
|
"column.domain_blocks": "Máy chủ đã chặn",
|
||||||
"column.favourites": "Lượt thích",
|
"column.favourites": "Những tút đã thích",
|
||||||
"column.firehose": "Bảng tin",
|
"column.firehose": "Bảng tin",
|
||||||
"column.follow_requests": "Yêu cầu theo dõi",
|
"column.follow_requests": "Yêu cầu theo dõi",
|
||||||
"column.home": "Trang chính",
|
"column.home": "Trang chủ",
|
||||||
"column.lists": "Danh sách",
|
"column.lists": "Danh sách",
|
||||||
"column.mutes": "Người đã ẩn",
|
"column.mutes": "Người đã ẩn",
|
||||||
"column.notifications": "Thông báo",
|
"column.notifications": "Thông báo",
|
||||||
|
@ -368,8 +368,17 @@
|
||||||
"home.pending_critical_update.link": "Xem bản cập nhật",
|
"home.pending_critical_update.link": "Xem bản cập nhật",
|
||||||
"home.pending_critical_update.title": "Có bản cập nhật bảo mật quan trọng!",
|
"home.pending_critical_update.title": "Có bản cập nhật bảo mật quan trọng!",
|
||||||
"home.show_announcements": "Xem thông báo máy chủ",
|
"home.show_announcements": "Xem thông báo máy chủ",
|
||||||
|
"ignore_notifications_modal.disclaimer": "Mastodon sẽ không thông báo cho người dùng rằng bạn đã bỏ qua thông báo của họ. Họ sẽ vẫn có thể tương tác với bạn.",
|
||||||
|
"ignore_notifications_modal.filter_instead": "Lọc thay thế",
|
||||||
"ignore_notifications_modal.filter_to_act_users": "Bạn vẫn có thể chấp nhận, từ chối hoặc báo cáo người khác",
|
"ignore_notifications_modal.filter_to_act_users": "Bạn vẫn có thể chấp nhận, từ chối hoặc báo cáo người khác",
|
||||||
"ignore_notifications_modal.filter_to_review_separately": "Bạn có thể xem lại các thông báo đã lọc riêng biệt",
|
"ignore_notifications_modal.filter_to_avoid_confusion": "Lọc giúp tránh nhầm lẫn tiềm ẩn",
|
||||||
|
"ignore_notifications_modal.filter_to_review_separately": "Bạn có thể xem lại riêng các thông báo đã lọc",
|
||||||
|
"ignore_notifications_modal.ignore": "Bỏ qua thông báo",
|
||||||
|
"ignore_notifications_modal.limited_accounts_title": "Bỏ qua thông báo từ các tài khoản bị kiểm duyệt?",
|
||||||
|
"ignore_notifications_modal.new_accounts_title": "Bỏ qua thông báo từ các tài khoản mới đăng ký?",
|
||||||
|
"ignore_notifications_modal.not_followers_title": "Bỏ qua thông báo từ những người chưa theo dõi bạn?",
|
||||||
|
"ignore_notifications_modal.not_following_title": "Bỏ qua thông báo từ những người bạn không theo dõi?",
|
||||||
|
"ignore_notifications_modal.private_mentions_title": "Bỏ qua thông báo từ những lượt Nhắn Riêng không mong muốn?",
|
||||||
"interaction_modal.description.favourite": "Với tài khoản Mastodon, bạn có thể cho người đăng biết bạn thích tút này và lưu lại tút.",
|
"interaction_modal.description.favourite": "Với tài khoản Mastodon, bạn có thể cho người đăng biết bạn thích tút này và lưu lại tút.",
|
||||||
"interaction_modal.description.follow": "Với tài khoản Mastodon, bạn có thể theo dõi {name} để tút của họ hiện trên bảng tin của mình.",
|
"interaction_modal.description.follow": "Với tài khoản Mastodon, bạn có thể theo dõi {name} để tút của họ hiện trên bảng tin của mình.",
|
||||||
"interaction_modal.description.reblog": "Với tài khoản Mastodon, bạn có thể đăng lại tút này để chia sẻ nó với những người đang theo dõi bạn.",
|
"interaction_modal.description.reblog": "Với tài khoản Mastodon, bạn có thể đăng lại tút này để chia sẻ nó với những người đang theo dõi bạn.",
|
||||||
|
@ -463,14 +472,14 @@
|
||||||
"navigation_bar.administration": "Quản trị",
|
"navigation_bar.administration": "Quản trị",
|
||||||
"navigation_bar.advanced_interface": "Dùng bố cục nhiều cột",
|
"navigation_bar.advanced_interface": "Dùng bố cục nhiều cột",
|
||||||
"navigation_bar.blocks": "Người đã chặn",
|
"navigation_bar.blocks": "Người đã chặn",
|
||||||
"navigation_bar.bookmarks": "Đã lưu",
|
"navigation_bar.bookmarks": "Tút lưu",
|
||||||
"navigation_bar.community_timeline": "Cộng đồng",
|
"navigation_bar.community_timeline": "Cộng đồng",
|
||||||
"navigation_bar.compose": "Soạn tút mới",
|
"navigation_bar.compose": "Soạn tút mới",
|
||||||
"navigation_bar.direct": "Nhắn riêng",
|
"navigation_bar.direct": "Nhắn riêng",
|
||||||
"navigation_bar.discover": "Khám phá",
|
"navigation_bar.discover": "Khám phá",
|
||||||
"navigation_bar.domain_blocks": "Máy chủ đã ẩn",
|
"navigation_bar.domain_blocks": "Máy chủ đã ẩn",
|
||||||
"navigation_bar.explore": "Xu hướng",
|
"navigation_bar.explore": "Xu hướng",
|
||||||
"navigation_bar.favourites": "Lượt thích",
|
"navigation_bar.favourites": "Tút thích",
|
||||||
"navigation_bar.filters": "Bộ lọc từ ngữ",
|
"navigation_bar.filters": "Bộ lọc từ ngữ",
|
||||||
"navigation_bar.follow_requests": "Yêu cầu theo dõi",
|
"navigation_bar.follow_requests": "Yêu cầu theo dõi",
|
||||||
"navigation_bar.followed_tags": "Hashtag theo dõi",
|
"navigation_bar.followed_tags": "Hashtag theo dõi",
|
||||||
|
@ -543,6 +552,7 @@
|
||||||
"notification_requests.minimize_banner": "Tinh giản banner lọc thông báo",
|
"notification_requests.minimize_banner": "Tinh giản banner lọc thông báo",
|
||||||
"notification_requests.notifications_from": "Thông báo từ {name}",
|
"notification_requests.notifications_from": "Thông báo từ {name}",
|
||||||
"notification_requests.title": "Thông báo đã lọc",
|
"notification_requests.title": "Thông báo đã lọc",
|
||||||
|
"notification_requests.view": "Hiện thông báo",
|
||||||
"notifications.clear": "Xóa hết thông báo",
|
"notifications.clear": "Xóa hết thông báo",
|
||||||
"notifications.clear_confirmation": "Bạn thật sự muốn xóa vĩnh viễn tất cả thông báo của mình?",
|
"notifications.clear_confirmation": "Bạn thật sự muốn xóa vĩnh viễn tất cả thông báo của mình?",
|
||||||
"notifications.clear_title": "Xóa hết thông báo?",
|
"notifications.clear_title": "Xóa hết thông báo?",
|
||||||
|
@ -579,6 +589,12 @@
|
||||||
"notifications.permission_denied": "Trình duyệt không cho phép hiển thị thông báo trên màn hình.",
|
"notifications.permission_denied": "Trình duyệt không cho phép hiển thị thông báo trên màn hình.",
|
||||||
"notifications.permission_denied_alert": "Không thể bật thông báo trên màn hình bởi vì trình duyệt đã cấm trước đó",
|
"notifications.permission_denied_alert": "Không thể bật thông báo trên màn hình bởi vì trình duyệt đã cấm trước đó",
|
||||||
"notifications.permission_required": "Không hiện thông báo trên màn hình bởi vì chưa cho phép.",
|
"notifications.permission_required": "Không hiện thông báo trên màn hình bởi vì chưa cho phép.",
|
||||||
|
"notifications.policy.accept": "Có",
|
||||||
|
"notifications.policy.accept_hint": "Hiện trong thông báo",
|
||||||
|
"notifications.policy.drop": "Không",
|
||||||
|
"notifications.policy.drop_hint": "Loại bỏ vĩnh viễn",
|
||||||
|
"notifications.policy.filter": "Lọc",
|
||||||
|
"notifications.policy.filter_hint": "Cho vào mục thông báo bị lọc",
|
||||||
"notifications.policy.filter_limited_accounts_hint": "Chỉ dành cho kiểm duyệt viên",
|
"notifications.policy.filter_limited_accounts_hint": "Chỉ dành cho kiểm duyệt viên",
|
||||||
"notifications.policy.filter_limited_accounts_title": "Kiểm duyệt tài khoản",
|
"notifications.policy.filter_limited_accounts_title": "Kiểm duyệt tài khoản",
|
||||||
"notifications.policy.filter_new_accounts.hint": "Đã tạo trong vòng {days, plural, other {# ngày}}",
|
"notifications.policy.filter_new_accounts.hint": "Đã tạo trong vòng {days, plural, other {# ngày}}",
|
||||||
|
@ -589,6 +605,7 @@
|
||||||
"notifications.policy.filter_not_following_title": "Những người bạn không theo dõi",
|
"notifications.policy.filter_not_following_title": "Những người bạn không theo dõi",
|
||||||
"notifications.policy.filter_private_mentions_hint": "Được lọc trừ khi nó trả lời lượt nhắc từ bạn hoặc nếu bạn theo dõi người gửi",
|
"notifications.policy.filter_private_mentions_hint": "Được lọc trừ khi nó trả lời lượt nhắc từ bạn hoặc nếu bạn theo dõi người gửi",
|
||||||
"notifications.policy.filter_private_mentions_title": "Lượt nhắc riêng tư không được yêu cầu",
|
"notifications.policy.filter_private_mentions_title": "Lượt nhắc riêng tư không được yêu cầu",
|
||||||
|
"notifications.policy.title": "Quản lý thông báo từ…",
|
||||||
"notifications_permission_banner.enable": "Cho phép thông báo trên màn hình",
|
"notifications_permission_banner.enable": "Cho phép thông báo trên màn hình",
|
||||||
"notifications_permission_banner.how_to_control": "Hãy bật thông báo trên màn hình để không bỏ lỡ những thông báo từ Mastodon. Một khi đã bật, bạn có thể lựa chọn từng loại thông báo khác nhau thông qua {icon} nút bên dưới.",
|
"notifications_permission_banner.how_to_control": "Hãy bật thông báo trên màn hình để không bỏ lỡ những thông báo từ Mastodon. Một khi đã bật, bạn có thể lựa chọn từng loại thông báo khác nhau thông qua {icon} nút bên dưới.",
|
||||||
"notifications_permission_banner.title": "Không bỏ lỡ điều thú vị nào",
|
"notifications_permission_banner.title": "Không bỏ lỡ điều thú vị nào",
|
||||||
|
|
|
@ -283,8 +283,9 @@ function processNewNotification(
|
||||||
}
|
}
|
||||||
|
|
||||||
function trimNotifications(state: NotificationGroupsState) {
|
function trimNotifications(state: NotificationGroupsState) {
|
||||||
if (state.scrolledToTop) {
|
if (state.scrolledToTop && state.groups.length > NOTIFICATIONS_TRIM_LIMIT) {
|
||||||
state.groups.splice(NOTIFICATIONS_TRIM_LIMIT);
|
state.groups.splice(NOTIFICATIONS_TRIM_LIMIT);
|
||||||
|
ensureTrailingGap(state.groups);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,6 +436,28 @@ function ensureLeadingGap(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure the groups list ends with a gap suitable for loading more, mutating it to append one if needed
|
||||||
|
function ensureTrailingGap(
|
||||||
|
groups: NotificationGroupsState['groups'],
|
||||||
|
): NotificationGap {
|
||||||
|
const groupOrGap = groups.at(-1);
|
||||||
|
|
||||||
|
if (groupOrGap?.type === 'gap') {
|
||||||
|
// We're expecting older notifications, so discard sinceId if it's set
|
||||||
|
groupOrGap.sinceId = undefined;
|
||||||
|
|
||||||
|
return groupOrGap;
|
||||||
|
} else {
|
||||||
|
const gap: NotificationGap = {
|
||||||
|
type: 'gap',
|
||||||
|
maxId: groupOrGap?.page_min_id,
|
||||||
|
};
|
||||||
|
|
||||||
|
groups.push(gap);
|
||||||
|
return gap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export const notificationGroupsReducer = createReducer<NotificationGroupsState>(
|
export const notificationGroupsReducer = createReducer<NotificationGroupsState>(
|
||||||
initialState,
|
initialState,
|
||||||
(builder) => {
|
(builder) => {
|
||||||
|
|
|
@ -5,8 +5,8 @@ import { BOOKMARK_CATEGORY_DELETE_SUCCESS, BOOKMARK_CATEGORY_FETCH_FAIL } from '
|
||||||
import { CIRCLE_DELETE_SUCCESS, CIRCLE_FETCH_FAIL } from 'mastodon/actions/circles';
|
import { CIRCLE_DELETE_SUCCESS, CIRCLE_FETCH_FAIL } from 'mastodon/actions/circles';
|
||||||
|
|
||||||
import { COLUMN_ADD, COLUMN_REMOVE, COLUMN_MOVE, COLUMN_PARAMS_CHANGE } from '../actions/columns';
|
import { COLUMN_ADD, COLUMN_REMOVE, COLUMN_MOVE, COLUMN_PARAMS_CHANGE } from '../actions/columns';
|
||||||
|
import { COMPOSE_LANGUAGE_CHANGE } from '../actions/compose';
|
||||||
import { EMOJI_USE } from '../actions/emojis';
|
import { EMOJI_USE } from '../actions/emojis';
|
||||||
import { LANGUAGE_USE } from '../actions/languages';
|
|
||||||
import { LIST_DELETE_SUCCESS, LIST_FETCH_FAIL } from '../actions/lists';
|
import { LIST_DELETE_SUCCESS, LIST_FETCH_FAIL } from '../actions/lists';
|
||||||
import { NOTIFICATIONS_FILTER_SET } from '../actions/notifications';
|
import { NOTIFICATIONS_FILTER_SET } from '../actions/notifications';
|
||||||
import { SETTING_CHANGE, SETTING_SAVE } from '../actions/settings';
|
import { SETTING_CHANGE, SETTING_SAVE } from '../actions/settings';
|
||||||
|
@ -194,7 +194,7 @@ export default function settings(state = initialState, action) {
|
||||||
return changeColumnParams(state, action.uuid, action.path, action.value);
|
return changeColumnParams(state, action.uuid, action.path, action.value);
|
||||||
case EMOJI_USE:
|
case EMOJI_USE:
|
||||||
return updateFrequentEmojis(state, action.emoji);
|
return updateFrequentEmojis(state, action.emoji);
|
||||||
case LANGUAGE_USE:
|
case COMPOSE_LANGUAGE_CHANGE:
|
||||||
return updateFrequentLanguages(state, action.language);
|
return updateFrequentLanguages(state, action.language);
|
||||||
case SETTING_SAVE:
|
case SETTING_SAVE:
|
||||||
return state.set('saved', true);
|
return state.set('saved', true);
|
||||||
|
|
|
@ -1642,7 +1642,8 @@ body > [data-popper-placement] {
|
||||||
}
|
}
|
||||||
|
|
||||||
.status__wrapper-direct,
|
.status__wrapper-direct,
|
||||||
.notification-ungrouped--direct {
|
.notification-ungrouped--direct,
|
||||||
|
.notification-group--direct {
|
||||||
background: rgba($ui-highlight-color, 0.05);
|
background: rgba($ui-highlight-color, 0.05);
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
|
@ -2878,7 +2879,7 @@ $ui-header-logo-wordmark-width: 99px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.column {
|
.column {
|
||||||
width: 350px;
|
width: 400px;
|
||||||
position: relative;
|
position: relative;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -2911,7 +2912,7 @@ $ui-header-logo-wordmark-width: 99px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.drawer {
|
.drawer {
|
||||||
width: 300px;
|
width: 350px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
@ -6718,7 +6719,7 @@ a.status-card {
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog-option .poll__input {
|
.dialog-option .poll__input {
|
||||||
border-color: $inverted-text-color;
|
border-color: $darker-text-color;
|
||||||
color: $ui-secondary-color;
|
color: $ui-secondary-color;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
@ -6732,13 +6733,13 @@ a.status-card {
|
||||||
&:active,
|
&:active,
|
||||||
&:focus,
|
&:focus,
|
||||||
&:hover {
|
&:hover {
|
||||||
border-color: lighten($inverted-text-color, 15%);
|
border-color: $valid-value-color;
|
||||||
border-width: 4px;
|
border-width: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
border-color: $inverted-text-color;
|
border-color: $valid-value-color;
|
||||||
background: $inverted-text-color;
|
background: $valid-value-color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7883,7 +7884,7 @@ a.status-card {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.radio-button.checked::before {
|
.radio-button__input.checked::before {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 2px;
|
left: 2px;
|
||||||
top: 2px;
|
top: 2px;
|
||||||
|
@ -8953,22 +8954,6 @@ noscript {
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&--unread {
|
|
||||||
background: lighten($ui-base-color, 2%);
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
background: lighten($ui-base-color, 4%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.conversation__content__info {
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
.conversation__content__relative-time {
|
|
||||||
color: $primary-text-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.announcements {
|
.announcements {
|
||||||
|
@ -9163,7 +9148,8 @@ noscript {
|
||||||
}
|
}
|
||||||
|
|
||||||
.notification,
|
.notification,
|
||||||
.status__wrapper {
|
.status__wrapper,
|
||||||
|
.conversation {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
&.status__wrapper__compact {
|
&.status__wrapper__compact {
|
||||||
|
@ -11382,6 +11368,7 @@ noscript {
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-warning {
|
.content-warning {
|
||||||
|
box-sizing: border-box;
|
||||||
background: rgba($ui-highlight-color, 0.05);
|
background: rgba($ui-highlight-color, 0.05);
|
||||||
color: $secondary-text-color;
|
color: $secondary-text-color;
|
||||||
border-top: 1px solid;
|
border-top: 1px solid;
|
||||||
|
|
|
@ -28,22 +28,18 @@ class AnnualReport::Archetype < AnnualReport::Source
|
||||||
end
|
end
|
||||||
|
|
||||||
def polls_count
|
def polls_count
|
||||||
@polls_count ||= base_scope.where.not(poll_id: nil).count
|
@polls_count ||= report_statuses.where.not(poll_id: nil).count
|
||||||
end
|
end
|
||||||
|
|
||||||
def reblogs_count
|
def reblogs_count
|
||||||
@reblogs_count ||= base_scope.where.not(reblog_of_id: nil).count
|
@reblogs_count ||= report_statuses.where.not(reblog_of_id: nil).count
|
||||||
end
|
end
|
||||||
|
|
||||||
def replies_count
|
def replies_count
|
||||||
@replies_count ||= base_scope.where.not(in_reply_to_id: nil).where.not(in_reply_to_account_id: @account.id).count
|
@replies_count ||= report_statuses.where.not(in_reply_to_id: nil).where.not(in_reply_to_account_id: @account.id).count
|
||||||
end
|
end
|
||||||
|
|
||||||
def standalone_count
|
def standalone_count
|
||||||
@standalone_count ||= base_scope.without_replies.without_reblogs.count
|
@standalone_count ||= report_statuses.without_replies.without_reblogs.count
|
||||||
end
|
|
||||||
|
|
||||||
def base_scope
|
|
||||||
@account.statuses.where(id: year_as_snowflake_range)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,6 +17,6 @@ class AnnualReport::CommonlyInteractedWithAccounts < AnnualReport::Source
|
||||||
private
|
private
|
||||||
|
|
||||||
def commonly_interacted_with_accounts
|
def commonly_interacted_with_accounts
|
||||||
@account.statuses.reorder(nil).where(id: year_as_snowflake_range).where.not(in_reply_to_account_id: @account.id).group(:in_reply_to_account_id).having('count(*) > 1').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('in_reply_to_account_id, count(*) AS total'))
|
report_statuses.where.not(in_reply_to_account_id: @account.id).group(:in_reply_to_account_id).having('count(*) > 1').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('in_reply_to_account_id, count(*) AS total'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,6 +17,6 @@ class AnnualReport::MostRebloggedAccounts < AnnualReport::Source
|
||||||
private
|
private
|
||||||
|
|
||||||
def most_reblogged_accounts
|
def most_reblogged_accounts
|
||||||
@account.statuses.reorder(nil).where(id: year_as_snowflake_range).where.not(reblog_of_id: nil).joins(reblog: :account).group('accounts.id').having('count(*) > 1').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('accounts.id, count(*) as total'))
|
report_statuses.where.not(reblog_of_id: nil).joins(reblog: :account).group('accounts.id').having('count(*) > 1').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('accounts.id, count(*) as total'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,6 +17,6 @@ class AnnualReport::MostUsedApps < AnnualReport::Source
|
||||||
private
|
private
|
||||||
|
|
||||||
def most_used_apps
|
def most_used_apps
|
||||||
@account.statuses.reorder(nil).where(id: year_as_snowflake_range).joins(:application).group('oauth_applications.name').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('oauth_applications.name, count(*) as total'))
|
report_statuses.joins(:application).group('oauth_applications.name').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('oauth_applications.name, count(*) as total'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,7 +17,7 @@ class AnnualReport::Percentiles < AnnualReport::Source
|
||||||
end
|
end
|
||||||
|
|
||||||
def statuses_created
|
def statuses_created
|
||||||
@statuses_created ||= @account.statuses.where(id: year_as_snowflake_range).count
|
@statuses_created ||= report_statuses.count
|
||||||
end
|
end
|
||||||
|
|
||||||
def total_with_fewer_followers
|
def total_with_fewer_followers
|
||||||
|
|
|
@ -10,7 +10,24 @@ class AnnualReport::Source
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
|
def report_statuses
|
||||||
|
@account
|
||||||
|
.statuses
|
||||||
|
.where(id: year_as_snowflake_range)
|
||||||
|
.reorder(nil)
|
||||||
|
end
|
||||||
|
|
||||||
def year_as_snowflake_range
|
def year_as_snowflake_range
|
||||||
(Mastodon::Snowflake.id_at(DateTime.new(year, 1, 1))..Mastodon::Snowflake.id_at(DateTime.new(year, 12, 31)))
|
(beginning_snowflake_id..ending_snowflake_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def beginning_snowflake_id
|
||||||
|
Mastodon::Snowflake.id_at DateTime.new(year).beginning_of_year
|
||||||
|
end
|
||||||
|
|
||||||
|
def ending_snowflake_id
|
||||||
|
Mastodon::Snowflake.id_at DateTime.new(year).end_of_year
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -17,7 +17,7 @@ class AnnualReport::TimeSeries < AnnualReport::Source
|
||||||
private
|
private
|
||||||
|
|
||||||
def statuses_per_month
|
def statuses_per_month
|
||||||
@statuses_per_month ||= @account.statuses.reorder(nil).where(id: year_as_snowflake_range).group(:period).pluck(Arel.sql("date_part('month', created_at)::int AS period, count(*)")).to_h
|
@statuses_per_month ||= report_statuses.group(:period).pluck(Arel.sql("date_part('month', created_at)::int AS period, count(*)")).to_h
|
||||||
end
|
end
|
||||||
|
|
||||||
def following_per_month
|
def following_per_month
|
||||||
|
|
|
@ -17,6 +17,6 @@ class AnnualReport::TopHashtags < AnnualReport::Source
|
||||||
private
|
private
|
||||||
|
|
||||||
def top_hashtags
|
def top_hashtags
|
||||||
Tag.joins(:statuses).where(statuses: { id: @account.statuses.where(id: year_as_snowflake_range).reorder(nil).select(:id) }).group(:id).having('count(*) > 1').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('COALESCE(tags.display_name, tags.name), count(*) AS total'))
|
Tag.joins(:statuses).where(statuses: { id: report_statuses.select(:id) }).group(:id).having('count(*) > 1').order(total: :desc).limit(SET_SIZE).pluck(Arel.sql('COALESCE(tags.display_name, tags.name), count(*) AS total'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -16,6 +16,6 @@ class AnnualReport::TopStatuses < AnnualReport::Source
|
||||||
end
|
end
|
||||||
|
|
||||||
def base_scope
|
def base_scope
|
||||||
@account.statuses.public_visibility.joins(:status_stat).where(id: year_as_snowflake_range).reorder(nil)
|
report_statuses.public_visibility.joins(:status_stat)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,17 +4,11 @@ class AnnualReport::TypeDistribution < AnnualReport::Source
|
||||||
def generate
|
def generate
|
||||||
{
|
{
|
||||||
type_distribution: {
|
type_distribution: {
|
||||||
total: base_scope.count,
|
total: report_statuses.count,
|
||||||
reblogs: base_scope.where.not(reblog_of_id: nil).count,
|
reblogs: report_statuses.where.not(reblog_of_id: nil).count,
|
||||||
replies: base_scope.where.not(in_reply_to_id: nil).where.not(in_reply_to_account_id: @account.id).count,
|
replies: report_statuses.where.not(in_reply_to_id: nil).where.not(in_reply_to_account_id: @account.id).count,
|
||||||
standalone: base_scope.without_replies.without_reblogs.count,
|
standalone: report_statuses.without_replies.without_reblogs.count,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
|
||||||
|
|
||||||
def base_scope
|
|
||||||
@account.statuses.where(id: year_as_snowflake_range)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class RedisConfiguration
|
class RedisConnection
|
||||||
class << self
|
class << self
|
||||||
def establish_pool(new_pool_size)
|
def establish_pool(new_pool_size)
|
||||||
@pool&.shutdown(&:close)
|
@pool&.shutdown(&:close)
|
||||||
|
@ -22,33 +22,24 @@ class RedisConfiguration
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
attr_reader :config
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
@config = REDIS_CONFIGURATION.base
|
||||||
|
end
|
||||||
|
|
||||||
def connection
|
def connection
|
||||||
if namespace?
|
namespace = config[:namespace]
|
||||||
|
if namespace.present?
|
||||||
Redis::Namespace.new(namespace, redis: raw_connection)
|
Redis::Namespace.new(namespace, redis: raw_connection)
|
||||||
else
|
else
|
||||||
raw_connection
|
raw_connection
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def namespace?
|
|
||||||
namespace.present?
|
|
||||||
end
|
|
||||||
|
|
||||||
def namespace
|
|
||||||
ENV.fetch('REDIS_NAMESPACE', nil)
|
|
||||||
end
|
|
||||||
|
|
||||||
def url
|
|
||||||
ENV['REDIS_URL']
|
|
||||||
end
|
|
||||||
|
|
||||||
def redis_driver
|
|
||||||
ENV.fetch('REDIS_DRIVER', 'hiredis') == 'ruby' ? :ruby : :hiredis
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def raw_connection
|
def raw_connection
|
||||||
Redis.new(url: url, driver: redis_driver)
|
Redis.new(**config)
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -12,7 +12,7 @@ class ApplicationMailer < ActionMailer::Base
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def locale_for_account(account, &block)
|
def locale_for_account(account, &block)
|
||||||
I18n.with_locale(account.user_locale || I18n.locale || I18n.default_locale, &block)
|
I18n.with_locale(account.user_locale || I18n.default_locale, &block)
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_autoreply_headers!
|
def set_autoreply_headers!
|
||||||
|
|
|
@ -33,7 +33,7 @@ class UserMailer < Devise::Mailer
|
||||||
|
|
||||||
return unless @resource.active_for_authentication?
|
return unless @resource.active_for_authentication?
|
||||||
|
|
||||||
I18n.with_locale(locale) do
|
I18n.with_locale(locale(use_current_locale: true)) do
|
||||||
mail subject: default_devise_subject
|
mail subject: default_devise_subject
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -43,7 +43,7 @@ class UserMailer < Devise::Mailer
|
||||||
|
|
||||||
return unless @resource.active_for_authentication?
|
return unless @resource.active_for_authentication?
|
||||||
|
|
||||||
I18n.with_locale(locale) do
|
I18n.with_locale(locale(use_current_locale: true)) do
|
||||||
mail subject: default_devise_subject
|
mail subject: default_devise_subject
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -53,7 +53,7 @@ class UserMailer < Devise::Mailer
|
||||||
|
|
||||||
return unless @resource.active_for_authentication?
|
return unless @resource.active_for_authentication?
|
||||||
|
|
||||||
I18n.with_locale(locale) do
|
I18n.with_locale(locale(use_current_locale: true)) do
|
||||||
mail subject: default_devise_subject
|
mail subject: default_devise_subject
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -63,7 +63,7 @@ class UserMailer < Devise::Mailer
|
||||||
|
|
||||||
return unless @resource.active_for_authentication?
|
return unless @resource.active_for_authentication?
|
||||||
|
|
||||||
I18n.with_locale(locale) do
|
I18n.with_locale(locale(use_current_locale: true)) do
|
||||||
mail subject: default_devise_subject
|
mail subject: default_devise_subject
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -73,7 +73,7 @@ class UserMailer < Devise::Mailer
|
||||||
|
|
||||||
return unless @resource.active_for_authentication?
|
return unless @resource.active_for_authentication?
|
||||||
|
|
||||||
I18n.with_locale(locale) do
|
I18n.with_locale(locale(use_current_locale: true)) do
|
||||||
mail subject: default_devise_subject
|
mail subject: default_devise_subject
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -83,7 +83,7 @@ class UserMailer < Devise::Mailer
|
||||||
|
|
||||||
return unless @resource.active_for_authentication?
|
return unless @resource.active_for_authentication?
|
||||||
|
|
||||||
I18n.with_locale(locale) do
|
I18n.with_locale(locale(use_current_locale: true)) do
|
||||||
mail subject: default_devise_subject
|
mail subject: default_devise_subject
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -93,7 +93,7 @@ class UserMailer < Devise::Mailer
|
||||||
|
|
||||||
return unless @resource.active_for_authentication?
|
return unless @resource.active_for_authentication?
|
||||||
|
|
||||||
I18n.with_locale(locale) do
|
I18n.with_locale(locale(use_current_locale: true)) do
|
||||||
mail subject: default_devise_subject
|
mail subject: default_devise_subject
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -103,7 +103,7 @@ class UserMailer < Devise::Mailer
|
||||||
|
|
||||||
return unless @resource.active_for_authentication?
|
return unless @resource.active_for_authentication?
|
||||||
|
|
||||||
I18n.with_locale(locale) do
|
I18n.with_locale(locale(use_current_locale: true)) do
|
||||||
mail subject: default_devise_subject
|
mail subject: default_devise_subject
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -114,7 +114,7 @@ class UserMailer < Devise::Mailer
|
||||||
|
|
||||||
return unless @resource.active_for_authentication?
|
return unless @resource.active_for_authentication?
|
||||||
|
|
||||||
I18n.with_locale(locale) do
|
I18n.with_locale(locale(use_current_locale: true)) do
|
||||||
mail subject: I18n.t('devise.mailer.webauthn_credential.added.subject')
|
mail subject: I18n.t('devise.mailer.webauthn_credential.added.subject')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -125,7 +125,7 @@ class UserMailer < Devise::Mailer
|
||||||
|
|
||||||
return unless @resource.active_for_authentication?
|
return unless @resource.active_for_authentication?
|
||||||
|
|
||||||
I18n.with_locale(locale) do
|
I18n.with_locale(locale(use_current_locale: true)) do
|
||||||
mail subject: I18n.t('devise.mailer.webauthn_credential.deleted.subject')
|
mail subject: I18n.t('devise.mailer.webauthn_credential.deleted.subject')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -219,7 +219,7 @@ class UserMailer < Devise::Mailer
|
||||||
@instance = Rails.configuration.x.local_domain
|
@instance = Rails.configuration.x.local_domain
|
||||||
end
|
end
|
||||||
|
|
||||||
def locale
|
def locale(use_current_locale: false)
|
||||||
@resource.locale.presence || I18n.locale || I18n.default_locale
|
@resource.locale.presence || (use_current_locale && I18n.locale) || I18n.default_locale
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -95,6 +95,7 @@ class Account < ApplicationRecord
|
||||||
include DomainMaterializable
|
include DomainMaterializable
|
||||||
include DomainNormalizable
|
include DomainNormalizable
|
||||||
include Paginable
|
include Paginable
|
||||||
|
include Reviewable
|
||||||
|
|
||||||
enum :protocol, { ostatus: 0, activitypub: 1 }
|
enum :protocol, { ostatus: 0, activitypub: 1 }
|
||||||
enum :suspension_origin, { local: 0, remote: 1 }, prefix: true
|
enum :suspension_origin, { local: 0, remote: 1 }, prefix: true
|
||||||
|
@ -153,6 +154,7 @@ class Account < ApplicationRecord
|
||||||
scope :with_username, ->(value) { where arel_table[:username].lower.eq(value.to_s.downcase) }
|
scope :with_username, ->(value) { where arel_table[:username].lower.eq(value.to_s.downcase) }
|
||||||
scope :with_domain, ->(value) { where arel_table[:domain].lower.eq(value&.to_s&.downcase) }
|
scope :with_domain, ->(value) { where arel_table[:domain].lower.eq(value&.to_s&.downcase) }
|
||||||
scope :without_memorial, -> { where(memorial: false) }
|
scope :without_memorial, -> { where(memorial: false) }
|
||||||
|
scope :duplicate_uris, -> { select(:uri, Arel.star.count).group(:uri).having(Arel.star.count.gt(1)) }
|
||||||
|
|
||||||
after_update_commit :trigger_update_webhooks
|
after_update_commit :trigger_update_webhooks
|
||||||
|
|
||||||
|
@ -482,22 +484,6 @@ class Account < ApplicationRecord
|
||||||
@synchronization_uri_prefix ||= "#{uri[URL_PREFIX_RE]}/"
|
@synchronization_uri_prefix ||= "#{uri[URL_PREFIX_RE]}/"
|
||||||
end
|
end
|
||||||
|
|
||||||
def requires_review?
|
|
||||||
reviewed_at.nil?
|
|
||||||
end
|
|
||||||
|
|
||||||
def reviewed?
|
|
||||||
reviewed_at.present?
|
|
||||||
end
|
|
||||||
|
|
||||||
def requested_review?
|
|
||||||
requested_review_at.present?
|
|
||||||
end
|
|
||||||
|
|
||||||
def requires_review_notification?
|
|
||||||
requires_review? && !requested_review?
|
|
||||||
end
|
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def readonly_attributes
|
def readonly_attributes
|
||||||
super - %w(statuses_count following_count followers_count)
|
super - %w(statuses_count following_count followers_count)
|
||||||
|
|
|
@ -151,7 +151,7 @@ class AccountStatusesCleanupPolicy < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def without_self_fav_scope
|
def without_self_fav_scope
|
||||||
Status.where('NOT EXISTS (SELECT 1 FROM favourites fav WHERE fav.account_id = statuses.account_id AND fav.status_id = statuses.id)')
|
Status.where.not(self_status_reference_exists(Favourite))
|
||||||
end
|
end
|
||||||
|
|
||||||
def without_self_emoji_scope
|
def without_self_emoji_scope
|
||||||
|
@ -159,11 +159,11 @@ class AccountStatusesCleanupPolicy < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def without_self_bookmark_scope
|
def without_self_bookmark_scope
|
||||||
Status.where('NOT EXISTS (SELECT 1 FROM bookmarks bookmark WHERE bookmark.account_id = statuses.account_id AND bookmark.status_id = statuses.id)')
|
Status.where.not(self_status_reference_exists(Bookmark))
|
||||||
end
|
end
|
||||||
|
|
||||||
def without_pinned_scope
|
def without_pinned_scope
|
||||||
Status.where('NOT EXISTS (SELECT 1 FROM status_pins pin WHERE pin.account_id = statuses.account_id AND pin.status_id = statuses.id)')
|
Status.where.not(self_status_reference_exists(StatusPin))
|
||||||
end
|
end
|
||||||
|
|
||||||
def without_media_scope
|
def without_media_scope
|
||||||
|
@ -185,4 +185,13 @@ class AccountStatusesCleanupPolicy < ApplicationRecord
|
||||||
def account_statuses
|
def account_statuses
|
||||||
Status.where(account_id: account_id)
|
Status.where(account_id: account_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self_status_reference_exists(model)
|
||||||
|
model
|
||||||
|
.where(model.arel_table[:account_id].eq Status.arel_table[:account_id])
|
||||||
|
.where(model.arel_table[:status_id].eq Status.arel_table[:id])
|
||||||
|
.select(1)
|
||||||
|
.arel
|
||||||
|
.exists
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
module Redisable
|
module Redisable
|
||||||
def redis
|
def redis
|
||||||
Thread.current[:redis] ||= RedisConfiguration.pool.checkout
|
Thread.current[:redis] ||= RedisConnection.pool.checkout
|
||||||
end
|
end
|
||||||
|
|
||||||
def with_redis(&block)
|
def with_redis(&block)
|
||||||
RedisConfiguration.with(&block)
|
RedisConnection.with(&block)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
21
app/models/concerns/reviewable.rb
Normal file
21
app/models/concerns/reviewable.rb
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module Reviewable
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
def requires_review?
|
||||||
|
reviewed_at.nil?
|
||||||
|
end
|
||||||
|
|
||||||
|
def reviewed?
|
||||||
|
reviewed_at.present?
|
||||||
|
end
|
||||||
|
|
||||||
|
def requested_review?
|
||||||
|
requested_review_at.present?
|
||||||
|
end
|
||||||
|
|
||||||
|
def requires_review_notification?
|
||||||
|
requires_review? && !requested_review?
|
||||||
|
end
|
||||||
|
end
|
|
@ -31,8 +31,4 @@ class Mention < ApplicationRecord
|
||||||
to: :account,
|
to: :account,
|
||||||
prefix: true
|
prefix: true
|
||||||
)
|
)
|
||||||
|
|
||||||
def active?
|
|
||||||
!silent?
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class NotificationGroup < ActiveModelSerializers::Model
|
class NotificationGroup < ActiveModelSerializers::Model
|
||||||
attributes :group_key, :sample_accounts, :notifications_count, :notification, :most_recent_notification_id, :emoji_reaction_groups, :list
|
attributes :group_key, :sample_accounts, :notifications_count, :notification, :most_recent_notification_id, :pagination_data, :emoji_reaction_groups, :list
|
||||||
|
|
||||||
# Try to keep this consistent with `app/javascript/mastodon/models/notification_group.ts`
|
# Try to keep this consistent with `app/javascript/mastodon/models/notification_group.ts`
|
||||||
SAMPLE_ACCOUNTS_SIZE = 8
|
SAMPLE_ACCOUNTS_SIZE = 8
|
||||||
|
@ -11,41 +11,55 @@ class NotificationGroup < ActiveModelSerializers::Model
|
||||||
attributes :emoji_reaction, :sample_accounts
|
attributes :emoji_reaction, :sample_accounts
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.from_notification(notification, max_id: nil, grouped_types: nil)
|
def self.from_notifications(notifications, pagination_range: nil, grouped_types: nil)
|
||||||
|
return [] if notifications.empty?
|
||||||
|
|
||||||
grouped_types = grouped_types.presence&.map(&:to_sym) || Notification::GROUPABLE_NOTIFICATION_TYPES
|
grouped_types = grouped_types.presence&.map(&:to_sym) || Notification::GROUPABLE_NOTIFICATION_TYPES
|
||||||
groupable = notification.group_key.present? && grouped_types.include?(notification.type)
|
|
||||||
|
|
||||||
if groupable
|
grouped_notifications = notifications.filter { |notification| notification.group_key.present? && grouped_types.include?(notification.type) }
|
||||||
# TODO: caching, and, if caching, preloading
|
group_keys = grouped_notifications.pluck(:group_key)
|
||||||
scope = notification.account.notifications.where(group_key: notification.group_key)
|
|
||||||
scope = scope.where(id: ..max_id) if max_id.present?
|
|
||||||
|
|
||||||
# Ideally, we would not load accounts for each notification group
|
with_emoji_reaction = grouped_notifications.any? { |notification| notification.type == :emoji_reaction }
|
||||||
most_recent_notifications = scope.order(id: :desc).includes(:from_account, :list_status).take(SAMPLE_ACCOUNTS_SIZE)
|
notifications.any? { |notification| notification.type == :list_status }
|
||||||
most_recent_id = most_recent_notifications.first.id
|
|
||||||
sample_accounts = most_recent_notifications.map(&:from_account)
|
groups_data = load_groups_data(notifications.first.account_id, group_keys, pagination_range: pagination_range)
|
||||||
emoji_reaction_groups = extract_emoji_reaction_pair(
|
accounts_map = Account.where(id: groups_data.values.pluck(1).flatten).index_by(&:id)
|
||||||
scope.order(id: :desc).includes(emoji_reaction: :account).take(SAMPLE_ACCOUNTS_SIZE_FOR_EMOJI_REACTION)
|
|
||||||
)
|
notifications.map do |notification|
|
||||||
list = pick_list(most_recent_notifications)
|
if notification.group_key.present? && grouped_types.include?(notification.type)
|
||||||
notifications_count = scope.count
|
most_recent_notification_id, sample_account_ids, count, activity_ids, *raw_pagination_data = groups_data[notification.group_key]
|
||||||
else
|
|
||||||
most_recent_id = notification.id
|
pagination_data = raw_pagination_data.empty? ? nil : { min_id: raw_pagination_data[0], latest_notification_at: raw_pagination_data[1] }
|
||||||
sample_accounts = [notification.from_account]
|
|
||||||
emoji_reaction_groups = extract_emoji_reaction_pair([notification])
|
emoji_reaction_groups = with_emoji_reaction ? convert_emoji_reaction_pair(activity_ids) : []
|
||||||
list = pick_list([notification])
|
|
||||||
notifications_count = 1
|
NotificationGroup.new(
|
||||||
|
notification: notification,
|
||||||
|
group_key: notification.group_key,
|
||||||
|
sample_accounts: sample_account_ids.map { |id| accounts_map[id] },
|
||||||
|
notifications_count: count,
|
||||||
|
most_recent_notification_id: most_recent_notification_id,
|
||||||
|
pagination_data: pagination_data,
|
||||||
|
emoji_reaction_groups: emoji_reaction_groups
|
||||||
|
)
|
||||||
|
else
|
||||||
|
pagination_data = pagination_range.blank? ? nil : { min_id: notification.id, latest_notification_at: notification.created_at }
|
||||||
|
|
||||||
|
emoji_reaction_groups = convert_emoji_reaction_pair([notification.activity_id])
|
||||||
|
list = notification.type == :list_status ? notification.list_status&.list : nil
|
||||||
|
|
||||||
|
NotificationGroup.new(
|
||||||
|
notification: notification,
|
||||||
|
group_key: "ungrouped-#{notification.id}",
|
||||||
|
sample_accounts: [notification.from_account],
|
||||||
|
notifications_count: 1,
|
||||||
|
most_recent_notification_id: notification.id,
|
||||||
|
pagination_data: pagination_data,
|
||||||
|
emoji_reaction_groups: emoji_reaction_groups,
|
||||||
|
list: list
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
NotificationGroup.new(
|
|
||||||
notification: notification,
|
|
||||||
group_key: groupable ? notification.group_key : "ungrouped-#{notification.id}",
|
|
||||||
sample_accounts: sample_accounts,
|
|
||||||
emoji_reaction_groups: emoji_reaction_groups,
|
|
||||||
list: list,
|
|
||||||
notifications_count: notifications_count,
|
|
||||||
most_recent_notification_id: most_recent_id
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
delegate :type,
|
delegate :type,
|
||||||
|
@ -55,24 +69,60 @@ class NotificationGroup < ActiveModelSerializers::Model
|
||||||
:account_warning,
|
:account_warning,
|
||||||
to: :notification, prefix: false
|
to: :notification, prefix: false
|
||||||
|
|
||||||
def self.extract_emoji_reaction_pair(scope)
|
def self.convert_emoji_reaction_pair(activity_ids)
|
||||||
return [] unless scope.first.type == :emoji_reaction
|
return [] if activity_ids.empty?
|
||||||
|
|
||||||
scope = scope.filter { |g| g.emoji_reaction.present? }
|
EmojiReaction.where(id: activity_ids)
|
||||||
return [] if scope.empty?
|
.each_with_object({}) { |e, h| h[e.name] = (h[e.name] || []).push(e) }
|
||||||
|
.to_a
|
||||||
scope
|
.map { |pair| NotificationEmojiReactionGroup.new(emoji_reaction: pair[1].first, sample_accounts: pair[1].take(SAMPLE_ACCOUNTS_SIZE).map(&:account)) }
|
||||||
.each_with_object({}) { |e, h| h[e.emoji_reaction.name] = (h[e.emoji_reaction.name] || []).push(e.emoji_reaction) }
|
|
||||||
.to_a
|
|
||||||
.map { |pair| NotificationEmojiReactionGroup.new(emoji_reaction: pair[1].first, sample_accounts: pair[1].take(SAMPLE_ACCOUNTS_SIZE).map(&:account)) }
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.pick_list(scope)
|
class << self
|
||||||
return [] unless scope.first.type == :list_status
|
private
|
||||||
|
|
||||||
scope = scope.filter { |g| g.list_status.present? }
|
def load_groups_data(account_id, group_keys, pagination_range: nil)
|
||||||
return [] if scope.empty?
|
return {} if group_keys.empty?
|
||||||
|
|
||||||
scope.first.list_status.list
|
if pagination_range.present?
|
||||||
|
binds = [
|
||||||
|
account_id,
|
||||||
|
SAMPLE_ACCOUNTS_SIZE,
|
||||||
|
pagination_range.begin,
|
||||||
|
pagination_range.end,
|
||||||
|
ActiveRecord::Relation::QueryAttribute.new('group_keys', group_keys, ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Array.new(ActiveModel::Type::String.new)),
|
||||||
|
]
|
||||||
|
|
||||||
|
ActiveRecord::Base.connection.select_all(<<~SQL.squish, 'grouped_notifications', binds).cast_values.to_h { |k, *values| [k, values] }
|
||||||
|
SELECT
|
||||||
|
groups.group_key,
|
||||||
|
(SELECT id FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key AND id <= $4 ORDER BY id DESC LIMIT 1),
|
||||||
|
array(SELECT from_account_id FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key AND id <= $4 ORDER BY id DESC LIMIT $2),
|
||||||
|
(SELECT count(*) FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key AND id <= $4) AS notifications_count,
|
||||||
|
array(SELECT activity_id FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key AND id <= $4 AND activity_type = 'EmojiReaction'),
|
||||||
|
(SELECT id FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key AND id >= $3 ORDER BY id ASC LIMIT 1) AS min_id,
|
||||||
|
(SELECT created_at FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key AND id <= $4 ORDER BY id DESC LIMIT 1)
|
||||||
|
FROM
|
||||||
|
unnest($5::text[]) AS groups(group_key);
|
||||||
|
SQL
|
||||||
|
else
|
||||||
|
binds = [
|
||||||
|
account_id,
|
||||||
|
SAMPLE_ACCOUNTS_SIZE,
|
||||||
|
ActiveRecord::Relation::QueryAttribute.new('group_keys', group_keys, ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Array.new(ActiveModel::Type::String.new)),
|
||||||
|
]
|
||||||
|
|
||||||
|
ActiveRecord::Base.connection.select_all(<<~SQL.squish, 'grouped_notifications', binds).cast_values.to_h { |k, *values| [k, values] }
|
||||||
|
SELECT
|
||||||
|
groups.group_key,
|
||||||
|
(SELECT id FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key ORDER BY id DESC LIMIT 1),
|
||||||
|
array(SELECT from_account_id FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key ORDER BY id DESC LIMIT $2),
|
||||||
|
(SELECT count(*) FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key) AS notifications_count,
|
||||||
|
array(SELECT activity_id FROM notifications WHERE notifications.account_id = $1 AND notifications.group_key = groups.group_key AND activity_type = 'EmojiReaction')
|
||||||
|
FROM
|
||||||
|
unnest($3::text[]) AS groups(group_key);
|
||||||
|
SQL
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -21,6 +21,7 @@ class PreviewCardProvider < ApplicationRecord
|
||||||
include Paginable
|
include Paginable
|
||||||
include DomainNormalizable
|
include DomainNormalizable
|
||||||
include Attachmentable
|
include Attachmentable
|
||||||
|
include Reviewable
|
||||||
|
|
||||||
ICON_MIME_TYPES = %w(image/x-icon image/vnd.microsoft.icon image/png).freeze
|
ICON_MIME_TYPES = %w(image/x-icon image/vnd.microsoft.icon image/png).freeze
|
||||||
LIMIT = 1.megabyte
|
LIMIT = 1.megabyte
|
||||||
|
@ -36,22 +37,6 @@ class PreviewCardProvider < ApplicationRecord
|
||||||
scope :reviewed, -> { where.not(reviewed_at: nil) }
|
scope :reviewed, -> { where.not(reviewed_at: nil) }
|
||||||
scope :pending_review, -> { where(reviewed_at: nil) }
|
scope :pending_review, -> { where(reviewed_at: nil) }
|
||||||
|
|
||||||
def requires_review?
|
|
||||||
reviewed_at.nil?
|
|
||||||
end
|
|
||||||
|
|
||||||
def reviewed?
|
|
||||||
reviewed_at.present?
|
|
||||||
end
|
|
||||||
|
|
||||||
def requested_review?
|
|
||||||
requested_review_at.present?
|
|
||||||
end
|
|
||||||
|
|
||||||
def requires_review_notification?
|
|
||||||
requires_review? && !requested_review?
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.matching_domain(domain)
|
def self.matching_domain(domain)
|
||||||
segments = domain.split('.')
|
segments = domain.split('.')
|
||||||
where(domain: segments.map.with_index { |_, i| segments[i..].join('.') }).by_domain_length.first
|
where(domain: segments.map.with_index { |_, i| segments[i..].join('.') }).by_domain_length.first
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
|
|
||||||
class Tag < ApplicationRecord
|
class Tag < ApplicationRecord
|
||||||
include Paginable
|
include Paginable
|
||||||
|
include Reviewable
|
||||||
|
|
||||||
# rubocop:disable Rails/HasAndBelongsToMany
|
# rubocop:disable Rails/HasAndBelongsToMany
|
||||||
has_and_belongs_to_many :statuses
|
has_and_belongs_to_many :statuses
|
||||||
has_and_belongs_to_many :accounts
|
has_and_belongs_to_many :accounts
|
||||||
|
@ -99,22 +101,6 @@ class Tag < ApplicationRecord
|
||||||
|
|
||||||
alias trendable? trendable
|
alias trendable? trendable
|
||||||
|
|
||||||
def requires_review?
|
|
||||||
reviewed_at.nil?
|
|
||||||
end
|
|
||||||
|
|
||||||
def reviewed?
|
|
||||||
reviewed_at.present?
|
|
||||||
end
|
|
||||||
|
|
||||||
def requested_review?
|
|
||||||
requested_review_at.present?
|
|
||||||
end
|
|
||||||
|
|
||||||
def requires_review_notification?
|
|
||||||
requires_review? && !requested_review?
|
|
||||||
end
|
|
||||||
|
|
||||||
def decaying?
|
def decaying?
|
||||||
max_score_at && max_score_at >= Trends.tags.options[:max_score_cooldown].ago && max_score_at < 1.day.ago
|
max_score_at && max_score_at >= Trends.tags.options[:max_score_cooldown].ago && max_score_at < 1.day.ago
|
||||||
end
|
end
|
||||||
|
|
|
@ -269,10 +269,6 @@ class User < ApplicationRecord
|
||||||
unconfirmed? || pending?
|
unconfirmed? || pending?
|
||||||
end
|
end
|
||||||
|
|
||||||
def inactive_message
|
|
||||||
approved? ? super : :pending
|
|
||||||
end
|
|
||||||
|
|
||||||
def approve!
|
def approve!
|
||||||
return if approved?
|
return if approved?
|
||||||
|
|
||||||
|
|
|
@ -48,22 +48,19 @@ class REST::NotificationGroupSerializer < ActiveModel::Serializer
|
||||||
end
|
end
|
||||||
|
|
||||||
def page_min_id
|
def page_min_id
|
||||||
range = instance_options[:group_metadata][object.group_key]
|
object.pagination_data[:min_id].to_s
|
||||||
range.present? ? range[:min_id].to_s : object.notification.id.to_s
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def page_max_id
|
def page_max_id
|
||||||
range = instance_options[:group_metadata][object.group_key]
|
object.most_recent_notification_id.to_s
|
||||||
range.present? ? range[:max_id].to_s : object.notification.id.to_s
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def latest_page_notification_at
|
def latest_page_notification_at
|
||||||
range = instance_options[:group_metadata][object.group_key]
|
object.pagination_data[:latest_notification_at]
|
||||||
range.present? ? range[:latest_notification_at] : object.notification.created_at
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def paginated?
|
def paginated?
|
||||||
!instance_options[:group_metadata].nil?
|
object.pagination_data.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
class NotificationEmojiReactionGroupSerializer < ActiveModel::Serializer
|
class NotificationEmojiReactionGroupSerializer < ActiveModel::Serializer
|
||||||
|
|
|
@ -289,6 +289,9 @@ class PostStatusService < BaseService
|
||||||
|
|
||||||
@media = @account.media_attachments.where(status_id: nil).where(id: @options[:media_ids].take(media_max).map(&:to_i))
|
@media = @account.media_attachments.where(status_id: nil).where(id: @options[:media_ids].take(media_max).map(&:to_i))
|
||||||
|
|
||||||
|
not_found_ids = @options[:media_ids].map(&:to_i) - @media.map(&:id)
|
||||||
|
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.not_found', ids: not_found_ids.join(', ')) if not_found_ids.any?
|
||||||
|
|
||||||
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.images_and_video') if @media.size > 1 && @media.find(&:audio_or_video?)
|
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.images_and_video') if @media.size > 1 && @media.find(&:audio_or_video?)
|
||||||
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.not_ready') if @media.any?(&:not_processed?)
|
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.not_ready') if @media.any?(&:not_processed?)
|
||||||
end
|
end
|
||||||
|
|
|
@ -158,6 +158,9 @@ class UpdateStatusService < BaseService
|
||||||
|
|
||||||
media_attachments = @status.account.media_attachments.where(status_id: [nil, @status.id]).where(scheduled_status_id: nil).where(id: @options[:media_ids].take(media_max).map(&:to_i)).to_a
|
media_attachments = @status.account.media_attachments.where(status_id: [nil, @status.id]).where(scheduled_status_id: nil).where(id: @options[:media_ids].take(media_max).map(&:to_i)).to_a
|
||||||
|
|
||||||
|
not_found_ids = @options[:media_ids].map(&:to_i) - media_attachments.map(&:id)
|
||||||
|
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.not_found', ids: not_found_ids.join(', ')) if not_found_ids.any?
|
||||||
|
|
||||||
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.images_and_video') if media_attachments.size > 1 && media_attachments.find(&:audio_or_video?)
|
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.images_and_video') if media_attachments.size > 1 && media_attachments.find(&:audio_or_video?)
|
||||||
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.not_ready') if media_attachments.any?(&:not_processed?)
|
raise Mastodon::ValidationError, I18n.t('media_attachments.validations.not_ready') if media_attachments.any?(&:not_processed?)
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.announcements-list__item
|
.announcements-list__item{ id: dom_id(announcement) }
|
||||||
= link_to edit_admin_announcement_path(announcement), class: 'announcements-list__item__title' do
|
= link_to edit_admin_announcement_path(announcement), class: 'announcements-list__item__title' do
|
||||||
= truncate(announcement.text)
|
= truncate(announcement.text)
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
%tr
|
%tr{ id: dom_id(invite) }
|
||||||
%td
|
%td
|
||||||
.input-copy
|
.input-copy
|
||||||
.input-copy__wrapper
|
.input-copy__wrapper
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
.applications-list
|
.applications-list
|
||||||
- @applications.each do |application|
|
- @applications.each do |application|
|
||||||
.applications-list__item
|
.applications-list__item{ id: dom_id(application) }
|
||||||
- if application.website.present?
|
- if application.website.present?
|
||||||
= link_to application.name, application.website, target: '_blank', rel: 'noopener noreferrer', class: 'announcements-list__item__title'
|
= link_to application.name, application.website, target: '_blank', rel: 'noopener noreferrer', class: 'announcements-list__item__title'
|
||||||
- else
|
- else
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
= f.input :mode,
|
= f.input :mode,
|
||||||
as: :radio_buttons,
|
as: :radio_buttons,
|
||||||
collection_wrapper_tag: 'ul',
|
collection_wrapper_tag: 'ul',
|
||||||
collection: Import::MODES,
|
collection: Form::Import::MODES,
|
||||||
item_wrapper_tag: 'li',
|
item_wrapper_tag: 'li',
|
||||||
label_method: ->(mode) { safe_join([I18n.t("imports.modes.#{mode}"), content_tag(:span, I18n.t("imports.modes.#{mode}_long"), class: 'hint')]) }
|
label_method: ->(mode) { safe_join([I18n.t("imports.modes.#{mode}"), content_tag(:span, I18n.t("imports.modes.#{mode}_long"), class: 'hint')]) }
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
%th= t('imports.failures')
|
%th= t('imports.failures')
|
||||||
%tbody
|
%tbody
|
||||||
- @recent_imports.each do |import|
|
- @recent_imports.each do |import|
|
||||||
%tr
|
%tr{ id: dom_id(import) }
|
||||||
%td= t("imports.types.#{import.type}")
|
%td= t("imports.types.#{import.type}")
|
||||||
%td
|
%td
|
||||||
- if import.state_unconfirmed?
|
- if import.state_unconfirmed?
|
||||||
|
|
|
@ -101,7 +101,8 @@ module Mastodon
|
||||||
end
|
end
|
||||||
|
|
||||||
config.before_configuration do
|
config.before_configuration do
|
||||||
require 'mastodon/redis_config'
|
require 'mastodon/redis_configuration'
|
||||||
|
::REDIS_CONFIGURATION = Mastodon::RedisConfiguration.new
|
||||||
|
|
||||||
config.x.use_vips = ENV['MASTODON_USE_LIBVIPS'] == 'true'
|
config.x.use_vips = ENV['MASTODON_USE_LIBVIPS'] == 'true'
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ Rails.application.configure do
|
||||||
config.action_controller.perform_caching = true
|
config.action_controller.perform_caching = true
|
||||||
config.action_controller.enable_fragment_cache_logging = true
|
config.action_controller.enable_fragment_cache_logging = true
|
||||||
|
|
||||||
config.cache_store = :redis_cache_store, REDIS_CACHE_PARAMS
|
config.cache_store = :redis_cache_store, REDIS_CONFIGURATION.cache
|
||||||
config.public_file_server.headers = {
|
config.public_file_server.headers = {
|
||||||
'Cache-Control' => "public, max-age=#{2.days.to_i}",
|
'Cache-Control' => "public, max-age=#{2.days.to_i}",
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,7 +57,7 @@ Rails.application.configure do
|
||||||
config.log_tags = [:request_id]
|
config.log_tags = [:request_id]
|
||||||
|
|
||||||
# Use a different cache store in production.
|
# Use a different cache store in production.
|
||||||
config.cache_store = :redis_cache_store, REDIS_CACHE_PARAMS
|
config.cache_store = :redis_cache_store, REDIS_CONFIGURATION.cache
|
||||||
|
|
||||||
# Use a real queuing backend for Active Job (and separate queues per environment).
|
# Use a real queuing backend for Active Job (and separate queues per environment).
|
||||||
# config.active_job.queue_adapter = :resque
|
# config.active_job.queue_adapter = :resque
|
||||||
|
|
|
@ -22,6 +22,7 @@ Rails.application.config.middleware.insert_before 0, Rack::Cors do
|
||||||
expose: %w(Link X-RateLimit-Reset X-RateLimit-Limit X-RateLimit-Remaining X-Request-Id),
|
expose: %w(Link X-RateLimit-Reset X-RateLimit-Limit X-RateLimit-Remaining X-Request-Id),
|
||||||
methods: %i(post put delete get patch options)
|
methods: %i(post put delete get patch options)
|
||||||
resource '/oauth/token', methods: [:post]
|
resource '/oauth/token', methods: [:post]
|
||||||
|
resource '/oauth/revoke', methods: [:post]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -160,9 +160,10 @@ elsif ENV['AZURE_ENABLED'] == 'true'
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
Rails.configuration.x.file_storage_root_path = ENV.fetch('PAPERCLIP_ROOT_PATH', File.join(':rails_root', 'public', 'system'))
|
||||||
Paperclip::Attachment.default_options.merge!(
|
Paperclip::Attachment.default_options.merge!(
|
||||||
storage: :filesystem,
|
storage: :filesystem,
|
||||||
path: File.join(ENV.fetch('PAPERCLIP_ROOT_PATH', File.join(':rails_root', 'public', 'system')), ':prefix_path:class', ':attachment', ':id_partition', ':style', ':filename'),
|
path: File.join(Rails.configuration.x.file_storage_root_path, ':prefix_path:class', ':attachment', ':id_partition', ':style', ':filename'),
|
||||||
url: ENV.fetch('PAPERCLIP_ROOT_URL', '/system') + "/#{PATH}"
|
url: ENV.fetch('PAPERCLIP_ROOT_URL', '/system') + "/#{PATH}"
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
require_relative '../../lib/mastodon/sidekiq_middleware'
|
require_relative '../../lib/mastodon/sidekiq_middleware'
|
||||||
|
|
||||||
Sidekiq.configure_server do |config|
|
Sidekiq.configure_server do |config|
|
||||||
config.redis = REDIS_SIDEKIQ_PARAMS
|
config.redis = REDIS_CONFIGURATION.sidekiq
|
||||||
|
|
||||||
# This is used in Kubernetes setups, to signal that the Sidekiq process has started and will begin processing jobs
|
# This is used in Kubernetes setups, to signal that the Sidekiq process has started and will begin processing jobs
|
||||||
# This comes from https://github.com/sidekiq/sidekiq/wiki/Kubernetes#sidekiq
|
# This comes from https://github.com/sidekiq/sidekiq/wiki/Kubernetes#sidekiq
|
||||||
|
@ -51,7 +51,7 @@ Sidekiq.configure_server do |config|
|
||||||
end
|
end
|
||||||
|
|
||||||
Sidekiq.configure_client do |config|
|
Sidekiq.configure_client do |config|
|
||||||
config.redis = REDIS_SIDEKIQ_PARAMS
|
config.redis = REDIS_CONFIGURATION.sidekiq
|
||||||
|
|
||||||
config.client_middleware do |chain|
|
config.client_middleware do |chain|
|
||||||
chain.add SidekiqUniqueJobs::Middleware::Client
|
chain.add SidekiqUniqueJobs::Middleware::Client
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
require 'stoplight'
|
require 'stoplight'
|
||||||
|
|
||||||
Rails.application.reloader.to_prepare do
|
Rails.application.reloader.to_prepare do
|
||||||
Stoplight.default_data_store = Stoplight::DataStore::Redis.new(RedisConfiguration.new.connection)
|
Stoplight.default_data_store = Stoplight::DataStore::Redis.new(RedisConnection.new.connection)
|
||||||
Stoplight.default_notifiers = [Stoplight::Notifier::Logger.new(Rails.logger)]
|
Stoplight.default_notifiers = [Stoplight::Notifier::Logger.new(Rails.logger)]
|
||||||
end
|
end
|
||||||
|
|
|
@ -32,7 +32,7 @@ pt-BR:
|
||||||
import:
|
import:
|
||||||
attributes:
|
attributes:
|
||||||
data:
|
data:
|
||||||
malformed: está incorreto
|
malformed: está malformado
|
||||||
status:
|
status:
|
||||||
attributes:
|
attributes:
|
||||||
reblog:
|
reblog:
|
||||||
|
@ -43,16 +43,16 @@ pt-BR:
|
||||||
blocked: usa provedor de e-mail não permitido
|
blocked: usa provedor de e-mail não permitido
|
||||||
unreachable: parece não existir
|
unreachable: parece não existir
|
||||||
role_id:
|
role_id:
|
||||||
elevated: não pode ser maior que seu cargo atual
|
elevated: não pode maior que sua função atual
|
||||||
user_role:
|
user_role:
|
||||||
attributes:
|
attributes:
|
||||||
permissions_as_keys:
|
permissions_as_keys:
|
||||||
dangerous: incluir permissões que não são seguras para o cargo base
|
dangerous: incluir permissões que não são seguras para a função base
|
||||||
elevated: não pode incluir permissões que o seu cargo atual não possui
|
elevated: não pode incluir permissões que a sua função atual não possui
|
||||||
own_role: não pode ser alterado com seu cargo atual
|
own_role: não pode ser alterado com sua função atual
|
||||||
position:
|
position:
|
||||||
elevated: não pode ser maior do que seu cargo atual
|
elevated: não pode ser maior do que sua função atual
|
||||||
own_role: não pode ser alterado com seu cargo atual
|
own_role: não pode ser alterado com sua função atual
|
||||||
webhook:
|
webhook:
|
||||||
attributes:
|
attributes:
|
||||||
events:
|
events:
|
||||||
|
|
|
@ -6,7 +6,7 @@ pt-PT:
|
||||||
expires_at: Prazo
|
expires_at: Prazo
|
||||||
options: Escolhas
|
options: Escolhas
|
||||||
user:
|
user:
|
||||||
agreement: Acordo de serviço
|
agreement: Contrato de prestação de serviço
|
||||||
email: Endereço de correio electrónico
|
email: Endereço de correio electrónico
|
||||||
locale: Região
|
locale: Região
|
||||||
password: Palavra-passe
|
password: Palavra-passe
|
||||||
|
@ -19,7 +19,7 @@ pt-PT:
|
||||||
account:
|
account:
|
||||||
attributes:
|
attributes:
|
||||||
username:
|
username:
|
||||||
invalid: apenas letras, números e underscores
|
invalid: deve conter apenas letras, números e traços inferiores
|
||||||
reserved: está reservado
|
reserved: está reservado
|
||||||
admin/webhook:
|
admin/webhook:
|
||||||
attributes:
|
attributes:
|
||||||
|
@ -43,15 +43,15 @@ pt-PT:
|
||||||
blocked: usa um fornecedor de e-mail que não é permitido
|
blocked: usa um fornecedor de e-mail que não é permitido
|
||||||
unreachable: não parece existir
|
unreachable: não parece existir
|
||||||
role_id:
|
role_id:
|
||||||
elevated: não pode ser maior que o da sua função atual
|
elevated: não pode ser superior à sua função atual
|
||||||
user_role:
|
user_role:
|
||||||
attributes:
|
attributes:
|
||||||
permissions_as_keys:
|
permissions_as_keys:
|
||||||
dangerous: incluir permissões que não são seguras para a função base
|
dangerous: incluir permissões que não são seguras para a função base
|
||||||
elevated: não pode incluir permissões que a sua função atual não possui
|
elevated: não pode incluir permissões que a sua função atual não possua
|
||||||
own_role: não pode ser alterado com a sua função atual
|
own_role: não pode ser alterado com a sua função atual
|
||||||
position:
|
position:
|
||||||
elevated: não pode ser maior que o da sua função atual
|
elevated: não pode ser superior à sua função atual
|
||||||
own_role: não pode ser alterado com a sua função atual
|
own_role: não pode ser alterado com a sua função atual
|
||||||
webhook:
|
webhook:
|
||||||
attributes:
|
attributes:
|
||||||
|
|
|
@ -906,6 +906,7 @@ ar:
|
||||||
moderation:
|
moderation:
|
||||||
title: الحالة
|
title: الحالة
|
||||||
newest: الأحدث
|
newest: الأحدث
|
||||||
|
reset: إعادة التعيين
|
||||||
review: حالة المراجعة
|
review: حالة المراجعة
|
||||||
search: البحث
|
search: البحث
|
||||||
title: الوسوم
|
title: الوسوم
|
||||||
|
@ -985,6 +986,7 @@ ar:
|
||||||
other: مستخدَم من قِبل %{count} شخص خلال الأسبوع الماضي
|
other: مستخدَم من قِبل %{count} شخص خلال الأسبوع الماضي
|
||||||
two: مستخدَم من قِبل %{count} شخصين خلال الأسبوع الماضي
|
two: مستخدَم من قِبل %{count} شخصين خلال الأسبوع الماضي
|
||||||
zero: مستخدَم من قِبل %{count} شخص خلال الأسبوع الماضي
|
zero: مستخدَم من قِبل %{count} شخص خلال الأسبوع الماضي
|
||||||
|
title: التوصيات والرائجة
|
||||||
trending: المتداولة
|
trending: المتداولة
|
||||||
warning_presets:
|
warning_presets:
|
||||||
add_new: إضافة واحد جديد
|
add_new: إضافة واحد جديد
|
||||||
|
@ -1141,8 +1143,10 @@ ar:
|
||||||
security: الأمان
|
security: الأمان
|
||||||
set_new_password: إدخال كلمة مرور جديدة
|
set_new_password: إدخال كلمة مرور جديدة
|
||||||
setup:
|
setup:
|
||||||
|
email_below_hint_html: قم بفحص مجلد البريد المزعج الخاص بك، أو قم بطلب آخر. يمكنك تصحيح عنوان بريدك الإلكتروني إن كان خاطئا.
|
||||||
email_settings_hint_html: انقر على الرابط الذي أرسلناه لك للتحقق من %{email}. سننتظر هنا.
|
email_settings_hint_html: انقر على الرابط الذي أرسلناه لك للتحقق من %{email}. سننتظر هنا.
|
||||||
link_not_received: ألم تحصل على رابط؟
|
link_not_received: ألم تحصل على رابط؟
|
||||||
|
new_confirmation_instructions_sent: سوف تتلقى رسالة بريد إلكتروني جديدة مع رابط التأكيد في غضون بضع دقائق!
|
||||||
title: تحقَّق من بريدك الوارِد
|
title: تحقَّق من بريدك الوارِد
|
||||||
sign_in:
|
sign_in:
|
||||||
preamble_html: قم بتسجيل الدخول باستخدام بيانات الاعتماد الخاصة بك على <strong>%{domain}</strong>. إن استُضيف حسابك على خادم مختلف عن هذا الخادم، لن تتمكن من الولوج هنا.
|
preamble_html: قم بتسجيل الدخول باستخدام بيانات الاعتماد الخاصة بك على <strong>%{domain}</strong>. إن استُضيف حسابك على خادم مختلف عن هذا الخادم، لن تتمكن من الولوج هنا.
|
||||||
|
@ -1153,7 +1157,9 @@ ar:
|
||||||
title: دعنا نجهّز %{domain}.
|
title: دعنا نجهّز %{domain}.
|
||||||
status:
|
status:
|
||||||
account_status: حالة الحساب
|
account_status: حالة الحساب
|
||||||
|
confirming: في انتظار اكتمال تأكيد البريد الإلكتروني.
|
||||||
functional: حسابك يعمل بشكل كامل.
|
functional: حسابك يعمل بشكل كامل.
|
||||||
|
pending: إن طلبك قيد المراجعة من قبل فريقنا. قد يستغرق هذا بعض الوقت. سوف تتلقى بريدا إلكترونيا إذا تمت الموافقة على طلبك.
|
||||||
redirecting_to: حسابك غير نشط لأنه تم تحويله حاليا إلى %{acct}.
|
redirecting_to: حسابك غير نشط لأنه تم تحويله حاليا إلى %{acct}.
|
||||||
self_destruct: نظرًا لإغلاق %{domain}، ستحصل فقط على وصول محدود إلى حسابك.
|
self_destruct: نظرًا لإغلاق %{domain}، ستحصل فقط على وصول محدود إلى حسابك.
|
||||||
view_strikes: عرض العقوبات السابقة المُطَبَّقة ضد حسابك
|
view_strikes: عرض العقوبات السابقة المُطَبَّقة ضد حسابك
|
||||||
|
@ -1196,6 +1202,9 @@ ar:
|
||||||
before: 'يرجى قراءة هذه الملاحظات بتأنّي قبل المواصلة:'
|
before: 'يرجى قراءة هذه الملاحظات بتأنّي قبل المواصلة:'
|
||||||
caches: قد يبقى المحتوى الذي تم تخزينه مؤقتًا مِن طرف الخوادم الأخرى
|
caches: قد يبقى المحتوى الذي تم تخزينه مؤقتًا مِن طرف الخوادم الأخرى
|
||||||
data_removal: سوف تُحذَف منشوراتك والبيانات الأخرى نهائيا
|
data_removal: سوف تُحذَف منشوراتك والبيانات الأخرى نهائيا
|
||||||
|
email_change_html: بإمكانك <a href="%{path}">تغيير عنوان بريدك الإلكتروني</a> دون أن يُحذف حسابك
|
||||||
|
email_contact_html: إن لم تتلقّ أي شيء ، يمكنك مراسلة <a href="mailto:%{email}">%{email}</a> لطلب المساعدة
|
||||||
|
email_reconfirmation_html: إن لم تتلقّ الرسالة الإلكترونية للتأكيد ، بإمكانك <a href="%{path}">إعادة طلبها ثانيةً</a>
|
||||||
irreversible: لن يكون بإمكانك استرجاع أو إعادة تنشيط حسابك
|
irreversible: لن يكون بإمكانك استرجاع أو إعادة تنشيط حسابك
|
||||||
more_details_html: للمزيد مِن التفاصيل ، يرجى الإطلاع على <a href="%{terms_path}">سياسة الخصوصية</a>.
|
more_details_html: للمزيد مِن التفاصيل ، يرجى الإطلاع على <a href="%{terms_path}">سياسة الخصوصية</a>.
|
||||||
username_available: سيصبح اسم مستخدمك متوفرا ثانية
|
username_available: سيصبح اسم مستخدمك متوفرا ثانية
|
||||||
|
@ -1448,7 +1457,7 @@ ar:
|
||||||
two: "%{count} استخدامات"
|
two: "%{count} استخدامات"
|
||||||
zero: "%{count} استخدامات"
|
zero: "%{count} استخدامات"
|
||||||
max_uses_prompt: بلا حدود
|
max_uses_prompt: بلا حدود
|
||||||
prompt: توليد و مشاركة روابط للسماح للآخَرين بالنفاذ إلى مثيل الخادم هذا
|
prompt: توليد و مشاركة روابط للسماح للآخَرين النفاذ إلى هذا الخادم
|
||||||
table:
|
table:
|
||||||
expires_at: تنتهي مدة صلاحيتها في
|
expires_at: تنتهي مدة صلاحيتها في
|
||||||
uses: عدد الاستخدامات
|
uses: عدد الاستخدامات
|
||||||
|
@ -1460,6 +1469,7 @@ ar:
|
||||||
authentication_methods:
|
authentication_methods:
|
||||||
otp: تطبيق المصادقة الثنائية
|
otp: تطبيق المصادقة الثنائية
|
||||||
password: كلمة المرور
|
password: كلمة المرور
|
||||||
|
sign_in_token: رمز الأمان للبريد الإلكتروني
|
||||||
webauthn: مفاتيح الأمان
|
webauthn: مفاتيح الأمان
|
||||||
description_html: إذا رأيت النشاط الذي لا تتعرف عليه، فكر في تغيير كلمة المرور الخاصة بك وتفعيل المصادقة ذات العاملين.
|
description_html: إذا رأيت النشاط الذي لا تتعرف عليه، فكر في تغيير كلمة المرور الخاصة بك وتفعيل المصادقة ذات العاملين.
|
||||||
empty: لا يوجد سجل مصادقة متاح
|
empty: لا يوجد سجل مصادقة متاح
|
||||||
|
@ -1553,6 +1563,7 @@ ar:
|
||||||
update:
|
update:
|
||||||
subject: قام %{name} بتحرير منشور
|
subject: قام %{name} بتحرير منشور
|
||||||
notifications:
|
notifications:
|
||||||
|
administration_emails: إشعارات البريد الإلكتروني الإدارية
|
||||||
email_events_hint: 'اختر الأحداث التي تريد أن تصِلَك اشعارات عنها:'
|
email_events_hint: 'اختر الأحداث التي تريد أن تصِلَك اشعارات عنها:'
|
||||||
number:
|
number:
|
||||||
human:
|
human:
|
||||||
|
@ -1811,13 +1822,13 @@ ar:
|
||||||
keep_media: الاحتفاظ بالمنشورات ذات وسائط مرفقة
|
keep_media: الاحتفاظ بالمنشورات ذات وسائط مرفقة
|
||||||
keep_media_hint: لن تُحذف أي من منشوراتك التي تحتوي على وسائط مرفقة
|
keep_media_hint: لن تُحذف أي من منشوراتك التي تحتوي على وسائط مرفقة
|
||||||
keep_pinned: الاحتفاظ بالمنشورات المثبتة
|
keep_pinned: الاحتفاظ بالمنشورات المثبتة
|
||||||
keep_pinned_hint: لم تقوم بحذف أي من مشاركتك المثبتة
|
keep_pinned_hint: لن تحذف أي من منشوراتك المثبتة
|
||||||
keep_polls: الاحتفاظ باستطلاعات الرأي
|
keep_polls: الاحتفاظ باستطلاعات الرأي
|
||||||
keep_polls_hint: لم تقم بحذف أي من استطلاعاتك
|
keep_polls_hint: لم تقم بحذف أي من استطلاعاتك
|
||||||
keep_self_bookmark: احتفظ بالمنشورات التي أدرجتها في الفواصل المرجعية
|
keep_self_bookmark: احتفظ بالمنشورات التي أدرجتها في الفواصل المرجعية
|
||||||
keep_self_bookmark_hint: لم تقم بحذف مشاركاتك الخاصة إذا قمت بوضع علامة مرجعية عليها
|
keep_self_bookmark_hint: لن تحذف منشوراتك الخاصة إذا قمت بوضع علامة مرجعية عليها
|
||||||
keep_self_fav: احتفظ بالمنشورات التي أدرجتها في المفضلة
|
keep_self_fav: احتفظ بالمنشورات التي أدرجتها في المفضلة
|
||||||
keep_self_fav_hint: لم تقم بحذف مشاركاتك الخاصة إذا كنت قد فضلتهم
|
keep_self_fav_hint: لن تحذف منشوراتك الخاصة إذا كنت قد فضلتها
|
||||||
min_age:
|
min_age:
|
||||||
'1209600': أسبوعان
|
'1209600': أسبوعان
|
||||||
'15778476': 6 أشهر
|
'15778476': 6 أشهر
|
||||||
|
@ -1828,9 +1839,9 @@ ar:
|
||||||
'63113904': سنتان
|
'63113904': سنتان
|
||||||
'7889238': 3 أشهر
|
'7889238': 3 أشهر
|
||||||
min_age_label: عتبة العمر
|
min_age_label: عتبة العمر
|
||||||
min_favs: إبقاء المشاركات المفضلة أكثر من
|
min_favs: إبقاء المنشورات المفضلة على الأقل
|
||||||
min_favs_hint: لن تُحذف أي من منشوراتك التي تلقّت على الأقل هذا العدد من المفضلات. اتركه فارغاً لحذف المنشورات مهما كان عدد المفضلات التي تلقتها
|
min_favs_hint: لن تُحذف أي من منشوراتك التي تلقّت على الأقل هذا العدد من المفضلات. اتركه فارغاً لحذف المنشورات مهما كان عدد المفضلات التي تلقتها
|
||||||
min_reblogs: إبقاء المنشورات المعاد نشرها أكثر من
|
min_reblogs: إبقاء المنشورات المعاد نشرها على الأقل
|
||||||
min_reblogs_hint: لن تُحذف أي من منشوراتك التي أعيد مشاركتها أكثر من هذا العدد من المرات. اتركه فارغاً لحذف المنشورات بغض النظر عن عدد إعادات النشر
|
min_reblogs_hint: لن تُحذف أي من منشوراتك التي أعيد مشاركتها أكثر من هذا العدد من المرات. اتركه فارغاً لحذف المنشورات بغض النظر عن عدد إعادات النشر
|
||||||
stream_entries:
|
stream_entries:
|
||||||
sensitive_content: محتوى حساس
|
sensitive_content: محتوى حساس
|
||||||
|
|
|
@ -1412,6 +1412,7 @@ ca:
|
||||||
media_attachments:
|
media_attachments:
|
||||||
validations:
|
validations:
|
||||||
images_and_video: No es pot adjuntar un vídeo a una publicació que ja contingui imatges
|
images_and_video: No es pot adjuntar un vídeo a una publicació que ja contingui imatges
|
||||||
|
not_found: No s'ha trobat el contingut multimèdia %{ids} o ja s'ha adjuntat a una altra publicació
|
||||||
not_ready: No es poden adjuntar fitxers que no s'hagin acabat de processar. Torna-ho a provar en un moment!
|
not_ready: No es poden adjuntar fitxers que no s'hagin acabat de processar. Torna-ho a provar en un moment!
|
||||||
too_many: No es poden adjuntar més de 4 fitxers
|
too_many: No es poden adjuntar més de 4 fitxers
|
||||||
migrations:
|
migrations:
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue