Merge commit '8099ba04be' into kb_migration

This commit is contained in:
KMY 2023-04-25 17:08:32 +09:00
commit 70ea37a4cc
302 changed files with 4018 additions and 2611 deletions

View file

@ -27,6 +27,7 @@ module.exports = {
'import',
'promise',
'@typescript-eslint',
'formatjs',
],
parserOptions: {
@ -218,6 +219,25 @@ module.exports = {
'promise/no-callback-in-promise': 'off',
'promise/no-nesting': 'off',
'promise/no-promise-in-callback': 'off',
'formatjs/blocklist-elements': 'error',
'formatjs/enforce-default-message': ['error', 'literal'],
'formatjs/enforce-description': 'off', // description values not currently used
'formatjs/enforce-id': 'off', // Explicit IDs are used in the project
'formatjs/enforce-placeholders': 'off', // Issues in short_number.jsx
'formatjs/enforce-plural-rules': 'error',
'formatjs/no-camel-case': 'off', // disabledAccount is only non-conforming
'formatjs/no-complex-selectors': 'error',
'formatjs/no-emoji': 'error',
'formatjs/no-id': 'off', // IDs are used for translation keys
'formatjs/no-invalid-icu': 'error',
'formatjs/no-literal-string-in-jsx': 'off', // Should be looked at, but mainly flagging punctuation outside of strings
'formatjs/no-multiple-plurals': 'off', // Only used by hashtag.jsx
'formatjs/no-multiple-whitespaces': 'error',
'formatjs/no-offset': 'error',
'formatjs/no-useless-message': 'error',
'formatjs/prefer-formatted-message': 'error',
'formatjs/prefer-pound-in-plural': 'error',
},
overrides: [

View file

@ -1400,14 +1400,6 @@ Rails/HasManyOrHasOneDependent:
- 'app/models/user.rb'
- 'app/models/web/push_subscription.rb'
# Configuration parameters: Include.
# Include: app/helpers/**/*.rb
Rails/HelperInstanceVariable:
Exclude:
- 'app/helpers/application_helper.rb'
- 'app/helpers/instance_helper.rb'
- 'app/helpers/jsonld_helper.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: Include.
# Include: spec/**/*, test/**/*
@ -2268,12 +2260,6 @@ Style/NilLambda:
Exclude:
- 'config/initializers/paperclip.rb'
# This cop supports safe autocorrection (--autocorrect).
# Configuration parameters: MinDigits, Strict, AllowedNumbers, AllowedPatterns.
Style/NumericLiterals:
Exclude:
- 'config/initializers/strong_migrations.rb'
# Configuration parameters: AllowedMethods.
# AllowedMethods: respond_to_missing?
Style/OptionalBooleanParameter:

View file

@ -2,45 +2,131 @@
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
Examples of behavior that contributes to a positive environment for our
community include:
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior by participants include:
Examples of unacceptable behavior include:
- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- The use of sexualized language or imagery, and sexual attention or advances of
any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
- Publishing others' private information, such as a physical or email address,
without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
## Enforcement Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at eugen@zeonfederated.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[hello@joinmastodon.org](mailto:hello@joinmastodon.org).
All complaints will be reviewed and investigated promptly and fairly.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of
actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version]
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
[homepage]: https://contributor-covenant.org
[version]: https://contributor-covenant.org/version/1/4/
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations

View file

@ -30,7 +30,10 @@ gem 'browser'
gem 'charlock_holmes', '~> 0.7.7'
gem 'chewy', '~> 7.3'
gem 'devise', '~> 4.9'
gem 'devise-two-factor', '~> 4.0'
# The below `v4.x` branch allows attr_encrypted 4.x, which is required for Rails 7.
# Once a new gem version is pushed, we can go back to released gem and off of github branch.
gem 'devise-two-factor', github: 'tinfoil/devise-two-factor', branch: 'v4.x'
gem 'attr_encrypted', '~> 4.0'
group :pam_authentication, optional: true do
gem 'devise_pam_authenticatable2', '~> 9.2'
@ -76,7 +79,7 @@ gem 'redcarpet', '~> 3.6'
gem 'redis', '~> 4.5', require: ['redis', 'redis/connection/hiredis']
gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock'
gem 'rqrcode', '~> 2.1'
gem 'ruby-progressbar', '~> 1.11'
gem 'ruby-progressbar', '~> 1.13'
gem 'sanitize', '~> 6.0'
gem 'scenic', '~> 1.7'
gem 'sidekiq', '~> 6.5'

View file

@ -27,6 +27,18 @@ GIT
rails-settings-cached (0.6.6)
rails (>= 4.2.0)
GIT
remote: https://github.com/tinfoil/devise-two-factor.git
revision: e685f91ce62d036259885fbe31fcb4fa930bcfcb
branch: v4.x
specs:
devise-two-factor (4.0.2)
activesupport (< 7.1)
attr_encrypted (>= 1.3, < 5, != 2)
devise (~> 4.0)
railties (< 7.1)
rotp (~> 6.0)
GEM
remote: https://rubygems.org/
specs:
@ -104,12 +116,12 @@ GEM
activerecord (>= 3.2, < 8.0)
rake (>= 10.4, < 14.0)
ast (2.4.2)
attr_encrypted (3.1.0)
attr_encrypted (4.0.0)
encryptor (~> 3.0.0)
attr_required (1.0.1)
awrence (1.2.1)
aws-eventstream (1.2.0)
aws-partitions (1.743.0)
aws-partitions (1.752.0)
aws-sdk-core (3.171.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.651.0)
@ -118,7 +130,7 @@ GEM
aws-sdk-kms (1.63.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.120.1)
aws-sdk-s3 (1.121.0)
aws-sdk-core (~> 3, >= 3.165.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.4)
@ -142,7 +154,7 @@ GEM
blurhash (0.1.7)
bootsnap (1.16.0)
msgpack (~> 1.2)
brakeman (5.4.0)
brakeman (5.4.1)
browser (5.3.1)
brpoplpush-redis_script (0.1.3)
concurrent-ruby (~> 1.0, >= 1.0.5)
@ -156,7 +168,7 @@ GEM
i18n
rake (>= 10.0.0)
sshkit (>= 1.9.0)
capistrano-bundler (2.0.1)
capistrano-bundler (2.1.0)
capistrano (~> 3.1)
capistrano-rails (1.6.2)
capistrano (~> 3.1)
@ -189,29 +201,23 @@ GEM
coderay (1.1.3)
color_diff (0.1)
concurrent-ruby (1.2.2)
connection_pool (2.3.0)
connection_pool (2.4.0)
cose (1.3.0)
cbor (~> 0.5.9)
openssl-signature_algorithm (~> 1.0)
crack (0.4.5)
rexml
crass (1.0.6)
css_parser (1.12.0)
css_parser (1.14.0)
addressable
date (3.3.3)
debug_inspector (1.0.0)
debug_inspector (1.1.0)
devise (4.9.2)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
responders
warden (~> 1.2.3)
devise-two-factor (4.0.2)
activesupport (< 7.1)
attr_encrypted (>= 1.3, < 4, != 2)
devise (~> 4.0)
railties (< 7.1)
rotp (~> 6.0)
devise_pam_authenticatable2 (9.2.0)
devise (>= 4.0.0)
rpam2 (~> 4.0)
@ -241,7 +247,7 @@ GEM
erubi (1.12.0)
et-orbi (1.2.7)
tzinfo
excon (0.95.0)
excon (0.99.0)
fabrication (2.30.0)
faker (3.2.0)
i18n (>= 1.8.11, < 2)
@ -312,7 +318,7 @@ GEM
sysexits (~> 1.1)
hashdiff (1.0.1)
hashie (5.0.0)
highline (2.0.3)
highline (2.1.0)
hiredis (0.6.3)
hkdf (0.3.0)
htmlentities (4.3.4)
@ -378,8 +384,8 @@ GEM
activerecord
kaminari-core (= 1.2.2)
kaminari-core (1.2.2)
launchy (2.5.0)
addressable (~> 2.7)
launchy (2.5.2)
addressable (~> 2.8)
letter_opener (1.8.1)
launchy (>= 2.2, < 3)
letter_opener_web (2.0.0)
@ -414,11 +420,11 @@ GEM
method_source (1.0.0)
mime-types (3.4.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2022.0105)
mime-types-data (3.2023.0218.1)
mini_mime (1.1.2)
mini_portile2 (2.8.1)
minitest (5.18.0)
msgpack (1.6.0)
msgpack (1.7.0)
multi_json (1.15.0)
multipart-post (2.3.0)
net-http (0.3.2)
@ -435,7 +441,7 @@ GEM
net-ssh (>= 2.6.5, < 8.0.0)
net-smtp (0.3.3)
net-protocol
net-ssh (7.0.1)
net-ssh (7.1.0)
nio4r (2.5.9)
nokogiri (1.14.3)
mini_portile2 (~> 2.8.0)
@ -478,18 +484,18 @@ GEM
openssl (> 2.0)
orm_adapter (0.5.0)
ox (2.14.16)
parallel (1.22.1)
parser (3.2.2.0)
parallel (1.23.0)
parser (3.2.2.1)
ast (~> 2.4.1)
parslet (2.0.0)
pastel (0.8.0)
tty-color (~> 0.5)
pg (1.4.6)
pghero (3.3.2)
pghero (3.3.3)
activerecord (>= 6)
pkg-config (1.5.1)
posix-spawn (0.3.15)
premailer (1.18.0)
premailer (1.21.0)
addressable
css_parser (>= 1.12.0)
htmlentities (>= 4.0.0)
@ -499,7 +505,7 @@ GEM
premailer (~> 1.7, >= 1.7.9)
private_address_check (0.5.0)
public_suffix (5.0.1)
puma (6.2.1)
puma (6.2.2)
nio4r (~> 2.0)
pundit (2.3.0)
activesupport (>= 3.0.0)
@ -572,18 +578,18 @@ GEM
actionpack (>= 5.2)
railties (>= 5.2)
rexml (3.2.5)
rotp (6.2.0)
rotp (6.2.2)
rpam2 (4.0.2)
rqrcode (2.1.2)
chunky_png (~> 1.0)
rqrcode_core (~> 1.0)
rqrcode_core (1.2.0)
rspec-core (3.12.1)
rspec-core (3.12.2)
rspec-support (~> 3.12.0)
rspec-expectations (3.12.2)
rspec-expectations (3.12.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-mocks (3.12.3)
rspec-mocks (3.12.5)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-rails (6.0.1)
@ -613,7 +619,7 @@ GEM
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.28.0)
parser (>= 3.2.1.0)
rubocop-capybara (2.17.1)
rubocop-capybara (2.18.0)
rubocop (~> 1.41)
rubocop-performance (1.17.1)
rubocop (>= 1.7.0, < 2.0)
@ -769,6 +775,7 @@ DEPENDENCIES
active_model_serializers (~> 0.10)
addressable (~> 2.8)
annotate (~> 3.2)
attr_encrypted (~> 4.0)
aws-sdk-s3 (~> 1.120)
better_errors (~> 2.9)
binding_of_caller (~> 1.0)
@ -790,7 +797,7 @@ DEPENDENCIES
concurrent-ruby
connection_pool
devise (~> 4.9)
devise-two-factor (~> 4.0)
devise-two-factor!
devise_pam_authenticatable2 (~> 9.2)
discard (~> 1.2)
doorkeeper (~> 5.6)
@ -868,7 +875,7 @@ DEPENDENCIES
rubocop-performance
rubocop-rails
rubocop-rspec
ruby-progressbar (~> 1.11)
ruby-progressbar (~> 1.13)
sanitize (~> 6.0)
scenic (~> 1.7)
sidekiq (~> 6.5)

View file

@ -7,7 +7,7 @@ class AccountsController < ApplicationController
include AccountControllerConcern
include SignatureAuthentication
vary_by -> { public_fetch_mode? ? 'Accept' : 'Accept, Signature' }
vary_by -> { public_fetch_mode? ? 'Accept, Accept-Language, Cookie' : 'Accept, Accept-Language, Cookie, Signature' }
before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? }

View file

@ -12,7 +12,6 @@ class Api::BaseController < ApplicationController
before_action :require_authenticated_user!, if: :disallow_unauthenticated_api_access?
before_action :require_not_suspended!
before_action :set_cache_control_defaults
protect_from_forgery with: :null_session
@ -148,10 +147,6 @@ class Api::BaseController < ApplicationController
doorkeeper_authorize!(*scopes) if doorkeeper_token
end
def set_cache_control_defaults
response.cache_control.replace(private: true, no_store: true)
end
def disallow_unauthenticated_api_access?
ENV['DISALLOW_UNAUTHENTICATED_API_ACCESS'] == 'true' || Rails.configuration.x.whitelist_mode
end

View file

@ -19,6 +19,7 @@ class ApplicationController < ActionController::Base
helper_method :omniauth_only?
helper_method :sso_account_settings
helper_method :whitelist_mode?
helper_method :body_class_string
rescue_from ActionController::ParameterMissing, Paperclip::AdapterRegistry::NoHandlerError, with: :bad_request
rescue_from Mastodon::NotPermittedError, with: :forbidden
@ -38,6 +39,8 @@ class ApplicationController < ActionController::Base
before_action :store_current_location, except: :raise_not_found, unless: :devise_controller?
before_action :require_functional!, if: :user_signed_in?
before_action :set_cache_control_defaults
skip_before_action :verify_authenticity_token, only: :raise_not_found
def raise_not_found
@ -125,7 +128,7 @@ class ApplicationController < ActionController::Base
end
def sso_account_settings
ENV.fetch('SSO_ACCOUNT_SETTINGS')
ENV.fetch('SSO_ACCOUNT_SETTINGS', nil)
end
def current_account
@ -146,10 +149,18 @@ class ApplicationController < ActionController::Base
current_user.setting_theme
end
def body_class_string
@body_classes || ''
end
def respond_with_error(code)
respond_to do |format|
format.any { render "errors/#{code}", layout: 'error', status: code, formats: [:html] }
format.json { render json: { error: Rack::Utils::HTTP_STATUS_CODES[code] }, status: code }
end
end
def set_cache_control_defaults
response.cache_control.replace(private: true, no_store: true)
end
end

View file

@ -163,6 +163,20 @@ module CacheConcern
end
end
included do
after_action :enforce_cache_control!
end
# Prevents high-entropy headers such as `Cookie`, `Signature` or `Authorization`
# from being used as cache keys, while allowing to `Vary` on them (to not serve
# anonymous cached data to authenticated requests when authentication matters)
def enforce_cache_control!
vary = response.headers['Vary']&.split&.map { |x| x.strip.downcase }
return unless vary.present? && %w(cookie authorization signature).any? { |header| vary.include?(header) && request.headers[header].present? }
response.cache_control.replace(private: true, no_store: true)
end
def render_with_cache(**options)
raise ArgumentError, 'Only JSON render calls are supported' unless options.key?(:json) || block_given?

View file

@ -6,6 +6,8 @@ module WebAppControllerConcern
included do
prepend_before_action :redirect_unauthenticated_to_permalinks!
before_action :set_app_body_class
vary_by 'Accept, Accept-Language, Cookie'
end
def set_app_body_class

View file

@ -5,7 +5,7 @@ class FollowerAccountsController < ApplicationController
include SignatureVerification
include WebAppControllerConcern
vary_by -> { public_fetch_mode? ? 'Accept' : 'Accept, Signature' }
vary_by -> { public_fetch_mode? ? 'Accept, Accept-Language, Cookie' : 'Accept, Accept-Language, Cookie, Signature' }
before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? }

View file

@ -5,7 +5,7 @@ class FollowingAccountsController < ApplicationController
include SignatureVerification
include WebAppControllerConcern
vary_by -> { public_fetch_mode? ? 'Accept' : 'Accept, Signature' }
vary_by -> { public_fetch_mode? ? 'Accept, Accept-Language, Cookie' : 'Accept, Accept-Language, Cookie, Signature' }
before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? }

View file

@ -6,7 +6,7 @@ class StatusesController < ApplicationController
include Authorization
include AccountOwnedConcern
vary_by -> { public_fetch_mode? ? 'Accept' : 'Accept, Signature' }
vary_by -> { public_fetch_mode? ? 'Accept, Accept-Language, Cookie' : 'Accept, Accept-Language, Cookie, Signature' }
before_action :require_account_signature!, only: [:show, :activity], if: -> { request.format == :json && authorized_fetch_mode? }
before_action :set_status
@ -30,7 +30,7 @@ class StatusesController < ApplicationController
end
format.json do
expires_in 3.minutes, public: @status.distributable? && public_fetch_mode?
expires_in 3.minutes, public: true if @status.distributable? && public_fetch_mode?
render_with_cache json: @status, content_type: 'application/activity+json', serializer: ActivityPub::NoteSerializer, adapter: ActivityPub::Adapter
end
end

View file

@ -7,7 +7,7 @@ class TagsController < ApplicationController
PAGE_SIZE = 20
PAGE_SIZE_MAX = 200
vary_by -> { public_fetch_mode? ? 'Accept' : 'Accept, Signature' }
vary_by -> { public_fetch_mode? ? 'Accept, Accept-Language, Cookie' : 'Accept, Accept-Language, Cookie, Signature' }
before_action :require_account_signature!, if: -> { request.format == :json && authorized_fetch_mode? }
before_action :authenticate_user!, if: :whitelist_mode?

View file

@ -170,7 +170,7 @@ module ApplicationHelper
end
def body_classes
output = (@body_classes || '').split
output = body_class_string.split
output << "theme-#{current_theme.parameterize}"
output << 'system-font' if current_account&.user&.setting_system_font_ui
output << (current_account&.user&.setting_reduce_motion ? 'reduce-motion' : 'no-reduce-motion')

View file

@ -9,13 +9,17 @@ module InstanceHelper
@site_hostname ||= Addressable::URI.parse("//#{Rails.configuration.x.local_domain}").display_uri.host
end
def description_for_sign_up
prefix = if @invite.present?
I18n.t('auth.description.prefix_invited_by_user', name: @invite.user.account.username)
def description_for_sign_up(invite = nil)
safe_join([description_prefix(invite), I18n.t('auth.description.suffix')], ' ')
end
private
def description_prefix(invite)
if invite.present?
I18n.t('auth.description.prefix_invited_by_user', name: invite.user.account.username)
else
I18n.t('auth.description.prefix_sign_up')
end
safe_join([prefix, I18n.t('auth.description.suffix')], ' ')
end
end

View file

@ -63,11 +63,11 @@ module JsonLdHelper
uri.nil? || !uri.start_with?('http://', 'https://')
end
def invalid_origin?(url)
return true if unsupported_uri_scheme?(url)
def non_matching_uri_hosts?(base_url, comparison_url)
return true if unsupported_uri_scheme?(comparison_url)
needle = Addressable::URI.parse(url).host
haystack = Addressable::URI.parse(@account.uri).host
needle = Addressable::URI.parse(comparison_url).host
haystack = Addressable::URI.parse(base_url).host
!haystack.casecmp(needle).zero?
end

View file

@ -201,7 +201,6 @@ module LanguagesHelper
sma: ['Southern Sami', 'Åarjelsaemien Gïele'].freeze,
smj: ['Lule Sami', 'Julevsámegiella'].freeze,
szl: ['Silesian', 'ślůnsko godka'].freeze,
tai: ['Tai', 'ภาษาไท or ภาษาไต'].freeze,
tok: ['Toki Pona', 'toki pona'].freeze,
zba: ['Balaibalan', 'باليبلن'].freeze,
zgh: ['Standard Moroccan Tamazight', 'ⵜⴰⵎⴰⵣⵉⵖⵜ'].freeze,

View file

@ -177,7 +177,6 @@ module StatusesHelper
def render_card_component(status, **options)
component_params = {
sensitive: sensitized?(status, current_account),
maxDescription: 160,
card: ActiveModelSerializers::SerializableResource.new(status.preview_card, serializer: REST::PreviewCardSerializer).as_json,
}.merge(**options)

View file

@ -0,0 +1,57 @@
<svg width="293" height="264" viewBox="0 0 293 264" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M34.1 204.9C28.1 210.7 22.3 209.9 15.9 204.3C13.4 202.1 11.3 205.2 15.3 209.2C19.3 213.2 28.8 217.5 37.3 210" fill="#E09C5C"/>
<path d="M34.1 204.9C28.1 210.7 22.3 209.9 15.9 204.3C13.4 202.1 11.3 205.2 15.3 209.2C19.3 213.2 28.8 217.5 37.3 210" stroke="#946F3A" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M197.2 1.90002H137.4C122.4 1.90002 110.1 14.2 110.1 29.2V42.1C110.1 48.4 112.3 54.2 115.9 58.9C109.2 72.6 94.5 75.8 94.5 75.8C113.4 78.1 119.1 72.3 125.2 66.6C128.9 68.4 133 69.5 137.4 69.5H197.2C212.2 69.5 224.5 57.2 224.5 42.2V29.3C224.6 14.2 212.3 1.90002 197.2 1.90002Z" fill="white" stroke="#668794" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M78.3 210.9C78.2 222.8 75.9 232 86.2 232.1C96.5 232.2 99.4 229.6 99.3 222C99.2 214.4 98.7 201 98.7 201" fill="#E09C5C"/>
<path d="M78.3 210.9C78.2 222.8 75.9 232 86.2 232.1C96.5 232.2 99.4 229.6 99.3 222C99.2 214.4 98.7 201 98.7 201" stroke="#946F3A" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M63.8 104.2C43.6 104.2 28.7 111.8 28.7 140.2C28.7 168.6 28.7 186.5 28.7 194.5C28.7 202.5 33.1 216.3 50.5 216.3C67.9 216.3 66.1 216.3 74.6 216.3C83.1 216.3 90.9 213.5 97.1 206.9C103.3 200.3 106.3 193.6 106.3 181.4C106.3 169.2 106.3 134.8 106.3 134.8C106.3 134.8 126.7 134.3 135.7 121.5C144.6 108.7 142.6 93.3001 141.4 88.9001C141.4 88.9001 146.5 88.4 145.4 84.5C144.3 80.6 138.1 81.2001 135.3 83.4001C135.3 83.4001 133.7 81.6 128.3 81.7C122.9 81.8 124.6 87.9001 129 88.4001C129 88.4001 131.4 102.2 124.4 107.1C117.4 112 103 113.7 94.6 109.8C86.1 106.1 83.3 104.2 63.8 104.2Z" fill="#FBC16C" stroke="#946F3A" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M50.5 215.2C30.4 215.2 29.9 196.7 29.9 194.6V171.5C42.9 171.6 48.7 173 48.7 183.9C48.7 197.1 50.9 203.7 62.6 203.7H90.4C91.1 203.7 91.7 203.7 92.3 203.7C92.9 203.7 93.4 203.7 94 203.7C95.7 203.7 97.4 203.6 99 203C98.2 204 97.3 205.1 96.3 206.2C90.7 212.2 83.4 215.2 74.7 215.2H50.5Z" fill="#E09C5C"/>
<path d="M56.8 110.5C47.2 107.6 42.1 105.6 45 97.2C47.9 88.8 62 90.6 69.7 94.5C69.7 94.5 73.7 92.1 76 91.2C78.3 90.3 82.6 89.9001 82.7 92.9001C82.7 92.9001 88.1 93.5001 87.1 97.8001C87.1 97.8001 93.5 101.5 79 108.5" fill="#FBC16C"/>
<path d="M56.8 110.5C47.2 107.6 42.1 105.6 45 97.2C47.9 88.8 62 90.6 69.7 94.5C69.7 94.5 73.7 92.1 76 91.2C78.3 90.3 82.6 89.9001 82.7 92.9001C82.7 92.9001 88.1 93.5001 87.1 97.8001C87.1 97.8001 93.5 101.5 79 108.5" stroke="#946F3A" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M40.5 119.9C40.5 113.5 36.7 109.6 28.7 109.6C20.7 109.6 13.9 117.1 15.7 128.3C17.5 139.5 11.4 148.2 18.5 153.2C25.6 158.2 32.9 155.1 35.2 151.3C35.2 151.3 42.8 153.3 42.2 141.4" fill="#FBC16C"/>
<path d="M40.5 119.9C40.5 113.5 36.7 109.6 28.7 109.6C20.7 109.6 13.9 117.1 15.7 128.3C17.5 139.5 11.4 148.2 18.5 153.2C25.6 158.2 32.9 155.1 35.2 151.3C35.2 151.3 42.8 153.3 42.2 141.4" stroke="#946F3A" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M69.3 134.2C63.6 134.2 60.5 138.6 61.8 144.4C63.1 150.1 66.8 154.4 73.2 154.6C79.6 154.7 85.7 152.5 87.6 143.2C89.5 133.9 86 133.8 83.2 133.8C80.4 133.8 69.3 134.2 69.3 134.2Z" fill="#544024" stroke="#3B3024" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M78.8 147.3C78.8 140.6 73.4 135.1 66.6 135.1C66 135.1 65.5001 135.2 64.9001 135.2C62.1001 136.8 60.8 140.2 61.7 144.3C63 150 66.7 154.3 73.1 154.5C74.2 154.5 75.3001 154.5 76.4001 154.3C78.0001 152.3 78.8 149.9 78.8 147.3Z" fill="#693131" stroke="#381916" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M83.1 140.9V133.7C80.1 133.7 69.3 134.1 69.3 134.1C64.8 134.1 61.9 136.9 61.5 140.9H83.1Z" fill="white" stroke="#7D7D65" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M48.2 149.1C54.2 154.9 62.5 154.9 66.3 151.7C70.1 148.5 72.1 140.3 69 139.5C65.9 138.7 66.6 144.2 63.8 145.8C61 147.4 57.8 147 54.8 145.1C51.9 143.2 48.9 141.9 47.4 143.7C46.1 145.7 46.8 147.7 48.2 149.1Z" fill="white" stroke="#7D7D65" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M251.4 179.1C245.7 185.3 237.4 185.7 233.4 182.7C229.4 179.7 227 171.7 230 170.7C233 169.7 232.7 175.2 235.5 176.7C238.3 178.2 241.6 177.6 244.4 175.6C247.2 173.6 250.1 172 251.7 173.9C253.3 175.8 252.8 177.7 251.4 179.1Z" stroke="black" stroke-width="0.5707" stroke-miterlimit="10"/>
<path d="M36.3 153.7L15.8 153.8C15.8 153.8 15.1 150.4 12 150.9C8.90001 151.4 8.19998 153.2 8.09998 154.3C8.09998 154.3 1.30002 154.7 1.20002 161.5C1.10002 168.3 6.1 171 13.3 170.6C20.5 170.2 37.7 170.6 37.7 170.6" fill="#FBC16C"/>
<path d="M36.3 153.7L15.8 153.8C15.8 153.8 15.1 150.4 12 150.9C8.90001 151.4 8.19998 153.2 8.09998 154.3C8.09998 154.3 1.30002 154.7 1.20002 161.5C1.10002 168.3 6.1 171 13.3 170.6C20.5 170.2 37.7 170.6 37.7 170.6" stroke="#946F3A" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M37.4 210.9C37.3 222.8 35 232 45.3 232.1C55.6 232.2 58.5 229.6 58.4 222C58.3 214.4 58.2 211.6 58.2 211.6" fill="#E09C5C"/>
<path d="M37.4 210.9C37.3 222.8 35 232 45.3 232.1C55.6 232.2 58.5 229.6 58.4 222C58.3 214.4 58.2 211.6 58.2 211.6" stroke="#946F3A" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M54.7 138.2C53.8 138.2 53.1 137.5 53.1 136.6V125.7C53.1 124.8 53.8 124.1 54.7 124.1C55.6 124.1 56.3 124.8 56.3 125.7V136.6C56.3 137.5 55.6 138.2 54.7 138.2Z" fill="#402F19"/>
<path d="M196.8 191.4C189.6 192.3 180.1 190.7 175.2 189.6C170.3 188.5 167.4 193.9 166.7 199.1C166 204.3 178.4 213.2 199.4 207.8" fill="#FBE6C6"/>
<path d="M196.8 191.4C189.6 192.3 180.1 190.7 175.2 189.6C170.3 188.5 167.4 193.9 166.7 199.1C166 204.3 178.4 213.2 199.4 207.8" stroke="#668794" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M265 188.6C278.1 192.7 287.2 200.3 287 208.9C286.8 217.5 277.4 223.1 270.5 224.4C263.6 225.7 260.7 218.3 261.6 213.3C262.5 208.3 265 206.7 265 206.7" fill="#FBE6C6"/>
<path d="M265 188.6C278.1 192.7 287.2 200.3 287 208.9C286.8 217.5 277.4 223.1 270.5 224.4C263.6 225.7 260.7 218.3 261.6 213.3C262.5 208.3 265 206.7 265 206.7" stroke="#668794" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M260 204C265 206.6 270.1 209.4 270.1 209.4Z" fill="#FBE6C6"/>
<path d="M260 204C265 206.6 270.1 209.4 270.1 209.4" stroke="#668794" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M266 150.4C266 144 269.8 140.1 277.8 140.1C285.8 140.1 292.6 147.6 290.8 158.8C289 170 295.1 178.7 288 183.7C280.9 188.6 273.6 185.6 271.3 181.8C271.3 181.8 263.7 183.8 264.3 171.9" fill="#FBE6C6"/>
<path d="M266 150.4C266 144 269.8 140.1 277.8 140.1C285.8 140.1 292.6 147.6 290.8 158.8C289 170 295.1 178.7 288 183.7C280.9 188.6 273.6 185.6 271.3 181.8C271.3 181.8 263.7 183.8 264.3 171.9" stroke="#668794" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M230.1 133.7C200.4 133.4 195.7 141.6 188.1 148.1C180.5 154.7 170.5 166.9 151.5 167.6C151.5 167.6 149 164.1 146.3 166.6C143.6 169.1 144.1 172.5 146 173.8C146 173.8 142.3 177.5 146.2 181.4C150.1 185.3 153.4 181.4 153.4 181.4C153.4 181.4 167.8 182.7 179.3 177.4C190.7 172 194.4 174.1 194.4 174.1C194.4 174.1 194.4 208.7 194.4 224.5C194.4 240.3 201.6 246.5 220.3 246.5C239 246.5 257.1 248.2 264.8 240.3C272.5 232.4 271.2 221.1 270.7 211.1C270.2 201.1 270.7 183 270.7 167.6C270.7 152.2 269.3 134 230.1 133.7Z" fill="#FBE6C6" stroke="#668794" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M242.3 244C242.3 248.8 241.8 250.6 242.1 254.1C240.5 255.2 239.9 257.1 240.4 258.7C241 260.7 244 262.7 250.3 262.6C260.7 262.7 263.5 260.1 263.4 252.5C263.3 249 263.2 244.3 263.1 240.3" fill="#DCCEB5"/>
<path d="M242.3 244C242.3 248.8 241.8 250.6 242.1 254.1C240.5 255.2 239.9 257.1 240.4 258.7C241 260.7 244 262.7 250.3 262.6C260.7 262.7 263.5 260.1 263.4 252.5C263.3 249 263.2 244.3 263.1 240.3" stroke="#668794" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M236.5 245.4C233.9 245.4 231.4 245.4 228.6 245.3C225.8 245.3 223 245.2 220.2 245.2C202.2 245.2 195.5 239.5 195.5 224.3C195.5 221.8 199.8 219.5 204.5 219.5C206.8 219.5 211.1 220.1 213.7 223.8C217.5 229 222.6 230.9 230 230.9C234.5 230.9 244.5 231.1 247.9 228.5C252.4 225.2 253.7 220.6 261.2 218.9C264.2 218.2 266.8 217.7 269.8 218.5C270 227.8 268.5 235.7 263.9 239.3C258.4 243.7 249.4 245.4 236.5 245.4Z" fill="#DCCEB5"/>
<path d="M243.9 141.2C250.9 141.1 254.6 136.8 254.1 132.6C253.5 128.5 250.6 122.7 237.5 123.4C231.7 123.7 228.8 127.5 226 127.5C223.2 127.4 217.7 119.4 212.9 119.9C208.1 120.4 207.8 123.8 208.6 125.4C208.6 125.4 204.3 126.7 206.7 132.3C209.1 137.9 214 139.8 218.8 140.4" fill="#FBE6C6"/>
<path d="M243.9 141.2C250.9 141.1 254.6 136.8 254.1 132.6C253.5 128.5 250.6 122.7 237.5 123.4C231.7 123.7 228.8 127.5 226 127.5C223.2 127.4 217.7 119.4 212.9 119.9C208.1 120.4 207.8 123.8 208.6 125.4C208.6 125.4 204.3 126.7 206.7 132.3C209.1 137.9 214 139.8 218.8 140.4" stroke="#668794" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M203.7 241.5C203.7 246.3 203.2 250.7 203.5 254.2C201.9 255.3 201.3 257.2 201.8 258.8C202.4 260.8 205.4 262.8 211.7 262.7C222.1 262.8 224.9 260.2 224.8 252.6C224.8 249.7 224.7 248.9 224.6 245.4" fill="#DCCEB5"/>
<path d="M203.7 241.5C203.7 246.3 203.2 250.7 203.5 254.2C201.9 255.3 201.3 257.2 201.8 258.8C202.4 260.8 205.4 262.8 211.7 262.7C222.1 262.8 224.9 260.2 224.8 252.6C224.8 249.7 224.7 248.9 224.6 245.4" stroke="#668794" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M194.8 22.9H140.2C138.3 22.9 136.8 21.4 136.8 19.5C136.8 17.6 138.3 16.1 140.2 16.1H194.8C196.7 16.1 198.2 17.6 198.2 19.5C198.2 21.4 196.7 22.9 194.8 22.9Z" fill="#4A4439"/>
<path d="M194.8 39.8H140.2C138.3 39.8 136.8 38.3 136.8 36.4C136.8 34.5 138.3 33 140.2 33H194.8C196.7 33 198.2 34.5 198.2 36.4C198.2 38.2 196.7 39.8 194.8 39.8Z" fill="#4A4439"/>
<path d="M194.8 56.6H140.2C138.3 56.6 136.8 55.1 136.8 53.2C136.8 51.3 138.3 49.8 140.2 49.8H194.8C196.7 49.8 198.2 51.3 198.2 53.2C198.2 55.1 196.7 56.6 194.8 56.6Z" fill="#4A4439"/>
<path d="M205.9 150.4C205.9 144 209.7 140.1 217.7 140.1C225.7 140.1 232.5 147.6 230.7 158.8C228.9 170 235 178.7 227.9 183.7C220.8 188.6 213.5 185.6 211.2 181.8C211.2 181.8 203.6 183.8 204.2 171.9" fill="#FBE6C6"/>
<path d="M205.9 150.4C205.9 144 209.7 140.1 217.7 140.1C225.7 140.1 232.5 147.6 230.7 158.8C228.9 170 235 178.7 227.9 183.7C220.8 188.6 213.5 185.6 211.2 181.8C211.2 181.8 203.6 183.8 204.2 171.9" stroke="#668794" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M104.3 166C115.9 165.4 125.9 161.4 131 156.7C136.8 151.4 139.9 146.2 134.7 141.6C129.6 137.1 124.6 141.5 124.6 141.5C124.6 141.5 122.6 138.4 119.6 140.7C116.6 143 118.8 145.2 118.8 145.2C118.8 145.2 115.2 150.2 103.9 150.7" fill="#FBC16C"/>
<path d="M104.3 166C115.9 165.4 125.9 161.4 131 156.7C136.8 151.4 139.9 146.2 134.7 141.6C129.6 137.1 124.6 141.5 124.6 141.5C124.6 141.5 122.6 138.4 119.6 140.7C116.6 143 118.8 145.2 118.8 145.2C118.8 145.2 115.2 150.2 103.9 150.7" stroke="#946F3A" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M49 139L45.5 139.6C44.5 139.8 43.5001 139.1 43.4001 138.1C43.2001 137.1 43.9001 136.1 44.9001 136L48.4001 135.4C49.4001 135.2 50.4 135.9 50.5 136.9C50.7 137.9 50.1 138.9 49 139Z" fill="#E68A4C"/>
<path d="M119.7 114.2C120.4 114 120.7 113.8 121.3 113.5" stroke="#FBD7A3" stroke-width="2.8533" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M114.5 115.6C115.4 115.4 114.9 115.6 115.7 115.4" stroke="#FBD7A3" stroke-width="2.8533" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M102.2 115.8C104.4 116.1 106.6 116.2 108.8 116.2" stroke="#FBD7A3" stroke-width="2.8533" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M88.1 111.8C90.5 112.9 93.1 113.8 95.8 114.5" stroke="#FBD7A3" stroke-width="2.8533" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M207.1 140.8C207.8 140.5 208.4 140.3 209 140" stroke="white" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M201.6 143.5C202.5 143 202.5 142.9 203.4 142.4" stroke="white" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M193.8 148.9C195.4 147.7 196.3 147 197.9 146" stroke="white" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M186.1 156.2C187.3 154.9 188.7 153.6 190.1 152.3" stroke="white" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M262.1 235.4C268.1 241.2 273.9 240.4 280.3 234.8C282.8 232.6 284.9 235.7 280.9 239.7C276.9 243.7 267.4 248 258.9 240.5" fill="#DCCEB5"/>
<path d="M262.1 235.4C268.1 241.2 273.9 240.4 280.3 234.8C282.8 232.6 284.9 235.7 280.9 239.7C276.9 243.7 267.4 248 258.9 240.5" stroke="#668794" stroke-width="2.2827" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -77,6 +77,7 @@ export const COMPOSE_CHANGE_MEDIA_DESCRIPTION = 'COMPOSE_CHANGE_MEDIA_DESCRIPTIO
export const COMPOSE_CHANGE_MEDIA_FOCUS = 'COMPOSE_CHANGE_MEDIA_FOCUS';
export const COMPOSE_SET_STATUS = 'COMPOSE_SET_STATUS';
export const COMPOSE_FOCUS = 'COMPOSE_FOCUS';
const messages = defineMessages({
uploadErrorLimit: { id: 'upload_error.limit', defaultMessage: 'File upload limit exceeded.' },
@ -128,6 +129,14 @@ export function resetCompose() {
};
}
export const focusCompose = routerHistory => dispatch => {
dispatch({
type: COMPOSE_FOCUS,
});
ensureComposeIsVisible(routerHistory);
};
export function mentionCompose(account, routerHistory) {
return (dispatch, getState) => {
dispatch({

View file

@ -135,8 +135,7 @@ export const showSearch = () => ({
type: SEARCH_SHOW,
});
export const openURL = routerHistory => (dispatch, getState) => {
const value = getState().getIn(['search', 'value']);
export const openURL = (value, history, onFailure) => (dispatch, getState) => {
const signedIn = !!getState().getIn(['meta', 'me']);
if (!signedIn) {
@ -148,15 +147,21 @@ export const openURL = routerHistory => (dispatch, getState) => {
api(getState).get('/api/v2/search', { params: { q: value, resolve: true } }).then(response => {
if (response.data.accounts?.length > 0) {
dispatch(importFetchedAccounts(response.data.accounts));
routerHistory.push(`/@${response.data.accounts[0].acct}`);
history.push(`/@${response.data.accounts[0].acct}`);
} else if (response.data.statuses?.length > 0) {
dispatch(importFetchedStatuses(response.data.statuses));
routerHistory.push(`/@${response.data.statuses[0].account.acct}/${response.data.statuses[0].id}`);
history.push(`/@${response.data.statuses[0].account.acct}/${response.data.statuses[0].id}`);
} else if (onFailure) {
onFailure();
}
dispatch(fetchSearchSuccess(response.data, value));
}).catch(err => {
dispatch(fetchSearchFail(err));
if (onFailure) {
onFailure();
}
});
};

View file

@ -12,8 +12,8 @@ import Skeleton from 'mastodon/components/skeleton';
import { Link } from 'react-router-dom';
import { counterRenderer } from 'mastodon/components/common_counter';
import ShortNumber from 'mastodon/components/short_number';
import Icon from 'mastodon/components/icon';
import classNames from 'classnames';
import VerifiedBadge from 'mastodon/components/verified_badge';
const messages = defineMessages({
follow: { id: 'account.follow', defaultMessage: 'Follow' },
@ -27,26 +27,6 @@ const messages = defineMessages({
block: { id: 'account.block', defaultMessage: 'Block @{name}' },
});
class VerifiedBadge extends React.PureComponent {
static propTypes = {
link: PropTypes.string.isRequired,
verifiedAt: PropTypes.string.isRequired,
};
render () {
const { link } = this.props;
return (
<span className='verified-badge'>
<Icon id='check' className='verified-badge__mark' />
<span dangerouslySetInnerHTML={{ __html: link }} />
</span>
);
}
}
class Account extends ImmutablePureComponent {
static propTypes = {

View file

@ -1,8 +1,8 @@
import React from 'react';
const Check = () => (
<svg width='14' height='11' viewBox='0 0 14 11'>
<path d='M11.264 0L5.26 6.004 2.103 2.847 0 4.95l5.26 5.26 8.108-8.107L11.264 0' fill='currentColor' fillRule='evenodd' />
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor'>
<path fillRule='evenodd' d='M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z' clipRule='evenodd' />
</svg>
);

View file

@ -12,13 +12,19 @@ export default class ColumnBackButton extends React.PureComponent {
static propTypes = {
multiColumn: PropTypes.bool,
onClick: PropTypes.func,
};
handleClick = () => {
if (window.history && window.history.state) {
this.context.router.history.goBack();
const { router } = this.context;
const { onClick } = this.props;
if (onClick) {
onClick();
} else if (window.history && window.history.state) {
router.history.goBack();
} else {
this.context.router.history.push('/');
router.history.push('/');
}
};

View file

@ -32,7 +32,7 @@ class EditedTimestamp extends React.PureComponent {
renderHeader = items => {
return (
<FormattedMessage id='status.edited_x_times' defaultMessage='Edited {count, plural, one {{count} time} other {{count} times}}' values={{ count: items.size - 1 }} />
<FormattedMessage id='status.edited_x_times' defaultMessage='Edited {count, plural, one {# time} other {# times}}' values={{ count: items.size - 1 }} />
);
};

View file

@ -43,7 +43,7 @@ class SilentErrorBoundary extends React.Component {
export const accountsCountRenderer = (displayNumber, pluralReady) => (
<FormattedMessage
id='trends.counter_by_accounts'
defaultMessage='{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}'
defaultMessage='{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}'
values={{
count: pluralReady,
counter: <strong>{displayNumber}</strong>,

View file

@ -70,6 +70,9 @@ class Status extends ImmutablePureComponent {
static propTypes = {
status: ImmutablePropTypes.map,
account: ImmutablePropTypes.map,
previousId: PropTypes.string,
nextInReplyToId: PropTypes.string,
rootId: PropTypes.string,
onClick: PropTypes.func,
onReply: PropTypes.func,
onFavourite: PropTypes.func,
@ -314,10 +317,7 @@ class Status extends ImmutablePureComponent {
};
render () {
let media = null;
let statusAvatar, prepend, rebloggedByText;
const { intl, hidden, featured, unread, showThread, scrollKey, pictureInPicture } = this.props;
const { intl, hidden, featured, unread, showThread, scrollKey, pictureInPicture, previousId, nextInReplyToId, rootId } = this.props;
let { status, account, ...other } = this.props;
@ -339,6 +339,8 @@ class Status extends ImmutablePureComponent {
openMedia: this.handleHotkeyOpenMedia,
};
let media, statusAvatar, prepend, rebloggedByText;
if (hidden) {
return (
<HotKeys handlers={handlers}>
@ -350,7 +352,11 @@ class Status extends ImmutablePureComponent {
);
}
const connectUp = previousId && previousId === status.get('in_reply_to_id');
const connectToRoot = rootId && rootId === status.get('in_reply_to_id');
const connectReply = nextInReplyToId && nextInReplyToId === status.get('id');
const matchedFilters = status.get('matched_filters');
if (this.state.forceFilter === undefined ? matchedFilters : this.state.forceFilter) {
const minHandlers = this.props.muted ? {} : {
moveUp: this.handleHotkeyMoveUp,
@ -533,7 +539,10 @@ class Status extends ImmutablePureComponent {
<div className={classNames('status__wrapper', `status__wrapper-${status.get('visibility_ex')}`, { 'status__wrapper-reply': !!status.get('in_reply_to_id'), unread, focusable: !this.props.muted })} tabIndex={this.props.muted ? null : 0} data-featured={featured ? 'true' : null} aria-label={textForScreenReader(intl, status, rebloggedByText)} ref={this.handleRef}>
{prepend}
<div className={classNames('status', `status-${status.get('visibility_ex')}`, { 'status-reply': !!status.get('in_reply_to_id'), muted: this.props.muted })} data-id={status.get('id')}>
<div className={classNames('status', `status-${status.get('visibility_ex')}`, { 'status-reply': !!status.get('in_reply_to_id'), 'status--in-thread': !!rootId, 'status--first-in-thread': previousId && (!connectUp || connectToRoot), muted: this.props.muted })} data-id={status.get('id')}>
{(connectReply || connectUp || connectToRoot) && <div className={classNames('status__line', { 'status__line--full': connectReply, 'status__line--first': !status.get('in_reply_to_id') && !connectToRoot })} />}
{/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}
<div onClick={this.handleClick} className='status__info'>
<a href={`/@${status.getIn(['account', 'acct'])}/${status.get('id')}`} className='status__relative-time' target='_blank' rel='noopener noreferrer'>
<span className='status__visibility-icon'><Icon id={visibilityIcon.icon} title={visibilityIcon.text} /></span>

View file

@ -104,7 +104,7 @@ class StatusContent extends React.PureComponent {
link.setAttribute('href', `/@${mention.get('acct')}`);
} else if (link.textContent[0] === '#' || (link.previousSibling && link.previousSibling.textContent && link.previousSibling.textContent[link.previousSibling.textContent.length - 1] === '#')) {
link.addEventListener('click', this.onHashtagClick.bind(this, link.text), false);
link.setAttribute('href', `/tags/${link.text.slice(1)}`);
link.setAttribute('href', `/tags/${link.text.replace(/^#/, '')}`);
} else {
link.setAttribute('title', link.href);
link.classList.add('unhandled-link');

View file

@ -0,0 +1,25 @@
import React from 'react';
import PropTypes from 'prop-types';
import Icon from 'mastodon/components/icon';
class VerifiedBadge extends React.PureComponent {
static propTypes = {
link: PropTypes.string.isRequired,
verifiedAt: PropTypes.string.isRequired,
};
render () {
const { link } = this.props;
return (
<span className='verified-badge'>
<Icon id='check' className='verified-badge__mark' />
<span dangerouslySetInnerHTML={{ __html: link }} />
</span>
);
}
}
export default VerifiedBadge;

View file

@ -69,6 +69,7 @@ const makeMapStateToProps = () => {
const mapStateToProps = (state, props) => ({
status: getStatus(state, props),
nextInReplyToId: props.nextId ? state.getIn(['statuses', props.nextId, 'in_reply_to_id']) : null,
pictureInPicture: getPictureInPicture(state, props),
});

View file

@ -81,6 +81,7 @@ class Header extends ImmutablePureComponent {
static contextTypes = {
identity: PropTypes.object,
router: PropTypes.object,
};
static propTypes = {
@ -103,11 +104,16 @@ class Header extends ImmutablePureComponent {
onChangeLanguages: PropTypes.func.isRequired,
onInteractionModal: PropTypes.func.isRequired,
onOpenAvatar: PropTypes.func.isRequired,
onOpenURL: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
domain: PropTypes.string.isRequired,
hidden: PropTypes.bool,
};
setRef = c => {
this.node = c;
};
openEditProfile = () => {
window.open('/settings/profile', '_blank');
};
@ -164,6 +170,61 @@ class Header extends ImmutablePureComponent {
});
};
handleHashtagClick = e => {
const { router } = this.context;
const value = e.currentTarget.textContent.replace(/^#/, '');
if (router && e.button === 0 && !(e.ctrlKey || e.metaKey)) {
e.preventDefault();
router.history.push(`/tags/${value}`);
}
};
handleMentionClick = e => {
const { router } = this.context;
const { onOpenURL } = this.props;
if (router && e.button === 0 && !(e.ctrlKey || e.metaKey)) {
e.preventDefault();
const link = e.currentTarget;
onOpenURL(link.href, router.history, () => {
window.location = link.href;
});
}
};
_attachLinkEvents () {
const node = this.node;
if (!node) {
return;
}
const links = node.querySelectorAll('a');
let link;
for (var i = 0; i < links.length; ++i) {
link = links[i];
if (link.textContent[0] === '#' || (link.previousSibling && link.previousSibling.textContent && link.previousSibling.textContent[link.previousSibling.textContent.length - 1] === '#')) {
link.addEventListener('click', this.handleHashtagClick, false);
} else if (link.classList.contains('mention')) {
link.addEventListener('click', this.handleMentionClick, false);
}
}
}
componentDidMount () {
this._attachLinkEvents();
}
componentDidUpdate () {
this._attachLinkEvents();
}
render () {
const { account, hidden, intl, domain } = this.props;
const { signedIn, permissions } = this.context.identity;
@ -363,7 +424,7 @@ class Header extends ImmutablePureComponent {
{!(suspended || hidden) && (
<div className='account__header__extra'>
<div className='account__header__bio'>
<div className='account__header__bio' ref={this.setRef}>
{(account.get('id') !== me && signedIn) && <AccountNoteContainer account={account} />}
{account.get('note').length > 0 && account.get('note') !== '<p></p>' && <div className='account__header__content translate' dangerouslySetInnerHTML={content} />}

View file

@ -27,6 +27,7 @@ export default class Header extends ImmutablePureComponent {
onChangeLanguages: PropTypes.func.isRequired,
onInteractionModal: PropTypes.func.isRequired,
onOpenAvatar: PropTypes.func.isRequired,
onOpenURL: PropTypes.func.isRequired,
hideTabs: PropTypes.bool,
domain: PropTypes.string.isRequired,
hidden: PropTypes.bool,
@ -143,6 +144,7 @@ export default class Header extends ImmutablePureComponent {
onChangeLanguages={this.handleChangeLanguages}
onInteractionModal={this.handleInteractionModal}
onOpenAvatar={this.handleOpenAvatar}
onOpenURL={this.props.onOpenURL}
domain={this.props.domain}
hidden={hidden}
/>

View file

@ -10,6 +10,7 @@ import {
pinAccount,
unpinAccount,
} from '../../../actions/accounts';
import { openURL } from 'mastodon/actions/search';
import {
mentionCompose,
directCompose,
@ -165,6 +166,10 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
}));
},
onOpenURL (url, routerHistory, onFailure) {
dispatch(openURL(url, routerHistory, onFailure));
},
});
export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header));

View file

@ -23,6 +23,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
import { length } from 'stringz';
import { countableText } from '../util/counter';
import Icon from 'mastodon/components/icon';
import classNames from 'classnames';
const allowedAroundShortCode = '><\u0085\u0020\u00a0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\u0009\u000a\u000b\u000c\u000d';
@ -75,6 +76,10 @@ class ComposeForm extends ImmutablePureComponent {
autoFocus: false,
};
state = {
highlighted: false,
};
handleChange = (e) => {
this.props.onChange(e.target.value);
};
@ -148,6 +153,10 @@ class ComposeForm extends ImmutablePureComponent {
this._updateFocusAndSelection({ });
}
componentWillUnmount () {
if (this.timeout) clearTimeout(this.timeout);
}
componentDidUpdate (prevProps) {
this._updateFocusAndSelection(prevProps);
}
@ -178,6 +187,8 @@ class ComposeForm extends ImmutablePureComponent {
Promise.resolve().then(() => {
this.autosuggestTextarea.textarea.setSelectionRange(selectionStart, selectionEnd);
this.autosuggestTextarea.textarea.focus();
this.setState({ highlighted: true });
this.timeout = setTimeout(() => this.setState({ highlighted: false }), 700);
}).catch(console.error);
} else if(prevProps.isSubmitting && !this.props.isSubmitting) {
this.autosuggestTextarea.textarea.focus();
@ -218,6 +229,7 @@ class ComposeForm extends ImmutablePureComponent {
render () {
const { intl, onPaste, autoFocus } = this.props;
const { highlighted } = this.state;
const disabled = this.props.isSubmitting;
let publishText = '';
@ -256,6 +268,7 @@ class ComposeForm extends ImmutablePureComponent {
/>
</div>
<div className={classNames('compose-form__highlightable', { active: highlighted })}>
<AutosuggestTextarea
ref={this.setAutosuggestTextarea}
placeholder={intl.formatMessage(messages.placeholder)}
@ -296,6 +309,7 @@ class ComposeForm extends ImmutablePureComponent {
<CharacterCounter max={500} text={this.getFulltextForCharacterCounting()} />
</div>
</div>
</div>
<div className='compose-form__publish'>
<div className='compose-form__publish-button-wrapper'>

View file

@ -161,9 +161,9 @@ class Search extends React.PureComponent {
handleURLClick = () => {
const { router } = this.context;
const { onOpenURL } = this.props;
const { value, onOpenURL } = this.props;
onOpenURL(router.history);
onOpenURL(value, router.history);
};
handleStatusSearch = () => {

View file

@ -132,7 +132,7 @@ class SearchResults extends ImmutablePureComponent {
<div className='search-results'>
<div className='search-results__header'>
<Icon id='search' fixedWidth />
<FormattedMessage id='search_results.total' defaultMessage='{count, number} {count, plural, one {result} other {results}}' values={{ count }} />
<FormattedMessage id='search_results.total' defaultMessage='{count, plural, one {# result} other {# results}}' values={{ count }} />
</div>
{accounts}

View file

@ -34,8 +34,8 @@ const mapDispatchToProps = dispatch => ({
dispatch(showSearch());
},
onOpenURL (routerHistory) {
dispatch(openURL(routerHistory));
onOpenURL (q, routerHistory) {
dispatch(openURL(q, routerHistory));
},
onClickSearchResult (q, type) {

View file

@ -1,85 +0,0 @@
import React from 'react';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { connect } from 'react-redux';
import { makeGetAccount } from 'mastodon/selectors';
import Avatar from 'mastodon/components/avatar';
import DisplayName from 'mastodon/components/display_name';
import { Link } from 'react-router-dom';
import IconButton from 'mastodon/components/icon_button';
import { injectIntl, defineMessages } from 'react-intl';
import { followAccount, unfollowAccount } from 'mastodon/actions/accounts';
const messages = defineMessages({
follow: { id: 'account.follow', defaultMessage: 'Follow' },
unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
});
const makeMapStateToProps = () => {
const getAccount = makeGetAccount();
const mapStateToProps = (state, props) => ({
account: getAccount(state, props.id),
});
return mapStateToProps;
};
const getFirstSentence = str => {
const arr = str.split(/(([.?!]+\s)|[.。?!\n•])/);
return arr[0];
};
class Account extends ImmutablePureComponent {
static propTypes = {
account: ImmutablePropTypes.map.isRequired,
intl: PropTypes.object.isRequired,
dispatch: PropTypes.func.isRequired,
};
handleFollow = () => {
const { account, dispatch } = this.props;
if (account.getIn(['relationship', 'following']) || account.getIn(['relationship', 'requested'])) {
dispatch(unfollowAccount(account.get('id')));
} else {
dispatch(followAccount(account.get('id')));
}
};
render () {
const { account, intl } = this.props;
let button;
if (account.getIn(['relationship', 'following'])) {
button = <IconButton icon='check' title={intl.formatMessage(messages.unfollow)} active onClick={this.handleFollow} />;
} else {
button = <IconButton icon='plus' title={intl.formatMessage(messages.follow)} onClick={this.handleFollow} />;
}
return (
<div className='account follow-recommendations-account'>
<div className='account__wrapper'>
<Link className='account__display-name account__display-name--with-note' title={account.get('acct')} to={`/@${account.get('acct')}`}>
<div className='account__avatar-wrapper'><Avatar account={account} size={36} /></div>
<DisplayName account={account} />
<div className='account__note'>{getFirstSentence(account.get('note_plain'))}</div>
</Link>
<div className='account__relationship'>
{button}
</div>
</div>
</div>
);
}
}
export default connect(makeMapStateToProps)(injectIntl(Account));

View file

@ -1,117 +0,0 @@
import React from 'react';
import PropTypes from 'prop-types';
import ImmutablePureComponent from 'react-immutable-pure-component';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { connect } from 'react-redux';
import { FormattedMessage } from 'react-intl';
import { fetchSuggestions } from 'mastodon/actions/suggestions';
import { changeSetting, saveSettings } from 'mastodon/actions/settings';
import { requestBrowserPermission } from 'mastodon/actions/notifications';
import { markAsPartial } from 'mastodon/actions/timelines';
import Column from 'mastodon/features/ui/components/column';
import Account from './components/account';
import imageGreeting from 'mastodon/../images/elephant_ui_greeting.svg';
import Button from 'mastodon/components/button';
import { Helmet } from 'react-helmet';
const mapStateToProps = state => ({
suggestions: state.getIn(['suggestions', 'items']),
isLoading: state.getIn(['suggestions', 'isLoading']),
});
class FollowRecommendations extends ImmutablePureComponent {
static contextTypes = {
router: PropTypes.object.isRequired,
};
static propTypes = {
dispatch: PropTypes.func.isRequired,
suggestions: ImmutablePropTypes.list,
isLoading: PropTypes.bool,
};
componentDidMount () {
const { dispatch, suggestions } = this.props;
// Don't re-fetch if we're e.g. navigating backwards to this page,
// since we don't want followed accounts to disappear from the list
if (suggestions.size === 0) {
dispatch(fetchSuggestions(true));
}
}
componentWillUnmount () {
const { dispatch } = this.props;
// Force the home timeline to be reloaded when the user navigates
// to it; if the user is new, it would've been empty before
dispatch(markAsPartial('home'));
}
handleDone = () => {
const { dispatch } = this.props;
const { router } = this.context;
dispatch(requestBrowserPermission((permission) => {
if (permission === 'granted') {
dispatch(changeSetting(['notifications', 'alerts', 'follow'], true));
dispatch(changeSetting(['notifications', 'alerts', 'favourite'], true));
dispatch(changeSetting(['notifications', 'alerts', 'reblog'], true));
dispatch(changeSetting(['notifications', 'alerts', 'mention'], true));
dispatch(changeSetting(['notifications', 'alerts', 'poll'], true));
dispatch(changeSetting(['notifications', 'alerts', 'status'], true));
dispatch(saveSettings());
}
}));
router.history.push('/home');
};
render () {
const { suggestions, isLoading } = this.props;
return (
<Column>
<div className='scrollable follow-recommendations-container'>
<div className='column-title'>
<svg viewBox='0 0 79 79' className='logo'>
<use xlinkHref='#logo-symbol-icon' />
</svg>
<h3><FormattedMessage id='follow_recommendations.heading' defaultMessage="Follow people you'd like to see posts from! Here are some suggestions." /></h3>
<p><FormattedMessage id='follow_recommendations.lead' defaultMessage="Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!" /></p>
</div>
{!isLoading && (
<React.Fragment>
<div className='column-list'>
{suggestions.size > 0 ? suggestions.map(suggestion => (
<Account key={suggestion.get('account')} id={suggestion.get('account')} />
)) : (
<div className='column-list__empty-message'>
<FormattedMessage id='empty_column.follow_recommendations' defaultMessage='Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.' />
</div>
)}
</div>
<div className='column-actions'>
<img src={imageGreeting} alt='' className='column-actions__background' />
<Button onClick={this.handleDone}><FormattedMessage id='follow_recommendations.done' defaultMessage='Done' /></Button>
</div>
</React.Fragment>
)}
</div>
<Helmet>
<meta name='robots' content='noindex' />
</Helmet>
</Column>
);
}
}
export default connect(mapStateToProps)(FollowRecommendations);

View file

@ -45,7 +45,7 @@ class Report extends ImmutablePureComponent {
<div className='notification__report__details'>
<div>
<RelativeTimestamp timestamp={report.get('created_at')} short={false} /> · <FormattedMessage id='report_notification.attached_statuses' defaultMessage='{count, plural, one {{count} post} other {{count} posts}} attached' values={{ count: report.get('status_ids').size }} />
<RelativeTimestamp timestamp={report.get('created_at')} short={false} /> · <FormattedMessage id='report_notification.attached_statuses' defaultMessage='{count, plural, one {# post} other {# posts}} attached' values={{ count: report.get('status_ids').size }} />
<br />
<strong>{intl.formatMessage(messages[report.get('category')])}</strong>
</div>

View file

@ -0,0 +1,9 @@
import React from 'react';
const ArrowSmallRight = () => (
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor'>
<path fillRule='evenodd' d='M5 10a.75.75 0 01.75-.75h6.638L10.23 7.29a.75.75 0 111.04-1.08l3.5 3.25a.75.75 0 010 1.08l-3.5 3.25a.75.75 0 11-1.04-1.08l2.158-1.96H5.75A.75.75 0 015 10z' clipRule='evenodd' />
</svg>
);
export default ArrowSmallRight;

View file

@ -0,0 +1,25 @@
import React from 'react';
import PropTypes from 'prop-types';
import Check from 'mastodon/components/check';
import classNames from 'classnames';
const ProgressIndicator = ({ steps, completed }) => (
<div className='onboarding__progress-indicator'>
{(new Array(steps)).fill().map((_, i) => (
<React.Fragment key={i}>
{i > 0 && <div className={classNames('onboarding__progress-indicator__line', { active: completed > i })} />}
<div className={classNames('onboarding__progress-indicator__step', { active: completed > i })}>
{completed > i && <Check />}
</div>
</React.Fragment>
))}
</div>
);
ProgressIndicator.propTypes = {
steps: PropTypes.number.isRequired,
completed: PropTypes.number,
};
export default ProgressIndicator;

View file

@ -0,0 +1,50 @@
import React from 'react';
import PropTypes from 'prop-types';
import Icon from 'mastodon/components/icon';
import Check from 'mastodon/components/check';
const Step = ({ label, description, icon, completed, onClick, href }) => {
const content = (
<>
<div className='onboarding__steps__item__icon'>
<Icon id={icon} />
</div>
<div className='onboarding__steps__item__description'>
<h6>{label}</h6>
<p>{description}</p>
</div>
{completed && (
<div className='onboarding__steps__item__progress'>
<Check />
</div>
)}
</>
);
if (href) {
return (
<a href={href} onClick={onClick} target='_blank' rel='noopener' className='onboarding__steps__item'>
{content}
</a>
);
}
return (
<button onClick={onClick} className='onboarding__steps__item'>
{content}
</button>
);
};
Step.propTypes = {
label: PropTypes.node,
description: PropTypes.node,
icon: PropTypes.string,
completed: PropTypes.bool,
href: PropTypes.string,
onClick: PropTypes.func,
};
export default Step;

View file

@ -0,0 +1,79 @@
import React from 'react';
import Column from 'mastodon/components/column';
import ColumnBackButton from 'mastodon/components/column_back_button';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { fetchSuggestions } from 'mastodon/actions/suggestions';
import { markAsPartial } from 'mastodon/actions/timelines';
import ImmutablePropTypes from 'react-immutable-proptypes';
import Account from 'mastodon/containers/account_container';
import EmptyAccount from 'mastodon/components/account';
import { FormattedMessage, FormattedHTMLMessage } from 'react-intl';
import { makeGetAccount } from 'mastodon/selectors';
import { me } from 'mastodon/initial_state';
import ProgressIndicator from './components/progress_indicator';
const mapStateToProps = () => {
const getAccount = makeGetAccount();
return state => ({
account: getAccount(state, me),
suggestions: state.getIn(['suggestions', 'items']),
isLoading: state.getIn(['suggestions', 'isLoading']),
});
};
class Follows extends React.PureComponent {
static propTypes = {
onBack: PropTypes.func,
dispatch: PropTypes.func.isRequired,
suggestions: ImmutablePropTypes.list,
account: ImmutablePropTypes.map,
isLoading: PropTypes.bool,
};
componentDidMount () {
const { dispatch } = this.props;
dispatch(fetchSuggestions(true));
}
componentWillUnmount () {
const { dispatch } = this.props;
dispatch(markAsPartial('home'));
}
render () {
const { onBack, isLoading, suggestions, account } = this.props;
return (
<Column>
<ColumnBackButton onClick={onBack} />
<div className='scrollable privacy-policy'>
<div className='column-title'>
<h3><FormattedMessage id='onboarding.follows.title' defaultMessage='Popular on Mastodon' /></h3>
<p><FormattedMessage id='onboarding.follows.lead' defaultMessage='You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!' /></p>
</div>
<ProgressIndicator steps={7} completed={account.get('following_count') * 1} />
<div className='follow-recommendations'>
{isLoading ? (new Array(8)).fill().map((_, i) => <EmptyAccount key={i} />) : suggestions.map(suggestion => (
<Account id={suggestion.get('account')} key={suggestion.get('account')} />
))}
</div>
<p className='onboarding__lead'><FormattedHTMLMessage id='onboarding.tips.accounts_from_other_servers' defaultMessage='<strong>Did you know?</strong> Since Mastodon is decentralized, some profiles you come across will be hosted on servers other than yours. And yet you can interact with them seamlessly! Their server is in the second half of their username!' values={{ strong: text => <strong>{text}</strong> }} /></p>
<div className='onboarding__footer'>
<button className='link-button' onClick={onBack}><FormattedMessage id='onboarding.actions.back' defaultMessage='Take me back' /></button>
</div>
</div>
</Column>
);
}
}
export default connect(mapStateToProps)(Follows);

View file

@ -0,0 +1,141 @@
import React from 'react';
import PropTypes from 'prop-types';
import ImmutablePureComponent from 'react-immutable-pure-component';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { connect } from 'react-redux';
import { focusCompose } from 'mastodon/actions/compose';
import Column from 'mastodon/features/ui/components/column';
import { Helmet } from 'react-helmet';
import illustration from 'mastodon/../images/elephant_ui_conversation.svg';
import { Link } from 'react-router-dom';
import { me } from 'mastodon/initial_state';
import { makeGetAccount } from 'mastodon/selectors';
import { closeOnboarding } from 'mastodon/actions/onboarding';
import { fetchAccount } from 'mastodon/actions/accounts';
import Follows from './follows';
import Share from './share';
import Step from './components/step';
import ArrowSmallRight from './components/arrow_small_right';
import { FormattedMessage } from 'react-intl';
import { debounce } from 'lodash';
const mapStateToProps = () => {
const getAccount = makeGetAccount();
return state => ({
account: getAccount(state, me),
});
};
class Onboarding extends ImmutablePureComponent {
static contextTypes = {
router: PropTypes.object.isRequired,
};
static propTypes = {
dispatch: PropTypes.func.isRequired,
account: ImmutablePropTypes.map,
};
state = {
step: null,
profileClicked: false,
shareClicked: false,
};
handleClose = () => {
const { dispatch } = this.props;
const { router } = this.context;
dispatch(closeOnboarding());
router.history.push('/home');
};
handleProfileClick = () => {
this.setState({ profileClicked: true });
};
handleFollowClick = () => {
this.setState({ step: 'follows' });
};
handleComposeClick = () => {
const { dispatch } = this.props;
const { router } = this.context;
dispatch(focusCompose(router.history));
};
handleShareClick = () => {
this.setState({ step: 'share', shareClicked: true });
};
handleBackClick = () => {
this.setState({ step: null });
};
handleWindowFocus = debounce(() => {
const { dispatch, account } = this.props;
dispatch(fetchAccount(account.get('id')));
}, 1000, { trailing: true });
componentDidMount () {
window.addEventListener('focus', this.handleWindowFocus, false);
}
componentWillUnmount () {
window.removeEventListener('focus', this.handleWindowFocus);
}
render () {
const { account } = this.props;
const { step, shareClicked } = this.state;
switch(step) {
case 'follows':
return <Follows onBack={this.handleBackClick} />;
case 'share':
return <Share onBack={this.handleBackClick} />;
}
return (
<Column>
<div className='scrollable privacy-policy'>
<div className='column-title'>
<img src={illustration} alt='' className='onboarding__illustration' />
<h3><FormattedMessage id='onboarding.start.title' defaultMessage="You've made it!" /></h3>
<p><FormattedMessage id='onboarding.start.lead' defaultMessage="Your new Mastodon account is ready to go. Here's how you can make the most of it:" /></p>
</div>
<div className='onboarding__steps'>
<Step onClick={this.handleProfileClick} href='/settings/profile' completed={(!account.get('avatar').endsWith('missing.png')) || (account.get('display_name').length > 0 && account.get('note').length > 0)} icon='address-book-o' label={<FormattedMessage id='onboarding.steps.setup_profile.title' defaultMessage='Customize your profile' />} description={<FormattedMessage id='onboarding.steps.setup_profile.body' defaultMessage='Others are more likely to interact with you with a filled out profile.' />} />
<Step onClick={this.handleFollowClick} completed={(account.get('following_count') * 1) >= 7} icon='user-plus' label={<FormattedMessage id='onboarding.steps.follow_people.title' defaultMessage='Follow {count, plural, one {one person} other {# people}}' values={{ count: 7 }} />} description={<FormattedMessage id='onboarding.steps.follow_people.body' defaultMessage='You curate your own feed. Lets fill it with interesting people.' />} />
<Step onClick={this.handleComposeClick} completed={(account.get('statuses_count') * 1) >= 1} icon='pencil-square-o' label={<FormattedMessage id='onboarding.steps.publish_status.title' defaultMessage='Make your first post' />} description={<FormattedMessage id='onboarding.steps.publish_status.body' defaultMessage='Say hello to the world.' />} />
<Step onClick={this.handleShareClick} completed={shareClicked} icon='copy' label={<FormattedMessage id='onboarding.steps.share_profile.title' defaultMessage='Share your profile' />} description={<FormattedMessage id='onboarding.steps.share_profile.body' defaultMessage='Let your friends know how to find you on Mastodon!' />} />
</div>
<p className='onboarding__lead'><FormattedMessage id='onboarding.start.skip' defaultMessage='Want to skip right ahead?' /></p>
<div className='onboarding__links'>
<Link to='/explore' className='onboarding__link'>
<ArrowSmallRight />
<FormattedMessage id='onboarding.actions.go_to_explore' defaultMessage="See what's trending" />
</Link>
</div>
<div className='onboarding__footer'>
<button className='link-button' onClick={this.handleClose}><FormattedMessage id='onboarding.actions.close' defaultMessage="Don't show this screen again" /></button>
</div>
</div>
<Helmet>
<meta name='robots' content='noindex' />
</Helmet>
</Column>
);
}
}
export default connect(mapStateToProps)(Onboarding);

View file

@ -0,0 +1,132 @@
import React from 'react';
import Column from 'mastodon/components/column';
import ColumnBackButton from 'mastodon/components/column_back_button';
import PropTypes from 'prop-types';
import { me, domain } from 'mastodon/initial_state';
import { connect } from 'react-redux';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
import classNames from 'classnames';
import Icon from 'mastodon/components/icon';
import ArrowSmallRight from './components/arrow_small_right';
import { Link } from 'react-router-dom';
const messages = defineMessages({
shareableMessage: { id: 'onboarding.share.message', defaultMessage: 'I\'m {username} on Mastodon! Come follow me at {url}' },
});
const mapStateToProps = state => ({
account: state.getIn(['accounts', me]),
});
class CopyPasteText extends React.PureComponent {
static propTypes = {
value: PropTypes.string,
};
state = {
copied: false,
focused: false,
};
setRef = c => {
this.input = c;
};
handleInputClick = () => {
this.setState({ copied: false });
this.input.focus();
this.input.select();
this.input.setSelectionRange(0, this.props.value.length);
};
handleButtonClick = e => {
e.stopPropagation();
const { value } = this.props;
navigator.clipboard.writeText(value);
this.input.blur();
this.setState({ copied: true });
this.timeout = setTimeout(() => this.setState({ copied: false }), 700);
};
handleFocus = () => {
this.setState({ focused: true });
};
handleBlur = () => {
this.setState({ focused: false });
};
componentWillUnmount () {
if (this.timeout) clearTimeout(this.timeout);
}
render () {
const { value } = this.props;
const { copied, focused } = this.state;
return (
<div className={classNames('copy-paste-text', { copied, focused })} tabIndex='0' role='button' onClick={this.handleInputClick}>
<textarea readOnly value={value} ref={this.setRef} onClick={this.handleInputClick} onFocus={this.handleFocus} onBlur={this.handleBlur} />
<button className='button' onClick={this.handleButtonClick}>
<Icon id='copy' /> {copied ? <FormattedMessage id='copypaste.copied' defaultMessage='Copied' /> : <FormattedMessage id='copypaste.copy_to_clipboard' defaultMessage='Copy to clipboard' />}
</button>
</div>
);
}
}
class Share extends React.PureComponent {
static propTypes = {
onBack: PropTypes.func,
account: ImmutablePropTypes.map,
intl: PropTypes.object,
};
render () {
const { onBack, account, intl } = this.props;
const url = (new URL(`/@${account.get('username')}`, document.baseURI)).href;
return (
<Column>
<ColumnBackButton onClick={onBack} />
<div className='scrollable privacy-policy'>
<div className='column-title'>
<h3><FormattedMessage id='onboarding.share.title' defaultMessage='Share your profile' /></h3>
<p><FormattedMessage id='onboarding.share.lead' defaultMessage='Let people know how they can find you on Mastodon!' /></p>
</div>
<CopyPasteText value={intl.formatMessage(messages.shareableMessage, { username: `@${account.get('username')}@${domain}`, url })} />
<p className='onboarding__lead'><FormattedMessage id='onboarding.share.next_steps' defaultMessage='Possible next steps:' /></p>
<div className='onboarding__links'>
<Link to='/home' className='onboarding__link'>
<ArrowSmallRight />
<FormattedMessage id='onboarding.actions.go_to_home' defaultMessage='Go to your home feed' />
</Link>
<Link to='/explore' className='onboarding__link'>
<ArrowSmallRight />
<FormattedMessage id='onboarding.actions.go_to_explore' defaultMessage="See what's trending" />
</Link>
</div>
<div className='onboarding__footer'>
<button className='link-button' onClick={onBack}><FormattedMessage id='onboarding.action.back' defaultMessage='Take me back' /></button>
</div>
</div>
</Column>
);
}
}
export default connect(mapStateToProps)(injectIntl(Share));

View file

@ -25,16 +25,6 @@ const getHostname = url => {
return parser.hostname;
};
const trim = (text, len) => {
const cut = text.indexOf(' ', len);
if (cut === -1) {
return text;
}
return text.slice(0, cut) + (text.length > len ? '…' : '');
};
const domParser = new DOMParser();
const addAutoPlay = html => {
@ -62,7 +52,6 @@ export default class Card extends React.PureComponent {
static propTypes = {
card: ImmutablePropTypes.map,
maxDescription: PropTypes.number,
onOpenMedia: PropTypes.func.isRequired,
compact: PropTypes.bool,
defaultWidth: PropTypes.number,
@ -71,7 +60,6 @@ export default class Card extends React.PureComponent {
};
static defaultProps = {
maxDescription: 50,
compact: false,
};
@ -184,7 +172,7 @@ export default class Card extends React.PureComponent {
}
render () {
const { card, maxDescription, compact } = this.props;
const { card, compact } = this.props;
const { width, embedded, revealed } = this.state;
if (card === null) {
@ -203,7 +191,7 @@ export default class Card extends React.PureComponent {
const description = (
<div className='status-card__content' lang={language}>
{title}
{!(horizontal || compact) && <p className='status-card__description'>{trim(card.get('description') || '', maxDescription)}</p>}
{!(horizontal || compact) && <p className='status-card__description' title={card.get('description')}>{card.get('description')}</p>}
<span className='status-card__host'>{provider}</span>
</div>
);

View file

@ -71,7 +71,7 @@ const messages = defineMessages({
redraftMessage: { id: 'confirmations.redraft.message', defaultMessage: 'Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.' },
revealAll: { id: 'status.show_more_all', defaultMessage: 'Show more for all' },
hideAll: { id: 'status.show_less_all', defaultMessage: 'Show less for all' },
statusTitleWithAttachments: { id: 'status.title.with_attachments', defaultMessage: '{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}' },
statusTitleWithAttachments: { id: 'status.title.with_attachments', defaultMessage: '{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}' },
detailedStatus: { id: 'status.detailed_status', defaultMessage: 'Detailed conversation view' },
replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' },
replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' },
@ -551,14 +551,19 @@ class Status extends ImmutablePureComponent {
}
}
renderChildren (list) {
return list.map(id => (
renderChildren (list, ancestors) {
const { params: { statusId } } = this.props;
return list.map((id, i) => (
<StatusContainer
key={id}
id={id}
onMoveUp={this.handleMoveUp}
onMoveDown={this.handleMoveDown}
contextType='thread'
previousId={i > 0 && list.get(i - 1)}
nextId={list.get(i + 1) || (ancestors && statusId)}
rootId={statusId}
/>
));
}
@ -612,7 +617,7 @@ class Status extends ImmutablePureComponent {
}
if (ancestorsIds && ancestorsIds.size > 0) {
ancestors = <>{this.renderChildren(ancestorsIds)}</>;
ancestors = <>{this.renderChildren(ancestorsIds, true)}</>;
}
if (descendantsIds && descendantsIds.size > 0) {

View file

@ -53,12 +53,12 @@ import {
Lists,
Directory,
Explore,
FollowRecommendations,
Onboarding,
About,
PrivacyPolicy,
} from './util/async-components';
import initialState, { me, owner, singleUserMode, showTrends, trendsAsLanding } from '../../initial_state';
import { closeOnboarding, INTRODUCTION_VERSION } from 'mastodon/actions/onboarding';
import { INTRODUCTION_VERSION } from 'mastodon/actions/onboarding';
import Header from './components/header';
// Dummy import, to make sure that <Status /> ends up in the application bundle.
@ -196,7 +196,7 @@ class SwitchingColumnsArea extends React.PureComponent {
<WrappedRoute path='/bookmarks' component={BookmarkedStatuses} content={children} />
<WrappedRoute path='/pinned' component={PinnedStatuses} content={children} />
<WrappedRoute path='/start' component={FollowRecommendations} content={children} />
<WrappedRoute path='/start' exact component={Onboarding} content={children} />
<WrappedRoute path='/directory' component={Directory} content={children} />
<WrappedRoute path={['/explore', '/search']} component={Explore} content={children} />
<WrappedRoute path={['/publish', '/statuses/new']} component={Compose} content={children} />
@ -395,7 +395,6 @@ class UI extends React.PureComponent {
// On first launch, redirect to the follow recommendations page
if (signedIn && this.props.firstLaunch) {
this.context.router.history.replace('/start');
this.props.dispatch(closeOnboarding());
}
if (signedIn) {

View file

@ -162,8 +162,8 @@ export function Directory () {
return import(/* webpackChunkName: "features/directory" */'../../directory');
}
export function FollowRecommendations () {
return import(/* webpackChunkName: "features/follow_recommendations" */'../../follow_recommendations');
export function Onboarding () {
return import(/* webpackChunkName: "features/onboarding" */'../../onboarding');
}
export function CompareHistoryModal () {

View file

@ -39,6 +39,7 @@
"account.follows_you": "Volg jou",
"account.go_to_profile": "Gaan na profiel",
"account.hide_reblogs": "Versteek plasings wat deur @{name} aangestuur is",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Aangesluit",
"account.languages": "Change subscribed languages",
"account.link_verified_on": "Eienaarskap van hierdie skakel is nagegaan op {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Put it back",
"poll.closed": "Closed",
"poll.refresh": "Refresh",
@ -597,6 +600,7 @@
"status.show_more": "Show more",
"status.show_more_all": "Show more for all",
"status.show_original": "Show original",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Vertaal",
"status.translated_from_with": "Uit {lang} vertaal deur {provider}",
"status.uncached_media_warning": "Not available",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading…",
"upload_progress.processing": "Processing…",
"username.taken": "That username is taken. Try another",
"video.close": "Close video",
"video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Te sigue",
"account.go_to_profile": "Ir ta lo perfil",
"account.hide_reblogs": "Amagar retutz de @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "S'unió",
"account.languages": "Cambiar idiomas suscritos",
"account.link_verified_on": "Lo proprietario d'este link estió comprebau lo {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Habilitar notificacions d'escritorio",
"notifications_permission_banner.how_to_control": "Pa recibir notificacions quan Mastodon no sía ubierto, habilite las notificacions d'escritorio. Puetz controlar con precisión qué tipos d'interaccions cheneran notificacions d'escritorio a traviés d'o botón {icon} d'alto una vegada que sían habilitadas.",
"notifications_permission_banner.title": "Nunca te pierdas cosa",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Restaurar",
"poll.closed": "Zarrada",
"poll.refresh": "Actualizar",
@ -597,6 +600,7 @@
"status.show_more": "Amostrar mas",
"status.show_more_all": "Amostrar mas pa tot",
"status.show_original": "Amostrar orichinal",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Traducir",
"status.translated_from_with": "Traduciu de {lang} usando {provider}",
"status.uncached_media_warning": "No disponible",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Vista previa ({ratio})",
"upload_progress.label": "Puyando...",
"upload_progress.processing": "Procesando…",
"username.taken": "That username is taken. Try another",
"video.close": "Zarrar video",
"video.download": "Descargar fichero",
"video.exit_fullscreen": "Salir de pantalla completa",

View file

@ -20,7 +20,7 @@
"account.blocked": "محظور",
"account.browse_more_on_origin_server": "تصفح المزيد في الملف الشخصي الأصلي",
"account.cancel_follow_request": "إلغاء طلب المتابعة",
"account.direct": "Privately mention @{name}",
"account.direct": "إشارة خاصة لـ @{name}",
"account.disable_notifications": "توقف عن إشعاري عندما ينشر @{name}",
"account.domain_blocked": "اسم النِّطاق محظور",
"account.edit_profile": "تعديل الملف الشخصي",
@ -39,6 +39,7 @@
"account.follows_you": "يُتابِعُك",
"account.go_to_profile": "اذهب إلى الملف الشخصي",
"account.hide_reblogs": "إخفاء مشاركات @{name}",
"account.in_memoriam": "في الذكرى.",
"account.joined_short": "انضم في",
"account.languages": "تغيير اللغات المشترَك فيها",
"account.link_verified_on": "تمَّ التَّحقق مِن مِلْكيّة هذا الرابط بتاريخ {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "تفعيل إشعارات سطح المكتب",
"notifications_permission_banner.how_to_control": "لتلقي الإشعارات عندما لا يكون ماستدون مفتوح، قم بتفعيل إشعارات سطح المكتب، يمكنك التحكم بدقة في أنواع التفاعلات التي تولد إشعارات سطح المكتب من خلال زر الـ{icon} أعلاه بمجرد تفعيلها.",
"notifications_permission_banner.title": "لا تفوت شيئاً أبداً",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "ضعها مرة أخرى",
"poll.closed": "انتهى",
"poll.refresh": "تحديث",
@ -557,8 +560,8 @@
"status.copy": "انسخ رابط الرسالة",
"status.delete": "احذف",
"status.detailed_status": "تفاصيل المحادثة",
"status.direct": "Privately mention @{name}",
"status.direct_indicator": "Private mention",
"status.direct": "إشارة خاصة لـ @{name}",
"status.direct_indicator": "إشارة خاصة",
"status.edit": "تعديل",
"status.edited": "عُدّل في {date}",
"status.edited_x_times": "عُدّل {count, plural, zero {} one {مرةً واحدة} two {مرّتان} few {{count} مرات} many {{count} مرة} other {{count} مرة}}",
@ -597,6 +600,7 @@
"status.show_more": "أظهر المزيد",
"status.show_more_all": "توسيع الكل",
"status.show_original": "إظهار الأصل",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "ترجم",
"status.translated_from_with": "مترجم من {lang} باستخدام {provider}",
"status.uncached_media_warning": "غير متوفر",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "معاينة ({ratio})",
"upload_progress.label": "يرفع...",
"upload_progress.processing": "تتم المعالجة…",
"username.taken": "اسم المستخدم هذا مأخوذ. الرجاء محاولة اسم اخر",
"video.close": "إغلاق الفيديو",
"video.download": "تنزيل الملف",
"video.exit_fullscreen": "الخروج من وضع الشاشة المليئة",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Síguete",
"account.go_to_profile": "Go to profile",
"account.hide_reblogs": "Anubrir los artículos compartíos de @{name}",
"account.in_memoriam": "N'alcordanza.",
"account.joined_short": "Data de xunión",
"account.languages": "Change subscribed languages",
"account.link_verified_on": "Ownership of this link was checked on {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing",
"password_confirmation.exceeds_maxlength": "La contraseña de confirmación supera la llongura de caráuteres máxima",
"password_confirmation.mismatching": "La contraseña de confirmación nun concasa",
"picture_in_picture.restore": "Put it back",
"poll.closed": "Finó",
"poll.refresh": "Anovar",
@ -597,6 +600,7 @@
"status.show_more": "Amosar más",
"status.show_more_all": "Show more for all",
"status.show_original": "Amosar l'orixinal",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Traducir",
"status.translated_from_with": "Tradúxose del {lang} con {provider}",
"status.uncached_media_warning": "El conteníu nun ta disponible",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Xubiendo…",
"upload_progress.processing": "Procesando…",
"username.taken": "That username is taken. Try another",
"video.close": "Zarrar el videu",
"video.download": "Baxar el ficheru",
"video.exit_fullscreen": "Exit full screen",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Падпісаны на вас",
"account.go_to_profile": "Перайсці да профілю",
"account.hide_reblogs": "Схаваць пашырэнні ад @{name}",
"account.in_memoriam": "У памяць.",
"account.joined_short": "Далучыўся",
"account.languages": "Змяніць выбраныя мовы",
"account.link_verified_on": "Права ўласнасці на гэтую спасылку праверана {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Уключыць апавяшчэнні на працоўным стале",
"notifications_permission_banner.how_to_control": "Каб атрымліваць апавяшчэнні, калі Mastodon не адкрыты, уключыце апавяшчэнні працоўнага стала. Вы зможаце дакладна кантраляваць, якія падзеі будуць ствараць апавяшчэнні з дапамогай {icon} кнопкі, як толькі яны будуць уключаны.",
"notifications_permission_banner.title": "Не прапусціце нічога",
"password_confirmation.exceeds_maxlength": "Пароль пацьверджання перавышае максімальна дапушчальную даўжыню",
"password_confirmation.mismatching": "Пароль пацьверджання не супадае",
"picture_in_picture.restore": "Вярніце назад",
"poll.closed": "Закрыта",
"poll.refresh": "Абнавіць",
@ -597,6 +600,7 @@
"status.show_more": "Паказаць болей",
"status.show_more_all": "Разгарнуць усё",
"status.show_original": "Паказаць арыгінал",
"status.title.with_attachments": "{user} апублікаваў {attachmentCount, plural, one {укладанне} other {{attachmentCount} укладанні}}",
"status.translate": "Перакласці",
"status.translated_from_with": "Перакладзена з {lang} з дапамогай {provider}",
"status.uncached_media_warning": "Недаступна",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Перадпрагляд ({ratio})",
"upload_progress.label": "Запампоўванне...",
"upload_progress.processing": "Апрацоўка…",
"username.taken": "Гэта імя карыстальніка занята. Паспрабуйце іншае",
"video.close": "Закрыць відэа",
"video.download": "Спампаваць файл",
"video.exit_fullscreen": "Выйсці з поўнаэкраннага рэжыму",

View file

@ -24,7 +24,7 @@
"account.disable_notifications": "Сприране на известия при публикуване от @{name}",
"account.domain_blocked": "Блокиран домейн",
"account.edit_profile": "Редактиране на профила",
"account.enable_notifications": "Известявайте ме при публикация от {name}",
"account.enable_notifications": "Известяване при публикуване от @{name}",
"account.endorse": "Характеристика на профила",
"account.featured_tags.last_status_at": "Последна публикация на {date}",
"account.featured_tags.last_status_never": "Няма публикации",
@ -33,12 +33,13 @@
"account.followers": "Последователи",
"account.followers.empty": "Още никой не следва потребителя.",
"account.followers_counter": "{count, plural, one {{counter} последовател} other {{counter} последователи}}",
"account.following": "Последвани",
"account.following": "Последвано",
"account.following_counter": "{count, plural, one {{counter} последван} other {{counter} последвани}}",
"account.follows.empty": "Потребителят още никого не следва.",
"account.follows_you": "Следва ви",
"account.go_to_profile": "Към профила",
"account.hide_reblogs": "Скриване на подсилвания от @{name}",
"account.in_memoriam": "В памет на.",
"account.joined_short": "Дата на присъединяване",
"account.languages": "Промяна на езиците, за които сте абонирани",
"account.link_verified_on": "Собствеността върху тази връзка е проверена на {date}",
@ -145,7 +146,7 @@
"compose_form.sensitive.hide": "{count, plural, one {Маркиране на мултимедията като деликатна} other {Маркиране на мултимедиите като деликатни}}",
"compose_form.sensitive.marked": "{count, plural, one {мултимедия е означена като деликатна} other {мултимедии са означени като деликатни}}",
"compose_form.sensitive.unmarked": "{count, plural, one {Мултимедията не е маркирана като деликатна} other {Мултимедиите не са маркирани като деликатни}}",
"compose_form.spoiler.marked": "Премахване на предупреждението за съдържание",
"compose_form.spoiler.marked": "Отстраняване на предупреждение за съдържание",
"compose_form.spoiler.unmarked": "Добавяне на предупреждение за съдържание",
"compose_form.spoiler_placeholder": "Тук напишете предупреждението си",
"confirmation_modal.cancel": "Отказ",
@ -153,11 +154,11 @@
"confirmations.block.confirm": "Блокиране",
"confirmations.block.message": "Наистина ли искате да блокирате {name}?",
"confirmations.cancel_follow_request.confirm": "Оттегляне на заявката",
"confirmations.cancel_follow_request.message": "Наистина ли искате да оттеглите заявката си да последвате {name}?",
"confirmations.cancel_follow_request.message": "Наистина ли искате да оттеглите заявката си за последване на {name}?",
"confirmations.delete.confirm": "Изтриване",
"confirmations.delete.message": "Наистина ли искате да изтриете публикацията?",
"confirmations.delete_list.confirm": "Изтриване",
"confirmations.delete_list.message": "Наистина ли искате да изтриете завинаги този списък?",
"confirmations.delete_list.message": "Наистина ли искате да изтриете завинаги списъка?",
"confirmations.discard_edit_media.confirm": "Отхвърляне",
"confirmations.discard_edit_media.message": "Не сте запазили промени на описанието или огледа на мултимедията, отхвърляте ли ги?",
"confirmations.domain_block.confirm": "Блокиране на целия домейн",
@ -192,7 +193,7 @@
"dismissable_banner.explore_links": "Тези новини се разказват от хората в този и други сървъри на децентрализираната мрежа точно сега.",
"dismissable_banner.explore_statuses": "Тези публикации от този и други сървъри в децентрализираната мрежа набират популярност сега на този сървър.",
"dismissable_banner.explore_tags": "Тези хаштагове сега набират популярност сред хората в този и други сървъри на децентрализирата мрежа.",
"dismissable_banner.public_timeline": "Това са най-скорошните публични публикации, създадени на този сървър, както и на други сървъри на децентрализираната мрежа, за които този сървър знае.",
"dismissable_banner.public_timeline": "Ето най-скорошните обществени публикации от хора в този и други сървъри на децентрализираната мрежа, за които този сървър знае.",
"embed.instructions": "Вградете публикацията в уебсайта си, копирайки кода долу.",
"embed.preview": "Ето как ще изглежда:",
"emoji_button.activity": "Дейност",
@ -293,7 +294,7 @@
"home.column_settings.show_replies": "Показване на отговорите",
"home.hide_announcements": "Скриване на оповестяванията",
"home.show_announcements": "Показване на оповестяванията",
"interaction_modal.description.favourite": "С акаунт в Mastodon може да направите тази публикация като любима, за да известите автора, че я цените, и да я запазите за по-късно.",
"interaction_modal.description.favourite": "С акаунт в Mastodon може да направите тази публикация като любима, за да позволите на автора да узнае, че я цените, и да я запазите за по-късно.",
"interaction_modal.description.follow": "С акаунт в Mastodon може да последвате {name}, за да получавате публикациите от този акаунт в началния си инфоканал.",
"interaction_modal.description.reblog": "С акаунт в Mastodon може да подсилите тази публикация, за да я споделите с последователите си.",
"interaction_modal.description.reply": "С акаунт в Mastodon може да добавите отговор към тази публикация.",
@ -317,7 +318,7 @@
"keyboard_shortcuts.direct": "за отваряне на колоната с частни споменавания",
"keyboard_shortcuts.down": "Преместване надолу в списъка",
"keyboard_shortcuts.enter": "Отваряне на публикация",
"keyboard_shortcuts.favourite": "Към любими публикации",
"keyboard_shortcuts.favourite": "Любима публикация",
"keyboard_shortcuts.favourites": "Отваряне на списъка с любими",
"keyboard_shortcuts.federated": "Отваряне на федерирания инфопоток",
"keyboard_shortcuts.heading": "Клавишни съчетания",
@ -329,7 +330,7 @@
"keyboard_shortcuts.muted": "Отваряне на списъка със заглушени потребители",
"keyboard_shortcuts.my_profile": "Отваряне на профила ви",
"keyboard_shortcuts.notifications": "Отваряне на колоната с известия",
"keyboard_shortcuts.open_media": "Отваряне на мултимедия",
"keyboard_shortcuts.open_media": "Отваряне на мултимедията",
"keyboard_shortcuts.pinned": "Отваряне на списъка със закачени публикации",
"keyboard_shortcuts.profile": "Отваряне на профила на автора",
"keyboard_shortcuts.reply": "Отговаряне на публикация",
@ -372,7 +373,7 @@
"navigation_bar.about": "Относно",
"navigation_bar.blocks": "Блокирани потребители",
"navigation_bar.bookmarks": "Отметки",
"navigation_bar.community_timeline": "Локален инфопоток",
"navigation_bar.community_timeline": "Локална часова ос",
"navigation_bar.compose": "Съставяне на нова публикация",
"navigation_bar.direct": "Частни споменавания",
"navigation_bar.discover": "Откриване",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Включване на известията на работния плот",
"notifications_permission_banner.how_to_control": "За да получавате известия, когато Mastodon не е отворен, включете известията на работния плот. Може да управлявате точно кои видове взаимодействия пораждат известия на работния плот чрез бутона {icon} по-горе, след като бъдат включени.",
"notifications_permission_banner.title": "Никога не пропускате нещо",
"password_confirmation.exceeds_maxlength": "Потвърждаването на паролата превишава максимално допустимата дължина за парола",
"password_confirmation.mismatching": "Потвърждаването на паролата не съвпада",
"picture_in_picture.restore": "Връщане обратно",
"poll.closed": "Затворено",
"poll.refresh": "Опресняване",
@ -498,11 +501,11 @@
"report.reasons.dislike": "Не ми харесва",
"report.reasons.dislike_description": "Не е нещо, което искате да виждате",
"report.reasons.other": "Нещо друго е",
"report.reasons.other_description": "Проблемът не попада в нито една от другите категории",
"report.reasons.other_description": "Проблемът не попада в нито една от останалите категории",
"report.reasons.spam": "Спам е",
"report.reasons.spam_description": "Зловредни връзки, фалшиви ангажименти, или повтарящи се отговори",
"report.reasons.violation": "Нарушава правилата на сървъра",
"report.reasons.violation_description": "Знаете, че нарушава особени правила",
"report.reasons.violation_description": "Наясно сте, че нарушава особени правила",
"report.rules.subtitle": "Изберете всичко, което да се прилага",
"report.rules.title": "Кои правила са нарушени?",
"report.statuses.subtitle": "Изберете всичко, което да се прилага",
@ -535,7 +538,7 @@
"search_results.hashtags": "Хаштагове",
"search_results.nothing_found": "Не може да се намери каквото и да било за тези термини при търсене",
"search_results.statuses": "Публикации",
"search_results.statuses_fts_disabled": "Търсенето на публикации по съдържанието им не е включено в този сървър на Mastodon.",
"search_results.statuses_fts_disabled": "Търсенето на публикации по съдържанието им не се включва в този сървър на Mastodon.",
"search_results.title": "Търсене за {q}",
"search_results.total": "{count, number} {count, plural, one {резултат} other {резултата}}",
"server_banner.about_active_users": "Ползващите сървъра през последните 30 дни (дейните месечно потребители)",
@ -553,7 +556,7 @@
"status.block": "Блокиране на @{name}",
"status.bookmark": "Отмятане",
"status.cancel_reblog_private": "Край на подсилването",
"status.cannot_reblog": "Публикация не може да се подсили",
"status.cannot_reblog": "Публикацията не може да се подсилва",
"status.copy": "Копиране на връзката към публикация",
"status.delete": "Изтриване",
"status.detailed_status": "Подробен изглед на разговора",
@ -597,6 +600,7 @@
"status.show_more": "Показване на повече",
"status.show_more_all": "Показване на повече за всички",
"status.show_original": "Показване на първообраза",
"status.title.with_attachments": "{user} публикува {attachmentCount, plural, one {прикачване} other {{attachmentCount} прикачвания}}",
"status.translate": "Превод",
"status.translated_from_with": "Преведено от {lang}, използвайки {provider}",
"status.uncached_media_warning": "Не е налично",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Нагледно ({ratio})",
"upload_progress.label": "Качване...",
"upload_progress.processing": "Обработка…",
"username.taken": "Това потребителско име е взето. Опитайте друго",
"video.close": "Затваряне на видеото",
"video.download": "Изтегляне на файла",
"video.exit_fullscreen": "Изход от цял екран",

View file

@ -1,15 +1,15 @@
{
"about.blocks": "Moderated servers",
"about.blocks": "অনুপলব্ধ সার্ভার",
"about.contact": "যোগাযোগ:",
"about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Reason not available",
"about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.",
"about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.",
"about.domain_blocks.silenced.title": "Limited",
"about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.",
"about.domain_blocks.suspended.title": "Suspended",
"about.not_available": "This information has not been made available on this server.",
"about.powered_by": "Decentralized social media powered by {mastodon}",
"about.disclaimer": "ম্যাস্টোডন একটি ফ্রি, ওপেন সোর্স সফটওয়্যার এবং ম্যাস্টোডন জিজিএমবিএইচ এর একটি ট্রেডমার্ক।",
"about.domain_blocks.no_reason_available": "কারণ দর্শানো যাচ্ছে না",
"about.domain_blocks.preamble": "ম্যাস্টোডন সাধারণত আপনাকে ফেদিভার্স এ অন্য কোনও সার্ভারের ব্যবহারকারীদের থেকে সামগ্রী দেখতে এবং তাদের সাথে আলাপচারিতা করার সুযোগ দেয়। এই ব্যতিক্রম যে এই বিশেষ সার্ভারে তৈরি করা হয়েছে।",
"about.domain_blocks.silenced.explanation": "আপনি সাধারণত এই সার্ভার থেকে প্রোফাইল এবং বিষয়বস্তু দেখতে পারবেন না, যদি না আপনি স্পষ্টভাবে এটি দেখেন বা অনুসরণ করে এটি নির্বাচন করেন৷",
"about.domain_blocks.silenced.title": "সীমিত",
"about.domain_blocks.suspended.explanation": "এই সার্ভার থেকে কোনও ডেটা প্রক্রিয়াজাতকরণ, সংরক্ষণ বা আদান-প্রদান করা হবে না, তাই এই সার্ভার ব্যবহারকারীদের সাথে কোনও মিথস্ক্রিয়া বা যোগাযোগকে অসম্ভব করে তুলেছে।",
"about.domain_blocks.suspended.title": "সাসপেন্ড করা হয়েছে",
"about.not_available": "এই তথ্য এই সার্ভারে উপলব্ধ করা হয়নি।",
"about.powered_by": "{mastodon} দ্বারা তৈরি বিকেন্দ্রীভূত সামাজিক মিডিয়া।",
"about.rules": "সার্ভারের নিয়মাবলী",
"account.account_note_header": "বিজ্ঞপ্তি",
"account.add_or_remove_from_list": "তালিকাতে যোগ বা অপসারণ করো",
@ -19,37 +19,38 @@
"account.block_domain": "{domain} থেকে সব লুকাও",
"account.blocked": "অবরুদ্ধ",
"account.browse_more_on_origin_server": "মূল প্রোফাইলটিতে আরও ব্রাউজ করুন",
"account.cancel_follow_request": "Withdraw follow request",
"account.direct": "Privately mention @{name}",
"account.disable_notifications": "Stop notifying me when @{name} posts",
"account.cancel_follow_request": "অনুসরণ অনুরোধ প্রত্যাহার করুন",
"account.direct": "গোপনে মেনশন করুন @{name}",
"account.disable_notifications": "আমাকে জানানো বন্ধ করো যখন @{name} পোস্ট করবে",
"account.domain_blocked": "ডোমেন গোপন করুন",
"account.edit_profile": "প্রোফাইল পরিবর্তন করুন",
"account.enable_notifications": "Notify me when @{name} posts",
"account.enable_notifications": "আমাকে জানাবে যখন @{name} পোস্ট করবে",
"account.endorse": "নিজের পাতায় দেখান",
"account.featured_tags.last_status_at": "Last post on {date}",
"account.featured_tags.last_status_never": "No posts",
"account.featured_tags.title": "{name}'s featured hashtags",
"account.featured_tags.last_status_at": "{date} এ সর্বশেষ পোস্ট",
"account.featured_tags.last_status_never": "কোনো পোস্ট নেই",
"account.featured_tags.title": "{name}-এর বৈশিষ্ট্যযুক্ত হ্যাশট্যাগগুলি৷",
"account.follow": "অনুসরণ",
"account.followers": "অনুসরণকারী",
"account.followers.empty": "এই ব্যক্তিকে এখনো কেউ অনুসরণ করে না।",
"account.followers_counter": "{count, plural,one {{counter} জন অনুসরণকারী } other {{counter} জন অনুসরণকারী}}",
"account.following": "Following",
"account.following": "অনুসরণ করা হচ্ছে",
"account.following_counter": "{count, plural,one {{counter} জনকে অনুসরণ} other {{counter} জনকে অনুসরণ}}",
"account.follows.empty": "এই সদস্য কাওকে এখনো অনুসরণ করেন না.",
"account.follows_you": "তোমাকে অনুসরণ করে",
"account.go_to_profile": "Go to profile",
"account.go_to_profile": "প্রোফাইলে যান",
"account.hide_reblogs": "@{name}'র সমর্থনগুলি লুকিয়ে ফেলুন",
"account.joined_short": "Joined",
"account.languages": "Change subscribed languages",
"account.in_memoriam": "স্মৃতিসৌধে।",
"account.joined_short": "যোগ দিয়েছেন",
"account.languages": "সাবস্ক্রাইব করা ভাষা পরিবর্তন করুন",
"account.link_verified_on": "এই লিংকের মালিকানা চেক করা হয়েছে {date} তারিখে",
"account.locked_info": "এই নিবন্ধনের গোপনীয়তার ক্ষেত্র তালা দেওয়া আছে। নিবন্ধনকারী অনুসরণ করার অনুমতি যাদেরকে দেবেন, শুধু তারাই অনুসরণ করতে পারবেন।",
"account.media": "মিডিয়া",
"account.mention": "@{name} কে উল্লেখ করুন",
"account.moved_to": "{name} has indicated that their new account is now:",
"account.moved_to": "{name} নির্দেশ করেছে যে তাদের নতুন অ্যাকাউন্ট এখন হলো:",
"account.mute": "@{name} কে নিঃশব্দ করুন",
"account.mute_notifications": "@{name} র প্রজ্ঞাপন আপনার কাছে নিঃশব্দ করুন",
"account.muted": "নিঃশব্দ",
"account.open_original_page": "Open original page",
"account.open_original_page": "মূল পৃষ্ঠা খুলুন",
"account.posts": "টুট",
"account.posts_with_replies": "টুট এবং মতামত",
"account.report": "@{name} কে রিপোর্ট করুন",
@ -60,49 +61,49 @@
"account.statuses_counter": "{count, plural,one {{counter} টুট} other {{counter} টুট}}",
"account.unblock": "@{name} র কার্যকলাপ দেখুন",
"account.unblock_domain": "{domain} কে আবার দেখুন",
"account.unblock_short": "Unblock",
"account.unblock_short": "আনব্লক করুন",
"account.unendorse": "আপনার নিজের পাতায় এটা দেখবেন না",
"account.unfollow": "অনুসরণ করো না",
"account.unmute": "@{name} র কার্যকলাপ আবার দেখুন",
"account.unmute_notifications": "@{name} র প্রজ্ঞাপন দেখুন",
"account.unmute_short": "Unmute",
"account.unmute_short": "আনমিউট করুন",
"account_note.placeholder": "নোট যোগ করতে ক্লিক করুন",
"admin.dashboard.daily_retention": "User retention rate by day after sign-up",
"admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
"admin.dashboard.retention.average": "Average",
"admin.dashboard.retention.cohort": "Sign-up month",
"admin.dashboard.daily_retention": "সাইন আপের পর দিনে ব্যবহারকারীর ধরে রাখার হার",
"admin.dashboard.monthly_retention": "সাইন আপের পর, দিনে ব্যবহারকারীর ধরে রাখার হার",
"admin.dashboard.retention.average": "গড়",
"admin.dashboard.retention.cohort": "সাইন আপের মাস",
"admin.dashboard.retention.cohort_size": "নতুন ব্যবহারকারী",
"alert.rate_limited.message": "{retry_time, time, medium} -এর পরে আবার প্রচেষ্টা করুন।",
"alert.rate_limited.title": "হার সীমিত",
"alert.unexpected.message": "সমস্যা অপ্রত্যাশিত.",
"alert.unexpected.title": "ওহো!",
"announcement.announcement": "ঘোষণা",
"attachments_list.unprocessed": "(unprocessed)",
"audio.hide": "Hide audio",
"attachments_list.unprocessed": "(প্রক্রিয়া করা যায়নি)",
"audio.hide": "অডিও লুকান",
"autosuggest_hashtag.per_week": "প্রতি সপ্তাহে {count}",
"boost_modal.combo": "পরেরবার আপনি {combo} টিপলে এটি আর আসবে না",
"bundle_column_error.copy_stacktrace": "Copy error report",
"bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.",
"bundle_column_error.error.title": "Oh, no!",
"bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.",
"bundle_column_error.network.title": "Network error",
"bundle_column_error.copy_stacktrace": "এরর রিপোর্ট কপি করুন",
"bundle_column_error.error.body": "অনুরোধ করা পৃষ্ঠাটি রেন্ডার করা যায়নি। এটি আমাদের কোডে একটি বাগ বা ব্রাউজার সামঞ্জস্যের সমস্যার কারণে হতে পারে।",
"bundle_column_error.error.title": "হায়, না!",
"bundle_column_error.network.body": "এই পৃষ্ঠাটি লোড করার চেষ্টা করার সময় একটি ত্রুটি ছিল৷ এটি আপনার ইন্টারনেট সংযোগ বা এই সার্ভারের সাথে একটি অস্থায়ী সমস্যার কারণে হতে পারে৷",
"bundle_column_error.network.title": "নেটওয়ার্ক ত্রুটি",
"bundle_column_error.retry": "আবার চেষ্টা করুন",
"bundle_column_error.return": "Go back home",
"bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?",
"bundle_column_error.routing.title": "404",
"bundle_column_error.return": "হোমে ফিরে যান",
"bundle_column_error.routing.body": "অনুরোধ করা পৃষ্ঠা খুঁজে পাওয়া যাবে না। আপনি কি নিশ্চিত যে ঠিকানা বারে ইউআরএলটি সঠিক?",
"bundle_column_error.routing.title": "",
"bundle_modal_error.close": "বন্ধ করুন",
"bundle_modal_error.message": "এই অংশটি দেখাতে যেয়ে কোনো সমস্যা হয়েছে।.",
"bundle_modal_error.retry": "আবার চেষ্টা করুন",
"closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.",
"closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.",
"closed_registrations_modal.find_another_server": "Find another server",
"closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!",
"closed_registrations_modal.title": "Signing up on Mastodon",
"column.about": "About",
"closed_registrations.other_server_instructions": "মাস্টোডন বিকেন্দ্রীভূত হওয়ায়, আপনি অন্য সার্ভারে একটি অ্যাকাউন্ট তৈরি করতে পারেন এবং এখনও এটির সাথে যোগাযোগ করতে পারেন।",
"closed_registrations_modal.description": "{domain} এ একটি অ্যাকাউন্ট তৈরি করা বর্তমানে সম্ভব নয়, তবে দয়া করে মনে রাখবেন যে ম্যাস্টোডন ব্যবহার করার জন্য আপনার বিশেষভাবে {domain} এ কোনো অ্যাকাউন্টের প্রয়োজন নেই৷",
"closed_registrations_modal.find_another_server": "অন্য একটি সার্ভার খুজুন",
"closed_registrations_modal.preamble": "ম্যাস্টোডন বিকেন্দ্রীকৃত, তাই আপনি যেখানেই আপনার অ্যাকাউন্ট তৈরি করুন না কেন, আপনি এই সার্ভারে যে কাউকে অনুসরণ করতে এবং যোগাযোগ করতে সক্ষম হবেন। এমনকি আপনি এটি স্ব-হোস্ট করতে পারেন!",
"closed_registrations_modal.title": "ম্যাস্টোডন এ সাইন আপ করা হচ্ছে",
"column.about": "সম্পর্কে",
"column.blocks": "যাদের ব্লক করা হয়েছে",
"column.bookmarks": "বুকমার্ক",
"column.community": "স্থানীয় সময়সারি",
"column.direct": "Private mentions",
"column.direct": "গোপনে মেনশন করুন",
"column.directory": "প্রোফাইল ব্রাউজ করুন",
"column.domain_blocks": "লুকোনো ডোমেনগুলি",
"column.favourites": "পছন্দের গুলো",
@ -125,10 +126,10 @@
"community.column_settings.media_only": "শুধুমাত্র ছবি বা ভিডিও",
"community.column_settings.remote_only": "শুধুমাত্র দূরবর্তী",
"compose.language.change": "ভাষা পরিবর্তন করুন",
"compose.language.search": "Search languages...",
"compose.language.search": "ভাষা অনুসন্ধান করুন...",
"compose_form.direct_message_warning_learn_more": "আরো জানুন",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
"compose_form.hashtag_warning": "এই পোস্টটি কোনো হ্যাশট্যাগের বিষয় নয় কারণ এটি সর্বজনীনভাবে উপলব্ধ নয়। শুধুমাত্র জনসাধারণের কাছে পোস্ট করা বার্তাই হ্যাশট্যাগ দ্বারা অনুসন্ধান করা যেতে পারে।",
"compose_form.lock_disclaimer": "আপনার নিবন্ধনে তালা দেওয়া নেই, যে কেও আপনাকে অনুসরণ করতে পারবে এবং অনুশারকদের জন্য লেখা দেখতে পারবে।",
"compose_form.lock_disclaimer.lock": "তালা দেওয়া",
"compose_form.placeholder": "আপনি কি ভাবছেন ?",
@ -139,9 +140,9 @@
"compose_form.poll.switch_to_multiple": "একাধিক পছন্দ অনুমতি দেওয়ার জন্য পোল পরিবর্তন করুন",
"compose_form.poll.switch_to_single": "একটি একক পছন্দের অনুমতি দেওয়ার জন্য পোল পরিবর্তন করুন",
"compose_form.publish": "প্রকাশ করুন",
"compose_form.publish_form": "Publish",
"compose_form.publish_form": "প্রকাশ করুন",
"compose_form.publish_loud": "{publish}!",
"compose_form.save_changes": "Save changes",
"compose_form.save_changes": "পরিবর্তনগুলো প্রকাশ করুন",
"compose_form.sensitive.hide": "এই ছবি বা ভিডিওটি সংবেদনশীল হিসেবে চিহ্নিত করতে",
"compose_form.sensitive.marked": "এই ছবি বা ভিডিওটি সংবেদনশীল হিসেবে চিহ্নিত করা হয়েছে",
"compose_form.sensitive.unmarked": "এই ছবি বা ভিডিওটি সংবেদনশীল হিসেবে চিহ্নিত করা হয়নি",
@ -152,8 +153,8 @@
"confirmations.block.block_and_report": "ব্লক করুন এবং রিপোর্ট করুন",
"confirmations.block.confirm": "ব্লক করুন",
"confirmations.block.message": "আপনি কি নিশ্চিত {name} কে ব্লক করতে চান?",
"confirmations.cancel_follow_request.confirm": "Withdraw request",
"confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?",
"confirmations.cancel_follow_request.confirm": "অনুরোধ বাতিল করুন",
"confirmations.cancel_follow_request.message": "আপনি কি নিশ্চিত যে আপনি {name} কে অনুসরণ করার অনুরোধ প্রত্যাহার করতে চান?",
"confirmations.delete.confirm": "মুছে ফেলুন",
"confirmations.delete.message": "আপনি কি নিশ্চিত যে এই লেখাটি মুছে ফেলতে চান ?",
"confirmations.delete_list.confirm": "মুছে ফেলুন",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Put it back",
"poll.closed": "বন্ধ",
"poll.refresh": "বদলেছে কিনা দেখতে",
@ -597,6 +600,7 @@
"status.show_more": "আরো দেখাতে",
"status.show_more_all": "সবগুলোতে আরো দেখতে",
"status.show_original": "Show original",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Translate",
"status.translated_from_with": "Translated from {lang} using {provider}",
"status.uncached_media_warning": "পাওয়া যাচ্ছে না",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "পূর্বরূপ({ratio})",
"upload_progress.label": "যুক্ত করতে পাঠানো হচ্ছে...",
"upload_progress.processing": "Processing…",
"username.taken": "That username is taken. Try another",
"video.close": "ভিডিওটি বন্ধ করতে",
"video.download": "ফাইলটি ডাউনলোড করুন",
"video.exit_fullscreen": "পূর্ণ পর্দা থেকে বাইরে বের হতে",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Ho heuilh",
"account.go_to_profile": "Gwelet ar profil",
"account.hide_reblogs": "Kuzh skignadennoù gant @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Amañ abaoe",
"account.languages": "Cheñch ar yezhoù koumanantet",
"account.link_verified_on": "Gwiriet eo bet perc'hennidigezh al liamm d'an deiziad-mañ : {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Lezel kemennoù war ar burev",
"notifications_permission_banner.how_to_control": "Evit reseviñ kemennoù pa ne vez ket digoret Mastodon, lezelit kemennoù war ar burev. Gallout a rit kontrollañ peseurt eskemmoù a c'henel kemennoù war ar burev gant ar {icon} nozelenn a-us kentre ma'z int lezelet.",
"notifications_permission_banner.title": "Na vankit netra morse",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Adlakaat",
"poll.closed": "Serret",
"poll.refresh": "Azbevaat",
@ -597,6 +600,7 @@
"status.show_more": "Diskouez muioc'h",
"status.show_more_all": "Diskouez miuoc'h evit an holl",
"status.show_original": "Diskouez hini orin",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Treiñ",
"status.translated_from_with": "Troet diwar {lang} gant {provider}",
"status.uncached_media_warning": "Dihegerz",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Rakwel ({ratio})",
"upload_progress.label": "O pellgargañ...",
"upload_progress.processing": "War ober…",
"username.taken": "That username is taken. Try another",
"video.close": "Serriñ ar video",
"video.download": "Pellgargañ ar restr",
"video.exit_fullscreen": "Kuitaat ar mod skramm leun",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Follows you",
"account.go_to_profile": "Go to profile",
"account.hide_reblogs": "Hide boosts from @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Joined",
"account.languages": "Change subscribed languages",
"account.link_verified_on": "Ownership of this link was checked on {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Put it back",
"poll.closed": "Closed",
"poll.refresh": "Refresh",
@ -597,6 +600,7 @@
"status.show_more": "Show more",
"status.show_more_all": "Show more for all",
"status.show_original": "Show original",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Translate",
"status.translated_from_with": "Translated from {lang} using {provider}",
"status.uncached_media_warning": "Not available",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading…",
"upload_progress.processing": "Processing…",
"username.taken": "That username is taken. Try another",
"video.close": "Close video",
"video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Et segueix",
"account.go_to_profile": "Vés al perfil",
"account.hide_reblogs": "Amaga els impulsos de @{name}",
"account.in_memoriam": "En Memòria.",
"account.joined_short": "S'hi va unir",
"account.languages": "Canvia les llengües subscrites",
"account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Activa les notificacions descriptori",
"notifications_permission_banner.how_to_control": "Per a rebre notificacions quan Mastodon no és obert cal activar les notificacions descriptori. Pots controlar amb precisió quins tipus dinteraccions generen notificacions descriptori després dactivar el botó {icon} de dalt.",
"notifications_permission_banner.title": "No et perdis mai res",
"password_confirmation.exceeds_maxlength": "La confirmació de la contrasenya excedeix la longitud màxima",
"password_confirmation.mismatching": "La confirmació de contrasenya no és coincident",
"picture_in_picture.restore": "Retornal",
"poll.closed": "Finalitzada",
"poll.refresh": "Actualitza",
@ -597,6 +600,7 @@
"status.show_more": "Mostra'n més",
"status.show_more_all": "Mostra'n més per a tot",
"status.show_original": "Mostra l'original",
"status.title.with_attachments": "{user} ha publicat {attachmentCount, plural, one {un adjunt} other {{attachmentCount} adjunts}}",
"status.translate": "Tradueix",
"status.translated_from_with": "Traduït del {lang} fent servir {provider}",
"status.uncached_media_warning": "No està disponible",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Previsualitza ({ratio})",
"upload_progress.label": "Es puja...",
"upload_progress.processing": "En procés…",
"username.taken": "Aquest nom d'usuari ja està agafat. Prova un altre",
"video.close": "Tanca el vídeo",
"video.download": "Descarrega larxiu",
"video.exit_fullscreen": "Surt de la pantalla completa",

View file

@ -39,6 +39,7 @@
"account.follows_you": "شوێنت دەکەوێت",
"account.go_to_profile": "بڕۆ بۆ پڕۆفایلی",
"account.hide_reblogs": "داشاردنی بووستەکان لە @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "بەشداری کردووە",
"account.languages": "گۆڕینی زمانە بەشداربووەکان",
"account.link_verified_on": "خاوەنداریەتی ئەم لینکە لە {date} چێک کراوە",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "چالاککردنی ئاگانامەکانی دێسکتۆپ",
"notifications_permission_banner.how_to_control": "بۆ وەرگرتنی ئاگانامەکان کاتێک ماستۆدۆن نەکراوەیە، ئاگانامەکانی دێسکتۆپ چالاک بکە. دەتوانیت بە وردی کۆنترۆڵی جۆری کارلێکەکان بکەیت کە ئاگانامەکانی دێسکتۆپ دروست دەکەن لە ڕێگەی دوگمەی {icon} لەسەرەوە کاتێک چالاک دەکرێن.",
"notifications_permission_banner.title": "هەرگیز شتێک لە دەست مەدە",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "بیگەڕێنەوە",
"poll.closed": "دابخە",
"poll.refresh": "نوێکردنەوە",
@ -597,6 +600,7 @@
"status.show_more": "زیاتر نیشان بدە",
"status.show_more_all": "زیاتر نیشان بدە بۆ هەمووی",
"status.show_original": "پیشاندانی شێوه‌ی ڕاسته‌قینه‌",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "وەریبگێرە",
"status.translated_from_with": "لە {lang} وەرگێڕدراوە بە بەکارهێنانی {provider}",
"status.uncached_media_warning": "بەردەست نیە",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "پێشبینین ({ratio})",
"upload_progress.label": "بار دەکرێت...",
"upload_progress.processing": "جێبەجێکردن...",
"username.taken": "That username is taken. Try another",
"video.close": "داخستنی ڤیدیۆ",
"video.download": "داگرتنی فایل",
"video.exit_fullscreen": "دەرچوون لە پڕ شاشە",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Vi seguita",
"account.go_to_profile": "Go to profile",
"account.hide_reblogs": "Piattà spartere da @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Joined",
"account.languages": "Change subscribed languages",
"account.link_verified_on": "A prupietà di stu ligame hè stata verificata u {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Attivà e nutificazione nant'à l'urdinatore",
"notifications_permission_banner.how_to_control": "Per riceve nutificazione quandu Mastodon ùn hè micca aperta, attivate e nutificazione nant'à l'urdinatore. Pudete decide quali tippi d'interazione anu da mandà ste nutificazione cù u buttone {icon} quì sopra quandu saranu attivate.",
"notifications_permission_banner.title": "Ùn mancate mai nunda",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Rimette in piazza",
"poll.closed": "Chjosu",
"poll.refresh": "Attualizà",
@ -597,6 +600,7 @@
"status.show_more": "Slibrà",
"status.show_more_all": "Slibrà tuttu",
"status.show_original": "Show original",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Translate",
"status.translated_from_with": "Translated from {lang} using {provider}",
"status.uncached_media_warning": "Micca dispunibule",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Vista ({ratio})",
"upload_progress.label": "Caricamentu...",
"upload_progress.processing": "Processing…",
"username.taken": "That username is taken. Try another",
"video.close": "Chjudà a video",
"video.download": "Scaricà fugliale",
"video.exit_fullscreen": "Caccià u pienu screnu",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Sleduje vás",
"account.go_to_profile": "Přejít na profil",
"account.hide_reblogs": "Skrýt boosty od @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Připojen/a",
"account.languages": "Změnit odebírané jazyky",
"account.link_verified_on": "Vlastnictví tohoto odkazu bylo zkontrolováno {date}",
@ -314,7 +315,7 @@
"keyboard_shortcuts.column": "Focus na sloupec",
"keyboard_shortcuts.compose": "Zaměřit se na textové pole nového příspěvku",
"keyboard_shortcuts.description": "Popis",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.direct": "otevřít sloupec soukromých zmínek",
"keyboard_shortcuts.down": "Posunout v seznamu dolů",
"keyboard_shortcuts.enter": "Otevřít příspěvek",
"keyboard_shortcuts.favourite": "Oblíbit si příspěvek",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Povolit oznámení na ploše",
"notifications_permission_banner.how_to_control": "Chcete-li dostávat oznámení, i když nemáte Mastodon otevřený, povolte oznámení na ploše. Můžete si zvolit, o kterých druzích interakcí chcete být oznámením na ploše informování pod tlačítkem {icon} výše.",
"notifications_permission_banner.title": "Nenechte si nic uniknout",
"password_confirmation.exceeds_maxlength": "Potvrzení hesla překračuje maximální délku hesla",
"password_confirmation.mismatching": "Zadaná hesla se neshodují",
"picture_in_picture.restore": "Vrátit zpět",
"poll.closed": "Uzavřeno",
"poll.refresh": "Obnovit",
@ -546,7 +549,7 @@
"server_banner.server_stats": "Statistiky serveru:",
"sign_in_banner.create_account": "Vytvořit účet",
"sign_in_banner.sign_in": "Přihlásit se",
"sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts. You can also interact from your account on a different server.",
"sign_in_banner.text": "Přihlaste se pro sledování profilů nebo hashtagů, označování oblíbených položek, sdílení a odpovídání na příspěvky. Svůj účet můžete používat k interagování i na jiném serveru.",
"status.admin_account": "Otevřít moderátorské rozhraní pro @{name}",
"status.admin_domain": "Otevřít moderátorské rozhraní pro {domain}",
"status.admin_status": "Otevřít tento příspěvek v moderátorském rozhraní",
@ -557,7 +560,7 @@
"status.copy": "Zkopírovat odkaz na příspěvek",
"status.delete": "Smazat",
"status.detailed_status": "Podrobné zobrazení konverzace",
"status.direct": "Privately mention @{name}",
"status.direct": "Soukromě zmínit @{name}",
"status.direct_indicator": "Soukromá zmínka",
"status.edit": "Upravit",
"status.edited": "Upraveno {date}",
@ -597,6 +600,7 @@
"status.show_more": "Zobrazit více",
"status.show_more_all": "Zobrazit více pro všechny",
"status.show_original": "Zobrazit originál",
"status.title.with_attachments": "{user} zveřejnil {attachmentCount, plural, one {přílohu} few {{attachmentCount} přílohy} many {{attachmentCount} příloh} other {{attachmentCount} příloh}}",
"status.translate": "Přeložit",
"status.translated_from_with": "Přeloženo z {lang} pomocí {provider}",
"status.uncached_media_warning": "Nedostupné",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Náhled ({ratio})",
"upload_progress.label": "Nahrávání...",
"upload_progress.processing": "Zpracovávání…",
"username.taken": "Toto uživatelské jméno je obsazeno. Zkuste jiné",
"video.close": "Zavřít video",
"video.download": "Stáhnout soubor",
"video.exit_fullscreen": "Ukončit režim celé obrazovky",

View file

@ -1,662 +0,0 @@
{
"about.blocks": "Moderated servers",
"about.contact": "Contact:",
"about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Reason not available",
"about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.",
"about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.",
"about.domain_blocks.silenced.title": "Limited",
"about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.",
"about.domain_blocks.suspended.title": "Suspended",
"about.not_available": "This information has not been made available on this server.",
"about.powered_by": "Decentralized social media powered by {mastodon}",
"about.rules": "Server rules",
"account.account_note_header": "Note",
"account.add_or_remove_from_list": "Add or Remove from lists",
"account.badges.bot": "Bot",
"account.badges.group": "Group",
"account.block": "Block @{name}",
"account.block_domain": "Block domain {domain}",
"account.blocked": "Blocked",
"account.browse_more_on_origin_server": "Browse more on the original profile",
"account.cancel_follow_request": "Withdraw follow request",
"account.direct": "Privately mention @{name}",
"account.disable_notifications": "Stop notifying me when @{name} posts",
"account.domain_blocked": "Domain blocked",
"account.edit_profile": "Edit profile",
"account.enable_notifications": "Notify me when @{name} posts",
"account.endorse": "Feature on profile",
"account.featured_tags.last_status_at": "Last post on {date}",
"account.featured_tags.last_status_never": "No posts",
"account.featured_tags.title": "{name}'s featured hashtags",
"account.follow": "Follow",
"account.followers": "Followers",
"account.followers.empty": "No one follows this user yet.",
"account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
"account.following": "Following",
"account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
"account.follows.empty": "This user doesn't follow anyone yet.",
"account.follows_you": "Follows you",
"account.go_to_profile": "Go to profile",
"account.hide_reblogs": "Hide boosts from @{name}",
"account.joined_short": "Joined",
"account.languages": "Change subscribed languages",
"account.link_verified_on": "Ownership of this link was checked on {date}",
"account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
"account.media": "Media",
"account.mention": "Mention @{name}",
"account.moved_to": "{name} has indicated that their new account is now:",
"account.mute": "Mute @{name}",
"account.mute_notifications": "Mute notifications from @{name}",
"account.muted": "Muted",
"account.open_original_page": "Open original page",
"account.posts": "Posts",
"account.posts_with_replies": "Posts and replies",
"account.report": "Report @{name}",
"account.requested": "Awaiting approval. Click to cancel follow request",
"account.requested_follow": "{name} has requested to follow you",
"account.share": "Share @{name}'s profile",
"account.show_reblogs": "Show boosts from @{name}",
"account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Posts}}",
"account.unblock": "Unblock @{name}",
"account.unblock_domain": "Unblock domain {domain}",
"account.unblock_short": "Unblock",
"account.unendorse": "Don't feature on profile",
"account.unfollow": "Unfollow",
"account.unmute": "Unmute @{name}",
"account.unmute_notifications": "Unmute notifications from @{name}",
"account.unmute_short": "Unmute",
"account_note.placeholder": "Click to add a note",
"admin.dashboard.daily_retention": "User retention rate by day after sign-up",
"admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
"admin.dashboard.retention.average": "Average",
"admin.dashboard.retention.cohort": "Sign-up month",
"admin.dashboard.retention.cohort_size": "New users",
"alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
"alert.rate_limited.title": "Rate limited",
"alert.unexpected.message": "An unexpected error occurred.",
"alert.unexpected.title": "Oops!",
"announcement.announcement": "Announcement",
"attachments_list.unprocessed": "(unprocessed)",
"audio.hide": "Hide audio",
"autosuggest_hashtag.per_week": "{count} per week",
"boost_modal.combo": "You can press {combo} to skip this next time",
"bundle_column_error.copy_stacktrace": "Copy error report",
"bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.",
"bundle_column_error.error.title": "Oh, no!",
"bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.",
"bundle_column_error.network.title": "Network error",
"bundle_column_error.retry": "Try again",
"bundle_column_error.return": "Go back home",
"bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?",
"bundle_column_error.routing.title": "404",
"bundle_modal_error.close": "Close",
"bundle_modal_error.message": "Something went wrong while loading this component.",
"bundle_modal_error.retry": "Try again",
"closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.",
"closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.",
"closed_registrations_modal.find_another_server": "Find another server",
"closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!",
"closed_registrations_modal.title": "Signing up on Mastodon",
"column.about": "About",
"column.blocks": "Blocked users",
"column.bookmarks": "Bookmarks",
"column.community": "Local timeline",
"column.direct": "Private mentions",
"column.directory": "Browse profiles",
"column.domain_blocks": "Blocked domains",
"column.favourites": "Favourites",
"column.follow_requests": "Follow requests",
"column.home": "Home",
"column.lists": "Lists",
"column.mutes": "Muted users",
"column.notifications": "Notifications",
"column.pins": "Pinned post",
"column.public": "Federated timeline",
"column_back_button.label": "Back",
"column_header.hide_settings": "Hide settings",
"column_header.moveLeft_settings": "Move column to the left",
"column_header.moveRight_settings": "Move column to the right",
"column_header.pin": "Pin",
"column_header.show_settings": "Show settings",
"column_header.unpin": "Unpin",
"column_subheading.settings": "Settings",
"community.column_settings.local_only": "Local only",
"community.column_settings.media_only": "Media only",
"community.column_settings.remote_only": "Remote only",
"compose.language.change": "Change language",
"compose.language.search": "Search languages...",
"compose_form.direct_message_warning_learn_more": "Learn more",
"compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
"compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "What is on your mind?",
"compose_form.poll.add_option": "Add a choice",
"compose_form.poll.duration": "Poll duration",
"compose_form.poll.option_placeholder": "Choice {number}",
"compose_form.poll.remove_option": "Remove this choice",
"compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
"compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.publish": "Publish",
"compose_form.publish_form": "Publish",
"compose_form.publish_loud": "{publish}!",
"compose_form.save_changes": "Save changes",
"compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
"compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}",
"compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}",
"compose_form.spoiler.marked": "Text is hidden behind warning",
"compose_form.spoiler.unmarked": "Text is not hidden",
"compose_form.spoiler_placeholder": "Write your warning here",
"confirmation_modal.cancel": "Cancel",
"confirmations.block.block_and_report": "Block & Report",
"confirmations.block.confirm": "Block",
"confirmations.block.message": "Are you sure you want to block {name}?",
"confirmations.cancel_follow_request.confirm": "Withdraw request",
"confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?",
"confirmations.delete.confirm": "Delete",
"confirmations.delete.message": "Are you sure you want to delete this status?",
"confirmations.delete_list.confirm": "Delete",
"confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
"confirmations.discard_edit_media.confirm": "Discard",
"confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
"confirmations.domain_block.confirm": "Hide entire domain",
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
"confirmations.edit.confirm": "Edit",
"confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
"confirmations.logout.confirm": "Log out",
"confirmations.logout.message": "Are you sure you want to log out?",
"confirmations.mute.confirm": "Mute",
"confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
"confirmations.mute.message": "Are you sure you want to mute {name}?",
"confirmations.redraft.confirm": "Delete & redraft",
"confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
"confirmations.reply.confirm": "Reply",
"confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
"confirmations.unfollow.confirm": "Unfollow",
"confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
"conversation.delete": "Delete conversation",
"conversation.mark_as_read": "Mark as read",
"conversation.open": "View conversation",
"conversation.with": "With {names}",
"copypaste.copied": "Copied",
"copypaste.copy": "Copy",
"directory.federated": "From known fediverse",
"directory.local": "From {domain} only",
"directory.new_arrivals": "New arrivals",
"directory.recently_active": "Recently active",
"disabled_account_banner.account_settings": "Account settings",
"disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
"dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
"dismissable_banner.dismiss": "Dismiss",
"dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
"dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.",
"dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
"dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.",
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
"emoji_button.clear": "Clear",
"emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
"emoji_button.not_found": "No matching emojis found",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
"emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
"emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.account_suspended": "Account suspended",
"empty_column.account_timeline": "No posts found",
"empty_column.account_unavailable": "Profile unavailable",
"empty_column.blocks": "You haven't blocked any users yet.",
"empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
"empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.",
"empty_column.domain_blocks": "There are no blocked domains yet.",
"empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
"empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.",
"empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.",
"empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
"empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.",
"empty_column.hashtag": "There is nothing in this hashtag yet.",
"empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}",
"empty_column.home.suggestions": "See some suggestions",
"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": "You don't have any lists yet. When you create one, it will show up here.",
"empty_column.mutes": "You haven't muted any users yet.",
"empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.",
"empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
"error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
"error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.",
"error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
"errors.unexpected_crash.report_issue": "Report issue",
"explore.search_results": "Search results",
"explore.suggested_follows": "For you",
"explore.title": "Explore",
"explore.trending_links": "News",
"explore.trending_statuses": "Posts",
"explore.trending_tags": "Hashtags",
"filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.",
"filter_modal.added.context_mismatch_title": "Context mismatch!",
"filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.",
"filter_modal.added.expired_title": "Expired filter!",
"filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.",
"filter_modal.added.review_and_configure_title": "Filter settings",
"filter_modal.added.settings_link": "settings page",
"filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.",
"filter_modal.added.title": "Filter added!",
"filter_modal.select_filter.context_mismatch": "does not apply to this context",
"filter_modal.select_filter.expired": "expired",
"filter_modal.select_filter.prompt_new": "New category: {name}",
"filter_modal.select_filter.search": "Search or create",
"filter_modal.select_filter.subtitle": "Use an existing category or create a new one",
"filter_modal.select_filter.title": "Filter this post",
"filter_modal.title.status": "Filter a post",
"follow_recommendations.done": "Done",
"follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
"follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
"follow_request.authorize": "Authorize",
"follow_request.reject": "Reject",
"follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
"followed_tags": "Followed hashtags",
"footer.about": "About",
"footer.directory": "Profiles directory",
"footer.get_app": "Get the app",
"footer.invite": "Invite people",
"footer.keyboard_shortcuts": "Keyboard shortcuts",
"footer.privacy_policy": "Privacy policy",
"footer.source_code": "View source code",
"footer.status": "Status",
"generic.saved": "Saved",
"getting_started.heading": "Getting started",
"hashtag.column_header.tag_mode.all": "and {additional}",
"hashtag.column_header.tag_mode.any": "or {additional}",
"hashtag.column_header.tag_mode.none": "without {additional}",
"hashtag.column_settings.select.no_options_message": "No suggestions found",
"hashtag.column_settings.select.placeholder": "Enter hashtags…",
"hashtag.column_settings.tag_mode.all": "All of these",
"hashtag.column_settings.tag_mode.any": "Any of these",
"hashtag.column_settings.tag_mode.none": "None of these",
"hashtag.column_settings.tag_toggle": "Include additional tags in this column",
"hashtag.follow": "Follow hashtag",
"hashtag.unfollow": "Unfollow hashtag",
"home.column_settings.basic": "Basic",
"home.column_settings.show_reblogs": "Show boosts",
"home.column_settings.show_replies": "Show replies",
"home.hide_announcements": "Hide announcements",
"home.show_announcements": "Show announcements",
"interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.",
"interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.",
"interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.",
"interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.",
"interaction_modal.on_another_server": "On a different server",
"interaction_modal.on_this_server": "On this server",
"interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.",
"interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.",
"interaction_modal.title.favourite": "Favourite {name}'s post",
"interaction_modal.title.follow": "Follow {name}",
"interaction_modal.title.reblog": "Boost {name}'s post",
"interaction_modal.title.reply": "Reply to {name}'s post",
"intervals.full.days": "{number, plural, one {# day} other {# days}}",
"intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
"keyboard_shortcuts.back": "to navigate back",
"keyboard_shortcuts.blocked": "to open blocked users list",
"keyboard_shortcuts.boost": "to boost",
"keyboard_shortcuts.column": "to focus a status in one of the columns",
"keyboard_shortcuts.compose": "to focus the compose textarea",
"keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.down": "to move down in the list",
"keyboard_shortcuts.enter": "to open status",
"keyboard_shortcuts.favourite": "to favourite",
"keyboard_shortcuts.favourites": "to open favourites list",
"keyboard_shortcuts.federated": "to open federated timeline",
"keyboard_shortcuts.heading": "Keyboard Shortcuts",
"keyboard_shortcuts.home": "to open home timeline",
"keyboard_shortcuts.hotkey": "Hotkey",
"keyboard_shortcuts.legend": "to display this legend",
"keyboard_shortcuts.local": "to open local timeline",
"keyboard_shortcuts.mention": "to mention author",
"keyboard_shortcuts.muted": "to open muted users list",
"keyboard_shortcuts.my_profile": "to open your profile",
"keyboard_shortcuts.notifications": "to open notifications column",
"keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "to open pinned posts list",
"keyboard_shortcuts.profile": "to open author's profile",
"keyboard_shortcuts.reply": "to reply",
"keyboard_shortcuts.requests": "to open follow requests list",
"keyboard_shortcuts.search": "to focus search",
"keyboard_shortcuts.spoilers": "to show/hide CW field",
"keyboard_shortcuts.start": "to open \"get started\" column",
"keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
"keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
"keyboard_shortcuts.toot": "to start a brand new post",
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
"keyboard_shortcuts.up": "to move up in the list",
"lightbox.close": "Close",
"lightbox.compress": "Compress image view box",
"lightbox.expand": "Expand image view box",
"lightbox.next": "Next",
"lightbox.previous": "Previous",
"limited_account_hint.action": "Show profile anyway",
"limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.",
"lists.account.add": "Add to list",
"lists.account.remove": "Remove from list",
"lists.delete": "Delete list",
"lists.edit": "Edit list",
"lists.edit.submit": "Change title",
"lists.new.create": "Add list",
"lists.new.title_placeholder": "New list title",
"lists.replies_policy.followed": "Any followed user",
"lists.replies_policy.list": "Members of the list",
"lists.replies_policy.none": "No one",
"lists.replies_policy.title": "Show replies to:",
"lists.search": "Search among people you follow",
"lists.subheading": "Your lists",
"load_pending": "{count, plural, one {# new item} other {# new items}}",
"loading_indicator.label": "Loading...",
"media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
"moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
"mute_modal.duration": "Duration",
"mute_modal.hide_notifications": "Hide notifications from this user?",
"mute_modal.indefinite": "Indefinite",
"navigation_bar.about": "About",
"navigation_bar.blocks": "Blocked users",
"navigation_bar.bookmarks": "Bookmarks",
"navigation_bar.community_timeline": "Local timeline",
"navigation_bar.compose": "Compose new post",
"navigation_bar.direct": "Private mentions",
"navigation_bar.discover": "Discover",
"navigation_bar.domain_blocks": "Hidden domains",
"navigation_bar.edit_profile": "Edit profile",
"navigation_bar.explore": "Explore",
"navigation_bar.favourites": "Favourites",
"navigation_bar.filters": "Muted words",
"navigation_bar.follow_requests": "Follow requests",
"navigation_bar.followed_tags": "Followed hashtags",
"navigation_bar.follows_and_followers": "Follows and followers",
"navigation_bar.lists": "Lists",
"navigation_bar.logout": "Logout",
"navigation_bar.mutes": "Muted users",
"navigation_bar.personal": "Personal",
"navigation_bar.pins": "Pinned posts",
"navigation_bar.preferences": "Preferences",
"navigation_bar.public_timeline": "Federated timeline",
"navigation_bar.search": "Search",
"navigation_bar.security": "Security",
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
"notification.admin.report": "{name} reported {target}",
"notification.admin.sign_up": "{name} signed up",
"notification.favourite": "{name} favourited your status",
"notification.follow": "{name} followed you",
"notification.follow_request": "{name} has requested to follow you",
"notification.mention": "{name} mentioned you",
"notification.own_poll": "Your poll has ended",
"notification.poll": "A poll you have voted in has ended",
"notification.reblog": "{name} boosted your status",
"notification.status": "{name} just posted",
"notification.update": "{name} edited a post",
"notifications.clear": "Clear notifications",
"notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
"notifications.column_settings.admin.report": "New reports:",
"notifications.column_settings.admin.sign_up": "New sign-ups:",
"notifications.column_settings.alert": "Desktop notifications",
"notifications.column_settings.favourite": "Favourites:",
"notifications.column_settings.filter_bar.advanced": "Display all categories",
"notifications.column_settings.filter_bar.category": "Quick filter bar",
"notifications.column_settings.filter_bar.show_bar": "Show filter bar",
"notifications.column_settings.follow": "New followers:",
"notifications.column_settings.follow_request": "New follow requests:",
"notifications.column_settings.mention": "Mentions:",
"notifications.column_settings.poll": "Poll results:",
"notifications.column_settings.push": "Push notifications",
"notifications.column_settings.reblog": "Boosts:",
"notifications.column_settings.show": "Show in column",
"notifications.column_settings.sound": "Play sound",
"notifications.column_settings.status": "New posts:",
"notifications.column_settings.unread_notifications.category": "Unread notifications",
"notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
"notifications.column_settings.update": "Edits:",
"notifications.filter.all": "All",
"notifications.filter.boosts": "Boosts",
"notifications.filter.favourites": "Favourites",
"notifications.filter.follows": "Follows",
"notifications.filter.mentions": "Mentions",
"notifications.filter.polls": "Poll results",
"notifications.filter.statuses": "Updates from people you follow",
"notifications.grant_permission": "Grant permission.",
"notifications.group": "{count} notifications",
"notifications.mark_as_read": "Mark every notification as read",
"notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
"notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
"notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
"notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing",
"picture_in_picture.restore": "Put it back",
"poll.closed": "Closed",
"poll.refresh": "Refresh",
"poll.total_people": "{count, plural, one {# person} other {# people}}",
"poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
"poll.vote": "Vote",
"poll.voted": "You voted for this answer",
"poll.votes": "{votes, plural, one {# vote} other {# votes}}",
"poll_button.add_poll": "Add a poll",
"poll_button.remove_poll": "Remove poll",
"privacy.change": "Adjust status privacy",
"privacy.direct.long": "Visible for mentioned users only",
"privacy.direct.short": "Direct",
"privacy.private.long": "Visible for followers only",
"privacy.private.short": "Followers-only",
"privacy.public.long": "Visible for all",
"privacy.public.short": "Public",
"privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
"privacy.unlisted.short": "Unlisted",
"privacy_policy.last_updated": "Last updated {date}",
"privacy_policy.title": "Privacy Policy",
"refresh": "Refresh",
"regeneration_indicator.label": "Loading…",
"regeneration_indicator.sublabel": "Your home feed is being prepared!",
"relative_time.days": "{number}d",
"relative_time.full.days": "{number, plural, one {# day} other {# days}} ago",
"relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago",
"relative_time.full.just_now": "just now",
"relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago",
"relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago",
"relative_time.hours": "{number}h",
"relative_time.just_now": "now",
"relative_time.minutes": "{number}m",
"relative_time.seconds": "{number}s",
"relative_time.today": "today",
"reply_indicator.cancel": "Cancel",
"report.block": "Block",
"report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
"report.categories.other": "Other",
"report.categories.spam": "Spam",
"report.categories.violation": "Content violates one or more server rules",
"report.category.subtitle": "Choose the best match",
"report.category.title": "Tell us what's going on with this {type}",
"report.category.title_account": "profile",
"report.category.title_status": "post",
"report.close": "Done",
"report.comment.title": "Is there anything else you think we should know?",
"report.forward": "Forward to {target}",
"report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
"report.mute": "Mute",
"report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
"report.next": "Next",
"report.placeholder": "Type or paste additional comments",
"report.reasons.dislike": "I don't like it",
"report.reasons.dislike_description": "It is not something you want to see",
"report.reasons.other": "It's something else",
"report.reasons.other_description": "The issue does not fit into other categories",
"report.reasons.spam": "It's spam",
"report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
"report.reasons.violation": "It violates server rules",
"report.reasons.violation_description": "You are aware that it breaks specific rules",
"report.rules.subtitle": "Select all that apply",
"report.rules.title": "Which rules are being violated?",
"report.statuses.subtitle": "Select all that apply",
"report.statuses.title": "Are there any posts that back up this report?",
"report.submit": "Submit report",
"report.target": "Report {target}",
"report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
"report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
"report.thanks.title": "Don't want to see this?",
"report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
"report.unfollow": "Unfollow @{name}",
"report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
"report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached",
"report_notification.categories.other": "Other",
"report_notification.categories.spam": "Spam",
"report_notification.categories.violation": "Rule violation",
"report_notification.open": "Open report",
"search.no_recent_searches": "No recent searches",
"search.placeholder": "Search",
"search.quick_action.account_search": "Profiles matching {x}",
"search.quick_action.go_to_account": "Go to profile {x}",
"search.quick_action.go_to_hashtag": "Go to hashtag {x}",
"search.quick_action.open_url": "Open URL in Mastodon",
"search.quick_action.status_search": "Posts matching {x}",
"search.search_or_paste": "Search or paste URL",
"search_popout.quick_actions": "Quick actions",
"search_popout.recent": "Recent searches",
"search_results.accounts": "Profiles",
"search_results.all": "All",
"search_results.hashtags": "Hashtags",
"search_results.nothing_found": "Could not find anything for these search terms",
"search_results.statuses": "Posts",
"search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.",
"search_results.title": "Search for {q}",
"search_results.total": "{count, number} {count, plural, one {result} other {results}}",
"server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)",
"server_banner.active_users": "active users",
"server_banner.administered_by": "Administered by:",
"server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.",
"server_banner.learn_more": "Learn more",
"server_banner.server_stats": "Server stats:",
"sign_in_banner.create_account": "Create account",
"sign_in_banner.sign_in": "Sign in",
"sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts. You can also interact from your account on a different server.",
"status.admin_account": "Open moderation interface for @{name}",
"status.admin_domain": "Open moderation interface for {domain}",
"status.admin_status": "Open this status in the moderation interface",
"status.block": "Block @{name}",
"status.bookmark": "Bookmark",
"status.cancel_reblog_private": "Unboost",
"status.cannot_reblog": "This post cannot be boosted",
"status.copy": "Copy link to status",
"status.delete": "Delete",
"status.detailed_status": "Detailed conversation view",
"status.direct": "Privately mention @{name}",
"status.direct_indicator": "Private mention",
"status.edit": "Edit",
"status.edited": "Edited {date}",
"status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
"status.embed": "Embed",
"status.favourite": "Favourite",
"status.filter": "Filter this post",
"status.filtered": "Filtered",
"status.hide": "Hide post",
"status.history.created": "{name} created {date}",
"status.history.edited": "{name} edited {date}",
"status.load_more": "Load more",
"status.media_hidden": "Media hidden",
"status.mention": "Mention @{name}",
"status.more": "More",
"status.mute": "Mute @{name}",
"status.mute_conversation": "Mute conversation",
"status.open": "Expand this status",
"status.pin": "Pin on profile",
"status.pinned": "Pinned post",
"status.read_more": "Read more",
"status.reblog": "Boost",
"status.reblog_private": "Boost with original visibility",
"status.reblogged_by": "{name} boosted",
"status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.",
"status.redraft": "Delete & re-draft",
"status.remove_bookmark": "Remove bookmark",
"status.replied_to": "Replied to {name}",
"status.reply": "Reply",
"status.replyAll": "Reply to thread",
"status.report": "Report @{name}",
"status.sensitive_warning": "Sensitive content",
"status.share": "Share",
"status.show_filter_reason": "Show anyway",
"status.show_less": "Show less",
"status.show_less_all": "Show less for all",
"status.show_more": "Show more",
"status.show_more_all": "Show more for all",
"status.show_original": "Show original",
"status.translate": "Translate",
"status.translated_from_with": "Translated from {lang} using {provider}",
"status.uncached_media_warning": "Not available",
"status.unmute_conversation": "Unmute conversation",
"status.unpin": "Unpin from profile",
"subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.",
"subscribed_languages.save": "Save changes",
"subscribed_languages.target": "Change subscribed languages for {target}",
"suggestions.dismiss": "Dismiss suggestion",
"suggestions.header": "You might be interested in…",
"tabs_bar.federated_timeline": "Federated",
"tabs_bar.home": "Home",
"tabs_bar.local_timeline": "Local",
"tabs_bar.notifications": "Notifications",
"time_remaining.days": "{number, plural, one {# day} other {# days}} left",
"time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
"time_remaining.moments": "Moments remaining",
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
"timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
"timeline_hint.resources.followers": "Followers",
"timeline_hint.resources.follows": "Follows",
"timeline_hint.resources.statuses": "Older posts",
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}",
"trends.trending_now": "Trending now",
"ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
"units.short.billion": "{count}B",
"units.short.million": "{count}M",
"units.short.thousand": "{count}K",
"upload_area.title": "Drag & drop to upload",
"upload_button.label": "Add images, a video or an audio file",
"upload_error.limit": "File upload limit exceeded.",
"upload_error.poll": "File upload not allowed with polls.",
"upload_form.audio_description": "Describe for people who are hard of hearing",
"upload_form.description": "Describe for people who are blind or have low vision",
"upload_form.description_missing": "No description added",
"upload_form.edit": "Edit",
"upload_form.thumbnail": "Change thumbnail",
"upload_form.undo": "Delete",
"upload_form.video_description": "Describe for people who are deaf, hard of hearing, blind or have low vision",
"upload_modal.analyzing_picture": "Analyzing picture…",
"upload_modal.apply": "Apply",
"upload_modal.applying": "Applying…",
"upload_modal.choose_image": "Choose image",
"upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
"upload_modal.detect_text": "Detect text from picture",
"upload_modal.edit_media": "Edit media",
"upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
"upload_modal.preparing_ocr": "Preparing OCR…",
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading…",
"upload_progress.processing": "Processing…",
"video.close": "Close video",
"video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",
"video.expand": "Expand video",
"video.fullscreen": "Full screen",
"video.hide": "Hide video",
"video.mute": "Mute sound",
"video.pause": "Pause",
"video.play": "Play",
"video.unmute": "Unmute sound"
}

View file

@ -39,6 +39,7 @@
"account.follows_you": "Yn eich dilyn chi",
"account.go_to_profile": "Mynd i'r proffil",
"account.hide_reblogs": "Cuddio hybiau gan @{name}",
"account.in_memoriam": "Er Cof",
"account.joined_short": "Wedi Ymuno",
"account.languages": "Newid ieithoedd wedi tanysgrifio iddyn nhw",
"account.link_verified_on": "Gwiriwyd perchnogaeth y ddolen yma ar {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Galluogi hysbysiadau bwrdd gwaith",
"notifications_permission_banner.how_to_control": "I dderbyn hysbysiadau pan nad yw Mastodon ar agor, galluogwch hysbysiadau bwrdd gwaith. Gallwch reoli'n union pa fathau o ryngweithiadau sy'n cynhyrchu hysbysiadau bwrdd gwaith trwy'r botwm {icon} uchod unwaith y byddant wedi'u galluogi.",
"notifications_permission_banner.title": "Peidiwch colli dim",
"password_confirmation.exceeds_maxlength": "Mae'r cadarnhad cyfrinair yn fwy nag uchafswm hyd y cyfrinair",
"password_confirmation.mismatching": "Nid yw'r cadarnhad cyfrinair yn cyfateb",
"picture_in_picture.restore": "Rhowch ef yn ôl",
"poll.closed": "Ar gau",
"poll.refresh": "Adnewyddu",
@ -520,17 +523,17 @@
"report_notification.categories.spam": "Sbam",
"report_notification.categories.violation": "Torri rheol",
"report_notification.open": "Agor adroddiad",
"search.no_recent_searches": "No recent searches",
"search.no_recent_searches": "Does dim chwiliadau diweddar",
"search.placeholder": "Chwilio",
"search.quick_action.account_search": "Profiles matching {x}",
"search.quick_action.go_to_account": "Go to profile {x}",
"search.quick_action.go_to_hashtag": "Go to hashtag {x}",
"search.quick_action.open_url": "Open URL in Mastodon",
"search.quick_action.status_search": "Posts matching {x}",
"search.quick_action.account_search": "Proffiliau sy'n cyfateb i {x}",
"search.quick_action.go_to_account": "Mynd i broffil {x}",
"search.quick_action.go_to_hashtag": "Mynd i hashnod {x}",
"search.quick_action.open_url": "Agor URL yn Mastodon",
"search.quick_action.status_search": "Postiadau sy'n cyfateb i {x}",
"search.search_or_paste": "Chwilio neu gludo URL",
"search_popout.quick_actions": "Quick actions",
"search_popout.recent": "Recent searches",
"search_results.accounts": "Profiles",
"search_popout.quick_actions": "Gweithredoedd cyflym",
"search_popout.recent": "Chwilio diweddar",
"search_results.accounts": "Proffilau",
"search_results.all": "Popeth",
"search_results.hashtags": "Hashnodau",
"search_results.nothing_found": "Methu dod o hyd i unrhyw beth ar gyfer y termau chwilio hyn",
@ -597,6 +600,7 @@
"status.show_more": "Dangos mwy",
"status.show_more_all": "Dangos mwy i bawb",
"status.show_original": "Dangos y gwreiddiol",
"status.title.with_attachments": "Postiodd {user} {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Cyfieithu",
"status.translated_from_with": "Cyfieithwyd o {lang} gan ddefnyddio {provider}",
"status.uncached_media_warning": "Dim ar gael",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Rhagolwg ({ratio})",
"upload_progress.label": "Yn llwytho...",
"upload_progress.processing": "Wrthi'n prosesu…",
"username.taken": "Mae'r enw defnyddiwr hwnnw'n cael ei ddefnyddio eisoes. Cynnig un arall?",
"video.close": "Cau fideo",
"video.download": "Llwytho ffeil i lawr",
"video.exit_fullscreen": "Gadael sgrin llawn",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Følger dig",
"account.go_to_profile": "Gå til profil",
"account.hide_reblogs": "Skjul boosts fra @{name}",
"account.in_memoriam": "Til minde om.",
"account.joined_short": "Oprettet",
"account.languages": "Skift abonnementssprog",
"account.link_verified_on": "Ejerskab af dette link blev tjekket {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Aktivér computernotifikationer",
"notifications_permission_banner.how_to_control": "Aktivér computernotifikationer for at få besked, når Mastodon ikke er åben. Når de er aktiveret, kan man via knappen {icon} ovenfor præcist styre, hvilke typer af interaktioner, som genererer computernotifikationer.",
"notifications_permission_banner.title": "Gå aldrig glip af noget",
"password_confirmation.exceeds_maxlength": "Adgangskodebekræftelse overstiger maks. adgangskodelængde",
"password_confirmation.mismatching": "Adgangskodebekræftelse matcher ikke",
"picture_in_picture.restore": "Indsæt det igen",
"poll.closed": "Lukket",
"poll.refresh": "Genindlæs",
@ -597,6 +600,7 @@
"status.show_more": "Vis mere",
"status.show_more_all": "Vis mere for alle",
"status.show_original": "Vis original",
"status.title.with_attachments": "{user} postede {attachmentCount, plural, one {en vedhæftning} other {{attachmentCount} vedhæftninger}}",
"status.translate": "Oversæt",
"status.translated_from_with": "Oversat fra {lang} ved brug af {provider}",
"status.uncached_media_warning": "Utilgængelig",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Forhåndsvisning ({ratio})",
"upload_progress.label": "Uploader...",
"upload_progress.processing": "Behandler…",
"username.taken": "Brugernavnet er taget. Prøv et andet",
"video.close": "Luk video",
"video.download": "Download fil",
"video.exit_fullscreen": "Forlad fuldskærm",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Folgt dir",
"account.go_to_profile": "Profil aufrufen",
"account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen",
"account.in_memoriam": "Zum Andenken.",
"account.joined_short": "Registriert",
"account.languages": "Genutzte Sprachen überarbeiten",
"account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} bestätigt",
@ -314,7 +315,7 @@
"keyboard_shortcuts.column": "Auf die aktuelle Spalte fokussieren",
"keyboard_shortcuts.compose": "Eingabefeld fokussieren",
"keyboard_shortcuts.description": "Beschreibung",
"keyboard_shortcuts.direct": "um die Direktnachrichtenspalte zu öffnen",
"keyboard_shortcuts.direct": "um die Direktnachrichten zu öffnen",
"keyboard_shortcuts.down": "sich in der Liste nach unten bewegen",
"keyboard_shortcuts.enter": "Beitrag öffnen",
"keyboard_shortcuts.favourite": "favorisieren",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Aktiviere Desktop-Benachrichtigungen",
"notifications_permission_banner.how_to_control": "Um Benachrichtigungen zu erhalten, wenn Mastodon nicht geöffnet ist, aktiviere die Desktop-Benachrichtigungen. Du kannst genau bestimmen, welche Arten von Interaktionen Desktop-Benachrichtigungen über die {icon} -Taste erzeugen, sobald diese aktiviert sind.",
"notifications_permission_banner.title": "Nichts verpassen",
"password_confirmation.exceeds_maxlength": "Passwortbestätigung überschreitet die maximal erlaubte Zeichenanzahl",
"password_confirmation.mismatching": "Passwortbestätigung stimmt nicht überein",
"picture_in_picture.restore": "Zurücksetzen",
"poll.closed": "Beendet",
"poll.refresh": "Aktualisieren",
@ -520,7 +523,7 @@
"report_notification.categories.spam": "Spam",
"report_notification.categories.violation": "Regelverstoß",
"report_notification.open": "Meldung öffnen",
"search.no_recent_searches": "Keine kürzlichen Suchanfragen",
"search.no_recent_searches": "Keine früheren Suchanfragen",
"search.placeholder": "Suche",
"search.quick_action.account_search": "Profile passend zu {x}",
"search.quick_action.go_to_account": "Profil {x} aufrufen",
@ -529,7 +532,7 @@
"search.quick_action.status_search": "Beiträge passend zu {x}",
"search.search_or_paste": "Suchen oder URL einfügen",
"search_popout.quick_actions": "Schnellaktionen",
"search_popout.recent": "Kürzliche Suchanfragen",
"search_popout.recent": "Frühere Suchanfragen",
"search_results.accounts": "Profile",
"search_results.all": "Alles",
"search_results.hashtags": "Hashtags",
@ -541,7 +544,7 @@
"server_banner.about_active_users": "Personen, die diesen Server in den vergangenen 30 Tagen genutzt haben (monatlich aktive Benutzer*innen)",
"server_banner.active_users": "aktive Profile",
"server_banner.administered_by": "Verwaltet von:",
"server_banner.introduction": "{domain} ist Teil des dezentralen sozialen Netzwerks, das von {mastodon} betrieben wird.",
"server_banner.introduction": "{domain} ist ein dezentralisiertes soziales Netzwerk, angetrieben von {mastodon}.",
"server_banner.learn_more": "Mehr erfahren",
"server_banner.server_stats": "Serverstatistiken:",
"sign_in_banner.create_account": "Konto erstellen",
@ -557,7 +560,7 @@
"status.copy": "Link zum Beitrag kopieren",
"status.delete": "Beitrag löschen",
"status.detailed_status": "Detaillierte Ansicht der Unterhaltung",
"status.direct": "Direktnachricht an @{name}",
"status.direct": "@{name} eine Direktnachricht schicken",
"status.direct_indicator": "Direktnachricht",
"status.edit": "Beitrag bearbeiten",
"status.edited": "Bearbeitet {date}",
@ -597,6 +600,7 @@
"status.show_more": "Mehr anzeigen",
"status.show_more_all": "Alle Inhaltswarnungen aufklappen",
"status.show_original": "Ursprünglichen Beitrag anzeigen",
"status.title.with_attachments": "{user} veröffentlichte {attachmentCount, plural, one {eine Mediendatei} other {{attachmentCount} Mediendateien}}",
"status.translate": "Übersetzen",
"status.translated_from_with": "Aus {lang} mittels {provider} übersetzt",
"status.uncached_media_warning": "Medien-Datei auf diesem Server noch nicht verfügbar",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Vorschau ({ratio})",
"upload_progress.label": "Wird hochgeladen …",
"upload_progress.processing": "Wird verarbeitet…",
"username.taken": "Dieser Profilname ist vergeben. Versuche einen anderen",
"video.close": "Video schließen",
"video.download": "Video-Datei herunterladen",
"video.exit_fullscreen": "Vollbild verlassen",

View file

@ -249,7 +249,7 @@
{
"descriptors": [
{
"defaultMessage": "Edited {count, plural, one {{count} time} other {{count} times}}",
"defaultMessage": "Edited {count, plural, one {# time} other {# times}}",
"id": "status.edited_x_times"
},
{
@ -299,7 +299,7 @@
{
"descriptors": [
{
"defaultMessage": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}",
"defaultMessage": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}",
"id": "trends.counter_by_accounts"
}
],
@ -1677,7 +1677,7 @@
"id": "search_results.hashtags"
},
{
"defaultMessage": "{count, number} {count, plural, one {result} other {results}}",
"defaultMessage": "{count, plural, one {# result} other {# results}}",
"id": "search_results.total"
}
],
@ -2264,40 +2264,6 @@
],
"path": "app/javascript/mastodon/features/filters/select_filter.json"
},
{
"descriptors": [
{
"defaultMessage": "Follow",
"id": "account.follow"
},
{
"defaultMessage": "Unfollow",
"id": "account.unfollow"
}
],
"path": "app/javascript/mastodon/features/follow_recommendations/components/account.json"
},
{
"descriptors": [
{
"defaultMessage": "Follow people you'd like to see posts from! Here are some suggestions.",
"id": "follow_recommendations.heading"
},
{
"defaultMessage": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
"id": "follow_recommendations.lead"
},
{
"defaultMessage": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
"id": "empty_column.follow_recommendations"
},
{
"defaultMessage": "Done",
"id": "follow_recommendations.done"
}
],
"path": "app/javascript/mastodon/features/follow_recommendations/index.json"
},
{
"descriptors": [
{
@ -3178,7 +3144,7 @@
"id": "report_notification.categories.violation"
},
{
"defaultMessage": "{count, plural, one {{count} post} other {{count} posts}} attached",
"defaultMessage": "{count, plural, one {# post} other {# posts}} attached",
"id": "report_notification.attached_statuses"
}
],
@ -3218,6 +3184,125 @@
],
"path": "app/javascript/mastodon/features/notifications/index.json"
},
{
"descriptors": [
{
"defaultMessage": "Popular on Mastodon",
"id": "onboarding.follows.title"
},
{
"defaultMessage": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"id": "onboarding.follows.lead"
},
{
"defaultMessage": "<strong>Did you know?</strong> Since Mastodon is decentralized, some profiles you come across will be hosted on servers other than yours. And yet you can interact with them seamlessly! Their server is in the second half of their username!",
"id": "onboarding.tips.accounts_from_other_servers"
},
{
"defaultMessage": "Take me back",
"id": "onboarding.actions.back"
}
],
"path": "app/javascript/mastodon/features/onboarding/follows.json"
},
{
"descriptors": [
{
"defaultMessage": "You've made it!",
"id": "onboarding.start.title"
},
{
"defaultMessage": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
"id": "onboarding.start.lead"
},
{
"defaultMessage": "Customize your profile",
"id": "onboarding.steps.setup_profile.title"
},
{
"defaultMessage": "Others are more likely to interact with you with a filled out profile.",
"id": "onboarding.steps.setup_profile.body"
},
{
"defaultMessage": "Follow {count, plural, one {one person} other {# people}}",
"id": "onboarding.steps.follow_people.title"
},
{
"defaultMessage": "You curate your own feed. Lets fill it with interesting people.",
"id": "onboarding.steps.follow_people.body"
},
{
"defaultMessage": "Make your first post",
"id": "onboarding.steps.publish_status.title"
},
{
"defaultMessage": "Say hello to the world.",
"id": "onboarding.steps.publish_status.body"
},
{
"defaultMessage": "Share your profile",
"id": "onboarding.steps.share_profile.title"
},
{
"defaultMessage": "Let your friends know how to find you on Mastodon!",
"id": "onboarding.steps.share_profile.body"
},
{
"defaultMessage": "Want to skip right ahead?",
"id": "onboarding.start.skip"
},
{
"defaultMessage": "See what's trending",
"id": "onboarding.actions.go_to_explore"
},
{
"defaultMessage": "Don't show this screen again",
"id": "onboarding.actions.close"
}
],
"path": "app/javascript/mastodon/features/onboarding/index.json"
},
{
"descriptors": [
{
"defaultMessage": "I'm {username} on Mastodon! Come follow me at {url}",
"id": "onboarding.share.message"
},
{
"defaultMessage": "Copied",
"id": "copypaste.copied"
},
{
"defaultMessage": "Copy to clipboard",
"id": "copypaste.copy_to_clipboard"
},
{
"defaultMessage": "Share your profile",
"id": "onboarding.share.title"
},
{
"defaultMessage": "Let people know how they can find you on Mastodon!",
"id": "onboarding.share.lead"
},
{
"defaultMessage": "Possible next steps:",
"id": "onboarding.share.next_steps"
},
{
"defaultMessage": "Go to your home feed",
"id": "onboarding.actions.go_to_home"
},
{
"defaultMessage": "See what's trending",
"id": "onboarding.actions.go_to_explore"
},
{
"defaultMessage": "Take me back",
"id": "onboarding.action.back"
}
],
"path": "app/javascript/mastodon/features/onboarding/share.json"
},
{
"descriptors": [
{
@ -3733,7 +3818,7 @@
"id": "status.show_less_all"
},
{
"defaultMessage": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"defaultMessage": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
"id": "status.title.with_attachments"
},
{

View file

@ -4,7 +4,7 @@
"about.disclaimer": "Το Mastodon είναι ελεύθερο λογισμικό ανοιχτού κώδικα και εμπορικό σήμα της Mastodon gGmbH.",
"about.domain_blocks.no_reason_available": "Αιτιολογία μη διαθέσιμη",
"about.domain_blocks.preamble": "Σε γενικές γραμμές το Mastodon σού επιτρέπει να βλέπεις περιεχόμενο και να αλληλεπιδράς με χρήστες από οποιονδήποτε άλλο διακομιστή σε ένα διασυνδεδεμένο σύμπαν διακομιστών (fediverse). Ακολουθούν οι εξαιρέσεις που ισχύουν για τον συγκεκριμένο διακομιστή.",
"about.domain_blocks.silenced.explanation": "Συνήθως σε θα βλέπεις προφίλ και περιεχόμενο απ'αυτόν τον διακομιστή, εκτός αν κάνεις συγκεκριμένη αναζήτηση ή επιλέξεις να τον ακολουθήσεις.",
"about.domain_blocks.silenced.explanation": "Συνήθως δε θα βλέπεις προφίλ και περιεχόμενο απ' αυτόν τον διακομιστή, εκτός αν κάνεις συγκεκριμένη αναζήτηση ή επιλέξεις να τον ακολουθήσεις.",
"about.domain_blocks.silenced.title": "Περιορισμένος",
"about.domain_blocks.suspended.explanation": "Τα δεδομένα αυτού του διακομιστή, δε θα επεξεργάζονται, δε θα αποθηκεύονται και δε θα ανταλλάσσονται, καθιστώντας οποιαδήποτε αλληλεπίδραση ή επικοινωνία με χρήστες από αυτόν το διακομιστή αδύνατη.",
"about.domain_blocks.suspended.title": "Σε αναστολή",
@ -21,17 +21,17 @@
"account.browse_more_on_origin_server": "Δες περισσότερα στο αρχικό προφίλ",
"account.cancel_follow_request": "Απόσυρση αιτήματος παρακολούθησης",
"account.direct": "Ιδιωτική αναφορά @{name}",
"account.disable_notifications": "Διακοπή ειδοποιήσεων για τις δημοσιεύσεις του/της @{name}",
"account.disable_notifications": "Σταμάτα να με ειδοποιείς όταν δημοσιεύει ο @{name}",
"account.domain_blocked": "Ο τομέας αποκλείστηκε",
"account.edit_profile": "Επεξεργασία προφίλ",
"account.enable_notifications": "Ειδοποιήστε με όταν δημοσιεύει ο @{name}",
"account.enable_notifications": "Ειδοποίησέ με όταν δημοσιεύει ο @{name}",
"account.endorse": "Προβολή στο προφίλ",
"account.featured_tags.last_status_at": "Τελευταία ανάρτηση στις {date}",
"account.featured_tags.last_status_never": "Καμία ανάρτηση",
"account.featured_tags.title": "προβεβλημένες ετικέτες του/της {name}",
"account.follow": "Ακολούθησε",
"account.followers": "Ακόλουθοι",
"account.followers.empty": "Κανείς δεν ακολουθεί αυτό τον χρήστη ακόμα.",
"account.followers.empty": "Κανείς δεν ακολουθεί αυτόν τον χρήστη ακόμα.",
"account.followers_counter": "{count, plural, one {{counter} Ακόλουθος} other {{counter} Ακόλουθοι}}",
"account.following": "Ακολουθείτε",
"account.following_counter": "{count, plural, one {{counter} Ακολουθεί} other {{counter} Ακολουθούν}}",
@ -39,6 +39,7 @@
"account.follows_you": "Σε ακολουθεί",
"account.go_to_profile": "Μετάβαση στο προφίλ",
"account.hide_reblogs": "Απόκρυψη ενισχύσεων από @{name}",
"account.in_memoriam": "Εις μνήμην.",
"account.joined_short": "Έγινε μέλος",
"account.languages": "Αλλαγή εγγεγραμμένων γλωσσών",
"account.link_verified_on": "Η ιδιοκτησία αυτού του συνδέσμου ελέχθηκε στις {date}",
@ -55,7 +56,7 @@
"account.report": "Κατάγγειλε @{name}",
"account.requested": "Εκκρεμεί έγκριση. Κάνε κλικ για να ακυρώσεις το αίτημα παρακολούθησης",
"account.requested_follow": "Ο/Η {name} αιτήθηκε να σε ακολουθήσει",
"account.share": "Μοίρασμα του προφίλ @{name}",
"account.share": "Κοινοποίηση του προφίλ @{name}",
"account.show_reblogs": "Εμφάνιση ενισχύσεων από @{name}",
"account.statuses_counter": "{count, plural, one {{counter} Ανάρτηση} other {{counter} Αναρτήσεις}}",
"account.unblock": "Άρση αποκλεισμού @{name}",
@ -75,16 +76,16 @@
"alert.rate_limited.message": "Παρακαλούμε δοκίμασε ξανά μετά τις {retry_time, time, medium}",
"alert.rate_limited.title": "Περιορισμός συχνότητας",
"alert.unexpected.message": "Προέκυψε απροσδόκητο σφάλμα.",
"alert.unexpected.title": "Εεπ!",
"alert.unexpected.title": "Ουπς!",
"announcement.announcement": "Ανακοίνωση",
"attachments_list.unprocessed": "(μη επεξεργασμένο)",
"audio.hide": "Απόκρυψη αρχείου ήχου",
"autosuggest_hashtag.per_week": "{count} ανα εβδομάδα",
"boost_modal.combo": "Μπορείς να πατήσεις {combo} για να το προσπεράσεις αυτό την επόμενη φορά",
"autosuggest_hashtag.per_week": "{count} ανά εβδομάδα",
"boost_modal.combo": "Μπορείς να πατήσεις {combo} για να το προσπεράσεις την επόμενη φορά",
"bundle_column_error.copy_stacktrace": "Αντιγραφή αναφοράς σφάλματος",
"bundle_column_error.error.body": "Δεν ήταν δυνατή η απόδοση της σελίδας που ζητήσατε. Μπορεί να οφείλεται σε σφάλμα στον κώδικά μας ή σε πρόβλημα συμβατότητας του προγράμματος περιήγησης.",
"bundle_column_error.error.body": "Δεν ήταν δυνατή η απόδοση της σελίδας που ζήτησες. Μπορεί να οφείλεται σε σφάλμα στον κώδικά μας ή σε πρόβλημα συμβατότητας του προγράμματος περιήγησης.",
"bundle_column_error.error.title": "Ωχ όχι!",
"bundle_column_error.network.body": "Παρουσιάστηκε σφάλμα κατά την προσπάθεια φόρτωσης αυτής της σελίδας. Αυτό θα μπορούσε να οφείλεται σε ένα προσωρινό πρόβλημα με τη σύνδεσή σας στο διαδίκτυο ή σε αυτόν τον διακομιστή.",
"bundle_column_error.network.body": "Παρουσιάστηκε σφάλμα κατά την προσπάθεια φόρτωσης αυτής της σελίδας. Αυτό θα μπορούσε να οφείλεται σε ένα προσωρινό πρόβλημα με τη σύνδεσή σου στο διαδίκτυο ή σε αυτόν τον διακομιστή.",
"bundle_column_error.network.title": "Σφάλμα δικτύου",
"bundle_column_error.retry": "Δοκίμασε ξανά",
"bundle_column_error.return": "Μετάβαση πίσω στην αρχική σελίδα",
@ -93,18 +94,18 @@
"bundle_modal_error.close": "Κλείσιμο",
"bundle_modal_error.message": "Κάτι πήγε στραβά κατά τη φόρτωση του στοιχείου.",
"bundle_modal_error.retry": "Δοκίμασε ξανά",
"closed_registrations.other_server_instructions": "Καθώς το Mastodon είναι αποκεντρωμένο, μπορείς να δημιουργήσεις λογαριασμό σε άλλο server αλλά να συνεχίσεις να αλληλεπιδράς με τον παρόντα.",
"closed_registrations_modal.description": "Η δημιουργία λογαριασμού στο {domain} δεν είναι δυνατή επί του παρόντος, αλλά λάβε υπόψη ότι δεν χρειάζεσαι λογαριασμό ειδικά στο {domain} για να χρησιμοποιήσεις το Mastodon.",
"closed_registrations_modal.find_another_server": "&Εύρεση…",
"closed_registrations_modal.preamble": "Το Mastodon είναι αποκεντρωμένο, οπότε ανεξάρτητα από το πού θα δημιουργήσεις τον λογαριασμό σου, μπορείς να ακολουθήσεις και να αλληλεπιδράσεις με οποιονδήποτε σε αυτόν τον server. Μπορείς ακόμη και να κάνεις self-hosting!",
"closed_registrations.other_server_instructions": "Καθώς το Mastodon είναι αποκεντρωμένο, μπορείς να δημιουργήσεις λογαριασμό σε άλλον διακομιστή αλλά να συνεχίσεις να αλληλεπιδράς με αυτόν.",
"closed_registrations_modal.description": "Η δημιουργία λογαριασμού στον {domain} προς το παρόν δεν είναι δυνατή, αλλά λάβε υπόψη ότι δεν χρειάζεσαι λογαριασμό ειδικά στον {domain} για να χρησιμοποιήσεις το Mastodon.",
"closed_registrations_modal.find_another_server": "Βρες άλλον διακομιστή",
"closed_registrations_modal.preamble": "Το Mastodon είναι αποκεντρωμένο, οπότε ανεξάρτητα από το πού θα δημιουργήσεις τον λογαριασμό σου, μπορείς να ακολουθήσεις και να αλληλεπιδράσεις με οποιονδήποτε σε αυτόν τον διακομιστή. Μπορείς ακόμη και να κάνεις τον δικό σου!",
"closed_registrations_modal.title": "Εγγραφή στο Mastodon",
"column.about": "Σχετικά με",
"column.blocks": "Αποκλεισμένοι χρήστες",
"column.bookmarks": "Σελιδοδείκτες",
"column.community": "Τοπική ροή",
"column.direct": "Ιδιωτικές αναφορές",
"column.directory": "Δες προφίλ",
"column.domain_blocks": "Κρυμμένοι τομείς",
"column.directory": "Περιήγηση στα προφίλ",
"column.domain_blocks": "Αποκλεισμένοι τομείς",
"column.favourites": "Αγαπημένα",
"column.follow_requests": "Αιτήματα ακολούθησης",
"column.home": "Αρχική",
@ -115,8 +116,8 @@
"column.public": "Ομοσπονδιακή ροή",
"column_back_button.label": "Πίσω",
"column_header.hide_settings": "Απόκρυψη ρυθμίσεων",
"column_header.moveLeft_settings": "Μεταφορά κολώνας αριστερά",
"column_header.moveRight_settings": "Μεταφορά κολώνας δεξιά",
"column_header.moveLeft_settings": "Μεταφορά στήλης στα αριστερά",
"column_header.moveRight_settings": "Μεταφορά στήλης στα δεξιά",
"column_header.pin": "Καρφίτσωμα",
"column_header.show_settings": "Εμφάνιση ρυθμίσεων",
"column_header.unpin": "Ξεκαρφίτσωμα",
@ -126,10 +127,10 @@
"community.column_settings.remote_only": "Απομακρυσμένα μόνο",
"compose.language.change": "Αλλαγή γλώσσας",
"compose.language.search": "Αναζήτηση γλωσσών...",
"compose_form.direct_message_warning_learn_more": "Μάθετε περισσότερα",
"compose_form.encryption_warning": "Οι δημοσιεύσεις στο Mastodon δεν είναι κρυπτογραφημένες από άκρο σε άκρο. Μην μοιράζεστε ευαίσθητες πληροφορίες μέσω του Mastodon.",
"compose_form.direct_message_warning_learn_more": "Μάθε περισσότερα",
"compose_form.encryption_warning": "Οι δημοσιεύσεις στο Mastodon δεν είναι κρυπτογραφημένες από άκρο σε άκρο. Μη μοιράζεσαι ευαίσθητες πληροφορίες μέσω του Mastodon.",
"compose_form.hashtag_warning": "Αυτή η δημοσίευση δεν θα εμφανίζεται κάτω από οποιαδήποτε ετικέτα καθώς δεν είναι δημόσια. Μόνο οι δημόσιες δημοσιεύσεις μπορούν να αναζητηθούν με ετικέτα.",
"compose_form.lock_disclaimer": "Ο λογαριασμός σου δεν είναι {locked}. Οποιοσδήποτε μπορεί να σε ακολουθήσει για να δει τις δημοσιεύσεις σας προς τους ακολούθους σας.",
"compose_form.lock_disclaimer": "Ο λογαριασμός σου δεν είναι {locked}. Οποιοσδήποτε μπορεί να σε ακολουθήσει για να δει τις δημοσιεύσεις σου προς τους ακολούθους σου.",
"compose_form.lock_disclaimer.lock": "κλειδωμένο",
"compose_form.placeholder": "Τι σκέφτεσαι;",
"compose_form.poll.add_option": "Προσθήκη επιλογής",
@ -142,28 +143,28 @@
"compose_form.publish_form": "Δημοσίευση",
"compose_form.publish_loud": "{publish}!",
"compose_form.save_changes": "Αποθήκευση αλλαγών",
"compose_form.sensitive.hide": "Σημείωσε τα πολυμέσα ως ευαίσθητα",
"compose_form.sensitive.marked": "Το πολυμέσο έχει σημειωθεί ως ευαίσθητο",
"compose_form.sensitive.unmarked": "Το πολυμέσο δεν έχει σημειωθεί ως ευαίσθητο",
"compose_form.spoiler.marked": "Κείμενο κρυμμένο πίσω από προειδοποίηση",
"compose_form.spoiler.unmarked": "Μη κρυμμένο κείμενο",
"compose_form.sensitive.hide": "{count, plural, one {Επισήμανση πολυμέσου ως ευαίσθητο} other {Επισήμανση πολυμέσων ως ευαίσθητα}}",
"compose_form.sensitive.marked": "{count, plural, one {Το πολυμέσο έχει σημειωθεί ως ευαίσθητο} other {Τα πολυμέσα έχουν σημειωθεί ως ευαίσθητα}}",
"compose_form.sensitive.unmarked": "{count, plural, one {Το πολυμέσο δεν έχει σημειωθεί ως ευαίσθητο} other {Τα πολυμέσα δεν έχουν σημειωθεί ως ευαίσθητα}}",
"compose_form.spoiler.marked": "Αφαίρεση προειδοποίηση περιεχομένου",
"compose_form.spoiler.unmarked": "Προσθήκη προειδοποίησης περιεχομένου",
"compose_form.spoiler_placeholder": "Γράψε την προειδοποίησή σου εδώ",
"confirmation_modal.cancel": "Άκυρο",
"confirmations.block.block_and_report": "Αποκλεισμός & Καταγγελία",
"confirmations.block.confirm": "Απόκλεισε",
"confirmations.block.block_and_report": "Αποκλεισμός & Αναφορά",
"confirmations.block.confirm": "Αποκλεισμός",
"confirmations.block.message": "Σίγουρα θες να αποκλείσεις {name};",
"confirmations.cancel_follow_request.confirm": "Απόσυρση αιτήματος",
"confirmations.cancel_follow_request.message": "Είσαι σίγουρος/η ότι θέλεις να αποσύρεις το αίτημά σου να ακολουθείς τον/την {name};",
"confirmations.delete.confirm": "Διέγραψε",
"confirmations.delete.confirm": "Διαγραφή",
"confirmations.delete.message": "Σίγουρα θες να διαγράψεις αυτή τη δημοσίευση;",
"confirmations.delete_list.confirm": "Διέγραψε",
"confirmations.delete_list.confirm": "Διαγραφή",
"confirmations.delete_list.message": "Σίγουρα θες να διαγράψεις οριστικά αυτή τη λίστα;",
"confirmations.discard_edit_media.confirm": "Απόρριψη",
"confirmations.discard_edit_media.message": "Έχετε μη αποθηκευμένες αλλαγές στην περιγραφή πολυμέσων ή στην προεπισκόπηση, απορρίψτε τις ούτως ή άλλως;",
"confirmations.domain_block.confirm": "Απόκρυψη ολόκληρου του τομέα",
"confirmations.domain_block.message": "Σίγουρα θες να μπλοκάρεις ολόκληρο το {domain}; Συνήθως μερικά εστιασμένα μπλοκ ή αποσιωπήσεις επαρκούν και προτιμούνται. Δεν θα βλέπεις περιεχόμενο από αυτό τον κόμβο σε καμία δημόσια ροή, ούτε στις ειδοποιήσεις σου. Όσους ακόλουθους έχεις αυτό αυτό τον κόμβο θα αφαιρεθούν.",
"confirmations.discard_edit_media.message": "Έχεις μη αποθηκευμένες αλλαγές στην περιγραφή πολυμέσων ή στην προεπισκόπηση, απόρριψη ούτως ή άλλως;",
"confirmations.domain_block.confirm": "Αποκλεισμός ολόκληρου του τομέα",
"confirmations.domain_block.message": "Σίγουρα θες να αποκλείσεις ολόκληρο τον {domain}; Συνήθως μερικοί συγκεκρίμένοι αποκλεισμοί ή σιγάσεις επαρκούν και προτιμούνται. Δεν θα βλέπεις περιεχόμενο από αυτό τον τομέα σε καμία δημόσια ροή ή στις ειδοποιήσεις σου. Όσους ακόλουθους έχεις αυτό αυτό τον τομέα θα αφαιρεθούν.",
"confirmations.edit.confirm": "Επεξεργασία",
"confirmations.edit.message": "Αν το επεξεργαστείτε τώρα θα αντικατασταθεί το μήνυμα που συνθέτετε. Είστε σίγουροι ότι θέλετε να συνεχίσετε;",
"confirmations.edit.message": "Αν το επεξεργαστείς τώρα θα αντικατασταθεί το μήνυμα που συνθέτεις. Είσαι σίγουρος ότι θέλεις να συνεχίσεις;",
"confirmations.logout.confirm": "Αποσύνδεση",
"confirmations.logout.message": "Σίγουρα θέλεις να αποσυνδεθείς;",
"confirmations.mute.confirm": "Αποσιώπηση",
@ -173,7 +174,7 @@
"confirmations.redraft.message": "Σίγουρα θέλεις να σβήσεις αυτή την κατάσταση και να την ξαναγράψεις; Οι αναφορές και τα αγαπημένα της θα χαθούν ενώ οι απαντήσεις προς αυτή θα μείνουν ορφανές.",
"confirmations.reply.confirm": "Απάντησε",
"confirmations.reply.message": "Απαντώντας τώρα θα αντικαταστήσεις το κείμενο που ήδη γράφεις. Σίγουρα θέλεις να συνεχίσεις;",
"confirmations.unfollow.confirm": "Διακοπή παρακολούθησης",
"confirmations.unfollow.confirm": "Άρση ακολούθησης",
"confirmations.unfollow.message": "Σίγουρα θες να πάψεις να ακολουθείς τον/την {name};",
"conversation.delete": "Διαγραφή συζήτησης",
"conversation.mark_as_read": "Σήμανση ως αναγνωσμένο",
@ -186,14 +187,14 @@
"directory.new_arrivals": "Νέες αφίξεις",
"directory.recently_active": "Πρόσφατα ενεργοί",
"disabled_account_banner.account_settings": "Ρυθμίσεις λογαριασμού",
"disabled_account_banner.text": "Ο λογαριασμός σου {disabledAccount} είναι επί του παρόντος απενεργοποιημένος.",
"disabled_account_banner.text": "Ο λογαριασμός σου {disabledAccount} είναι προς το παρόν απενεργοποιημένος.",
"dismissable_banner.community_timeline": "Αυτές είναι οι πιο πρόσφατες δημόσιες αναρτήσεις ατόμων των οποίων οι λογαριασμοί φιλοξενούνται στο {domain}.",
"dismissable_banner.dismiss": "Παράβλεψη",
"dismissable_banner.explore_links": "Αυτές οι ειδήσεις συζητούνται σε αυτόν και άλλους servers του αποκεντρωμένου δικτύου αυτή τη στιγμή.",
"dismissable_banner.explore_statuses": "Αυτές οι αναρτήσεις από αυτόν τον server και άλλους στο αποκεντρωμένο δίκτυο αποκτούν απήχηση σε αυτόν τον server αυτή τη στιγμή.",
"dismissable_banner.explore_tags": "Αυτά τα hashtags αποκτούν απήχηση σε αυτόν και άλλους servers του αποκεντρωμένου δικτύου αυτή τη στιγμή.",
"dismissable_banner.public_timeline": "Αυτές είναι οι πιο πρόσφατες δημόσιες αναρτήσεις ανθρώπων σε αυτόν και άλλους servers του αποκεντρωμένου δικτύου τις οποίες γνωρίζει αυτός ο server.",
"embed.instructions": "Ενσωματώστε αυτή την κατάσταση στην ιστοσελίδα σας αντιγράφοντας τον παρακάτω κώδικα.",
"dismissable_banner.explore_links": "Αυτές οι ειδήσεις συζητούνται σε αυτόν και άλλους διακομιστές του αποκεντρωμένου δικτύου αυτή τη στιγμή.",
"dismissable_banner.explore_statuses": "Αυτές οι αναρτήσεις από αυτόν τον διακομιστή και άλλους στο αποκεντρωμένο δίκτυο αποκτούν απήχηση σε αυτόν τον διακομιστή αυτή τη στιγμή.",
"dismissable_banner.explore_tags": "Αυτές οι ετικέτες αποκτούν απήχηση σε αυτόν και άλλους διακομιστές του αποκεντρωμένου δικτύου αυτή τη στιγμή.",
"dismissable_banner.public_timeline": "Αυτές είναι οι πιο πρόσφατες δημόσιες αναρτήσεις ανθρώπων σε αυτόν και άλλους διακομιστές του αποκεντρωμένου δικτύου τους οποίους γνωρίζει αυτός ο διακομιστής.",
"embed.instructions": "Ενσωμάτωσε αυτή την ανάρτηση στην ιστοσελίδα σου αντιγράφοντας τον παρακάτω κώδικα.",
"embed.preview": "Ορίστε πως θα φαίνεται:",
"emoji_button.activity": "Δραστηριότητα",
"emoji_button.clear": "Καθαρισμός",
@ -202,26 +203,26 @@
"emoji_button.food": "Φαγητά & Ποτά",
"emoji_button.label": "Εισάγετε emoji",
"emoji_button.nature": "Φύση",
"emoji_button.not_found": "Ουδέν emojo!! (╯°□°)╯︵ ┻━┻",
"emoji_button.not_found": "Δε βρέθηκε αντιστοίχιση εμότζι",
"emoji_button.objects": "Αντικείμενα",
"emoji_button.people": "Άνθρωποι",
"emoji_button.recent": "Δημοφιλή",
"emoji_button.recent": "Χρησιμοποιούνται συχνά",
"emoji_button.search": "Αναζήτηση...",
"emoji_button.search_results": "Αποτελέσματα αναζήτησης",
"emoji_button.symbols": "Σύμβολα",
"emoji_button.travel": "Ταξίδια & Τοποθεσίες",
"empty_column.account_suspended": "Λογαριασμός σε αναστολή",
"empty_column.account_timeline": "Δεν έχει τουτ εδώ!",
"empty_column.account_timeline": "Δεν έχει αναρτήσεις εδώ!",
"empty_column.account_unavailable": "Μη διαθέσιμο προφίλ",
"empty_column.blocks": "Δεν έχεις αποκλείσει κανέναν χρήστη ακόμα.",
"empty_column.bookmarked_statuses": "Δεν έχεις κανένα αποθηκευμένο τουτ ακόμα. Μόλις αποθηκεύσεις κάποιο, θα εμφανιστεί εδώ.",
"empty_column.bookmarked_statuses": "Δεν έχεις καμία ανάρτηση με σελιδοδείκτη ακόμα. Μόλις βάλεις κάποιον, θα εμφανιστεί εδώ.",
"empty_column.community": "Η τοπική ροή είναι κενή. Γράψε κάτι δημόσιο παραμύθι ν' αρχινίσει!",
"empty_column.direct": "Δεν έχεις καμία προσωπική αναφορά ακόμα. Όταν στείλεις ή λάβεις μία, θα εμφανιστεί εδώ.",
"empty_column.direct": "Δεν έχεις καμία προσωπική επισήμανση ακόμα. Όταν στείλεις ή λάβεις μία, θα εμφανιστεί εδώ.",
"empty_column.domain_blocks": "Δεν υπάρχουν αποκλεισμένοι τομείς ακόμα.",
"empty_column.explore_statuses": "Τίποτα δεν τρεντάρει αυτή τη στιγμή. Ελέγξτε αργότερα!",
"empty_column.favourited_statuses": "Δεν έχεις κανένα αγαπημένο τουτ ακόμα. Μόλις αγαπήσεις κάποιο, θα εμφανιστεί εδώ.",
"empty_column.favourites": "Κανείς δεν έχει αγαπήσει αυτό το τουτ ακόμα. Μόλις το κάνει κάποια, θα εμφανιστούν εδώ.",
"empty_column.follow_recommendations": "Φαίνεται ότι δεν υπάρχει καμία πρόταση για σένα. Μπορείς να κάνεις μια αναζήτηση για άτομα που μπορεί να γνωρίζεις ή για hashtags που τρεντάρουν.",
"empty_column.explore_statuses": "Τίποτα δεν βρίσκεται στις τάσεις αυτή τη στιγμή. Έλεγξε αργότερα!",
"empty_column.favourited_statuses": "Δεν έχεις καμία αγαπημένη ανάρτηση ακόμα. Μόλις αγαπήσεις κάποια, θα εμφανιστεί εδώ.",
"empty_column.favourites": "Κανείς δεν έχει αυτή την ανάρτηση στα αγαπημένα ακόμα. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.",
"empty_column.follow_recommendations": "Φαίνεται ότι δεν υπάρχει καμία πρόταση για σένα. Μπορείς να κάνεις μια αναζήτηση για άτομα που μπορεί να γνωρίζεις ή να εξερευνήσεις ετικέτες σε τάση.",
"empty_column.follow_requests": "Δεν έχεις κανένα αίτημα παρακολούθησης ακόμα. Μόλις λάβεις κάποιο, θα εμφανιστεί εδώ.",
"empty_column.followed_tags": "Δεν έχετε παρακολουθήσει ακόμα καμία ετικέτα. Όταν το κάνετε, θα εμφανιστούν εδώ.",
"empty_column.hashtag": "Δεν υπάρχει ακόμα κάτι για αυτή την ετικέτα.",
@ -229,54 +230,54 @@
"empty_column.home.suggestions": "Ορίστε μερικές προτάσεις",
"empty_column.list": "Δεν υπάρχει τίποτα σε αυτή τη λίστα ακόμα. Όταν τα μέλη της δημοσιεύσουν νέες καταστάσεις, θα εμφανιστούν εδώ.",
"empty_column.lists": "Δεν έχεις καμία λίστα ακόμα. Μόλις φτιάξεις μια, θα εμφανιστεί εδώ.",
"empty_column.mutes": "Δεν έχεις αποσιωπήσει κανένα χρήστη ακόμα.",
"empty_column.notifications": "Δεν έχεις ειδοποιήσεις ακόμα. Αλληλεπίδρασε με άλλους χρήστες για να ξεκινήσεις την κουβέντα.",
"empty_column.public": "Δεν υπάρχει τίποτα εδώ! Γράψε κάτι δημόσιο, ή ακολούθησε χειροκίνητα χρήστες από άλλους κόμβους για να τη γεμίσεις",
"error.unexpected_crash.explanation": "Είτε λόγω λάθους στον κώδικά μας ή λόγω ασυμβατότητας με τον browser, η σελίδα δε μπόρεσε να εμφανιστεί σωστά.",
"error.unexpected_crash.explanation_addons": "Η σελίδα δεν μπόρεσε να εμφανιστεί σωστά. Το πρόβλημα οφείλεται πιθανόν σε κάποια επέκταση του φυλλομετρητή (browser extension) ή σε κάποιο αυτόματο εργαλείο μετάφρασης.",
"error.unexpected_crash.next_steps": "Δοκίμασε να ανανεώσεις τη σελίδα. Αν αυτό δε βοηθήσει, ίσως να μπορέσεις να χρησιμοποιήσεις το Mastodon μέσω διαφορετικού browser ή κάποιας εφαρμογής.",
"empty_column.mutes": "Δεν έχεις κανένα χρήστη σε σίγαση ακόμα.",
"empty_column.notifications": "Δεν έχεις ειδοποιήσεις ακόμα. Όταν άλλα άτομα αλληλεπιδράσουν μαζί σου, θα το δεις εδώ.",
"empty_column.public": "Δεν υπάρχει τίποτα εδώ! Γράψε κάτι δημόσιο ή ακολούθησε χειροκίνητα χρήστες από άλλους διακομιστές για να τη γεμίσεις",
"error.unexpected_crash.explanation": "Είτε λόγω σφάλματος στον κώδικά μας ή λόγω ασυμβατότητας με τον περιηγητή, η σελίδα δε μπόρεσε να εμφανιστεί σωστά.",
"error.unexpected_crash.explanation_addons": "Η σελίδα δεν μπόρεσε να εμφανιστεί σωστά. Το πρόβλημα οφείλεται πιθανόν σε κάποια επέκταση του φυλλομετρητή ή σε κάποιο αυτόματο εργαλείο μετάφρασης.",
"error.unexpected_crash.next_steps": "Δοκίμασε να ανανεώσεις τη σελίδα. Αν αυτό δε βοηθήσει, ίσως να μπορέσεις να χρησιμοποιήσεις το Mastodon μέσω διαφορετικού περιηγητή ή κάποιας εφαρμογής.",
"error.unexpected_crash.next_steps_addons": "Δοκίμασε να τα απενεργοποιήσεις και ανανέωσε τη σελίδα. Αν αυτό δεν βοηθήσει, ίσως να μπορέσεις να χρησιμοποιήσεις το Mastodon μέσω διαφορετικού φυλλομετρητή ή κάποιας εφαρμογής.",
"errors.unexpected_crash.copy_stacktrace": "Αντιγραφή μηνυμάτων κώδικα στο πρόχειρο",
"errors.unexpected_crash.report_issue": "Αναφορά προβλήματος",
"explore.search_results": "Κανένα αποτέλεσμα.",
"explore.search_results": "Αποτελέσματα αναζήτησης",
"explore.suggested_follows": "Για σένα",
"explore.title": "Εξερεύνηση",
"explore.trending_links": "Νέα",
"explore.trending_statuses": "Αναρτήσεις",
"explore.trending_tags": "Ετικέτες",
"filter_modal.added.context_mismatch_explanation": "Αυτή η κατηγορία φίλτρων δεν ισχύει για το πλαίσιο εντός του οποίου προσπελάσατε αυτή την ανάρτηση. Αν θέλετε να φιλτραριστεί η δημοσίευση και εντός αυτού του πλαισίου, θα πρέπει να τροποποιήσετε το φίλτρο.",
"filter_modal.added.context_mismatch_title": "Συνοδευτικά",
"filter_modal.added.context_mismatch_explanation": "Αυτή η κατηγορία φίλτρων δεν ισχύει για το περιεχόμενο εντός του οποίου προσπελάσατε αυτή την ανάρτηση. Αν θέλετε να φιλτραριστεί η ανάρτηση και εντός αυτού του πλαισίου, θα πρέπει να τροποποιήσετε το φίλτρο.",
"filter_modal.added.context_mismatch_title": "Ασυμφωνία περιεχομένου!",
"filter_modal.added.expired_explanation": "Αυτή η κατηγορία φίλτρων έχει λήξει, πρέπει να αλλάξετε την ημερομηνία λήξης για να ισχύσει.",
"filter_modal.added.expired_title": "Φίλτρο...",
"filter_modal.added.expired_title": "Ληγμένο φίλτρο!",
"filter_modal.added.review_and_configure": "Για να επιθεωρήσετε και να εξειδικεύσετε περαιτέρω αυτή την κατηγορία φίλτρων, πηγαίνετε στο {settings_link}.",
"filter_modal.added.review_and_configure_title": "Φίλτρο...",
"filter_modal.added.settings_link": "Στη σελίδα:",
"filter_modal.added.review_and_configure_title": "Ρυθμίσεις φίλτρου",
"filter_modal.added.settings_link": "σελίδα ρυθμίσεων",
"filter_modal.added.short_explanation": "Αυτή η ανάρτηση έχει προστεθεί στην ακόλουθη κατηγορία φίλτρου: {title}.",
"filter_modal.added.title": "Φίλτρο...",
"filter_modal.select_filter.context_mismatch": "Εφαρμογή",
"filter_modal.select_filter.expired": "Έληξε",
"filter_modal.select_filter.prompt_new": "Κατηγορία",
"filter_modal.select_filter.search": "Δημιουργία",
"filter_modal.added.title": "Το φίλτρο προστέθηκε!",
"filter_modal.select_filter.context_mismatch": "δεν εφαρμόζεται σε αυτό το περιεχόμενο",
"filter_modal.select_filter.expired": "έληξε",
"filter_modal.select_filter.prompt_new": "Νέα κατηγορία: {name}",
"filter_modal.select_filter.search": "Αναζήτηση ή δημιουργία",
"filter_modal.select_filter.subtitle": "Χρησιμοποιήστε μια υπάρχουσα κατηγορία ή δημιουργήστε μια νέα",
"filter_modal.select_filter.title": ίλτρο...",
"filter_modal.title.status": ίλτρο...",
"follow_recommendations.done": "Ολοκληρώθηκε",
"filter_modal.select_filter.title": ιλτράρισμα αυτής της ανάρτησης",
"filter_modal.title.status": ιλτράρισμα μιας ανάρτησης",
"follow_recommendations.done": "Έγινε",
"follow_recommendations.heading": "Ακολουθήστε άτομα από τα οποία θα θέλατε να βλέπετε δημοσιεύσεις! Ορίστε μερικές προτάσεις.",
"follow_recommendations.lead": "Οι αναρτήσεις των ατόμων που ακολουθείτε θα εμφανίζονται με χρονολογική σειρά στη ροή σας. Μη φοβάστε να κάνετε λάθη, καθώς μπορείτε πολύ εύκολα να σταματήσετε να ακολουθείτε άλλα άτομα οποιαδήποτε στιγμή!",
"follow_request.authorize": "Ενέκρινε",
"follow_request.authorize": "Εξουσιοδότησε",
"follow_request.reject": "Απέρριψε",
"follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, οι διαχειριστές του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.",
"follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, το προσωπικό του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.",
"followed_tags": "Ετικέτες που ακολουθούνται",
"footer.about": "Σχετικά με",
"footer.directory": "Κατάλογος προφίλ",
"footer.get_app": "Αποκτήστε την Εφαρμογή",
"footer.invite": "Πρόσκληση ατόμων",
"footer.get_app": "Αποκτήστε την εφαρμογή",
"footer.invite": "Προσκάλεσε άτομα",
"footer.keyboard_shortcuts": "Συντομεύσεις πληκτρολογίου",
"footer.privacy_policy": "Πολιτική απορρήτου",
"footer.source_code": "Προβολή πηγαίου κώδικα",
"footer.status": "Κατάσταση",
"generic.saved": "Αποθηκεύτηκε",
"getting_started.heading": "Αφετηρία",
"getting_started.heading": "Ας ξεκινήσουμε",
"hashtag.column_header.tag_mode.all": "και {additional}",
"hashtag.column_header.tag_mode.any": "ή {additional}",
"hashtag.column_header.tag_mode.none": "χωρίς {additional}",
@ -294,56 +295,56 @@
"home.hide_announcements": "Απόκρυψη ανακοινώσεων",
"home.show_announcements": "Εμφάνιση ανακοινώσεων",
"interaction_modal.description.favourite": "Με ένα λογαριασμό Mastodon μπορείτε να προτιμήσετε αυτή την ανάρτηση, για να ενημερώσετε τον συγγραφέα ότι την εκτιμάτε και να την αποθηκεύσετε για αργότερα.",
"interaction_modal.description.follow": "Με έναν λογαριασμό Mastodon, μπορείτε να ακολουθήσετε τον/την {name} ώστε να λαμβάνετε τις δημοσιεύσεις τους στη δική σας ροή.",
"interaction_modal.description.reblog": "Με ένα λογαριασμό Mastodon, μπορείτε να ενισχύσετε αυτή την ανάρτηση για να τη μοιραστείτε με τους δικούς σας followers.",
"interaction_modal.description.reply": "Με ένα λογαριασμό Mastodon, μπορείτε να απαντήσετε σε αυτή την ανάρτηση.",
"interaction_modal.description.follow": "Με έναν λογαριασμό Mastodon, μπορείς να ακολουθήσεις τον/την {name} ώστε να λαμβάνεις τις αναρτήσεις του/της στη δική σου ροή.",
"interaction_modal.description.reblog": "Με ένα λογαριασμό Mastodon, μπορείς να ενισχύσεις αυτή την ανάρτηση για να τη μοιραστείς με τους δικούς σου ακολούθους.",
"interaction_modal.description.reply": "Με ένα λογαριασμό Mastodon, μπορείς να απαντήσεις σε αυτή την ανάρτηση.",
"interaction_modal.on_another_server": "Σε διαφορετικό διακομιστή",
"interaction_modal.on_this_server": "Σε αυτόν τον διακομιστή",
"interaction_modal.other_server_instructions": "Αντιγράψτε και επικολλήστε αυτήν τη διεύθυνση URL στο πεδίο αναζήτησης της αγαπημένης σας εφαρμογής Mastodon ή στο web interface του διακομιστή σας Mastodon.",
"interaction_modal.preamble": "Δεδομένου ότι το Mastodon είναι αποκεντρωμένο, μπορείτε να χρησιμοποιήσετε τον υπάρχοντα λογαριασμό σας που φιλοξενείται σε άλλο server του Mastodon ή σε συμβατή πλατφόρμα, αν δεν έχετε λογαριασμό σε αυτόν τον server.",
"interaction_modal.title.favourite": "Σελίδα συγγραφέα %(name)s",
"interaction_modal.title.follow": "Ακολουθήστε!",
"interaction_modal.title.reblog": "Σχετικά με %(site_name)s",
"interaction_modal.other_server_instructions": "Αντέγραψε και επικόλλησε αυτήν τη διεύθυνση URL στο πεδίο αναζήτησης της αγαπημένης σου εφαρμογής Mastodon ή στη διεπαφή ιστού του διακομιστή σας στο Mastodon.",
"interaction_modal.preamble": "Δεδομένου ότι το Mastodon είναι αποκεντρωμένο, μπορείς να χρησιμοποιείς τον υπάρχοντα λογαριασμό σου που φιλοξενείται σε άλλον διακομιστή του Mastodon ή σε συμβατή πλατφόρμα, αν δεν έχετε λογαριασμό σε αυτόν.",
"interaction_modal.title.favourite": "Αγαπημένη ανάρτησητου {name}",
"interaction_modal.title.follow": "Ακολούθησε {name}",
"interaction_modal.title.reblog": "Ενίσχυσε την ανάρτηση του {name}",
"interaction_modal.title.reply": "Απάντηση στην ανάρτηση του {name}",
"intervals.full.days": "{number, plural, one {# μέρα} other {# μέρες}}",
"intervals.full.hours": "{number, plural, one {# ώρα} other {# ώρες}}",
"intervals.full.minutes": "{number, plural, one {# λεπτό} other {# λεπτά}}",
"keyboard_shortcuts.back": "επιστροφή",
"keyboard_shortcuts.blocked": "άνοιγμα λίστας αποκλεισμένων χρηστών",
"keyboard_shortcuts.boost": "προώθηση",
"keyboard_shortcuts.column": "εμφάνιση της κατάστασης σε μια από τις στήλες",
"keyboard_shortcuts.compose": "εστίαση στην περιοχή συγγραφής",
"keyboard_shortcuts.back": "Μετάβαση πίσω",
"keyboard_shortcuts.blocked": "Άνοιγμα λίστας αποκλεισμένων χρηστών",
"keyboard_shortcuts.boost": "Ενίσχυση ανάρτησης",
"keyboard_shortcuts.column": "Στήλη εστίασης",
"keyboard_shortcuts.compose": "Περιοχή συγγραφής κειμένου εστίασης",
"keyboard_shortcuts.description": "Περιγραφή",
"keyboard_shortcuts.direct": "για το άνοιγμα της στήλης ιδιωτικών αναφορών",
"keyboard_shortcuts.direct": "για το άνοιγμα της στήλης ιδιωτικών επισημάνσεων",
"keyboard_shortcuts.down": "κίνηση προς τα κάτω στη λίστα",
"keyboard_shortcuts.enter": "εμφάνιση κατάστασης",
"keyboard_shortcuts.favourite": "σημείωση ως αγαπημένο",
"keyboard_shortcuts.favourites": "άνοιγμα λίστας αγαπημένων",
"keyboard_shortcuts.federated": "άνοιγμα ομοσπονδιακής ροής",
"keyboard_shortcuts.heading": "Συντομεύσεις",
"keyboard_shortcuts.home": "άνοιγμα αρχικής ροής",
"keyboard_shortcuts.enter": "Εμφάνιση ανάρτησης",
"keyboard_shortcuts.favourite": "Σημείωση ως αγαπημένο",
"keyboard_shortcuts.favourites": "Άνοιγμα λίστας αγαπημένων",
"keyboard_shortcuts.federated": "Άνοιγμα ροής συναλλαγών",
"keyboard_shortcuts.heading": "Συντομεύσεις πληκτρολογίου",
"keyboard_shortcuts.home": "Άνοιγμα ροής αρχικής σελίδας",
"keyboard_shortcuts.hotkey": "Συντόμευση",
"keyboard_shortcuts.legend": "εμφάνιση αυτού του οδηγού",
"keyboard_shortcuts.local": "άνοιγμα τοπικής ροής",
"keyboard_shortcuts.mention": "αναφορά προς συγγραφέα",
"keyboard_shortcuts.muted": "άνοιγμα λίστας αποσιωπημενων χρηστών",
"keyboard_shortcuts.my_profile": "άνοιγμα του προφίλ σου",
"keyboard_shortcuts.notifications": "άνοιγμα στήλης ειδοποιήσεων",
"keyboard_shortcuts.open_media": "εμφάνιση πολυμέσου",
"keyboard_shortcuts.pinned": "άνοιγμα λίστας καρφιτσωμένων τουτ",
"keyboard_shortcuts.profile": "άνοιγμα προφίλ συγγραφέα",
"keyboard_shortcuts.reply": "απάντηση",
"keyboard_shortcuts.requests": "άνοιγμα λίστας αιτημάτων παρακολούθησης",
"keyboard_shortcuts.search": "εστίαση αναζήτησης",
"keyboard_shortcuts.spoilers": "εμφάνιση/απόκρυψη πεδίου CW",
"keyboard_shortcuts.start": "άνοιγμα κολώνας \"Ξεκινώντας\"",
"keyboard_shortcuts.toggle_hidden": "εμφάνιση/απόκρυψη κειμένου πίσω από την προειδοποίηση",
"keyboard_shortcuts.toggle_sensitivity": "εμφάνιση/απόκρυψη πολυμέσων",
"keyboard_shortcuts.toot": "δημιουργία νέου τουτ",
"keyboard_shortcuts.unfocus": "απο-εστίαση του πεδίου σύνθεσης/αναζήτησης",
"keyboard_shortcuts.up": "κίνηση προς την κορυφή της λίστας",
"keyboard_shortcuts.legend": "Εμφάνιση αυτού του οδηγού",
"keyboard_shortcuts.local": "Άνοιγμα τοπικής ροής",
"keyboard_shortcuts.mention": "Επισήμανση συγγραφέα",
"keyboard_shortcuts.muted": "Άνοιγμα λίστας αποσιωπημένων χρηστών",
"keyboard_shortcuts.my_profile": "Άνοιγμα του προφίλ σου",
"keyboard_shortcuts.notifications": "Άνοιγμα στήλης ειδοποιήσεων",
"keyboard_shortcuts.open_media": "Άνοιγμα πολυμέσων",
"keyboard_shortcuts.pinned": "Άνοιγμα λίστας καρφιτσωμένων αναρτήσεων",
"keyboard_shortcuts.profile": "Άνοιγμα προφίλ συγγραφέα",
"keyboard_shortcuts.reply": "Απάντηση στην ανάρτηση",
"keyboard_shortcuts.requests": "Άνοιγμα λίστας αιτημάτων ακολούθησης",
"keyboard_shortcuts.search": "Γραμμή αναζήτησης εστίασης",
"keyboard_shortcuts.spoilers": "Εμφάνιση/απόκρυψη πεδίου CW",
"keyboard_shortcuts.start": "Άνοιγμα της στήλης \"Ας ξεκινήσουμε\"",
"keyboard_shortcuts.toggle_hidden": "Εμφάνιση/απόκρυψη κειμένου πίσω από το CW",
"keyboard_shortcuts.toggle_sensitivity": "Εμφάνιση/απόκρυψη πολυμέσων",
"keyboard_shortcuts.toot": "Δημιουργία νέας ανάρτησης",
"keyboard_shortcuts.unfocus": "Αποεστίαση του πεδίου σύνθεσης/αναζήτησης",
"keyboard_shortcuts.up": "Μετακίνηση προς τα πάνω στη λίστα",
"lightbox.close": "Κλείσιμο",
"lightbox.compress": "Συμπίεση πλαισίου εμφάνισης εικόνας",
"lightbox.compress": "Συμπίεση πλαισίου προβολής εικόνας",
"lightbox.expand": "Ανάπτυξη πλαισίου εμφάνισης εικόνας",
"lightbox.next": "Επόμενο",
"lightbox.previous": "Προηγούμενο",
@ -362,21 +363,21 @@
"lists.replies_policy.title": "Εμφάνιση απαντήσεων σε:",
"lists.search": "Αναζήτησε μεταξύ των ανθρώπων που ακουλουθείς",
"lists.subheading": "Οι λίστες σου",
"load_pending": "{count, plural, one {# νέο} other {# νέα}}",
"load_pending": "{count, plural, one {# νέο στοιχείο} other {# νέα στοιχεία}}",
"loading_indicator.label": "Φορτώνει...",
"media_gallery.toggle_visible": "Εναλλαγή ορατότητας",
"moved_to_account_banner.text": "Ο λογαριασμός σας {disabledAccount} είναι προσωρινά απενεργοποιημένος επειδή μεταφερθήκατε στο {movedToAccount}.",
"media_gallery.toggle_visible": "{number, plural, one {Απόκρυψη εικόνας} other {Απόκρυψη εικόνων}}",
"moved_to_account_banner.text": "Ο λογαριασμός σου {disabledAccount} είναι προσωρινά απενεργοποιημένος επειδή μεταφέρθηκες στον {movedToAccount}.",
"mute_modal.duration": "Διάρκεια",
"mute_modal.hide_notifications": "Απόκρυψη ειδοποιήσεων αυτού του χρήστη;",
"mute_modal.indefinite": "Αόριστη",
"mute_modal.indefinite": "Επ᾽ αόριστον",
"navigation_bar.about": "Σχετικά με",
"navigation_bar.blocks": "Αποκλεισμένοι χρήστες",
"navigation_bar.bookmarks": "Σελιδοδείκτες",
"navigation_bar.community_timeline": "Τοπική ροή",
"navigation_bar.compose": "Γράψε νέο τουτ",
"navigation_bar.direct": "Ιδιωτικές αναφορές",
"navigation_bar.compose": "Γράψε νέα ανάρτηση",
"navigation_bar.direct": "Ιδιωτικές επισημάνσεις",
"navigation_bar.discover": "Ανακάλυψη",
"navigation_bar.domain_blocks": "Κρυμμένοι τομείς",
"navigation_bar.domain_blocks": "Αποκλεισμένοι τομείς",
"navigation_bar.edit_profile": "Επεξεργασία προφίλ",
"navigation_bar.explore": "Εξερεύνηση",
"navigation_bar.favourites": "Αγαπημένα",
@ -388,25 +389,25 @@
"navigation_bar.logout": "Αποσύνδεση",
"navigation_bar.mutes": "Αποσιωπημένοι χρήστες",
"navigation_bar.personal": "Προσωπικά",
"navigation_bar.pins": "Καρφιτσωμένα τουτ",
"navigation_bar.pins": "Καρφιτσωμένες αναρτήσεις",
"navigation_bar.preferences": "Προτιμήσεις",
"navigation_bar.public_timeline": "Ομοσπονδιακή ροή",
"navigation_bar.public_timeline": "Ροή συναλλαγών",
"navigation_bar.search": "Αναζήτηση",
"navigation_bar.security": "Ασφάλεια",
"not_signed_in_indicator.not_signed_in": "Πρέπει να συνδεθείτε για να αποκτήσετε πρόσβαση σε αυτόν τον πόρο.",
"notification.admin.report": "{name} ανέφερε {target}",
"not_signed_in_indicator.not_signed_in": "Πρέπει να συνδεθείς για να αποκτήσεις πρόσβαση σε αυτόν τον πόρο.",
"notification.admin.report": "Ο/Η {name} ανέφερε τον {target}",
"notification.admin.sign_up": "{name} έχει εγγραφεί",
"notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την κατάστασή σου",
"notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την ανάρτησή σου",
"notification.follow": "Ο/Η {name} σε ακολούθησε",
"notification.follow_request": "Ο/H {name} ζήτησε να σε παρακολουθεί",
"notification.mention": "Ο/Η {name} σε ανέφερε",
"notification.own_poll": "Η ψηφοφορία σου έληξε",
"notification.poll": "Τελείωσε μια από τις ψηφοφορίες που συμμετείχες",
"notification.reblog": "Ο/Η {name} προώθησε την κατάστασή σου",
"notification.status": "Ο/Η {name} μόλις έγραψε κάτι",
"notification.update": "{name} επεξεργάστηκε μια δημοσίευση",
"notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει",
"notification.mention": "Ο/Η {name} σε επισήμανε",
"notification.own_poll": "Η δημοσκόπησή σου έληξε",
"notification.poll": "Τελείωσε μια από τις δημοσκοπήσεις που συμμετείχες",
"notification.reblog": "Ο/Η {name} ενίσχυσε τη δημοσίευσή σου",
"notification.status": "Ο/Η {name} μόλις ανέρτησε κάτι",
"notification.update": "ο/η {name} επεξεργάστηκε μια ανάρτηση",
"notifications.clear": "Καθαρισμός ειδοποιήσεων",
"notifications.clear_confirmation": "Σίγουρα θέλεις να καθαρίσεις όλες τις ειδοποιήσεις σου;",
"notifications.clear_confirmation": "Σίγουρα θέλεις να καθαρίσεις μόνιμα όλες τις ειδοποιήσεις σου;",
"notifications.column_settings.admin.report": "Νέες αναφορές:",
"notifications.column_settings.admin.sign_up": "Νέες εγγραφές:",
"notifications.column_settings.alert": "Ειδοποιήσεις επιφάνειας εργασίας",
@ -415,23 +416,23 @@
"notifications.column_settings.filter_bar.category": "Μπάρα γρήγορου φίλτρου",
"notifications.column_settings.filter_bar.show_bar": "Εμφάνιση μπάρας φίλτρου",
"notifications.column_settings.follow": "Νέοι ακόλουθοι:",
"notifications.column_settings.follow_request": "Νέο αίτημα παρακολούθησης:",
"notifications.column_settings.mention": "Αναφορές:",
"notifications.column_settings.poll": "Αποτελέσματα ψηφοφορίας:",
"notifications.column_settings.push": "Άμεσες ειδοποιήσεις",
"notifications.column_settings.reblog": "Προωθήσεις:",
"notifications.column_settings.follow_request": "Νέο αίτημα ακολούθησης:",
"notifications.column_settings.mention": "Επισημάνσεις:",
"notifications.column_settings.poll": "Αποτελέσματα δημοσκόπησης:",
"notifications.column_settings.push": "Ειδοποιήσεις Push",
"notifications.column_settings.reblog": "Ενισχύσεις:",
"notifications.column_settings.show": "Εμφάνισε σε στήλη",
"notifications.column_settings.sound": "Ηχητική ειδοποίηση",
"notifications.column_settings.status": "Νέα τουτ:",
"notifications.column_settings.sound": "Αναπαραγωγή ήχου",
"notifications.column_settings.status": "Νέες αναρτήσεις:",
"notifications.column_settings.unread_notifications.category": "Μη αναγνωσμένες ειδοποιήσεις",
"notifications.column_settings.unread_notifications.highlight": "Επισήμανση μη αναγνωσμένων ειδοποιήσεων",
"notifications.column_settings.update": "Επεξεργασίες:",
"notifications.filter.all": "Όλες",
"notifications.filter.boosts": "Προωθήσεις",
"notifications.filter.boosts": "Ενισχύσεις",
"notifications.filter.favourites": "Αγαπημένα",
"notifications.filter.follows": "Ακόλουθοι",
"notifications.filter.mentions": "Αναφορές",
"notifications.filter.polls": "Αποτελέσματα ψηφοφορίας",
"notifications.filter.follows": "Ακολουθείς",
"notifications.filter.mentions": "Επισημάνσεις",
"notifications.filter.polls": "Αποτελέσματα δημοσκόπησης",
"notifications.filter.statuses": "Ενημερώσεις από όσους ακολουθείς",
"notifications.grant_permission": "Χορήγηση άδειας.",
"notifications.group": "{count} ειδοποιήσεις",
@ -440,26 +441,28 @@
"notifications.permission_denied_alert": "Δεν είναι δυνατή η ενεργοποίηση των ειδοποιήσεων της επιφάνειας εργασίας, καθώς η άδεια του προγράμματος περιήγησης έχει απορριφθεί νωρίτερα",
"notifications.permission_required": "Οι ειδοποιήσεις δεν είναι διαθέσιμες επειδή δεν έχει δοθεί η απαιτούμενη άδεια.",
"notifications_permission_banner.enable": "Ενεργοποίηση ειδοποιήσεων επιφάνειας εργασίας",
"notifications_permission_banner.how_to_control": "Για να λαμβάνετε ειδοποιήσεις όταν το Mastodon δεν είναι ανοιχτό, ενεργοποιήστε τις ειδοποιήσεις επιφάνειας εργασίας. Μπορείτε να ελέγξετε με ακρίβεια ποιοι τύποι αλληλεπιδράσεων δημιουργούν ειδοποιήσεις επιφάνειας εργασίας μέσω του κουμπιού {icon} μόλις ενεργοποιηθούν.",
"notifications_permission_banner.title": "Μη χάσετε τίποτα",
"picture_in_picture.restore": "Επαναφορά",
"notifications_permission_banner.how_to_control": "Για να λαμβάνεις ειδοποιήσεις όταν το Mastodon δεν είναι ανοιχτό, ενεργοποίησε τις ειδοποιήσεις επιφάνειας εργασίας. Μπορείς να ελέγξεις με ακρίβεια ποιοι τύποι αλληλεπιδράσεων δημιουργούν ειδοποιήσεις επιφάνειας εργασίας μέσω του κουμπιού {icon} μόλις ενεργοποιηθούν.",
"notifications_permission_banner.title": "Μη χάσεις στιγμή",
"password_confirmation.exceeds_maxlength": "Η επιβεβαίωση κωδικού πρόσβασης υπερβαίνει το μέγιστο μήκος κωδικού πρόσβασης",
"password_confirmation.mismatching": "Η επιβεβαίωση του κωδικού πρόσβασης δε συμπίπτει",
"picture_in_picture.restore": "Βάλε το πίσω",
"poll.closed": "Κλειστή",
"poll.refresh": "Ανανέωση",
"poll.total_people": "{count, plural, one {# άτομο} other {# άτομα}}",
"poll.total_votes": "{count, plural, one {# ψήφος} other {# ψήφοι}}",
"poll.vote": "Ψήφισε",
"poll.voted": ηφίσατε αυτήν την απάντηση",
"poll.voted": ήφισες αυτήν την απάντηση",
"poll.votes": "{votes, plural, one {# ψήφος} other {# ψήφοι}}",
"poll_button.add_poll": "Προσθήκη δημοσκόπησης",
"poll_button.remove_poll": "Αφαίρεση δημοσκόπησης",
"privacy.change": "Προσαρμογή ιδιωτικότητας δημοσίευσης",
"privacy.direct.long": "Δημοσίευση μόνο σε όσους και όσες αναφέρονται",
"privacy.change": "Προσαρμογή ιδιωτικότητας ανάρτησης",
"privacy.direct.long": "Δημοσίευση μόνο σε όσους επισημαίνονται",
"privacy.direct.short": "Αναφερόμενα άτομα μόνο",
"privacy.private.long": "Δημοσίευση μόνο στους ακόλουθους",
"privacy.private.long": "Ορατό μόνο για τους ακολούθους",
"privacy.private.short": "Μόνο ακόλουθοι",
"privacy.public.long": "Ορατό σε όλους",
"privacy.public.short": "Δημόσιο",
"privacy.unlisted.long": "Ορατό για όλους, αλλά opted-out των χαρακτηριστικών της ανακάλυψης",
"privacy.unlisted.long": "Ορατό για όλους, εκτός αυτών που δεν συμμετέχουν σε δυνατότητες ανακάλυψης",
"privacy.unlisted.short": "Μη καταχωρημένα",
"privacy_policy.last_updated": "Τελευταία ενημέρωση {date}",
"privacy_policy.title": "Πολιτική Απορρήτου",
@ -479,48 +482,48 @@
"relative_time.today": "σήμερα",
"reply_indicator.cancel": "Άκυρο",
"report.block": "Αποκλεισμός",
"report.block_explanation": "Δεν θα βλέπετε τις αναρτήσεις τους. Δεν θα μπορούν να δουν τις αναρτήσεις σας ή να σας ακολουθήσουν. Θα μπορούν να δουν ότι έχουν μπλοκαριστεί.",
"report.block_explanation": "Δεν θα βλέπεις τις αναρτήσεις του. Δεν θα μπορεί να δει τις αναρτήσεις σου ή να σε ακολουθήσει. Θα μπορεί να δει ότι έχει αποκλειστεί.",
"report.categories.other": "Άλλες",
"report.categories.spam": "Ανεπιθύμητα",
"report.categories.violation": "Το περιεχόμενο παραβιάζει έναν ή περισσότερους κανόνες διακομιστή",
"report.category.subtitle": "Καλύτερο αποτέλεσμα",
"report.category.title": "Πείτε μας τι συμβαίνει με αυτό το {type}",
"report.category.subtitle": "Επέλεξε την καλύτερη αντιστοίχιση",
"report.category.title": "Πείτε μας τι συμβαίνει με {type}",
"report.category.title_account": "προφίλ",
"report.category.title_status": "ανάρτηση",
"report.close": "Τέλος",
"report.comment.title": "Υπάρχει κάτι άλλο που νομίζετε ότι θα πρέπει να γνωρίζουμε;",
"report.comment.title": "Υπάρχει κάτι άλλο που νομίζεις ότι θα πρέπει να γνωρίζουμε;",
"report.forward": "Προώθηση προς {target}",
"report.forward_hint": "Ο λογαριασμός είναι από διαφορετικό διακομιστή. Να σταλεί ανώνυμο αντίγραφο της καταγγελίας κι εκεί;",
"report.forward_hint": "Ο λογαριασμός είναι από διαφορετικό διακομιστή. Να σταλεί ανώνυμο αντίγραφο της αναφοράς και εκεί;",
"report.mute": "Σίγαση",
"report.mute_explanation": "Δεν θα βλέπετε τις αναρτήσεις τους. Εκείνοι μπορούν ακόμα να σας ακολουθούν και να βλέπουν τις αναρτήσεις σας χωρίς να γνωρίζουν ότι είναι σε σίγαση.",
"report.next": "Επόμενη",
"report.mute_explanation": "Δεν θα βλέπεις τις αναρτήσεις του. Εκείνοι μπορούν ακόμα να σε ακολουθούν και να βλέπουν τις αναρτήσεις σου χωρίς να γνωρίζουν ότι είναι σε σίγαση.",
"report.next": "Επόμενο",
"report.placeholder": "Επιπλέον σχόλια",
"report.reasons.dislike": "Δεν μου αρέσει",
"report.reasons.dislike_description": "Η σελίδα είναι ιδιωτική, μόνο εσείς μπορείτε να τη δείτε.",
"report.reasons.other": "Είσαι ένας δημιουργός κοινών; Παράγεις ελεύθερη τέχνη, διαδίδεις ελεύθερη γνώση, γράφεις ελεύθερο λογισμικό; Ή κάτι άλλο το οποίο μπορεί να χρηματοδοτηθεί μέσω επαναλαμβανόμενων δωρεών;",
"report.reasons.other_description": "Το θέμα δεν ταιριάζει σε άλλες κατηγορίες",
"report.reasons.spam": "Αναφορά ως ανεπιθύμητη αλληλογραφία",
"report.reasons.dislike_description": "Δεν είναι κάτι που θα ήθελες να δεις",
"report.reasons.other": "Είναι κάτι άλλο",
"report.reasons.other_description": "Το ζήτημα δεν ταιριάζει σε άλλες κατηγορίες",
"report.reasons.spam": "Είναι σπαμ",
"report.reasons.spam_description": "Κακόβουλοι σύνδεσμοι, πλαστή αλληλεπίδραση ή επαναλαμβανόμενες απαντήσεις",
"report.reasons.violation": "Χωρίς φίλτρα",
"report.reasons.violation_description": "Γνωρίζετε ότι παραβιάζει συγκεκριμένους κανόνες",
"report.rules.subtitle": "Εφαρμογή σε όλα τα αρχεία",
"report.reasons.violation": "Παραβαίνει τους κανόνες του διακομιστή",
"report.reasons.violation_description": "Γνωρίζεις ότι παραβιάζει συγκεκριμένους κανόνες",
"report.rules.subtitle": "Επίλεξε όλα όσα ισχύουν",
"report.rules.title": "Ποιοι κανόνες παραβιάζονται;",
"report.statuses.subtitle": "Εφαρμογή σε όλα τα αρχεία",
"report.statuses.subtitle": "Επίλεξε όλα όσα ισχύουν",
"report.statuses.title": "Υπάρχουν αναρτήσεις που τεκμηριώνουν αυτή την αναφορά;",
"report.submit": "Υποβολή",
"report.target": "Καταγγελία {target}",
"report.thanks.take_action": "Αυτές είναι οι επιλογές σας για να ελέγχετε τι βλέπετε στο Mastodon:",
"report.thanks.take_action_actionable": "Ενώ το ελέγχουμε, εσείς μπορείτε να αναλάβετε δράση εναντίον του/της @{name}:",
"report.thanks.title": "Να μην εμφανίζονται προτεινόμενοι χρήστες",
"report.thanks.title_actionable": ας ευχαριστούμε για την αναφορά, θα το διερευνήσουμε.",
"report.unfollow": "Αφαίρεση ακολούθησης",
"report.unfollow_explanation": "Ακολουθείτε αυτό τον λογαριασμό. Για να μη βλέπετε τις αναρτήσεις τους στη δική σας ροή, κάντε unfollow.",
"report.thanks.take_action_actionable": "Ενώ το εξετάζουμε, μπορείς να δράσεις εναντίον του @{name}:",
"report.thanks.title": "Δε θες να το βλέπεις;",
"report.thanks.title_actionable": ε ευχαριστούμε για την αναφορά, θα το διερευνήσουμε.",
"report.unfollow": "Κατάργηση ακολούθησης του @{name}",
"report.unfollow_explanation": "Ακολουθείς αυτό τον λογαριασμό. Για να μη βλέπεις τις αναρτήσεις τους στη δική σου ροή, πάψε να τον ακολουθείς.",
"report_notification.attached_statuses": "{count, plural, one {{count} ανάρτηση} other {{count} αναρτήσεις}} επισυνάπτονται",
"report_notification.categories.other": "Άλλες",
"report_notification.categories.spam": "Ανεπιθύμητα",
"report_notification.categories.violation": "Παραβίαση κανόνα",
"report_notification.open": "Ανοικτό",
"search.no_recent_searches": "Καμμία πρόσφατη αναζήτηση",
"report_notification.open": "Ανοιχτή αναφορά",
"search.no_recent_searches": "Καμία πρόσφατη αναζήτηση",
"search.placeholder": "Αναζήτηση",
"search.quick_action.account_search": "Προφίλ που ταιριάζουν με {x}",
"search.quick_action.go_to_account": "Μετάβαση στο προφίλ {x}",
@ -534,106 +537,107 @@
"search_results.all": "Όλα",
"search_results.hashtags": "Ετικέτες",
"search_results.nothing_found": "Δεν βρέθηκε τίποτα με αυτούς τους όρους αναζήτησης",
"search_results.statuses": "Τουτ",
"search_results.statuses_fts_disabled": "Η αναζήτηση τουτ βάσει του περιεχόμενού τους δεν είναι ενεργοποιημένη σε αυτό τον κόμβο.",
"search_results.title": "Αναζήτηση για",
"search_results.total": "{count, number} {count, plural, zero {αποτελέσματα} one {αποτέλεσμα} other {αποτελέσματα}}",
"search_results.statuses": "Αναρτήσεις",
"search_results.statuses_fts_disabled": "Η αναζήτηση αναρτήσεων βάσει του περιεχόμενού τους δεν είναι ενεργοποιημένη σε αυτό τον διακομιστή Mastodon.",
"search_results.title": "Αναζήτηση για {q}",
"search_results.total": "{count, number} {count, plural, one {αποτέλεσμα} other {αποτελέσματα}}",
"server_banner.about_active_users": "Άτομα που χρησιμοποιούν αυτόν τον διακομιστή κατά τις τελευταίες 30 ημέρες (Μηνιαία Ενεργοί Χρήστες)",
"server_banner.active_users": "ενεργοί χρήστες",
"server_banner.administered_by": "Διαχειριστής:",
"server_banner.introduction": "Το {domain} είναι μέρος του αποκεντρωμένου κοινωνικού δικτύου που τρέχει σε {mastodon}.",
"server_banner.learn_more": "Μάθετε περισσότερα",
"server_banner.introduction": "Ο {domain} είναι μέρος του αποκεντρωμένου κοινωνικού δικτύου που παρέχεται από {mastodon}.",
"server_banner.learn_more": "Μάθε περισσότερα",
"server_banner.server_stats": "Στατιστικά διακομιστή:",
"sign_in_banner.create_account": "Δημιουργία λογαριασμού",
"sign_in_banner.sign_in": "Σύνδεση",
"sign_in_banner.text": "Συνδεθείτε για να ακολουθήσετε προφίλ ή ετικέτες, αγαπήστε, μοιραστείτε και απαντήστε σε δημοσιεύσεις. Μπορείτε επίσης να αλληλεπιδράσετε από τον λογαριασμό σας σε διαφορετικό διακομιστή.",
"status.admin_account": "Άνοιγμα λειτουργίας διαμεσολάβησης για τον/την @{name}",
"sign_in_banner.text": "Συνδέσου για να ακολουθήσεις προφίλ ή ετικέτες, να αγαπήσεις, να μοιραστείς και να απαντήσεις σε αναρτήσεις. Μπορείς επίσης να αλληλεπιδράσεις από τον λογαριασμό σου σε διαφορετικό διακομιστή.",
"status.admin_account": "Άνοιγμα διεπαφής συντονισμού για τον/την @{name}",
"status.admin_domain": "Άνοιγμα λειτουργίας διαμεσολάβησης για {domain}",
"status.admin_status": "Άνοιγμα αυτής της δημοσίευσης στη λειτουργία διαμεσολάβησης",
"status.admin_status": "Άνοιγμα αυτής της ανάρτησης σε διεπαφή συντονισμού",
"status.block": "Αποκλεισμός @{name}",
"status.bookmark": "Σελιδοδείκτης",
"status.cancel_reblog_private": "Ακύρωσε την προώθηση",
"status.cannot_reblog": "Αυτή η δημοσίευση δεν μπορεί να προωθηθεί",
"status.copy": "Αντιγραφή συνδέσμου της δημοσίευσης",
"status.cancel_reblog_private": "Ακύρωση ενίσχυσης",
"status.cannot_reblog": "Αυτή η ανάρτηση δεν μπορεί να ενισχυθεί",
"status.copy": "Αντιγραφή συνδέσμου ανάρτησης",
"status.delete": "Διαγραφή",
"status.detailed_status": "Προβολή λεπτομερειών συζήτησης",
"status.direct": "Ιδιωτική αναφορά @{name}",
"status.direct_indicator": "Ιδιωτική αναφορά",
"status.detailed_status": "Προβολή λεπτομερούς συζήτησης",
"status.direct": "Ιδιωτική επισήμανση @{name}",
"status.direct_indicator": "Ιδιωτική επισήμανση",
"status.edit": "Επεξεργασία",
"status.edited": "Επεξεργάστηκε στις {date}",
"status.edited_x_times": "Επεξεργάστηκε {count, plural, one {{count} φορά} other {{count} φορές}}",
"status.embed": "Ενσωμάτωσε",
"status.favourite": "Σημείωσε ως αγαπημένο",
"status.filter": ίλτρο...",
"status.filter": ιλτράρισμα αυτής της ανάρτησης",
"status.filtered": "Φιλτραρισμένα",
"status.hide": "Απόκρυψη ανάρτησης",
"status.history.created": "Δημιουργήθηκε από",
"status.history.edited": "Τελευταία επεξεργασία από:",
"status.history.created": "{name} δημιούργησε στις {date}",
"status.history.edited": "{name} επεξεργάστηκε στις {date}",
"status.load_more": "Φόρτωσε περισσότερα",
"status.media_hidden": "Κρυμμένο πολυμέσο",
"status.mention": "Ανέφερε τον/την @{name}",
"status.mention": "Επισήμανε @{name}",
"status.more": "Περισσότερα",
"status.mute": ώπασε τον/την @{name}",
"status.mute_conversation": "Αποσιώπησε τη συζήτηση",
"status.open": "Διεύρυνε αυτή την κατάσταση",
"status.mute": ίγαση σε @{name}",
"status.mute_conversation": "Σίγαση συνομιλίας",
"status.open": "Επέκταση ανάρτησης",
"status.pin": "Καρφίτσωσε στο προφίλ",
"status.pinned": "Καρφιτσωμένο τουτ",
"status.read_more": "Περισσότερα",
"status.reblog": "Προώθηση",
"status.reblog_private": "Προώθησε στους αρχικούς παραλήπτες",
"status.reblogged_by": "{name} προώθησε",
"status.reblogs.empty": "Κανείς δεν προώθησε αυτό το τουτ ακόμα. Μόλις το κάνει κάποια, θα εμφανιστούν εδώ.",
"status.pinned": "Καρφιτσωμένη ανάρτηση",
"status.read_more": "Διάβασε περισότερα",
"status.reblog": "Ενίσχυση",
"status.reblog_private": "Ενίσχυση με αρχική ορατότητα",
"status.reblogged_by": "{name} ενισχύθηκε",
"status.reblogs.empty": "Κανείς δεν ενίσχυσε αυτή την ανάρτηση ακόμα. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.",
"status.redraft": "Σβήσε & ξαναγράψε",
"status.remove_bookmark": "Αφαίρεση σελιδοδείκτη",
"status.replied_to": "Όνομα:",
"status.replied_to": "Απάντησε στον {name}",
"status.reply": "Απάντησε",
"status.replyAll": "Απάντησε στην συζήτηση",
"status.report": "Κατάγγειλε @{name}",
"status.replyAll": "Απάντησε στο νήμα συζήτησης",
"status.report": "Αναφορά @{name}",
"status.sensitive_warning": "Ευαίσθητο περιεχόμενο",
"status.share": "Μοιράσου",
"status.share": "Κοινοποίηση",
"status.show_filter_reason": "Εμφάνιση παρ' όλα αυτά",
"status.show_less": "Δείξε λιγότερα",
"status.show_less_all": "Δείξε λιγότερα για όλα",
"status.show_more": "Δείξε περισσότερα",
"status.show_more_all": "Δείξε περισσότερα για όλα",
"status.show_original": "Εμφάνιση αρχικού",
"status.title.with_attachments": "{user} δημοσίευσε {attachmentCount, plural, one {ένα συνημμένο} other {{attachmentCount} συνημμένα}}",
"status.translate": "Μετάφραση",
"status.translated_from_with": "Μεταφράστηκε από {lang} χρησιμοποιώντας {provider}",
"status.uncached_media_warning": "Μη διαθέσιμα",
"status.unmute_conversation": "Διέκοψε την αποσιώπηση της συζήτησης",
"status.unmute_conversation": "Αναίρεση σίγασης συνομιλίας",
"status.unpin": "Ξεκαρφίτσωσε από το προφίλ",
"subscribed_languages.lead": "Μόνο δημοσιεύσεις σε επιλεγμένες γλώσσες θα εμφανίζονται στην αρχική σας και θα εμφανίζονται χρονοδιαγράμματα μετά την αλλαγή. Επιλέξτε καμία για να λαμβάνετε δημοσιεύσεις σε όλες τις γλώσσες.",
"subscribed_languages.lead": "Μόνο αναρτήσεις σε επιλεγμένες γλώσσες θα εμφανίζονται στην αρχική σου και θα παραθέτονται χρονοδιαγράμματα μετά την αλλαγή. Επέλεξε καμία για να λαμβάνεις αναρτήσεις σε όλες τις γλώσσες.",
"subscribed_languages.save": "Αποθήκευση αλλαγών",
"subscribed_languages.target": "Αλλαγή εγγεγραμμένων γλωσσών για {target}",
"suggestions.dismiss": "Απόρριψη πρότασης",
"suggestions.header": "Ίσως να ενδιαφέρεσαι για…",
"tabs_bar.federated_timeline": "Ομοσπονδιακή",
"tabs_bar.federated_timeline": "Συναλλαγές",
"tabs_bar.home": "Αρχική",
"tabs_bar.local_timeline": "Τοπική",
"tabs_bar.notifications": "Ειδοποιήσεις",
"time_remaining.days": "απομένουν {number, plural, one {# ημέρα} other {# ημέρες}}",
"time_remaining.hours": "απομένουν {number, plural, one {# ώρα} other {# ώρες}}",
"time_remaining.minutes": "απομένουν {number, plural, one {# λεπτό} other {# λεπτά}}",
"time_remaining.moments": "Απομένουν στιγμές",
"time_remaining.moments": "Στιγμές που απομένουν",
"time_remaining.seconds": "απομένουν {number, plural, one {# δευτερόλεπτο} other {# δευτερόλεπτα}}",
"timeline_hint.remote_resource_not_displayed": "{resource} από άλλους διακομιστές δεν εμφανίζονται.",
"timeline_hint.resources.followers": "Ακόλουθοι",
"timeline_hint.resources.follows": "Ακολουθεί",
"timeline_hint.resources.statuses": "Παλαιότερα τουτ",
"trends.counter_by_accounts": "{count, plural, one {{counter} άτομο} other {{counter} άνθρωποι}} στο παρελθόν {days, plural, one {ημέρα} other {{days} ημέρες}}",
"timeline_hint.resources.follows": "Ακολουθείς",
"timeline_hint.resources.statuses": "Παλαιότερες αναρτήσεις",
"trends.counter_by_accounts": "{count, plural, one {{counter} άτομο} other {{counter} άτομα} }{days, plural, one { την τελευταία ημέρα} other { τις τελευταίες {days} ημέρες}}",
"trends.trending_now": "Δημοφιλή τώρα",
"ui.beforeunload": "Το προσχέδιό σου θα χαθεί αν φύγεις από το Mastodon.",
"units.short.billion": "{count}Δ",
"units.short.million": "{count}Ε",
"units.short.thousand": "{count}Χ",
"upload_area.title": "Drag & drop για να ανεβάσεις",
"upload_button.label": "Πρόσθεσε πολυμέσα",
"units.short.billion": "{count}Δις",
"units.short.million": "{count}Εκ",
"units.short.thousand": "{count}Χιλ",
"upload_area.title": "Κάνε Drag & drop για να ανεβάσεις",
"upload_button.label": "Πρόσθεσε εικόνες, ένα βίντεο ή ένα αρχείο ήχου",
"upload_error.limit": "Υπέρβαση ορίου μεγέθους ανεβασμένων αρχείων.",
"upload_error.poll": "Στις δημοσκοπήσεις δεν επιτρέπεται η μεταφόρτωση αρχείου.",
"upload_form.audio_description": "Περιγραφή για άτομα με προβλήματα ακοής",
"upload_form.description": "Περιγραφή για όσους & όσες έχουν προβλήματα όρασης",
"upload_form.description": "Περιγραφή για άτομα με προβλήματα όρασης",
"upload_form.description_missing": "Δεν προστέθηκε περιγραφή",
"upload_form.edit": "Ενημέρωση",
"upload_form.edit": "Επεξεργασία",
"upload_form.thumbnail": "Αλλαγή μικρογραφίας",
"upload_form.undo": "Διαγραφή",
"upload_form.video_description": "Περιγραφή για άτομα με προβλήματα ακοής ή όρασης",
@ -641,20 +645,21 @@
"upload_modal.apply": "Εφαρμογή",
"upload_modal.applying": "Εφαρμογή…",
"upload_modal.choose_image": "Επιλογή εικόνας",
"upload_modal.description_placeholder": "Λύκος μαύρος και ισχνός του πατέρα του καημός",
"upload_modal.description_placeholder": "Αρνάκι άσπρο και παχύ της μάνας του καμάρι",
"upload_modal.detect_text": "Αναγνώριση κειμένου από την εικόνα",
"upload_modal.edit_media": "Επεξεργασία Πολυμέσων",
"upload_modal.hint": "Κάνε κλικ ή σείρε τον κύκλο στην προεπισκόπηση για να επιλέξεις το σημείο εστίασης που θα είναι πάντα εμφανές σε όλες τις μικρογραφίες.",
"upload_modal.preparing_ocr": "Προετοιμασία αναγνώρισης κειμένου…",
"upload_modal.preview_label": "Προεπισκόπηση ({ratio})",
"upload_progress.label": "Ανεβαίνει...",
"upload_progress.label": "Μεταφόρτωση...",
"upload_progress.processing": "Επεξεργασία…",
"username.taken": "Αυτό το όνομα χρήστη χρησιμοποιείται. Δοκίμασε ένα άλλο",
"video.close": "Κλείσε το βίντεο",
"video.download": "Λήψη αρχείου",
"video.exit_fullscreen": "Έξοδος από πλήρη οθόνη",
"video.expand": "Επέκταση βίντεο",
"video.fullscreen": "Πλήρης οθόνη",
"video.hide": "Κρύψε βίντεο",
"video.hide": "Απόκρυψη βίντεο",
"video.mute": "Σίγαση ήχου",
"video.pause": "Παύση",
"video.play": "Αναπαραγωγή",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Follows you",
"account.go_to_profile": "Go to profile",
"account.hide_reblogs": "Hide boosts from @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Joined",
"account.languages": "Change subscribed languages",
"account.link_verified_on": "Ownership of this link was checked on {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Put it back",
"poll.closed": "Closed",
"poll.refresh": "Refresh",
@ -597,6 +600,7 @@
"status.show_more": "Show more",
"status.show_more_all": "Show more for all",
"status.show_original": "Show original",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Translate",
"status.translated_from_with": "Translated from {lang} using {provider}",
"status.uncached_media_warning": "Not available",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading…",
"upload_progress.processing": "Processing…",
"username.taken": "Username is taken - try another. Carlito77",
"video.close": "Close video",
"video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",

View file

@ -183,6 +183,7 @@
"conversation.with": "With {names}",
"copypaste.copied": "Copied",
"copypaste.copy": "Copy",
"copypaste.copy_to_clipboard": "Copy to clipboard",
"directory.federated": "From known fediverse",
"directory.local": "From {domain} only",
"directory.new_arrivals": "New arrivals",
@ -223,7 +224,6 @@
"empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
"empty_column.favourited_statuses": "You don't have any favourite posts yet. When you favourite one, it will show up here.",
"empty_column.favourites": "No one has favourited this post yet. When someone does, they will show up here.",
"empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
"empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
"empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.",
"empty_column.hashtag": "There is nothing in this hashtag yet.",
@ -262,9 +262,6 @@
"filter_modal.select_filter.subtitle": "Use an existing category or create a new one",
"filter_modal.select_filter.title": "Filter this post",
"filter_modal.title.status": "Filter a post",
"follow_recommendations.done": "Done",
"follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
"follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
"follow_request.authorize": "Authorize",
"follow_request.reject": "Reject",
"follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
@ -445,6 +442,29 @@
"notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing",
"onboarding.action.back": "Take me back",
"onboarding.actions.back": "Take me back",
"onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon",
"onboarding.share.lead": "Let people know how they can find you on Mastodon!",
"onboarding.share.message": "I'm {username} on Mastodon! Come follow me at {url}",
"onboarding.share.next_steps": "Possible next steps:",
"onboarding.share.title": "Share your profile",
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
"onboarding.start.skip": "Want to skip right ahead?",
"onboarding.start.title": "You've made it!",
"onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
"onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
"onboarding.steps.publish_status.body": "Say hello to the world.",
"onboarding.steps.publish_status.title": "Make your first post",
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
"onboarding.steps.setup_profile.title": "Customize your profile",
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
"onboarding.steps.share_profile.title": "Share your profile",
"onboarding.tips.accounts_from_other_servers": "<strong>Did you know?</strong> Since Mastodon is decentralized, some profiles you come across will be hosted on servers other than yours. And yet you can interact with them seamlessly! Their server is in the second half of their username!",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Put it back",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Sekvas vin",
"account.go_to_profile": "Iri al profilo",
"account.hide_reblogs": "Kaŝi diskonigojn de @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Aliĝis",
"account.languages": "Ŝanĝi la abonitajn lingvojn",
"account.link_verified_on": "Propreco de tiu ligilo estis konfirmita je {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Ŝalti retumilajn sciigojn",
"notifications_permission_banner.how_to_control": "Por ricevi sciigojn kiam Mastodon ne estas malfermita, ebligu labortablajn sciigojn. Vi povas regi precize kiuj specoj de interagoj generas labortablajn sciigojn per la supra butono {icon} post kiam ili estas ebligitaj.",
"notifications_permission_banner.title": "Neniam preterlasas iun ajn",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Remetu ĝin",
"poll.closed": "Finita",
"poll.refresh": "Aktualigi",
@ -597,6 +600,7 @@
"status.show_more": "Montri pli",
"status.show_more_all": "Montri pli ĉiun",
"status.show_original": "Montru originalon",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Traduki",
"status.translated_from_with": "Tradukita el {lang} per {provider}",
"status.uncached_media_warning": "Nedisponebla",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Antaŭvido ({ratio})",
"upload_progress.label": "Alŝutado…",
"upload_progress.processing": "Traktante…",
"username.taken": "That username is taken. Try another",
"video.close": "Fermi la videon",
"video.download": "Elŝuti dosieron",
"video.exit_fullscreen": "Eksigi plenekrana",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Te sigue",
"account.go_to_profile": "Ir al perfil",
"account.hide_reblogs": "Ocultar adhesiones de @{name}",
"account.in_memoriam": "Cuenta conmemorativa.",
"account.joined_short": "En este servidor desde",
"account.languages": "Cambiar idiomas suscritos",
"account.link_verified_on": "La propiedad de este enlace fue verificada el {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Habilitar notificaciones de escritorio",
"notifications_permission_banner.how_to_control": "Para recibir notificaciones cuando Mastodon no está abierto, habilitá las notificaciones de escritorio. Podés controlar con precisión qué tipos de interacciones generan notificaciones de escritorio a través del botón {icon} de arriba, una vez que estén habilitadas.",
"notifications_permission_banner.title": "No te pierdas nada",
"password_confirmation.exceeds_maxlength": "La confirmación de contraseña excede la longitud máxima de la contraseña",
"password_confirmation.mismatching": "La confirmación de contraseña no coincide",
"picture_in_picture.restore": "Restaurar",
"poll.closed": "Cerrada",
"poll.refresh": "Refrescar",
@ -597,6 +600,7 @@
"status.show_more": "Mostrar más",
"status.show_more_all": "Mostrar más para todo",
"status.show_original": "Mostrar original",
"status.title.with_attachments": "{user} envió {attachmentCount, plural, one {un adjunto} other {{attachmentCount} adjuntos}}",
"status.translate": "Traducir",
"status.translated_from_with": "Traducido desde el {lang} vía {provider}",
"status.uncached_media_warning": "No disponible",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Previsualización ({ratio})",
"upload_progress.label": "Subiendo...",
"upload_progress.processing": "Procesando…",
"username.taken": "Ese nombre de usuario está ocupado. Probá con otro",
"video.close": "Cerrar video",
"video.download": "Descargar archivo",
"video.exit_fullscreen": "Salir de la pantalla completa",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Te sigue",
"account.go_to_profile": "Ir al perfil",
"account.hide_reblogs": "Ocultar retoots de @{name}",
"account.in_memoriam": "En memoria.",
"account.joined_short": "Se unió",
"account.languages": "Cambiar idiomas suscritos",
"account.link_verified_on": "El proprietario de este link fue comprobado el {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Habilitar notificaciones de escritorio",
"notifications_permission_banner.how_to_control": "Para recibir notificaciones cuando Mastodon no esté abierto, habilite las notificaciones de escritorio. Puedes controlar con precisión qué tipos de interacciones generan notificaciones de escritorio a través del botón {icon} de arriba una vez que estén habilitadas.",
"notifications_permission_banner.title": "Nunca te pierdas nada",
"password_confirmation.exceeds_maxlength": "La contraseña de confirmación excede la longitud máxima de la contraseña",
"password_confirmation.mismatching": "La contraseña de confirmación no coincide",
"picture_in_picture.restore": "Restaurar",
"poll.closed": "Cerrada",
"poll.refresh": "Actualizar",
@ -597,7 +600,7 @@
"status.show_more": "Mostrar más",
"status.show_more_all": "Mostrar más para todo",
"status.show_original": "Mostrar original",
"status.title.with_attachments": "{user} publicó {attachmentCount, plural, one {un archivo adjunto} other {{attachmentCount} archivos adjuntos}}",
"status.title.with_attachments": "{user} ha publicado {attachmentCount, plural, one {un adjunto} other {{attachmentCount} adjuntos}}",
"status.translate": "Traducir",
"status.translated_from_with": "Traducido del {lang} usando {provider}",
"status.uncached_media_warning": "No disponible",
@ -650,6 +653,7 @@
"upload_modal.preview_label": "Vista previa ({ratio})",
"upload_progress.label": "Subiendo…",
"upload_progress.processing": "Procesando…",
"username.taken": "Ese nombre de usuario está ocupado. Prueba con otro",
"video.close": "Cerrar video",
"video.download": "Descargar archivo",
"video.exit_fullscreen": "Salir de pantalla completa",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Te sigue",
"account.go_to_profile": "Ir al perfil",
"account.hide_reblogs": "Ocultar impulsos de @{name}",
"account.in_memoriam": "Cuenta conmemorativa.",
"account.joined_short": "Se unió",
"account.languages": "Cambiar idiomas suscritos",
"account.link_verified_on": "La propiedad de este enlace fue verificada el {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Habilitar notificaciones de escritorio",
"notifications_permission_banner.how_to_control": "Para recibir notificaciones cuando Mastodon no esté abierto, habilite las notificaciones de escritorio. Puedes controlar con precisión qué tipos de interacciones generan notificaciones de escritorio a través del botón {icon} de arriba una vez que estén habilitadas.",
"notifications_permission_banner.title": "Nunca te pierdas nada",
"password_confirmation.exceeds_maxlength": "La contraseña de confirmación excede la longitud máxima de la contraseña",
"password_confirmation.mismatching": "La contraseña de confirmación no coincide",
"picture_in_picture.restore": "Restaurar",
"poll.closed": "Cerrada",
"poll.refresh": "Actualizar",
@ -597,6 +600,7 @@
"status.show_more": "Mostrar más",
"status.show_more_all": "Mostrar más para todo",
"status.show_original": "Mostrar original",
"status.title.with_attachments": "{user} ha publicado {attachmentCount, plural, one {un adjunto} other {{attachmentCount} adjuntos}}",
"status.translate": "Traducir",
"status.translated_from_with": "Traducido de {lang} usando {provider}",
"status.uncached_media_warning": "No disponible",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Vista previa ({ratio})",
"upload_progress.label": "Subiendo…",
"upload_progress.processing": "Procesando…",
"username.taken": "Ese nombre de usuario ya está en uso. Prueba con otro",
"video.close": "Cerrar video",
"video.download": "Descargar archivo",
"video.exit_fullscreen": "Salir de pantalla completa",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Jälgib sind",
"account.go_to_profile": "Mine profiilile",
"account.hide_reblogs": "Peida @{name} jagamised",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Liitus",
"account.languages": "Muuda tellitud keeli",
"account.link_verified_on": "Selle lingi autorsust kontrolliti {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Luba töölaua märguanded",
"notifications_permission_banner.how_to_control": "Et saada teateid, ajal mil Mastodon pole avatud, luba töölauamärguanded. Saad täpselt määrata, mis tüüpi tegevused tekitavad märguandeid, kasutates peale teadaannete sisse lülitamist üleval olevat nuppu {icon}.",
"notifications_permission_banner.title": "Ära jää millestki ilma",
"password_confirmation.exceeds_maxlength": "Salasõnakinnitus on pikem kui salasõna maksimumpikkus",
"password_confirmation.mismatching": "Salasõnakinnitus ei sobi kokku",
"picture_in_picture.restore": "Pane tagasi",
"poll.closed": "Suletud",
"poll.refresh": "Värskenda",
@ -597,6 +600,7 @@
"status.show_more": "Näita sisu",
"status.show_more_all": "Näita kogu tundlikku sisu",
"status.show_original": "Näita algset",
"status.title.with_attachments": "{user} postitas {attachmentCount, plural, one {manuse} other {{attachmentCount} manust}}",
"status.translate": "Tõlgi",
"status.translated_from_with": "Tõlgitud {lang} keelest kasutades teenust {provider}",
"status.uncached_media_warning": "Pole saadaval",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Eelvaade ({ratio})",
"upload_progress.label": "Laeb üles....",
"upload_progress.processing": "Töötlen…",
"username.taken": "See kasutajanimi on juba kasutusel. Proovi teist",
"video.close": "Sulge video",
"video.download": "Faili allalaadimine",
"video.exit_fullscreen": "Välju täisekraanist",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Jarraitzen dizu",
"account.go_to_profile": "Joan profilera",
"account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak",
"account.in_memoriam": "Oroimenezkoa.",
"account.joined_short": "Elkartuta",
"account.languages": "Aldatu harpidetutako hizkuntzak",
"account.link_verified_on": "Esteka honen jabetzaren egiaztaketa data: {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Gaitu mahaigaineko jakinarazpenak",
"notifications_permission_banner.how_to_control": "Mastodon irekita ez dagoenean jakinarazpenak jasotzeko, gaitu mahaigaineko jakinarazpenak. Mahaigaineko jakinarazpenak ze elkarrekintzak eragingo dituzten zehazki kontrolatu dezakezu goiko {icon} botoia erabiliz, gaituta daudenean.",
"notifications_permission_banner.title": "Ez galdu ezer inoiz",
"password_confirmation.exceeds_maxlength": "Pasahitzaren berrespenak pasahitzaren gehienezko luzera gainditzen du",
"password_confirmation.mismatching": "Pasahitzaren berrespena ez dator bat",
"picture_in_picture.restore": "Leheneratu",
"poll.closed": "Itxita",
"poll.refresh": "Berritu",
@ -597,6 +600,7 @@
"status.show_more": "Erakutsi gehiago",
"status.show_more_all": "Erakutsi denetarik gehiago",
"status.show_original": "Erakutsi jatorrizkoa",
"status.title.with_attachments": "{user} erabiltzaileak {attachmentCount, plural, one {eranskin bat} other {{attachmentCount} eranskin}} argitaratu d(it)u",
"status.translate": "Itzuli",
"status.translated_from_with": "Itzuli {lang}(e)tik {provider} erabiliz",
"status.uncached_media_warning": "Ez eskuragarri",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Aurreikusi ({ratio})",
"upload_progress.label": "Igotzen...",
"upload_progress.processing": "Prozesatzen…",
"username.taken": "Erabiltzailea hartuta dago. Saiatu beste batekin",
"video.close": "Itxi bideoa",
"video.download": "Deskargatu fitxategia",
"video.exit_fullscreen": "Irten pantaila osotik",

View file

@ -39,6 +39,7 @@
"account.follows_you": "پی‌گیرتان است",
"account.go_to_profile": "رفتن به نمایه",
"account.hide_reblogs": "نهفتن تقویت‌های @{name}",
"account.in_memoriam": "به یادبود.",
"account.joined_short": "پیوسته",
"account.languages": "تغییر زبان‌های مشترک شده",
"account.link_verified_on": "مالکیت این پیوند در {date} بررسی شد",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "به کار انداختن آگاهی‌های میزکار",
"notifications_permission_banner.how_to_control": "برای دریافت آگاهی‌ها هنگام باز نبودن ماستودون، آگاهی‌های میزکار را به کار بیندازید. پس از به کار افتادنشان می‌توانید گونه‌های دقیق برهم‌کنش‌هایی که آگاهی‌های میزکار تولید می‌کنند را از {icon} بالا واپایید.",
"notifications_permission_banner.title": "هرگز چیزی را از دست ندهید",
"password_confirmation.exceeds_maxlength": "تأییدیه گذرواژه از حداکثر طول گذرواژه بیشتر است",
"password_confirmation.mismatching": "تایید گذرواژه با گذرواژه مطابقت ندارد",
"picture_in_picture.restore": "برگرداندن",
"poll.closed": "پایان‌یافته",
"poll.refresh": "نوسازی",
@ -597,6 +600,7 @@
"status.show_more": "نمایش بیشتر",
"status.show_more_all": "نمایش بیشتر همه",
"status.show_original": "نمایش اصلی",
"status.title.with_attachments": "{user} {attachmentCount, plural, one {یک پیوست} other {{attachmentCount} پیوست}} فرستاد",
"status.translate": "ترجمه",
"status.translated_from_with": "ترجمه از {lang} با {provider}",
"status.uncached_media_warning": "ناموجود",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "پیش‌نمایش ({ratio})",
"upload_progress.label": "در حال بارگذاری…",
"upload_progress.processing": "در حال پردازش…",
"username.taken": "این نام کاربری گرفته شده. نام دیگری امتحان کنید",
"video.close": "بستن ویدیو",
"video.download": "بارگیری پرونده",
"video.exit_fullscreen": "خروج از حالت تمام‌صفحه",

View file

@ -30,15 +30,16 @@
"account.featured_tags.last_status_never": "Ei viestejä",
"account.featured_tags.title": "Käyttäjän {name} esillä olevat aihetunnisteet",
"account.follow": "Seuraa",
"account.followers": "Seuraajat",
"account.followers": "seuraaja(t)",
"account.followers.empty": "Kukaan ei seuraa tätä käyttäjää vielä.",
"account.followers_counter": "{count, plural, one {{counter} seuraaja} other {{counter} seuraajaa}}",
"account.following": "Seurataan",
"account.following": "seurattu/-tut",
"account.following_counter": "{count, plural, one {{counter} seurattu} other {{counter} seurattua}}",
"account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.",
"account.follows_you": "Seuraa sinua",
"account.go_to_profile": "Avaa profiili",
"account.hide_reblogs": "Piilota käyttäjän @{name} tehostukset",
"account.in_memoriam": "Muistoissamme.",
"account.joined_short": "Liittynyt",
"account.languages": "Vaihda tilattuja kieliä",
"account.link_verified_on": "Linkin omistus tarkistettiin {date}",
@ -50,7 +51,7 @@
"account.mute_notifications": "Mykistä käyttäjän @{name} ilmoitukset",
"account.muted": "Mykistetty",
"account.open_original_page": "Avaa alkuperäinen sivu",
"account.posts": "Julkaisut",
"account.posts": "viesti(t)",
"account.posts_with_replies": "Viestit ja vastaukset",
"account.report": "Ilmoita käyttäjästä @{name}",
"account.requested": "Odottaa hyväksyntää. Peruuta seuraamispyyntö klikkaamalla",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Ota työpöytäilmoitukset käyttöön",
"notifications_permission_banner.how_to_control": "Saadaksesi ilmoituksia, kun Mastodon ei ole auki, ota työpöytäilmoitukset käyttöön. Voit hallita tarkasti, mistä saat työpöytäilmoituksia kun ilmoitukset on otettu käyttöön yllä olevan {icon}-painikkeen kautta.",
"notifications_permission_banner.title": "Älä anna minkään mennä ohi",
"password_confirmation.exceeds_maxlength": "Salasanan vahvistus ylittää salasanan enimmäispituuden",
"password_confirmation.mismatching": "Salasanan vahvistus ei täsmää",
"picture_in_picture.restore": "Laita se takaisin",
"poll.closed": "Suljettu",
"poll.refresh": "Päivitä",
@ -597,6 +600,7 @@
"status.show_more": "Näytä lisää",
"status.show_more_all": "Näytä lisää kaikista",
"status.show_original": "Näytä alkuperäinen",
"status.title.with_attachments": "{user} oheisti {attachmentCount, plural, one {{attachmentCount} liitetiedoston} other {{attachmentCount} liitetiedostoa}}",
"status.translate": "Käännä",
"status.translated_from_with": "Käännetty kielestä {lang} käyttäen {provider}",
"status.uncached_media_warning": "Ei saatavilla",
@ -617,8 +621,8 @@
"time_remaining.moments": "Hetki jäljellä",
"time_remaining.seconds": "{number, plural, one {# sekunti} other {# sekuntia}} jäljellä",
"timeline_hint.remote_resource_not_displayed": "{resource} muilta palvelimilta ei näytetä.",
"timeline_hint.resources.followers": "Seuraajia",
"timeline_hint.resources.follows": "Seurattuja",
"timeline_hint.resources.followers": "Seuraajat",
"timeline_hint.resources.follows": "seurattua",
"timeline_hint.resources.statuses": "Vanhemmat viestit",
"trends.counter_by_accounts": "{count, plural, one {{counter} henkilö} other {{counter} henkilöä}} viimeisten {days, plural, one {päivän} other {{days} päivän}}",
"trends.trending_now": "Suosittua nyt",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Esikatselu ({ratio})",
"upload_progress.label": "Ladataan...",
"upload_progress.processing": "Käsitellään…",
"username.taken": "Kyseinen käyttäjätunnus on jo käytössä. Kokeile eri tunnusta",
"video.close": "Sulje video",
"video.download": "Lataa tiedosto",
"video.exit_fullscreen": "Poistu koko näytön tilasta",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Fylgir tær",
"account.go_to_profile": "Far til vanga",
"account.hide_reblogs": "Fjal lyft frá @{name}",
"account.in_memoriam": "In memoriam.",
"account.joined_short": "Gjørdist limur",
"account.languages": "Broyt fylgd mál",
"account.link_verified_on": "Ognarskapur av hesum leinki var eftirkannaður {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Ger skriviborðsfráboðanir virknar",
"notifications_permission_banner.how_to_control": "Ger skriviborðsfráboðanir virknar fyri at móttaka fráboðanir, tá Mastodon ikki er opið. Tá tær eru gjørdar virknar, kanst tú stýra, hvørji sløg av samvirkni geva skriviborðsfráboðanir. Hetta umvegis {icon} knøttin omanfyri.",
"notifications_permission_banner.title": "Miss einki",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Legg hana aftur",
"poll.closed": "Endað",
"poll.refresh": "Endurles",
@ -597,6 +600,7 @@
"status.show_more": "Vís meira",
"status.show_more_all": "Vís øllum meira",
"status.show_original": "Vís upprunaliga",
"status.title.with_attachments": "{user} postaði {attachmentCount, plural, one {eitt viðhefti} other {{attachmentCount} viðhefti}}",
"status.translate": "Umset",
"status.translated_from_with": "Umsett frá {lang} við {provider}",
"status.uncached_media_warning": "Ikki tøkt",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Undanvísing ({ratio})",
"upload_progress.label": "Leggi upp...",
"upload_progress.processing": "Viðgeri…",
"username.taken": "That username is taken. Try another",
"video.close": "Lat sjónfílu aftur",
"video.download": "Tak fílu niður",
"video.exit_fullscreen": "Far úr fullum skermi",

View file

@ -20,7 +20,7 @@
"account.blocked": "Bloqué·e",
"account.browse_more_on_origin_server": "Parcourir davantage sur le profil original",
"account.cancel_follow_request": "Retirer cette demande d'abonnement",
"account.direct": "Privately mention @{name}",
"account.direct": "Mention privée @{name}",
"account.disable_notifications": "Ne plus me notifier quand @{name} publie",
"account.domain_blocked": "Domaine bloqué",
"account.edit_profile": "Modifier le profil",
@ -39,6 +39,7 @@
"account.follows_you": "Vous suit",
"account.go_to_profile": "Voir ce profil",
"account.hide_reblogs": "Masquer les boosts de @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Inscript en",
"account.languages": "Changer les langues abonnées",
"account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}",
@ -102,7 +103,7 @@
"column.blocks": "Comptes bloqués",
"column.bookmarks": "Signets",
"column.community": "Fil local",
"column.direct": "Private mentions",
"column.direct": "Mention privée",
"column.directory": "Parcourir les profils",
"column.domain_blocks": "Domaines bloqués",
"column.favourites": "Favoris",
@ -216,7 +217,7 @@
"empty_column.blocks": "Vous navez bloqué aucun compte pour le moment.",
"empty_column.bookmarked_statuses": "Vous n'avez pas de publications parmi vos signets. Lorsque vous en ajouterez une, elle apparaîtra ici.",
"empty_column.community": "Le fil local est vide. Écrivez donc quelque chose pour le remplir!",
"empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.",
"empty_column.direct": "Vous n'avez pas encore de mentions privées. Quand vous en envoyez ou en recevez, elles apparaîtront ici.",
"empty_column.domain_blocks": "Il ny a aucun domaine bloqué pour le moment.",
"empty_column.explore_statuses": "Rien n'est en tendance présentement. Revenez plus tard!",
"empty_column.favourited_statuses": "Vous navez pas encore de publications favorites. Lorsque vous en ajouterez une, elle apparaîtra ici.",
@ -314,7 +315,7 @@
"keyboard_shortcuts.column": "Se concentrer sur une colonne",
"keyboard_shortcuts.compose": "Se concentrer sur la zone de rédaction",
"keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.direct": "pour ouvrir la colonne de mentions privées",
"keyboard_shortcuts.down": "Descendre dans la liste",
"keyboard_shortcuts.enter": "Ouvrir cette publication",
"keyboard_shortcuts.favourite": "Ajouter publication aux favoris",
@ -374,7 +375,7 @@
"navigation_bar.bookmarks": "Signets",
"navigation_bar.community_timeline": "Fil local",
"navigation_bar.compose": "Rédiger un nouveau message",
"navigation_bar.direct": "Private mentions",
"navigation_bar.direct": "Mention privée",
"navigation_bar.discover": "Découvrir",
"navigation_bar.domain_blocks": "Domaines bloqués",
"navigation_bar.edit_profile": "Modifier le profil",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Activer les notifications de bureau",
"notifications_permission_banner.how_to_control": "Pour recevoir des notifications lorsque Mastodon nest pas ouvert, activez les notifications de bureau. Vous pouvez contrôler précisément quels types dinteractions génèrent des notifications de bureau via le bouton {icon} ci-dessus une fois quelles sont activées.",
"notifications_permission_banner.title": "Ne rien rater",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Remettre en place",
"poll.closed": "Fermé",
"poll.refresh": "Actualiser",
@ -520,17 +523,17 @@
"report_notification.categories.spam": "Spam",
"report_notification.categories.violation": "Infraction aux règles du serveur",
"report_notification.open": "Ouvrir le signalement",
"search.no_recent_searches": "No recent searches",
"search.no_recent_searches": "Aucune recherche récente",
"search.placeholder": "Rechercher",
"search.quick_action.account_search": "Profiles matching {x}",
"search.quick_action.go_to_account": "Go to profile {x}",
"search.quick_action.go_to_hashtag": "Go to hashtag {x}",
"search.quick_action.open_url": "Open URL in Mastodon",
"search.quick_action.status_search": "Posts matching {x}",
"search.quick_action.account_search": "Profils correspondant à {x}",
"search.quick_action.go_to_account": "Aller au profil {x}",
"search.quick_action.go_to_hashtag": "Aller au hashtag {x}",
"search.quick_action.open_url": "Ouvrir l'URL dans Mastodon",
"search.quick_action.status_search": "Publications correspondant à {x}",
"search.search_or_paste": "Rechercher ou saisir un URL",
"search_popout.quick_actions": "Quick actions",
"search_popout.recent": "Recent searches",
"search_results.accounts": "Profiles",
"search_popout.quick_actions": "Actions rapides",
"search_popout.recent": "Recherches récentes",
"search_results.accounts": "Profils",
"search_results.all": "Tout",
"search_results.hashtags": "Hashtags",
"search_results.nothing_found": "Aucun résultat avec ces mots-clés",
@ -557,8 +560,8 @@
"status.copy": "Copier un lien vers cette publication",
"status.delete": "Supprimer",
"status.detailed_status": "Vue détaillée de la conversation",
"status.direct": "Privately mention @{name}",
"status.direct_indicator": "Private mention",
"status.direct": "Mention privée @{name}",
"status.direct_indicator": "Mention privée",
"status.edit": "Modifier",
"status.edited": "Modifiée le {date}",
"status.edited_x_times": "Modifiée {count, plural, one {{count} fois} other {{count} fois}}",
@ -597,6 +600,7 @@
"status.show_more": "Déplier",
"status.show_more_all": "Tout déplier",
"status.show_original": "Afficher loriginal",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Traduire",
"status.translated_from_with": "Traduit de {lang} avec {provider}",
"status.uncached_media_warning": "Indisponible",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Aperçu ({ratio})",
"upload_progress.label": "Envoi en cours...",
"upload_progress.processing": "Traitement en cours…",
"username.taken": "That username is taken. Try another",
"video.close": "Fermer la vidéo",
"video.download": "Télécharger ce fichier",
"video.exit_fullscreen": "Quitter le plein écran",

View file

@ -20,7 +20,7 @@
"account.blocked": "Bloqué·e",
"account.browse_more_on_origin_server": "Parcourir davantage sur le profil original",
"account.cancel_follow_request": "Retirer la demande dabonnement",
"account.direct": "Privately mention @{name}",
"account.direct": "Mention privée @{name}",
"account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose",
"account.domain_blocked": "Domaine bloqué",
"account.edit_profile": "Modifier le profil",
@ -39,6 +39,7 @@
"account.follows_you": "Vous suit",
"account.go_to_profile": "Voir le profil",
"account.hide_reblogs": "Masquer les partages de @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Ici depuis",
"account.languages": "Changer les langues abonnées",
"account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}",
@ -102,7 +103,7 @@
"column.blocks": "Comptes bloqués",
"column.bookmarks": "Signets",
"column.community": "Fil public local",
"column.direct": "Private mentions",
"column.direct": "Mention privée",
"column.directory": "Parcourir les profils",
"column.domain_blocks": "Domaines bloqués",
"column.favourites": "Favoris",
@ -216,7 +217,7 @@
"empty_column.blocks": "Vous navez bloqué aucun compte pour le moment.",
"empty_column.bookmarked_statuses": "Vous n'avez pas de message en marque-page. Lorsque vous en ajouterez un, il apparaîtra ici.",
"empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir!",
"empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.",
"empty_column.direct": "Vous n'avez pas encore de mentions privées. Quand vous en envoyez ou en recevez, elles apparaîtront ici.",
"empty_column.domain_blocks": "Il ny a aucun domaine bloqué pour le moment.",
"empty_column.explore_statuses": "Rien n'est en tendance pour le moment. Revenez plus tard !",
"empty_column.favourited_statuses": "Vous navez pas encore de message en favori. Lorsque vous en ajouterez un, il apparaîtra ici.",
@ -314,7 +315,7 @@
"keyboard_shortcuts.column": "Se placer dans une colonne",
"keyboard_shortcuts.compose": "Se placer dans la zone de rédaction",
"keyboard_shortcuts.description": "Description",
"keyboard_shortcuts.direct": "to open direct messages column",
"keyboard_shortcuts.direct": "pour ouvrir la colonne de mentions privées",
"keyboard_shortcuts.down": "Descendre dans la liste",
"keyboard_shortcuts.enter": "Ouvrir le message",
"keyboard_shortcuts.favourite": "Ajouter le message aux favoris",
@ -374,7 +375,7 @@
"navigation_bar.bookmarks": "Marque-pages",
"navigation_bar.community_timeline": "Fil public local",
"navigation_bar.compose": "Rédiger un nouveau message",
"navigation_bar.direct": "Private mentions",
"navigation_bar.direct": "Mention privée",
"navigation_bar.discover": "Découvrir",
"navigation_bar.domain_blocks": "Domaines bloqués",
"navigation_bar.edit_profile": "Modifier le profil",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Activer les notifications de bureau",
"notifications_permission_banner.how_to_control": "Pour recevoir des notifications lorsque Mastodon nest pas ouvert, activez les notifications du bureau. Vous pouvez contrôler précisément quels types dinteractions génèrent des notifications de bureau via le bouton {icon} ci-dessus une fois quelles sont activées.",
"notifications_permission_banner.title": "Toujours au courant",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Remettre en place",
"poll.closed": "Fermé",
"poll.refresh": "Actualiser",
@ -520,17 +523,17 @@
"report_notification.categories.spam": "Spam",
"report_notification.categories.violation": "Infraction aux règles du serveur",
"report_notification.open": "Ouvrir le signalement",
"search.no_recent_searches": "No recent searches",
"search.no_recent_searches": "Aucune recherche récente",
"search.placeholder": "Rechercher",
"search.quick_action.account_search": "Profiles matching {x}",
"search.quick_action.go_to_account": "Go to profile {x}",
"search.quick_action.go_to_hashtag": "Go to hashtag {x}",
"search.quick_action.open_url": "Open URL in Mastodon",
"search.quick_action.status_search": "Posts matching {x}",
"search.quick_action.account_search": "Profils correspondant à {x}",
"search.quick_action.go_to_account": "Aller au profil {x}",
"search.quick_action.go_to_hashtag": "Aller au hashtag {x}",
"search.quick_action.open_url": "Ouvrir l'URL dans Mastodon",
"search.quick_action.status_search": "Publications correspondant à {x}",
"search.search_or_paste": "Rechercher ou saisir une URL",
"search_popout.quick_actions": "Quick actions",
"search_popout.quick_actions": "Actions rapides",
"search_popout.recent": "Recherches récentes",
"search_results.accounts": "Profiles",
"search_results.accounts": "Profils",
"search_results.all": "Tous les résultats",
"search_results.hashtags": "Hashtags",
"search_results.nothing_found": "Aucun résultat avec ces mots-clefs",
@ -557,7 +560,7 @@
"status.copy": "Copier le lien vers le message",
"status.delete": "Supprimer",
"status.detailed_status": "Vue détaillée de la conversation",
"status.direct": "Privately mention @{name}",
"status.direct": "Mention privée @{name}",
"status.direct_indicator": "Mention privée",
"status.edit": "Éditer",
"status.edited": "Édité le {date}",
@ -597,6 +600,7 @@
"status.show_more": "Déplier",
"status.show_more_all": "Tout déplier",
"status.show_original": "Afficher loriginal",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Traduire",
"status.translated_from_with": "Traduit de {lang} en utilisant {provider}",
"status.uncached_media_warning": "Indisponible",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Aperçu ({ratio})",
"upload_progress.label": "Envoi en cours…",
"upload_progress.processing": "En cours…",
"username.taken": "That username is taken. Try another",
"video.close": "Fermer la vidéo",
"video.download": "Télécharger le fichier",
"video.exit_fullscreen": "Quitter le plein écran",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Folget jo",
"account.go_to_profile": "Gean nei profyl",
"account.hide_reblogs": "Boosts fan @{name} ferstopje",
"account.in_memoriam": "Yn memoriam.",
"account.joined_short": "Registrearre op",
"account.languages": "Toande talen wizigje",
"account.link_verified_on": "Eigendom fan dizze keppeling is kontrolearre op {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Desktopmeldingen ynskeakelje",
"notifications_permission_banner.how_to_control": "Om meldingen te ûntfangen wanneart 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",
"password_confirmation.exceeds_maxlength": "Wachtwurdbefêstiging giet oer de maksimale wachtwurdlingte",
"password_confirmation.mismatching": "Wachtwurdbefêstiging komt net oerien",
"picture_in_picture.restore": "Tebeksette",
"poll.closed": "Sluten",
"poll.refresh": "Ferfarskje",
@ -597,6 +600,7 @@
"status.show_more": "Mear toane",
"status.show_more_all": "Alles mear toane",
"status.show_original": "Orizjineel besjen",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Oersette",
"status.translated_from_with": "Fan {lang} út oersetten mei {provider}",
"status.uncached_media_warning": "Net beskikber",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Foarfertoaning ({ratio})",
"upload_progress.label": "Uploading…",
"upload_progress.processing": "Dwaande…",
"username.taken": "Dy brûkersnamme is al yn gebrûk. Probearje in oare",
"video.close": "Fideo slute",
"video.download": "Bestân downloade",
"video.exit_fullscreen": "Folslein skerm slute",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Do do leanúint",
"account.go_to_profile": "Téigh go dtí próifíl",
"account.hide_reblogs": "Folaigh moltaí ó @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Cláraithe",
"account.languages": "Athraigh teangacha foscríofa",
"account.link_verified_on": "Seiceáladh úinéireacht an naisc seo ar {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Ceadaigh fógraí ar an deasc",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Ná caill aon rud go deo",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Cuir é ar ais",
"poll.closed": "Dúnta",
"poll.refresh": "Athnuaigh",
@ -597,6 +600,7 @@
"status.show_more": "Taispeáin níos mó",
"status.show_more_all": "Taispeáin níos mó d'uile",
"status.show_original": "Taispeáin bunchóip",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Aistrigh",
"status.translated_from_with": "D'Aistrigh ón {lang} ag úsáid {provider}",
"status.uncached_media_warning": "Ní ar fáil",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Ag uaslódáil...",
"upload_progress.processing": "Ag próiseáil…",
"username.taken": "That username is taken. Try another",
"video.close": "Dún físeán",
"video.download": "Íoslódáil comhad",
"video.exit_fullscreen": "Exit full screen",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Gad leantainn",
"account.go_to_profile": "Tadhail air a phròifil",
"account.hide_reblogs": "Falaich na brosnachaidhean o @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Air ballrachd fhaighinn",
"account.languages": "Atharraich fo-sgrìobhadh nan cànan",
"account.link_verified_on": "Chaidh dearbhadh cò leis a tha an ceangal seo {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Cuir brathan deasga an comas",
"notifications_permission_banner.how_to_control": "Airson brathan fhaighinn nuair nach eil Mastodon fosgailte, cuir na brathan deasga an comas. Tha an smachd agad fhèin air dè na seòrsaichean de chonaltradh a ghineas brathan deasga leis a phutan {icon} gu h-àrd nuair a bhios iad air an cur an comas.",
"notifications_permission_banner.title": "Na caill dad gu bràth tuilleadh",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Thoir air ais e",
"poll.closed": "Dùinte",
"poll.refresh": "Ath-nuadhaich",
@ -597,6 +600,7 @@
"status.show_more": "Seall barrachd dheth",
"status.show_more_all": "Seall barrachd dhen a h-uile",
"status.show_original": "Seall an tionndadh tùsail",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Eadar-theangaich",
"status.translated_from_with": "Air eadar-theangachadh o {lang} le {provider}",
"status.uncached_media_warning": "Chan eil seo ri fhaighinn",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Ro-shealladh ({ratio})",
"upload_progress.label": "Ga luchdadh suas…",
"upload_progress.processing": "Ga phròiseasadh…",
"username.taken": "That username is taken. Try another",
"video.close": "Dùin a video",
"video.download": "Luchdaich am faidhle a-nuas",
"video.exit_fullscreen": "Fàg modh na làn-sgrìn",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Séguete",
"account.go_to_profile": "Ir ao perfil",
"account.hide_reblogs": "Agochar repeticións de @{name}",
"account.in_memoriam": "Lembranzas.",
"account.joined_short": "Uniuse",
"account.languages": "Modificar os idiomas subscritos",
"account.link_verified_on": "A propiedade desta ligazón foi verificada o {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Activar notificacións de escritorio",
"notifications_permission_banner.how_to_control": "Activa as notificacións de escritorio para recibir notificacións mentras Mastodon non está aberto. Podes controlar de xeito preciso o tipo de interaccións que crean as notificacións de escritorio a través da {icon} superior unha vez están activadas.",
"notifications_permission_banner.title": "Non perder nada",
"password_confirmation.exceeds_maxlength": "A lonxitude do contrasinal de confirmación excede o máximo permitido",
"password_confirmation.mismatching": "O contrasinal de confirmación non concorda",
"picture_in_picture.restore": "Devolver",
"poll.closed": "Pechado",
"poll.refresh": "Actualizar",
@ -597,6 +600,7 @@
"status.show_more": "Amosar máis",
"status.show_more_all": "Amosar máis para todos",
"status.show_original": "Mostrar o orixinal",
"status.title.with_attachments": "{user} publicou {attachmentCount, plural, one {un anexo} other {{attachmentCount} anexos}}",
"status.translate": "Traducir",
"status.translated_from_with": "Traducido do {lang} usando {provider}",
"status.uncached_media_warning": "Non dispoñíbel",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Vista previa ({ratio})",
"upload_progress.label": "Estase a subir...",
"upload_progress.processing": "Procesando…",
"username.taken": "O identificador xa está pillado. Inténtao con outro",
"video.close": "Pechar vídeo",
"video.download": "Baixar ficheiro",
"video.exit_fullscreen": "Saír da pantalla completa",

View file

@ -39,6 +39,7 @@
"account.follows_you": "במעקב אחריך",
"account.go_to_profile": "מעבר לפרופיל",
"account.hide_reblogs": "להסתיר הידהודים מאת @{name}",
"account.in_memoriam": "פרופיל זכרון.",
"account.joined_short": "תאריך הצטרפות",
"account.languages": "שנה רישום לשפות",
"account.link_verified_on": "בעלות על הקישור הזה נבדקה לאחרונה ב{date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "לאפשר נוטיפיקציות מסך",
"notifications_permission_banner.how_to_control": "כדי לקבל התראות גם כאשר מסטודון סגור יש לאפשר התראות מסך. ניתן לשלוט בדיוק איזה סוג של אינטראקציות יביא להתראות מסך דרך כפתור ה- {icon} מרגע שהן מאופשרות.",
"notifications_permission_banner.title": "לעולם אל תחמיץ דבר",
"password_confirmation.exceeds_maxlength": "הסיסמה בשדה אימות הסיסמה ארוכה מאורך הסיסמה המירבי",
"password_confirmation.mismatching": "אימות סיסמה אינו תואם לסיסמה",
"picture_in_picture.restore": "החזירי למקומו",
"poll.closed": "סגור",
"poll.refresh": "רענון",
@ -597,6 +600,7 @@
"status.show_more": "הראה יותר",
"status.show_more_all": "להציג יותר מהכל",
"status.show_original": "הצגת מקור",
"status.title.with_attachments": "{user} פרסם.ה {attachmentCount, plural, one {צרופה} other {{attachmentCount} צרופות}}",
"status.translate": "לתרגם",
"status.translated_from_with": "לתרגם משפה {lang} באמצעות {provider}",
"status.uncached_media_warning": "לא זמין",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "תצוגה ({ratio})",
"upload_progress.label": "עולה...",
"upload_progress.processing": "מעבד…",
"username.taken": "שם המשתמש הזה תפוס. נסו אחר",
"video.close": "סגירת וידאו",
"video.download": "הורדת קובץ",
"video.exit_fullscreen": "יציאה ממסך מלא",

View file

@ -39,6 +39,7 @@
"account.follows_you": "आपको फॉलो करता है",
"account.go_to_profile": "प्रोफाइल में जाएँ",
"account.hide_reblogs": "@{name} के बूस्ट छुपाएं",
"account.in_memoriam": "याद में",
"account.joined_short": "पुरा हुआ",
"account.languages": "सब्स्क्राइब्ड भाषाओं को बदलें",
"account.link_verified_on": "इस लिंक का स्वामित्व {date} को चेक किया गया था",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Put it back",
"poll.closed": "बंद कर दिया",
"poll.refresh": "रीफ्रेश करें",
@ -597,6 +600,7 @@
"status.show_more": "और दिखाएँ",
"status.show_more_all": "Show more for all",
"status.show_original": "Show original",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Translate",
"status.translated_from_with": "{provider} का उपयोग करते हुये {lang} से अनुवादित किया गया",
"status.uncached_media_warning": "अनुपलब्ध",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "अपलोडिंग...",
"upload_progress.processing": "Processing…",
"username.taken": "That username is taken. Try another",
"video.close": "Close video",
"video.download": "फाइल डाउनलोड करें",
"video.exit_fullscreen": "Exit full screen",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Prati te",
"account.go_to_profile": "Go to profile",
"account.hide_reblogs": "Sakrij boostove od @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Joined",
"account.languages": "Change subscribed languages",
"account.link_verified_on": "Vlasništvo ove poveznice provjereno je {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Put it back",
"poll.closed": "Završeno",
"poll.refresh": "Osvježi",
@ -597,6 +600,7 @@
"status.show_more": "Pokaži više",
"status.show_more_all": "Show more for all",
"status.show_original": "Prikaži original",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Prevedi",
"status.translated_from_with": "Prevedno s {lang} koristeći {provider}",
"status.uncached_media_warning": "Nije dostupno",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Pretpregled ({ratio})",
"upload_progress.label": "Prenošenje...",
"upload_progress.processing": "Obrada…",
"username.taken": "That username is taken. Try another",
"video.close": "Zatvori video",
"video.download": "Preuzmi datoteku",
"video.exit_fullscreen": "Izađi iz cijelog zaslona",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Követ téged",
"account.go_to_profile": "Ugrás a profilhoz",
"account.hide_reblogs": "@{name} megtolásainak elrejtése",
"account.in_memoriam": "Emlékünkben.",
"account.joined_short": "Csatlakozott",
"account.languages": "Feliratkozott nyelvek módosítása",
"account.link_verified_on": "A linket eredetiségét ebben az időpontban ellenőriztük: {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Asztali értesítések engedélyezése",
"notifications_permission_banner.how_to_control": "Bezárt Mastononnál értesések fogadásához engedélyezni kell az asztali értesítéseket. Pontosan lehet vezérelni, hogy milyen interakciókról érkezzen értesítés fenti {icon} gombon keresztül, ha már lorábban megtörtént az engedélyezés.",
"notifications_permission_banner.title": "Soha ne mulasszunk el semmit",
"password_confirmation.exceeds_maxlength": "A jelszó megerősítése hosszabb a legnagyobb megengedett jelszóhossznál",
"password_confirmation.mismatching": "A jelszómegerősítés nem egyezik",
"picture_in_picture.restore": "Visszahelyezés",
"poll.closed": "Lezárva",
"poll.refresh": "Frissítés",
@ -597,6 +600,7 @@
"status.show_more": "Többet",
"status.show_more_all": "Többet mindenhol",
"status.show_original": "Eredeti megjelenítése",
"status.title.with_attachments": "{user} {attachmentCount, plural, one {mellékletet} other {{attachmentCount} mellékletet}} küldött be.",
"status.translate": "Fordítás",
"status.translated_from_with": "{lang} nyelvről fordítva {provider} szolgáltatással",
"status.uncached_media_warning": "Nem érhető el",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Előnézet ({ratio})",
"upload_progress.label": "Feltöltés...",
"upload_progress.processing": "Feldolgozás…",
"username.taken": "Ez a felhasználónév foglalt. Válassz másikat",
"video.close": "Videó bezárása",
"video.download": "Fájl letöltése",
"video.exit_fullscreen": "Kilépés teljes képernyőből",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Հետեւում է քեզ",
"account.go_to_profile": "Գնալ անձնական հաշիւ",
"account.hide_reblogs": "Թաքցնել @{name}֊ի տարածածները",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Միացել է",
"account.languages": "Change subscribed languages",
"account.link_verified_on": "Սոյն յղման տիրապետումը ստուգուած է՝ {date}֊ին",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Միացնել դիտարկչից ծանուցումները",
"notifications_permission_banner.how_to_control": "Ծանուցումներ ստանալու համար, երբ Մաստոդոնը բաց չէ՝ ակտիւացրու աշխատատիրոյթի ծանուցումները։ Դու կարող ես ճշգրտօրէն վերահսկել թէ ինչպիսի փոխգործակցութիւններ առաջանան աշխատատիրոյթի ծանուցումներից՝ {icon}ի կոճակով՝ այն ակտիւացնելուց յետոյ։",
"notifications_permission_banner.title": "Ոչինչ բաց մի թող",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Յետ բերել",
"poll.closed": "Փակ",
"poll.refresh": "Թարմացնել",
@ -597,6 +600,7 @@
"status.show_more": "Աւելին",
"status.show_more_all": "Ցուցադրել բոլոր նախազգուշացնումները",
"status.show_original": "Ցոյց տալ բնօրինակը",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Թարգմանել",
"status.translated_from_with": "Translated from {lang} using {provider}",
"status.uncached_media_warning": "Անհասանելի",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Նախադիտում ({ratio})",
"upload_progress.label": "Վերբեռնվում է…",
"upload_progress.processing": "Մշակուում է...",
"username.taken": "That username is taken. Try another",
"video.close": "Փակել տեսագրութիւնը",
"video.download": "Ներբեռնել նիշքը",
"video.exit_fullscreen": "Անջատել լիաէկրան դիտումը",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Mengikuti Anda",
"account.go_to_profile": "Buka profil",
"account.hide_reblogs": "Sembunyikan boosts dari @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Bergabung",
"account.languages": "Ubah langganan bahasa",
"account.link_verified_on": "Kepemilikan tautan ini telah dicek pada {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Aktifkan notifikasi desktop",
"notifications_permission_banner.how_to_control": "Untuk menerima notifikasi saat Mastodon terbuka, aktifkan notifikasi desktop. Anda dapat mengendalikan tipe interaksi mana yang ditampilkan notifikasi desktop melalui tombol {icon} di atas saat sudah aktif.",
"notifications_permission_banner.title": "Jangan lewatkan apa pun",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Taruh kembali",
"poll.closed": "Ditutup",
"poll.refresh": "Segarkan",
@ -597,6 +600,7 @@
"status.show_more": "Tampilkan semua",
"status.show_more_all": "Tampilkan lebih banyak untuk semua",
"status.show_original": "Tampilkan yang asli",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Terjemahkan",
"status.translated_from_with": "Diterjemahkan dari {lang} menggunakan {provider}",
"status.uncached_media_warning": "Tidak tersedia",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Pratinjau ({ratio})",
"upload_progress.label": "Mengunggah...",
"upload_progress.processing": "Memproses…",
"username.taken": "That username is taken. Try another",
"video.close": "Tutup video",
"video.download": "Unduh berkas",
"video.exit_fullscreen": "Keluar dari layar penuh",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Na-eso gị",
"account.go_to_profile": "Go to profile",
"account.hide_reblogs": "Hide boosts from @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Joined",
"account.languages": "Change subscribed languages",
"account.link_verified_on": "Ownership of this link was checked on {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Put it back",
"poll.closed": "Closed",
"poll.refresh": "Refresh",
@ -597,6 +600,7 @@
"status.show_more": "Show more",
"status.show_more_all": "Show more for all",
"status.show_original": "Show original",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Tụgharịa",
"status.translated_from_with": "Translated from {lang} using {provider}",
"status.uncached_media_warning": "Not available",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "Uploading…",
"upload_progress.processing": "Processing…",
"username.taken": "That username is taken. Try another",
"video.close": "Close video",
"video.download": "Download file",
"video.exit_fullscreen": "Exit full screen",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Sequas tu",
"account.go_to_profile": "Go to profile",
"account.hide_reblogs": "Celez busti de @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Joined",
"account.languages": "Chanjez abonita lingui",
"account.link_verified_on": "Proprieteso di ca ligilo kontrolesis ye {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Aktivigez desktopavizi",
"notifications_permission_banner.how_to_control": "Por ganar avizi kande Mastodon ne esas apertita, aktivigez dekstopavizi. Vu povas precize regularar quale interakti facas deskstopavizi tra la supera {icon} butono pos oli aktivigesis.",
"notifications_permission_banner.title": "Irga kozo ne pasas vu",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Retropozez",
"poll.closed": "Klozita",
"poll.refresh": "Rifreshez",
@ -597,6 +600,7 @@
"status.show_more": "Montrar plue",
"status.show_more_all": "Montrez pluse por omno",
"status.show_original": "Montrez originalo",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Tradukez",
"status.translated_from_with": "Translated from {lang} using {provider}",
"status.uncached_media_warning": "Nedisplonebla",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Previdez ({ratio})",
"upload_progress.label": "Kargante...",
"upload_progress.processing": "Processing…",
"username.taken": "That username is taken. Try another",
"video.close": "Klozez video",
"video.download": "Deschargez failo",
"video.exit_fullscreen": "Ekirez plena skreno",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Fylgir þér",
"account.go_to_profile": "Fara í notandasnið",
"account.hide_reblogs": "Fela endurbirtingar fyrir @{name}",
"account.in_memoriam": "Minning.",
"account.joined_short": "Gerðist þátttakandi",
"account.languages": "Breyta tungumálum í áskrift",
"account.link_verified_on": "Eignarhald á þessum tengli var athugað þann {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Virkja tilkynningar á skjáborði",
"notifications_permission_banner.how_to_control": "Til að taka á móti tilkynningum þegar Mastodon er ekki opið, skaltu virkja tilkynningar á skjáborði. Þegar þær eru orðnar virkar geturðu stýrt nákvæmlega hverskonar atvik framleiða tilkynningar með því að nota {icon}-hnappinn hér fyrir ofan.",
"notifications_permission_banner.title": "Aldrei missa af neinu",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Setja til baka",
"poll.closed": "Lokuð",
"poll.refresh": "Endurlesa",
@ -597,6 +600,7 @@
"status.show_more": "Sýna meira",
"status.show_more_all": "Sýna meira fyrir allt",
"status.show_original": "Sýna upprunalega",
"status.title.with_attachments": "{user} birti {attachmentCount, plural, one {viðhengi} other {{attachmentCount} viðhengi}}",
"status.translate": "Þýða",
"status.translated_from_with": "Þýtt úr {lang} með {provider}",
"status.uncached_media_warning": "Ekki tiltækt",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Forskoðun ({ratio})",
"upload_progress.label": "Er að senda inn...",
"upload_progress.processing": "Meðhöndla…",
"username.taken": "Þetta notandanafn er frátekið. Prófaðu eitthvað annað",
"video.close": "Loka myndskeiði",
"video.download": "Sækja skrá",
"video.exit_fullscreen": "Hætta í skjáfylli",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Ti segue",
"account.go_to_profile": "Vai al profilo",
"account.hide_reblogs": "Nascondi potenziamenti da @{name}",
"account.in_memoriam": "In memoria.",
"account.joined_short": "Iscritto",
"account.languages": "Modifica le lingue d'iscrizione",
"account.link_verified_on": "La proprietà di questo link è stata controllata il {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Abilita le notifiche desktop",
"notifications_permission_banner.how_to_control": "Per ricevere le notifiche quando Mastodon non è aperto, abilita le notifiche desktop. Puoi controllare precisamente quali tipi di interazioni generano le notifiche destkop, tramite il pulsante {icon} sopra, una volta abilitate.",
"notifications_permission_banner.title": "Non perderti mai nulla",
"password_confirmation.exceeds_maxlength": "La conferma della password supera la lunghezza massima della password",
"password_confirmation.mismatching": "Le password non corrispondono",
"picture_in_picture.restore": "Ripristinala",
"poll.closed": "Chiuso",
"poll.refresh": "Aggiorna",
@ -597,6 +600,7 @@
"status.show_more": "Mostra di più",
"status.show_more_all": "Mostra di più per tutti",
"status.show_original": "Mostra originale",
"status.title.with_attachments": "{user} ha pubblicato {attachmentCount, plural, one {un allegato} other {{attachmentCount} allegati}}",
"status.translate": "Traduci",
"status.translated_from_with": "Tradotto da {lang} utilizzando {provider}",
"status.uncached_media_warning": "Non disponibile",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Anteprima ({ratio})",
"upload_progress.label": "Caricamento...",
"upload_progress.processing": "Elaborazione…",
"username.taken": "Quel nome utente è già in uso. Prova con un altro",
"video.close": "Chiudi il video",
"video.download": "Scarica file",
"video.exit_fullscreen": "Esci dallo schermo intero",

View file

@ -39,6 +39,7 @@
"account.follows_you": "フォローされています",
"account.go_to_profile": "プロフィールページへ",
"account.hide_reblogs": "@{name}さんからのブーストを非表示",
"account.in_memoriam": "追悼アカウントです",
"account.joined_short": "登録日",
"account.languages": "購読言語の変更",
"account.link_verified_on": "このリンクの所有権は{date}に確認されました",
@ -444,6 +445,8 @@
"notifications_permission_banner.enable": "デスクトップ通知を有効にする",
"notifications_permission_banner.how_to_control": "Mastodonを閉じている間でも通知を受信するにはデスクトップ通知を有効にしてください。有効にすると上の {icon} ボタンから通知の内容を細かくカスタマイズできます。",
"notifications_permission_banner.title": "お見逃しなく",
"password_confirmation.exceeds_maxlength": "パスワードの最大文字数を超えています",
"password_confirmation.mismatching": "入力済みのパスワードと一致しません",
"picture_in_picture.restore": "元に戻す",
"poll.closed": "終了",
"poll.refresh": "更新",
@ -610,6 +613,7 @@
"status.show_more": "もっと見る",
"status.show_more_all": "全て見る",
"status.show_original": "原文を表示",
"status.title.with_attachments": "{user} の投稿 {attachmentCount, plural, other {({attachmentCount}件のメディア)}}",
"status.translate": "翻訳",
"status.translated_from_with": "{provider}を使って{lang}から翻訳",
"status.uncached_media_warning": "利用できません",
@ -662,6 +666,7 @@
"upload_modal.preview_label": "プレビュー ({ratio})",
"upload_progress.label": "アップロード中...",
"upload_progress.processing": "処理中…",
"username.taken": "このユーザー名はすでに使用されています。ほかのユーザー名を入力してください",
"video.close": "動画を閉じる",
"video.download": "ダウンロード",
"video.exit_fullscreen": "全画面を終了する",

View file

@ -39,6 +39,7 @@
"account.follows_you": "მოგყვებათ",
"account.go_to_profile": "Go to profile",
"account.hide_reblogs": "დაიმალოს ბუსტები @{name}-სგან",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Joined",
"account.languages": "Change subscribed languages",
"account.link_verified_on": "Ownership of this link was checked on {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Enable desktop notifications",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Never miss a thing",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Put it back",
"poll.closed": "Closed",
"poll.refresh": "Refresh",
@ -597,6 +600,7 @@
"status.show_more": "აჩვენე მეტი",
"status.show_more_all": "აჩვენე მეტი ყველაზე",
"status.show_original": "Show original",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Translate",
"status.translated_from_with": "Translated from {lang} using {provider}",
"status.uncached_media_warning": "Not available",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Preview ({ratio})",
"upload_progress.label": "იტვირთება...",
"upload_progress.processing": "Processing…",
"username.taken": "That username is taken. Try another",
"video.close": "ვიდეოს დახურვა",
"video.download": "Download file",
"video.exit_fullscreen": "სრულ ეკრანზე ჩვენების გათიშვა",

View file

@ -39,6 +39,7 @@
"account.follows_you": "Yeṭṭafaṛ-ik",
"account.go_to_profile": "Go to profile",
"account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}",
"account.in_memoriam": "In Memoriam.",
"account.joined_short": "Joined",
"account.languages": "Change subscribed languages",
"account.link_verified_on": "Taɣara n useɣwen-a tettwasenqed ass n {date}",
@ -442,6 +443,8 @@
"notifications_permission_banner.enable": "Rmed talɣutin n tnarit",
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
"notifications_permission_banner.title": "Ur zeggel acemma",
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
"password_confirmation.mismatching": "Password confirmation does not match",
"picture_in_picture.restore": "Err-it amkan-is",
"poll.closed": "Ifukk",
"poll.refresh": "Smiren",
@ -597,6 +600,7 @@
"status.show_more": "Ssken-d ugar",
"status.show_more_all": "Ẓerr ugar lebda",
"status.show_original": "Show original",
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {{attachmentCount} attachments}}",
"status.translate": "Suqel",
"status.translated_from_with": "Yettwasuqel seg {lang} s {provider}",
"status.uncached_media_warning": "Ulac-it",
@ -649,6 +653,7 @@
"upload_modal.preview_label": "Taskant ({ratio})",
"upload_progress.label": "Asali iteddu...",
"upload_progress.processing": "Processing…",
"username.taken": "That username is taken. Try another",
"video.close": "Mdel tabidyutt",
"video.download": "Sidered afaylu",
"video.exit_fullscreen": "Ffeɣ seg ugdil ačuran",

Some files were not shown because too many files have changed in this diff Show more