Merge pull request #2527 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes up to 8ebc94dd22
This commit is contained in:
commit
a3a58c041e
356 changed files with 5655 additions and 2889 deletions
|
@ -70,7 +70,7 @@ services:
|
|||
hard: -1
|
||||
|
||||
libretranslate:
|
||||
image: libretranslate/libretranslate:v1.4.1
|
||||
image: libretranslate/libretranslate:v1.5.2
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- lt-data:/home/libretranslate/.local
|
||||
|
|
2
.github/actions/setup-javascript/action.yml
vendored
2
.github/actions/setup-javascript/action.yml
vendored
|
@ -9,7 +9,7 @@ runs:
|
|||
using: 'composite'
|
||||
steps:
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
|
|
13
.github/codecov.yml
vendored
Normal file
13
.github/codecov.yml
vendored
Normal file
|
@ -0,0 +1,13 @@
|
|||
coverage:
|
||||
status:
|
||||
project:
|
||||
default:
|
||||
# Github status check is not blocking
|
||||
informational: true
|
||||
patch:
|
||||
default:
|
||||
# Github status check is not blocking
|
||||
informational: true
|
||||
comment:
|
||||
# Only write a comment in PR if there are changes
|
||||
require_changes: true
|
1
.github/renovate.json5
vendored
1
.github/renovate.json5
vendored
|
@ -22,6 +22,7 @@
|
|||
'react-hotkeys', // Requires code changes
|
||||
|
||||
// Requires Webpacker upgrade or replacement
|
||||
'@svgr/webpack',
|
||||
'@types/webpack',
|
||||
'babel-loader',
|
||||
'compression-webpack-plugin',
|
||||
|
|
12
.github/workflows/test-ruby.yml
vendored
12
.github/workflows/test-ruby.yml
vendored
|
@ -94,7 +94,7 @@ jobs:
|
|||
DB_HOST: localhost
|
||||
DB_USER: postgres
|
||||
DB_PASS: postgres
|
||||
DISABLE_SIMPLECOV: true
|
||||
DISABLE_SIMPLECOV: ${{ matrix.ruby-version != '.ruby-version' }}
|
||||
RAILS_ENV: test
|
||||
ALLOW_NOPAM: true
|
||||
PAM_ENABLED: true
|
||||
|
@ -137,6 +137,12 @@ jobs:
|
|||
|
||||
- run: bin/rspec
|
||||
|
||||
- name: Upload coverage reports to Codecov
|
||||
if: matrix.ruby-version == '.ruby-version'
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: coverage/lcov/mastodon.lcov
|
||||
|
||||
test-e2e:
|
||||
name: End to End testing
|
||||
runs-on: ubuntu-latest
|
||||
|
@ -221,7 +227,7 @@ jobs:
|
|||
path: tmp/screenshots/
|
||||
|
||||
test-search:
|
||||
name: Testing search
|
||||
name: Elastic Search integration testing
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs:
|
||||
|
@ -308,7 +314,7 @@ jobs:
|
|||
- name: Load database schema
|
||||
run: './bin/rails db:create db:schema:load db:seed'
|
||||
|
||||
- run: bundle exec rake spec:search
|
||||
- run: bin/rspec --tag search
|
||||
|
||||
- name: Archive logs
|
||||
uses: actions/upload-artifact@v3
|
||||
|
|
22
.simplecov
Normal file
22
.simplecov
Normal file
|
@ -0,0 +1,22 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
if ENV['CI']
|
||||
require 'simplecov-lcov'
|
||||
SimpleCov::Formatter::LcovFormatter.config.report_with_single_file = true
|
||||
SimpleCov.formatter = SimpleCov::Formatter::LcovFormatter
|
||||
else
|
||||
SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
|
||||
end
|
||||
|
||||
SimpleCov.start 'rails' do
|
||||
enable_coverage :branch
|
||||
|
||||
add_filter 'lib/linter'
|
||||
|
||||
add_group 'Libraries', 'lib'
|
||||
add_group 'Policies', 'app/policies'
|
||||
add_group 'Presenters', 'app/presenters'
|
||||
add_group 'Serializers', 'app/serializers'
|
||||
add_group 'Services', 'app/services'
|
||||
add_group 'Validators', 'app/validators'
|
||||
end
|
|
@ -38,6 +38,7 @@ RUN apt-get update && \
|
|||
corepack enable
|
||||
|
||||
COPY Gemfile* package.json yarn.lock .yarnrc.yml /opt/mastodon/
|
||||
COPY streaming/package.json /opt/mastodon/streaming/
|
||||
COPY .yarn /opt/mastodon/.yarn
|
||||
|
||||
RUN bundle install -j"$(nproc)"
|
||||
|
|
10
Gemfile
10
Gemfile
|
@ -9,6 +9,9 @@ gem 'sprockets', '~> 3.7.2'
|
|||
gem 'thor', '~> 1.2'
|
||||
gem 'rack', '~> 2.2.7'
|
||||
|
||||
# For why irb is in the Gemfile, see: https://ruby.social/@st0012/111444685161478182
|
||||
gem 'irb', '~> 1.8'
|
||||
|
||||
gem 'haml-rails', '~>2.0'
|
||||
gem 'pg', '~> 1.5'
|
||||
gem 'pghero'
|
||||
|
@ -109,6 +112,9 @@ group :test do
|
|||
# RSpec progress bar formatter
|
||||
gem 'fuubar', '~> 2.5'
|
||||
|
||||
# RSpec helpers for email specs
|
||||
gem 'email_spec'
|
||||
|
||||
# Extra RSpec extenion methods and helpers for sidekiq
|
||||
gem 'rspec-sidekiq', '~> 4.0'
|
||||
|
||||
|
@ -139,6 +145,7 @@ group :test do
|
|||
|
||||
# Coverage formatter for RSpec test if DISABLE_SIMPLECOV is false
|
||||
gem 'simplecov', '~> 0.22', require: false
|
||||
gem 'simplecov-lcov', '~> 0.8', require: false
|
||||
|
||||
# Stub web requests for specs
|
||||
gem 'webmock', '~> 3.18'
|
||||
|
@ -175,6 +182,9 @@ group :development do
|
|||
end
|
||||
|
||||
group :development, :test do
|
||||
# Interactive Debugging tools
|
||||
gem 'debug', '~> 1.8'
|
||||
|
||||
# Profiling tools
|
||||
gem 'memory_profiler', require: false
|
||||
gem 'ruby-prof', require: false
|
||||
|
|
59
Gemfile.lock
59
Gemfile.lock
|
@ -130,21 +130,21 @@ GEM
|
|||
encryptor (~> 3.0.0)
|
||||
attr_required (1.0.1)
|
||||
awrence (1.2.1)
|
||||
aws-eventstream (1.2.0)
|
||||
aws-partitions (1.828.0)
|
||||
aws-sdk-core (3.183.1)
|
||||
aws-eventstream (1.3.0)
|
||||
aws-partitions (1.857.0)
|
||||
aws-sdk-core (3.188.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.651.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
aws-sdk-kms (1.71.0)
|
||||
aws-sdk-core (~> 3, >= 3.177.0)
|
||||
aws-sdk-kms (1.73.0)
|
||||
aws-sdk-core (~> 3, >= 3.188.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.136.0)
|
||||
aws-sdk-core (~> 3, >= 3.181.0)
|
||||
aws-sdk-s3 (1.140.0)
|
||||
aws-sdk-core (~> 3, >= 3.188.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.6)
|
||||
aws-sigv4 (1.6.0)
|
||||
aws-sigv4 (1.7.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
azure-storage-blob (2.0.3)
|
||||
azure-storage-common (~> 2.0)
|
||||
|
@ -154,7 +154,7 @@ GEM
|
|||
faraday_middleware (~> 1.0, >= 1.0.0.rc1)
|
||||
net-http-persistent (~> 4.0)
|
||||
nokogiri (~> 1, >= 1.10.8)
|
||||
base64 (0.1.1)
|
||||
base64 (0.2.0)
|
||||
bcp47_spec (0.2.1)
|
||||
bcrypt (3.1.19)
|
||||
better_errors (2.10.1)
|
||||
|
@ -220,6 +220,9 @@ GEM
|
|||
database_cleaner-core (~> 2.0.0)
|
||||
database_cleaner-core (2.0.1)
|
||||
date (3.3.4)
|
||||
debug (1.8.0)
|
||||
irb (>= 1.5.0)
|
||||
reline (>= 0.3.1)
|
||||
debug_inspector (1.1.0)
|
||||
devise (4.9.3)
|
||||
bcrypt (~> 3.0)
|
||||
|
@ -242,13 +245,13 @@ GEM
|
|||
docile (1.4.0)
|
||||
domain_name (0.5.20190701)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
doorkeeper (5.6.6)
|
||||
doorkeeper (5.6.7)
|
||||
railties (>= 5)
|
||||
dotenv (2.8.1)
|
||||
dotenv-rails (2.8.1)
|
||||
dotenv (= 2.8.1)
|
||||
railties (>= 3.2)
|
||||
drb (2.1.1)
|
||||
drb (2.2.0)
|
||||
ruby2_keywords
|
||||
ed25519 (1.3.0)
|
||||
elasticsearch (7.13.3)
|
||||
|
@ -260,12 +263,16 @@ GEM
|
|||
elasticsearch-transport (7.13.3)
|
||||
faraday (~> 1)
|
||||
multi_json
|
||||
email_spec (2.2.2)
|
||||
htmlentities (~> 4.3.3)
|
||||
launchy (~> 2.1)
|
||||
mail (~> 2.7)
|
||||
encryptor (3.0.0)
|
||||
erubi (1.12.0)
|
||||
et-orbi (1.2.7)
|
||||
tzinfo
|
||||
excon (0.104.0)
|
||||
fabrication (2.30.0)
|
||||
fabrication (2.31.0)
|
||||
faker (3.2.2)
|
||||
i18n (>= 1.8.11, < 2)
|
||||
faraday (1.10.3)
|
||||
|
@ -370,7 +377,7 @@ GEM
|
|||
terminal-table (>= 1.5.1)
|
||||
idn-ruby (0.1.5)
|
||||
io-console (0.6.0)
|
||||
irb (1.8.3)
|
||||
irb (1.9.1)
|
||||
rdoc
|
||||
reline (>= 0.3.8)
|
||||
jmespath (1.6.2)
|
||||
|
@ -432,7 +439,7 @@ GEM
|
|||
activesupport (>= 4)
|
||||
railties (>= 4)
|
||||
request_store (~> 1.0)
|
||||
loofah (2.21.4)
|
||||
loofah (2.22.0)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.12.0)
|
||||
mail (2.8.1)
|
||||
|
@ -458,7 +465,7 @@ GEM
|
|||
msgpack (1.7.2)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.3.0)
|
||||
mutex_m (0.1.2)
|
||||
mutex_m (0.2.0)
|
||||
net-http (0.4.0)
|
||||
uri
|
||||
net-http-persistent (4.0.2)
|
||||
|
@ -474,7 +481,7 @@ GEM
|
|||
net-smtp (0.4.0)
|
||||
net-protocol
|
||||
nio4r (2.5.9)
|
||||
nokogiri (1.15.4)
|
||||
nokogiri (1.15.5)
|
||||
mini_portile2 (~> 2.8.2)
|
||||
racc (~> 1.4)
|
||||
oj (3.16.1)
|
||||
|
@ -529,7 +536,7 @@ GEM
|
|||
private_address_check (0.5.0)
|
||||
psych (5.1.1.1)
|
||||
stringio
|
||||
public_suffix (5.0.3)
|
||||
public_suffix (5.0.4)
|
||||
puma (6.4.0)
|
||||
nio4r (~> 2.0)
|
||||
pundit (2.3.1)
|
||||
|
@ -595,13 +602,13 @@ GEM
|
|||
thor (~> 1.0, >= 1.2.2)
|
||||
zeitwerk (~> 2.6)
|
||||
rainbow (3.1.1)
|
||||
rake (13.0.6)
|
||||
rake (13.1.0)
|
||||
rdf (3.3.1)
|
||||
bcp47_spec (~> 0.2)
|
||||
link_header (~> 0.0, >= 0.0.8)
|
||||
rdf-normalize (0.6.1)
|
||||
rdf (~> 3.2)
|
||||
rdoc (6.5.0)
|
||||
rdoc (6.6.0)
|
||||
psych (>= 4.0.0)
|
||||
redcarpet (3.6.0)
|
||||
redis (4.8.1)
|
||||
|
@ -610,7 +617,7 @@ GEM
|
|||
redlock (1.3.2)
|
||||
redis (>= 3.0.0, < 6.0)
|
||||
regexp_parser (2.8.2)
|
||||
reline (0.3.9)
|
||||
reline (0.4.0)
|
||||
io-console (~> 0.5)
|
||||
request_store (1.5.1)
|
||||
rack (>= 1.4)
|
||||
|
@ -635,7 +642,7 @@ GEM
|
|||
rspec-mocks (3.12.6)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.12.0)
|
||||
rspec-rails (6.0.3)
|
||||
rspec-rails (6.1.0)
|
||||
actionpack (>= 6.1)
|
||||
activesupport (>= 6.1)
|
||||
railties (>= 6.1)
|
||||
|
@ -669,10 +676,11 @@ GEM
|
|||
rubocop-performance (1.19.1)
|
||||
rubocop (>= 1.7.0, < 2.0)
|
||||
rubocop-ast (>= 0.4.0)
|
||||
rubocop-rails (2.22.1)
|
||||
rubocop-rails (2.22.2)
|
||||
activesupport (>= 4.2.0)
|
||||
rack (>= 1.1)
|
||||
rubocop (>= 1.33.0, < 2.0)
|
||||
rubocop-ast (>= 1.30.0, < 2.0)
|
||||
rubocop-rspec (2.25.0)
|
||||
rubocop (~> 1.40)
|
||||
rubocop-capybara (~> 2.17)
|
||||
|
@ -725,6 +733,7 @@ GEM
|
|||
simplecov-html (~> 0.11)
|
||||
simplecov_json_formatter (~> 0.1)
|
||||
simplecov-html (0.12.3)
|
||||
simplecov-lcov (0.8.0)
|
||||
simplecov_json_formatter (0.1.4)
|
||||
smart_properties (1.17.0)
|
||||
sprockets (3.7.2)
|
||||
|
@ -751,7 +760,7 @@ GEM
|
|||
unicode-display_width (>= 1.1.1, < 3)
|
||||
terrapin (0.6.0)
|
||||
climate_control (>= 0.0.3, < 1.0)
|
||||
test-prof (1.2.3)
|
||||
test-prof (1.3.0)
|
||||
thor (1.3.0)
|
||||
tilt (2.3.0)
|
||||
timeout (0.4.1)
|
||||
|
@ -845,6 +854,7 @@ DEPENDENCIES
|
|||
concurrent-ruby
|
||||
connection_pool
|
||||
database_cleaner-active_record
|
||||
debug (~> 1.8)
|
||||
devise (~> 4.9)
|
||||
devise-two-factor (~> 4.1)
|
||||
devise_pam_authenticatable2 (~> 9.2)
|
||||
|
@ -852,6 +862,7 @@ DEPENDENCIES
|
|||
doorkeeper (~> 5.6)
|
||||
dotenv-rails (~> 2.8)
|
||||
ed25519 (~> 1.3)
|
||||
email_spec
|
||||
fabrication (~> 2.30)
|
||||
faker (~> 3.2)
|
||||
fast_blank (~> 1.0)
|
||||
|
@ -869,6 +880,7 @@ DEPENDENCIES
|
|||
httplog (~> 1.6.2)
|
||||
i18n-tasks (~> 1.0)
|
||||
idn-ruby
|
||||
irb (~> 1.8)
|
||||
json-ld
|
||||
json-ld-preloaded (~> 3.2)
|
||||
json-schema (~> 4.0)
|
||||
|
@ -936,6 +948,7 @@ DEPENDENCIES
|
|||
simple-navigation (~> 4.4)
|
||||
simple_form (~> 5.2)
|
||||
simplecov (~> 0.22)
|
||||
simplecov-lcov (~> 0.8)
|
||||
sprockets (~> 3.7.2)
|
||||
sprockets-rails (~> 3.4)
|
||||
stackprof
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
web: env PORT=3000 RAILS_ENV=development bundle exec puma -C config/puma.rb
|
||||
sidekiq: env PORT=3000 RAILS_ENV=development bundle exec sidekiq
|
||||
stream: env PORT=4000 yarn run start
|
||||
stream: env PORT=4000 yarn workspace @mastodon/streaming start
|
||||
webpack: bin/webpack-dev-server
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AccountsIndex < Chewy::Index
|
||||
include DatetimeClampingConcern
|
||||
|
||||
settings index: index_preset(refresh_interval: '30s'), analysis: {
|
||||
filter: {
|
||||
english_stop: {
|
||||
|
@ -60,7 +62,7 @@ class AccountsIndex < Chewy::Index
|
|||
field(:following_count, type: 'long')
|
||||
field(:followers_count, type: 'long')
|
||||
field(:properties, type: 'keyword', value: ->(account) { account.searchable_properties })
|
||||
field(:last_status_at, type: 'date', value: ->(account) { account.last_status_at || account.created_at })
|
||||
field(:last_status_at, type: 'date', value: ->(account) { clamp_date(account.last_status_at || account.created_at) })
|
||||
field(:display_name, type: 'text', analyzer: 'verbatim') { field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'verbatim' }
|
||||
field(:username, type: 'text', analyzer: 'verbatim', value: ->(account) { [account.username, account.domain].compact.join('@') }) { field :edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'verbatim' }
|
||||
field(:text, type: 'text', analyzer: 'verbatim', value: ->(account) { account.searchable_text }) { field :stemmed, type: 'text', analyzer: 'natural' }
|
||||
|
|
14
app/chewy/concerns/datetime_clamping_concern.rb
Normal file
14
app/chewy/concerns/datetime_clamping_concern.rb
Normal file
|
@ -0,0 +1,14 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module DatetimeClampingConcern
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
MIN_ISO8601_DATETIME = '0000-01-01T00:00:00Z'.to_datetime.freeze
|
||||
MAX_ISO8601_DATETIME = '9999-12-31T23:59:59Z'.to_datetime.freeze
|
||||
|
||||
class_methods do
|
||||
def clamp_date(datetime)
|
||||
datetime.clamp(MIN_ISO8601_DATETIME, MAX_ISO8601_DATETIME)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,6 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class PublicStatusesIndex < Chewy::Index
|
||||
include DatetimeClampingConcern
|
||||
|
||||
settings index: index_preset(refresh_interval: '30s', number_of_shards: 5), analysis: {
|
||||
filter: {
|
||||
english_stop: {
|
||||
|
@ -62,6 +64,6 @@ class PublicStatusesIndex < Chewy::Index
|
|||
field(:tags, type: 'text', analyzer: 'hashtag', value: ->(status) { status.tags.map(&:display_name) })
|
||||
field(:language, type: 'keyword')
|
||||
field(:properties, type: 'keyword', value: ->(status) { status.searchable_properties })
|
||||
field(:created_at, type: 'date')
|
||||
field(:created_at, type: 'date', value: ->(status) { clamp_date(status.created_at) })
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class StatusesIndex < Chewy::Index
|
||||
include DatetimeClampingConcern
|
||||
|
||||
settings index: index_preset(refresh_interval: '30s', number_of_shards: 5), analysis: {
|
||||
filter: {
|
||||
english_stop: {
|
||||
|
@ -60,6 +62,6 @@ class StatusesIndex < Chewy::Index
|
|||
field(:searchable_by, type: 'long', value: ->(status) { status.searchable_by })
|
||||
field(:language, type: 'keyword')
|
||||
field(:properties, type: 'keyword', value: ->(status) { status.searchable_properties })
|
||||
field(:created_at, type: 'date')
|
||||
field(:created_at, type: 'date', value: ->(status) { clamp_date(status.created_at) })
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class TagsIndex < Chewy::Index
|
||||
include DatetimeClampingConcern
|
||||
|
||||
settings index: index_preset(refresh_interval: '30s'), analysis: {
|
||||
analyzer: {
|
||||
content: {
|
||||
|
@ -42,6 +44,6 @@ class TagsIndex < Chewy::Index
|
|||
field(:name, type: 'text', analyzer: 'content', value: :display_name) { field(:edge_ngram, type: 'text', analyzer: 'edge_ngram', search_analyzer: 'content') }
|
||||
field(:reviewed, type: 'boolean', value: ->(tag) { tag.reviewed? })
|
||||
field(:usage, type: 'long', value: ->(tag, crutches) { tag.history.aggregate(crutches.time_period).accounts })
|
||||
field(:last_status_at, type: 'date', value: ->(tag) { tag.last_status_at || tag.created_at })
|
||||
field(:last_status_at, type: 'date', value: ->(tag) { clamp_date(tag.last_status_at || tag.created_at) })
|
||||
end
|
||||
end
|
||||
|
|
|
@ -18,8 +18,6 @@ class AccountsController < ApplicationController
|
|||
respond_to do |format|
|
||||
format.html do
|
||||
expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.hour) unless user_signed_in?
|
||||
|
||||
@rss_url = rss_url
|
||||
end
|
||||
|
||||
format.rss do
|
||||
|
@ -84,29 +82,21 @@ class AccountsController < ApplicationController
|
|||
short_account_url(@account, format: 'rss')
|
||||
end
|
||||
end
|
||||
helper_method :rss_url
|
||||
|
||||
def media_requested?
|
||||
request.path.split('.').first.end_with?('/media') && !tag_requested?
|
||||
path_without_format.end_with?('/media') && !tag_requested?
|
||||
end
|
||||
|
||||
def replies_requested?
|
||||
request.path.split('.').first.end_with?('/with_replies') && !tag_requested?
|
||||
path_without_format.end_with?('/with_replies') && !tag_requested?
|
||||
end
|
||||
|
||||
def tag_requested?
|
||||
request.path.split('.').first.end_with?(Addressable::URI.parse("/tagged/#{params[:tag]}").normalize)
|
||||
path_without_format.end_with?(Addressable::URI.parse("/tagged/#{params[:tag]}").normalize)
|
||||
end
|
||||
|
||||
def cached_filtered_status_page
|
||||
cache_collection_paginated_by_id(
|
||||
filtered_statuses,
|
||||
Status,
|
||||
PAGE_SIZE,
|
||||
params_slice(:max_id, :min_id, :since_id)
|
||||
)
|
||||
end
|
||||
|
||||
def params_slice(*keys)
|
||||
params.slice(*keys).permit(*keys)
|
||||
def path_without_format
|
||||
request.path.split('.').first
|
||||
end
|
||||
end
|
||||
|
|
|
@ -32,7 +32,7 @@ module Admin
|
|||
private
|
||||
|
||||
def batched_ordered_status_edits
|
||||
@status.edits.reorder(nil).includes(:account, status: [:account]).find_each(order: :asc)
|
||||
@status.edits.includes(:account, status: [:account]).find_each(order: :asc)
|
||||
end
|
||||
helper_method :batched_ordered_status_edits
|
||||
|
||||
|
|
|
@ -16,6 +16,8 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController
|
|||
current_user.update(user_params) if user_params
|
||||
ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
|
||||
render json: @account, serializer: REST::CredentialAccountSerializer
|
||||
rescue ActiveRecord::RecordInvalid => e
|
||||
render json: ValidationErrorFormatter.new(e).as_json, status: 422
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -12,7 +12,7 @@ class Api::V1::Accounts::FamiliarFollowersController < Api::BaseController
|
|||
private
|
||||
|
||||
def set_accounts
|
||||
@accounts = Account.without_suspended.where(id: account_ids).select('id, hide_collections').index_by(&:id).values_at(*account_ids).compact
|
||||
@accounts = Account.without_suspended.where(id: account_ids).select('id, hide_collections')
|
||||
end
|
||||
|
||||
def familiar_followers
|
||||
|
|
|
@ -5,11 +5,8 @@ class Api::V1::Accounts::RelationshipsController < Api::BaseController
|
|||
before_action :require_user!
|
||||
|
||||
def index
|
||||
scope = Account.where(id: account_ids).select('id')
|
||||
scope.merge!(Account.without_suspended) unless truthy_param?(:with_suspended)
|
||||
# .where doesn't guarantee that our results are in the same order
|
||||
# we requested them, so return the "right" order to the requestor.
|
||||
@accounts = scope.index_by(&:id).values_at(*account_ids).compact
|
||||
@accounts = Account.where(id: account_ids).select('id')
|
||||
@accounts.merge!(Account.without_suspended) unless truthy_param?(:with_suspended)
|
||||
render json: @accounts, each_serializer: REST::RelationshipSerializer, relationships: relationships
|
||||
end
|
||||
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
class Api::V1::Instances::ActivityController < Api::V1::Instances::BaseController
|
||||
before_action :require_enabled_api!
|
||||
|
||||
WEEKS_OF_ACTIVITY = 12
|
||||
|
||||
def show
|
||||
cache_even_if_authenticated!
|
||||
render_with_cache json: :activity, expires_in: 1.day
|
||||
|
@ -11,23 +13,40 @@ class Api::V1::Instances::ActivityController < Api::V1::Instances::BaseControlle
|
|||
private
|
||||
|
||||
def activity
|
||||
statuses_tracker = ActivityTracker.new('activity:statuses:local', :basic)
|
||||
logins_tracker = ActivityTracker.new('activity:logins', :unique)
|
||||
registrations_tracker = ActivityTracker.new('activity:accounts:local', :basic)
|
||||
|
||||
(0...12).map do |i|
|
||||
start_of_week = i.weeks.ago
|
||||
end_of_week = start_of_week + 6.days
|
||||
|
||||
{
|
||||
week: start_of_week.to_i.to_s,
|
||||
statuses: statuses_tracker.sum(start_of_week, end_of_week).to_s,
|
||||
logins: logins_tracker.sum(start_of_week, end_of_week).to_s,
|
||||
registrations: registrations_tracker.sum(start_of_week, end_of_week).to_s,
|
||||
}
|
||||
activity_weeks.map do |weeks_ago|
|
||||
activity_json(*week_edge_days(weeks_ago))
|
||||
end
|
||||
end
|
||||
|
||||
def activity_json(start_of_week, end_of_week)
|
||||
{
|
||||
week: start_of_week.to_i.to_s,
|
||||
statuses: statuses_tracker.sum(start_of_week, end_of_week).to_s,
|
||||
logins: logins_tracker.sum(start_of_week, end_of_week).to_s,
|
||||
registrations: registrations_tracker.sum(start_of_week, end_of_week).to_s,
|
||||
}
|
||||
end
|
||||
|
||||
def activity_weeks
|
||||
0...WEEKS_OF_ACTIVITY
|
||||
end
|
||||
|
||||
def week_edge_days(num)
|
||||
[num.weeks.ago, num.weeks.ago + 6.days]
|
||||
end
|
||||
|
||||
def statuses_tracker
|
||||
ActivityTracker.new('activity:statuses:local', :basic)
|
||||
end
|
||||
|
||||
def logins_tracker
|
||||
ActivityTracker.new('activity:logins', :unique)
|
||||
end
|
||||
|
||||
def registrations_tracker
|
||||
ActivityTracker.new('activity:accounts:local', :basic)
|
||||
end
|
||||
|
||||
def require_enabled_api!
|
||||
head 404 unless Setting.activity_api_enabled && !limited_federation_mode?
|
||||
end
|
||||
|
|
|
@ -19,7 +19,19 @@ class Api::V1::Instances::DomainBlocksController < Api::V1::Instances::BaseContr
|
|||
private
|
||||
|
||||
def require_enabled_api!
|
||||
head 404 unless Setting.show_domain_blocks == 'all' || (Setting.show_domain_blocks == 'users' && user_signed_in?)
|
||||
head 404 unless api_enabled?
|
||||
end
|
||||
|
||||
def api_enabled?
|
||||
show_domain_blocks_for_all? || show_domain_blocks_to_user?
|
||||
end
|
||||
|
||||
def show_domain_blocks_for_all?
|
||||
Setting.show_domain_blocks == 'all'
|
||||
end
|
||||
|
||||
def show_domain_blocks_to_user?
|
||||
Setting.show_domain_blocks == 'users' && user_signed_in?
|
||||
end
|
||||
|
||||
def set_domain_blocks
|
||||
|
|
|
@ -11,6 +11,6 @@ class Api::V1::Statuses::HistoriesController < Api::V1::Statuses::BaseController
|
|||
private
|
||||
|
||||
def status_edits
|
||||
@status.edits.includes(:account, status: [:account]).to_a.presence || [@status.build_snapshot(at_time: @status.edited_at || @status.created_at)]
|
||||
@status.edits.ordered.includes(:account, status: [:account]).to_a.presence || [@status.build_snapshot(at_time: @status.edited_at || @status.created_at)]
|
||||
end
|
||||
end
|
||||
|
|
33
app/controllers/api/v1/timelines/base_controller.rb
Normal file
33
app/controllers/api/v1/timelines/base_controller.rb
Normal file
|
@ -0,0 +1,33 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Api::V1::Timelines::BaseController < Api::BaseController
|
||||
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
|
||||
|
||||
private
|
||||
|
||||
def insert_pagination_headers
|
||||
set_pagination_headers(next_path, prev_path)
|
||||
end
|
||||
|
||||
def pagination_max_id
|
||||
@statuses.last.id
|
||||
end
|
||||
|
||||
def pagination_since_id
|
||||
@statuses.first.id
|
||||
end
|
||||
|
||||
def next_path_params
|
||||
permitted_params.merge(max_id: pagination_max_id)
|
||||
end
|
||||
|
||||
def prev_path_params
|
||||
permitted_params.merge(min_id: pagination_since_id)
|
||||
end
|
||||
|
||||
def permitted_params
|
||||
params
|
||||
.slice(*self.class::PERMITTED_PARAMS)
|
||||
.permit(*self.class::PERMITTED_PARAMS)
|
||||
end
|
||||
end
|
|
@ -1,9 +1,10 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Api::V1::Timelines::HomeController < Api::BaseController
|
||||
class Api::V1::Timelines::HomeController < Api::V1::Timelines::BaseController
|
||||
before_action -> { doorkeeper_authorize! :read, :'read:statuses' }, only: [:show]
|
||||
before_action :require_user!, only: [:show]
|
||||
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
|
||||
|
||||
PERMITTED_PARAMS = %i(local limit).freeze
|
||||
|
||||
def show
|
||||
with_read_replica do
|
||||
|
@ -40,27 +41,11 @@ class Api::V1::Timelines::HomeController < Api::BaseController
|
|||
HomeFeed.new(current_account)
|
||||
end
|
||||
|
||||
def insert_pagination_headers
|
||||
set_pagination_headers(next_path, prev_path)
|
||||
end
|
||||
|
||||
def pagination_params(core_params)
|
||||
params.slice(:local, :limit).permit(:local, :limit).merge(core_params)
|
||||
end
|
||||
|
||||
def next_path
|
||||
api_v1_timelines_home_url pagination_params(max_id: pagination_max_id)
|
||||
api_v1_timelines_home_url next_path_params
|
||||
end
|
||||
|
||||
def prev_path
|
||||
api_v1_timelines_home_url pagination_params(min_id: pagination_since_id)
|
||||
end
|
||||
|
||||
def pagination_max_id
|
||||
@statuses.last.id
|
||||
end
|
||||
|
||||
def pagination_since_id
|
||||
@statuses.first.id
|
||||
api_v1_timelines_home_url prev_path_params
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Api::V1::Timelines::ListController < Api::BaseController
|
||||
class Api::V1::Timelines::ListController < Api::V1::Timelines::BaseController
|
||||
before_action -> { doorkeeper_authorize! :read, :'read:lists' }
|
||||
before_action :require_user!
|
||||
before_action :set_list
|
||||
before_action :set_statuses
|
||||
|
||||
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
|
||||
PERMITTED_PARAMS = %i(limit).freeze
|
||||
|
||||
def show
|
||||
render json: @statuses,
|
||||
|
@ -41,27 +41,11 @@ class Api::V1::Timelines::ListController < Api::BaseController
|
|||
ListFeed.new(@list)
|
||||
end
|
||||
|
||||
def insert_pagination_headers
|
||||
set_pagination_headers(next_path, prev_path)
|
||||
end
|
||||
|
||||
def pagination_params(core_params)
|
||||
params.slice(:limit).permit(:limit).merge(core_params)
|
||||
end
|
||||
|
||||
def next_path
|
||||
api_v1_timelines_list_url params[:id], pagination_params(max_id: pagination_max_id)
|
||||
api_v1_timelines_list_url params[:id], next_path_params
|
||||
end
|
||||
|
||||
def prev_path
|
||||
api_v1_timelines_list_url params[:id], pagination_params(min_id: pagination_since_id)
|
||||
end
|
||||
|
||||
def pagination_max_id
|
||||
@statuses.last.id
|
||||
end
|
||||
|
||||
def pagination_since_id
|
||||
@statuses.first.id
|
||||
api_v1_timelines_list_url params[:id], prev_path_params
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Api::V1::Timelines::PublicController < Api::BaseController
|
||||
class Api::V1::Timelines::PublicController < Api::V1::Timelines::BaseController
|
||||
before_action :require_user!, only: [:show], if: :require_auth?
|
||||
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
|
||||
|
||||
PERMITTED_PARAMS = %i(local remote limit only_media allow_local_only).freeze
|
||||
|
||||
def show
|
||||
cache_if_unauthenticated!
|
||||
|
@ -45,27 +46,11 @@ class Api::V1::Timelines::PublicController < Api::BaseController
|
|||
)
|
||||
end
|
||||
|
||||
def insert_pagination_headers
|
||||
set_pagination_headers(next_path, prev_path)
|
||||
end
|
||||
|
||||
def pagination_params(core_params)
|
||||
params.slice(:local, :remote, :limit, :only_media, :allow_local_only).permit(:local, :remote, :limit, :only_media, :allow_local_only).merge(core_params)
|
||||
end
|
||||
|
||||
def next_path
|
||||
api_v1_timelines_public_url pagination_params(max_id: pagination_max_id)
|
||||
api_v1_timelines_public_url next_path_params
|
||||
end
|
||||
|
||||
def prev_path
|
||||
api_v1_timelines_public_url pagination_params(min_id: pagination_since_id)
|
||||
end
|
||||
|
||||
def pagination_max_id
|
||||
@statuses.last.id
|
||||
end
|
||||
|
||||
def pagination_since_id
|
||||
@statuses.first.id
|
||||
api_v1_timelines_public_url prev_path_params
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Api::V1::Timelines::TagController < Api::BaseController
|
||||
class Api::V1::Timelines::TagController < Api::V1::Timelines::BaseController
|
||||
before_action -> { doorkeeper_authorize! :read, :'read:statuses' }, only: :show, if: :require_auth?
|
||||
before_action :load_tag
|
||||
after_action :insert_pagination_headers, unless: -> { @statuses.empty? }
|
||||
|
||||
PERMITTED_PARAMS = %i(local limit only_media).freeze
|
||||
|
||||
def show
|
||||
cache_if_unauthenticated!
|
||||
|
@ -51,27 +52,11 @@ class Api::V1::Timelines::TagController < Api::BaseController
|
|||
)
|
||||
end
|
||||
|
||||
def insert_pagination_headers
|
||||
set_pagination_headers(next_path, prev_path)
|
||||
end
|
||||
|
||||
def pagination_params(core_params)
|
||||
params.slice(:local, :limit, :only_media).permit(:local, :limit, :only_media).merge(core_params)
|
||||
end
|
||||
|
||||
def next_path
|
||||
api_v1_timelines_tag_url params[:id], pagination_params(max_id: pagination_max_id)
|
||||
api_v1_timelines_tag_url params[:id], next_path_params
|
||||
end
|
||||
|
||||
def prev_path
|
||||
api_v1_timelines_tag_url params[:id], pagination_params(min_id: pagination_since_id)
|
||||
end
|
||||
|
||||
def pagination_max_id
|
||||
@statuses.last.id
|
||||
end
|
||||
|
||||
def pagination_since_id
|
||||
@statuses.first.id
|
||||
api_v1_timelines_tag_url params[:id], prev_path_params
|
||||
end
|
||||
end
|
||||
|
|
|
@ -2,12 +2,22 @@
|
|||
|
||||
class Api::V2::MediaController < Api::V1::MediaController
|
||||
def create
|
||||
@media_attachment = current_account.media_attachments.create!({ delay_processing: true }.merge(media_attachment_params))
|
||||
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: @media_attachment.not_processed? ? 202 : 200
|
||||
@media_attachment = current_account.media_attachments.create!(media_and_delay_params)
|
||||
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_from_media_processing
|
||||
rescue Paperclip::Errors::NotIdentifiedByImageMagickError
|
||||
render json: file_type_error, status: 422
|
||||
rescue Paperclip::Error => e
|
||||
Rails.logger.error "#{e.class}: #{e.message}"
|
||||
render json: processing_error, status: 500
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def media_and_delay_params
|
||||
{ delay_processing: true }.merge(media_attachment_params)
|
||||
end
|
||||
|
||||
def status_from_media_processing
|
||||
@media_attachment.not_processed? ? 202 : 200
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,37 +3,13 @@
|
|||
class Api::Web::PushSubscriptionsController < Api::Web::BaseController
|
||||
before_action :require_user!
|
||||
before_action :set_push_subscription, only: :update
|
||||
before_action :destroy_previous_subscriptions, only: :create, if: :prior_subscriptions?
|
||||
after_action :update_session_with_subscription, only: :create
|
||||
|
||||
def create
|
||||
active_session = current_session
|
||||
@push_subscription = ::Web::PushSubscription.create!(web_push_subscription_params)
|
||||
|
||||
unless active_session.web_push_subscription.nil?
|
||||
active_session.web_push_subscription.destroy!
|
||||
active_session.update!(web_push_subscription: nil)
|
||||
end
|
||||
|
||||
# Mobile devices do not support regular notifications, so we enable push notifications by default
|
||||
alerts_enabled = active_session.detection.device.mobile? || active_session.detection.device.tablet?
|
||||
|
||||
data = {
|
||||
policy: 'all',
|
||||
alerts: Notification::TYPES.index_with { alerts_enabled },
|
||||
}
|
||||
|
||||
data.deep_merge!(data_params) if params[:data]
|
||||
|
||||
push_subscription = ::Web::PushSubscription.create!(
|
||||
endpoint: subscription_params[:endpoint],
|
||||
key_p256dh: subscription_params[:keys][:p256dh],
|
||||
key_auth: subscription_params[:keys][:auth],
|
||||
data: data,
|
||||
user_id: active_session.user_id,
|
||||
access_token_id: active_session.access_token_id
|
||||
)
|
||||
|
||||
active_session.update!(web_push_subscription: push_subscription)
|
||||
|
||||
render json: push_subscription, serializer: REST::WebPushSubscriptionSerializer
|
||||
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
|
||||
end
|
||||
|
||||
def update
|
||||
|
@ -43,6 +19,41 @@ class Api::Web::PushSubscriptionsController < Api::Web::BaseController
|
|||
|
||||
private
|
||||
|
||||
def active_session
|
||||
@active_session ||= current_session
|
||||
end
|
||||
|
||||
def destroy_previous_subscriptions
|
||||
active_session.web_push_subscription.destroy!
|
||||
active_session.update!(web_push_subscription: nil)
|
||||
end
|
||||
|
||||
def prior_subscriptions?
|
||||
active_session.web_push_subscription.present?
|
||||
end
|
||||
|
||||
def subscription_data
|
||||
default_subscription_data.tap do |data|
|
||||
data.deep_merge!(data_params) if params[:data]
|
||||
end
|
||||
end
|
||||
|
||||
def default_subscription_data
|
||||
{
|
||||
policy: 'all',
|
||||
alerts: Notification::TYPES.index_with { alerts_enabled },
|
||||
}
|
||||
end
|
||||
|
||||
def alerts_enabled
|
||||
# Mobile devices do not support regular notifications, so we enable push notifications by default
|
||||
active_session.detection.device.mobile? || active_session.detection.device.tablet?
|
||||
end
|
||||
|
||||
def update_session_with_subscription
|
||||
active_session.update!(web_push_subscription: @push_subscription)
|
||||
end
|
||||
|
||||
def set_push_subscription
|
||||
@push_subscription = ::Web::PushSubscription.find(params[:id])
|
||||
end
|
||||
|
@ -51,6 +62,17 @@ class Api::Web::PushSubscriptionsController < Api::Web::BaseController
|
|||
@subscription_params ||= params.require(:subscription).permit(:endpoint, keys: [:auth, :p256dh])
|
||||
end
|
||||
|
||||
def web_push_subscription_params
|
||||
{
|
||||
access_token_id: active_session.access_token_id,
|
||||
data: subscription_data,
|
||||
endpoint: subscription_params[:endpoint],
|
||||
key_auth: subscription_params[:keys][:auth],
|
||||
key_p256dh: subscription_params[:keys][:p256dh],
|
||||
user_id: active_session.user_id,
|
||||
}
|
||||
end
|
||||
|
||||
def data_params
|
||||
@data_params ||= params.require(:data).permit(:policy, alerts: Notification::TYPES)
|
||||
end
|
||||
|
|
|
@ -271,6 +271,7 @@ class Search extends PureComponent {
|
|||
}
|
||||
|
||||
_calculateOptions (value) {
|
||||
const { signedIn } = this.context.identity;
|
||||
const trimmedValue = value.trim();
|
||||
const options = [];
|
||||
|
||||
|
@ -295,7 +296,7 @@ class Search extends PureComponent {
|
|||
|
||||
const couldBeStatusSearch = searchEnabled;
|
||||
|
||||
if (couldBeStatusSearch) {
|
||||
if (couldBeStatusSearch && signedIn) {
|
||||
options.push({ key: 'status-search', label: <FormattedMessage id='search.quick_action.status_search' defaultMessage='Posts matching {x}' values={{ x: <mark>{trimmedValue}</mark> }} />, action: this.handleStatusSearch });
|
||||
}
|
||||
|
||||
|
@ -372,7 +373,7 @@ class Search extends PureComponent {
|
|||
|
||||
<h4><FormattedMessage id='search_popout.options' defaultMessage='Search options' /></h4>
|
||||
|
||||
{searchEnabled ? (
|
||||
{searchEnabled && signedIn ? (
|
||||
<div className='search__popout__menu'>
|
||||
{this.defaultOptions.map(({ key, label, action }, i) => (
|
||||
<button key={key} onMouseDown={action} className={classNames('search__popout__menu__item', { selected: selectedOption === ((options.length || recent.size) + i) })}>
|
||||
|
@ -382,7 +383,11 @@ class Search extends PureComponent {
|
|||
</div>
|
||||
) : (
|
||||
<div className='search__popout__menu__message'>
|
||||
<FormattedMessage id='search_popout.full_text_search_disabled_message' defaultMessage='Not available on {domain}.' values={{ domain }} />
|
||||
{searchEnabled ? (
|
||||
<FormattedMessage id='search_popout.full_text_search_logged_out_message' defaultMessage='Only available when logged in.' />
|
||||
) : (
|
||||
<FormattedMessage id='search_popout.full_text_search_disabled_message' defaultMessage='Not available on {domain}.' values={{ domain }} />
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
|
|
@ -162,7 +162,7 @@ class Footer extends ImmutablePureComponent {
|
|||
onClose();
|
||||
}
|
||||
|
||||
history.push(`/@${status.getIn(['account', 'acct'])}/${status.get('id')}`);
|
||||
this.props.history.push(`/@${status.getIn(['account', 'acct'])}/${status.get('id')}`);
|
||||
};
|
||||
|
||||
render () {
|
||||
|
|
|
@ -400,8 +400,7 @@ $ui-header-height: 55px;
|
|||
|
||||
> .scrollable {
|
||||
background: $ui-base-color;
|
||||
border-bottom-left-radius: 4px;
|
||||
border-bottom-right-radius: 4px;
|
||||
border-radius: 0 0 4px 4px;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -661,3 +661,18 @@ export function unpinAccountFail(error) {
|
|||
error,
|
||||
};
|
||||
}
|
||||
|
||||
export const updateAccount = ({ displayName, note, avatar, header, discoverable, indexable }) => (dispatch, getState) => {
|
||||
const data = new FormData();
|
||||
|
||||
data.append('display_name', displayName);
|
||||
data.append('note', note);
|
||||
if (avatar) data.append('avatar', avatar);
|
||||
if (header) data.append('header', header);
|
||||
data.append('discoverable', discoverable);
|
||||
data.append('indexable', indexable);
|
||||
|
||||
return api(getState).patch('/api/v1/accounts/update_credentials', data).then(response => {
|
||||
dispatch(importFetchedAccount(response.data));
|
||||
});
|
||||
};
|
||||
|
|
|
@ -20,6 +20,7 @@ export interface ApiAccountJSON {
|
|||
bot: boolean;
|
||||
created_at: string;
|
||||
discoverable: boolean;
|
||||
indexable: boolean;
|
||||
display_name: string;
|
||||
emojis: ApiCustomEmojiJSON[];
|
||||
fields: ApiAccountFieldJSON[];
|
||||
|
|
|
@ -51,7 +51,7 @@ export default class Retention extends PureComponent {
|
|||
let content;
|
||||
|
||||
if (loading) {
|
||||
content = <FormattedMessage id='loading_indicator.label' defaultMessage='Loading...' />;
|
||||
content = <FormattedMessage id='loading_indicator.label' defaultMessage='Loading…' />;
|
||||
} else {
|
||||
content = (
|
||||
<table className='retention__table'>
|
||||
|
|
44
app/javascript/mastodon/components/copy_icon_button.jsx
Normal file
44
app/javascript/mastodon/components/copy_icon_button.jsx
Normal file
|
@ -0,0 +1,44 @@
|
|||
import PropTypes from 'prop-types';
|
||||
import { useState, useCallback } from 'react';
|
||||
|
||||
import { defineMessages } from 'react-intl';
|
||||
|
||||
import classNames from 'classnames';
|
||||
|
||||
import { useDispatch } from 'react-redux';
|
||||
|
||||
import { ReactComponent as ContentCopyIcon } from '@material-symbols/svg-600/outlined/content_copy.svg';
|
||||
|
||||
import { showAlert } from 'mastodon/actions/alerts';
|
||||
import { IconButton } from 'mastodon/components/icon_button';
|
||||
|
||||
const messages = defineMessages({
|
||||
copied: { id: 'copy_icon_button.copied', defaultMessage: 'Copied to clipboard' },
|
||||
});
|
||||
|
||||
export const CopyIconButton = ({ title, value, className }) => {
|
||||
const [copied, setCopied] = useState(false);
|
||||
const dispatch = useDispatch();
|
||||
|
||||
const handleClick = useCallback(() => {
|
||||
navigator.clipboard.writeText(value);
|
||||
setCopied(true);
|
||||
dispatch(showAlert({ message: messages.copied }));
|
||||
setTimeout(() => setCopied(false), 700);
|
||||
}, [setCopied, value, dispatch]);
|
||||
|
||||
return (
|
||||
<IconButton
|
||||
className={classNames(className, copied ? 'copied' : 'copyable')}
|
||||
title={title}
|
||||
onClick={handleClick}
|
||||
iconComponent={ContentCopyIcon}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
CopyIconButton.propTypes = {
|
||||
title: PropTypes.string,
|
||||
value: PropTypes.string,
|
||||
className: PropTypes.string,
|
||||
};
|
|
@ -1,7 +1,23 @@
|
|||
import { useIntl, defineMessages } from 'react-intl';
|
||||
|
||||
import { CircularProgress } from './circular_progress';
|
||||
|
||||
export const LoadingIndicator: React.FC = () => (
|
||||
<div className='loading-indicator'>
|
||||
<CircularProgress size={50} strokeWidth={6} />
|
||||
</div>
|
||||
);
|
||||
const messages = defineMessages({
|
||||
loading: { id: 'loading_indicator.label', defaultMessage: 'Loading…' },
|
||||
});
|
||||
|
||||
export const LoadingIndicator: React.FC = () => {
|
||||
const intl = useIntl();
|
||||
|
||||
return (
|
||||
<div
|
||||
className='loading-indicator'
|
||||
role='progressbar'
|
||||
aria-busy
|
||||
aria-live='polite'
|
||||
aria-label={intl.formatMessage(messages.loading)}
|
||||
>
|
||||
<CircularProgress size={50} strokeWidth={6} />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -14,10 +14,12 @@ import { ReactComponent as LockIcon } from '@material-symbols/svg-600/outlined/l
|
|||
import { ReactComponent as MoreHorizIcon } from '@material-symbols/svg-600/outlined/more_horiz.svg';
|
||||
import { ReactComponent as NotificationsIcon } from '@material-symbols/svg-600/outlined/notifications.svg';
|
||||
import { ReactComponent as NotificationsActiveIcon } from '@material-symbols/svg-600/outlined/notifications_active-fill.svg';
|
||||
import { ReactComponent as ShareIcon } from '@material-symbols/svg-600/outlined/share.svg';
|
||||
|
||||
import { Avatar } from 'mastodon/components/avatar';
|
||||
import { Badge, AutomatedBadge, GroupBadge } from 'mastodon/components/badge';
|
||||
import { Button } from 'mastodon/components/button';
|
||||
import { CopyIconButton } from 'mastodon/components/copy_icon_button';
|
||||
import { FollowersCounter, FollowingCounter, StatusesCounter } from 'mastodon/components/counters';
|
||||
import { Icon } from 'mastodon/components/icon';
|
||||
import { IconButton } from 'mastodon/components/icon_button';
|
||||
|
@ -46,6 +48,7 @@ const messages = defineMessages({
|
|||
mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' },
|
||||
report: { id: 'account.report', defaultMessage: 'Report @{name}' },
|
||||
share: { id: 'account.share', defaultMessage: 'Share @{name}\'s profile' },
|
||||
copy: { id: 'account.copy', defaultMessage: 'Copy link to profile' },
|
||||
media: { id: 'account.media', defaultMessage: 'Media' },
|
||||
blockDomain: { id: 'account.block_domain', defaultMessage: 'Block domain {domain}' },
|
||||
unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' },
|
||||
|
@ -245,11 +248,10 @@ class Header extends ImmutablePureComponent {
|
|||
const isRemote = account.get('acct') !== account.get('username');
|
||||
const remoteDomain = isRemote ? account.get('acct').split('@')[1] : null;
|
||||
|
||||
let info = [];
|
||||
let actionBtn = '';
|
||||
let bellBtn = '';
|
||||
let lockedIcon = '';
|
||||
let menu = [];
|
||||
let actionBtn, bellBtn, lockedIcon, shareBtn;
|
||||
|
||||
let info = [];
|
||||
let menu = [];
|
||||
|
||||
if (me !== account.get('id') && account.getIn(['relationship', 'followed_by'])) {
|
||||
info.push(<span key='followed_by' className='relationship-tag'><FormattedMessage id='account.follows_you' defaultMessage='Follows you' /></span>);
|
||||
|
@ -267,6 +269,12 @@ class Header extends ImmutablePureComponent {
|
|||
bellBtn = <IconButton icon={account.getIn(['relationship', 'notifying']) ? 'bell' : 'bell-o'} iconComponent={account.getIn(['relationship', 'notifying']) ? NotificationsActiveIcon : NotificationsIcon} active={account.getIn(['relationship', 'notifying'])} title={intl.formatMessage(account.getIn(['relationship', 'notifying']) ? messages.disableNotifications : messages.enableNotifications, { name: account.get('username') })} onClick={this.props.onNotifyToggle} />;
|
||||
}
|
||||
|
||||
if ('share' in navigator) {
|
||||
shareBtn = <IconButton className='optional' iconComponent={ShareIcon} title={intl.formatMessage(messages.share, { name: account.get('username') })} onClick={this.handleShare} />;
|
||||
} else {
|
||||
shareBtn = <CopyIconButton className='optional' title={intl.formatMessage(messages.copy)} value={account.get('url')} />;
|
||||
}
|
||||
|
||||
if (me !== account.get('id')) {
|
||||
if (signedIn && !account.get('relationship')) { // Wait until the relationship is loaded
|
||||
actionBtn = '';
|
||||
|
@ -297,10 +305,6 @@ class Header extends ImmutablePureComponent {
|
|||
|
||||
if (isRemote) {
|
||||
menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: account.get('url') });
|
||||
}
|
||||
|
||||
if ('share' in navigator && !account.get('suspended')) {
|
||||
menu.push({ text: intl.formatMessage(messages.share, { name: account.get('username') }), action: this.handleShare });
|
||||
menu.push(null);
|
||||
}
|
||||
|
||||
|
@ -414,6 +418,7 @@ class Header extends ImmutablePureComponent {
|
|||
<>
|
||||
{actionBtn}
|
||||
{bellBtn}
|
||||
{shareBtn}
|
||||
</>
|
||||
)}
|
||||
|
||||
|
|
|
@ -275,6 +275,7 @@ class Search extends PureComponent {
|
|||
}
|
||||
|
||||
_calculateOptions (value) {
|
||||
const { signedIn } = this.context.identity;
|
||||
const trimmedValue = value.trim();
|
||||
const options = [];
|
||||
|
||||
|
@ -299,7 +300,7 @@ class Search extends PureComponent {
|
|||
|
||||
const couldBeStatusSearch = searchEnabled;
|
||||
|
||||
if (couldBeStatusSearch) {
|
||||
if (couldBeStatusSearch && signedIn) {
|
||||
options.push({ key: 'status-search', label: <FormattedMessage id='search.quick_action.status_search' defaultMessage='Posts matching {x}' values={{ x: <mark>{trimmedValue}</mark> }} />, action: this.handleStatusSearch });
|
||||
}
|
||||
|
||||
|
@ -376,7 +377,7 @@ class Search extends PureComponent {
|
|||
|
||||
<h4><FormattedMessage id='search_popout.options' defaultMessage='Search options' /></h4>
|
||||
|
||||
{searchEnabled ? (
|
||||
{searchEnabled && signedIn ? (
|
||||
<div className='search__popout__menu'>
|
||||
{this.defaultOptions.map(({ key, label, action }, i) => (
|
||||
<button key={key} onMouseDown={action} className={classNames('search__popout__menu__item', { selected: selectedOption === ((options.length || recent.size) + i) })}>
|
||||
|
@ -386,7 +387,11 @@ class Search extends PureComponent {
|
|||
</div>
|
||||
) : (
|
||||
<div className='search__popout__menu__message'>
|
||||
<FormattedMessage id='search_popout.full_text_search_disabled_message' defaultMessage='Not available on {domain}.' values={{ domain }} />
|
||||
{searchEnabled ? (
|
||||
<FormattedMessage id='search_popout.full_text_search_logged_out_message' defaultMessage='Only available when logged in.' />
|
||||
) : (
|
||||
<FormattedMessage id='search_popout.full_text_search_disabled_message' defaultMessage='Not available on {domain}.' values={{ domain }} />
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
|
|
@ -1,29 +0,0 @@
|
|||
import PropTypes from 'prop-types';
|
||||
import { Fragment } from 'react';
|
||||
|
||||
import classNames from 'classnames';
|
||||
|
||||
import { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/done.svg';
|
||||
|
||||
import { Icon } from 'mastodon/components/icon';
|
||||
|
||||
const ProgressIndicator = ({ steps, completed }) => (
|
||||
<div className='onboarding__progress-indicator'>
|
||||
{(new Array(steps)).fill().map((_, i) => (
|
||||
<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 && <Icon icon={CheckIcon} />}
|
||||
</div>
|
||||
</Fragment>
|
||||
))}
|
||||
</div>
|
||||
);
|
||||
|
||||
ProgressIndicator.propTypes = {
|
||||
steps: PropTypes.number.isRequired,
|
||||
completed: PropTypes.number,
|
||||
};
|
||||
|
||||
export default ProgressIndicator;
|
|
@ -1,11 +1,13 @@
|
|||
import PropTypes from 'prop-types';
|
||||
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
import { ReactComponent as ArrowRightAltIcon } from '@material-symbols/svg-600/outlined/arrow_right_alt.svg';
|
||||
import { ReactComponent as CheckIcon } from '@material-symbols/svg-600/outlined/done.svg';
|
||||
|
||||
import { Icon } from 'mastodon/components/icon';
|
||||
import { Icon } from 'mastodon/components/icon';
|
||||
|
||||
const Step = ({ label, description, icon, iconComponent, completed, onClick, href }) => {
|
||||
export const Step = ({ label, description, icon, iconComponent, completed, onClick, href, to }) => {
|
||||
const content = (
|
||||
<>
|
||||
<div className='onboarding__steps__item__icon'>
|
||||
|
@ -29,6 +31,12 @@ const Step = ({ label, description, icon, iconComponent, completed, onClick, hre
|
|||
{content}
|
||||
</a>
|
||||
);
|
||||
} else if (to) {
|
||||
return (
|
||||
<Link to={to} className='onboarding__steps__item'>
|
||||
{content}
|
||||
</Link>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
|
@ -45,7 +53,6 @@ Step.propTypes = {
|
|||
iconComponent: PropTypes.func,
|
||||
completed: PropTypes.bool,
|
||||
href: PropTypes.string,
|
||||
to: PropTypes.string,
|
||||
onClick: PropTypes.func,
|
||||
};
|
||||
|
||||
export default Step;
|
||||
|
|
|
@ -1,79 +1,62 @@
|
|||
import PropTypes from 'prop-types';
|
||||
import { PureComponent } from 'react';
|
||||
import { useEffect } from 'react';
|
||||
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import { connect } from 'react-redux';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
import { useDispatch } from 'react-redux';
|
||||
|
||||
|
||||
import { fetchSuggestions } from 'mastodon/actions/suggestions';
|
||||
import { markAsPartial } from 'mastodon/actions/timelines';
|
||||
import Column from 'mastodon/components/column';
|
||||
import { ColumnBackButton } from 'mastodon/components/column_back_button';
|
||||
import { EmptyAccount } from 'mastodon/components/empty_account';
|
||||
import Account from 'mastodon/containers/account_container';
|
||||
import { useAppSelector } from 'mastodon/store';
|
||||
|
||||
const mapStateToProps = state => ({
|
||||
suggestions: state.getIn(['suggestions', 'items']),
|
||||
isLoading: state.getIn(['suggestions', 'isLoading']),
|
||||
});
|
||||
export const Follows = () => {
|
||||
const dispatch = useDispatch();
|
||||
const isLoading = useAppSelector(state => state.getIn(['suggestions', 'isLoading']));
|
||||
const suggestions = useAppSelector(state => state.getIn(['suggestions', 'items']));
|
||||
|
||||
class Follows extends PureComponent {
|
||||
|
||||
static propTypes = {
|
||||
onBack: PropTypes.func,
|
||||
dispatch: PropTypes.func.isRequired,
|
||||
suggestions: ImmutablePropTypes.list,
|
||||
isLoading: PropTypes.bool,
|
||||
};
|
||||
|
||||
componentDidMount () {
|
||||
const { dispatch } = this.props;
|
||||
useEffect(() => {
|
||||
dispatch(fetchSuggestions(true));
|
||||
|
||||
return () => {
|
||||
dispatch(markAsPartial('home'));
|
||||
};
|
||||
}, [dispatch]);
|
||||
|
||||
let loadedContent;
|
||||
|
||||
if (isLoading) {
|
||||
loadedContent = (new Array(8)).fill().map((_, i) => <EmptyAccount key={i} />);
|
||||
} else if (suggestions.isEmpty()) {
|
||||
loadedContent = <div className='follow-recommendations__empty'><FormattedMessage id='onboarding.follows.empty' defaultMessage='Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.' /></div>;
|
||||
} else {
|
||||
loadedContent = suggestions.map(suggestion => <Account id={suggestion.get('account')} key={suggestion.get('account')} withBio />);
|
||||
}
|
||||
|
||||
componentWillUnmount () {
|
||||
const { dispatch } = this.props;
|
||||
dispatch(markAsPartial('home'));
|
||||
}
|
||||
return (
|
||||
<>
|
||||
<ColumnBackButton />
|
||||
|
||||
render () {
|
||||
const { onBack, isLoading, suggestions } = this.props;
|
||||
|
||||
let loadedContent;
|
||||
|
||||
if (isLoading) {
|
||||
loadedContent = (new Array(8)).fill().map((_, i) => <EmptyAccount key={i} />);
|
||||
} else if (suggestions.isEmpty()) {
|
||||
loadedContent = <div className='follow-recommendations__empty'><FormattedMessage id='onboarding.follows.empty' defaultMessage='Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.' /></div>;
|
||||
} else {
|
||||
loadedContent = suggestions.map(suggestion => <Account id={suggestion.get('account')} key={suggestion.get('account')} withBio />);
|
||||
}
|
||||
|
||||
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>
|
||||
|
||||
<div className='follow-recommendations'>
|
||||
{loadedContent}
|
||||
</div>
|
||||
|
||||
<p className='onboarding__lead'><FormattedMessage 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: chunks => <strong>{chunks}</strong> }} /></p>
|
||||
|
||||
<div className='onboarding__footer'>
|
||||
<button className='link-button' onClick={onBack}><FormattedMessage id='onboarding.actions.back' defaultMessage='Take me back' /></button>
|
||||
</div>
|
||||
<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>
|
||||
</Column>
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
<div className='follow-recommendations'>
|
||||
{loadedContent}
|
||||
</div>
|
||||
|
||||
export default connect(mapStateToProps)(Follows);
|
||||
<p className='onboarding__lead'><FormattedMessage 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: chunks => <strong>{chunks}</strong> }} /></p>
|
||||
|
||||
<div className='onboarding__footer'>
|
||||
<Link className='link-button' to='/start'><FormattedMessage id='onboarding.actions.back' defaultMessage='Take me back' /></Link>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -1,152 +1,90 @@
|
|||
import PropTypes from 'prop-types';
|
||||
import { useCallback } from 'react';
|
||||
|
||||
import { FormattedMessage, injectIntl, defineMessages } from 'react-intl';
|
||||
import { FormattedMessage, useIntl, defineMessages } from 'react-intl';
|
||||
|
||||
import { Helmet } from 'react-helmet';
|
||||
import { Link, withRouter } from 'react-router-dom';
|
||||
import { Link, Switch, Route, useHistory } from 'react-router-dom';
|
||||
|
||||
import { useDispatch } from 'react-redux';
|
||||
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import ImmutablePureComponent from 'react-immutable-pure-component';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import { ReactComponent as AccountCircleIcon } from '@material-symbols/svg-600/outlined/account_circle.svg';
|
||||
import { ReactComponent as ArrowRightAltIcon } from '@material-symbols/svg-600/outlined/arrow_right_alt.svg';
|
||||
import { ReactComponent as ContentCopyIcon } from '@material-symbols/svg-600/outlined/content_copy.svg';
|
||||
import { ReactComponent as EditNoteIcon } from '@material-symbols/svg-600/outlined/edit_note.svg';
|
||||
import { ReactComponent as PersonAddIcon } from '@material-symbols/svg-600/outlined/person_add.svg';
|
||||
import { debounce } from 'lodash';
|
||||
|
||||
import illustration from 'mastodon/../images/elephant_ui_conversation.svg';
|
||||
import { fetchAccount } from 'mastodon/actions/accounts';
|
||||
import { focusCompose } from 'mastodon/actions/compose';
|
||||
import { closeOnboarding } from 'mastodon/actions/onboarding';
|
||||
import { Icon } from 'mastodon/components/icon';
|
||||
import Column from 'mastodon/features/ui/components/column';
|
||||
import { me } from 'mastodon/initial_state';
|
||||
import { makeGetAccount } from 'mastodon/selectors';
|
||||
import { useAppSelector } from 'mastodon/store';
|
||||
import { assetHost } from 'mastodon/utils/config';
|
||||
import { WithRouterPropTypes } from 'mastodon/utils/react_router';
|
||||
|
||||
import Step from './components/step';
|
||||
import Follows from './follows';
|
||||
import Share from './share';
|
||||
import { Step } from './components/step';
|
||||
import { Follows } from './follows';
|
||||
import { Profile } from './profile';
|
||||
import { Share } from './share';
|
||||
|
||||
const messages = defineMessages({
|
||||
template: { id: 'onboarding.compose.template', defaultMessage: 'Hello #Mastodon!' },
|
||||
});
|
||||
|
||||
const mapStateToProps = () => {
|
||||
const getAccount = makeGetAccount();
|
||||
const Onboarding = () => {
|
||||
const account = useAppSelector(state => state.getIn(['accounts', me]));
|
||||
const dispatch = useDispatch();
|
||||
const intl = useIntl();
|
||||
const history = useHistory();
|
||||
|
||||
return state => ({
|
||||
account: getAccount(state, me),
|
||||
});
|
||||
const handleComposeClick = useCallback(() => {
|
||||
dispatch(focusCompose(history, intl.formatMessage(messages.template)));
|
||||
}, [dispatch, intl, history]);
|
||||
|
||||
return (
|
||||
<Column>
|
||||
<Switch>
|
||||
<Route path='/start' exact>
|
||||
<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 to='/start/profile' completed={(!account.get('avatar').endsWith('missing.png')) || (account.get('display_name').length > 0 && account.get('note').length > 0)} icon='address-book-o' iconComponent={AccountCircleIcon} 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 to='/start/follows' completed={(account.get('following_count') * 1) >= 1} icon='user-plus' iconComponent={PersonAddIcon} label={<FormattedMessage id='onboarding.steps.follow_people.title' defaultMessage='Find at least {count, plural, one {one person} other {# people}} to follow' values={{ count: 7 }} />} description={<FormattedMessage id='onboarding.steps.follow_people.body' defaultMessage="You curate your own home feed. Let's fill it with interesting people." />} />
|
||||
<Step onClick={handleComposeClick} completed={(account.get('statuses_count') * 1) >= 1} icon='pencil-square-o' iconComponent={EditNoteIcon} 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.' values={{ emoji: <img className='emojione' alt='🐘' src={`${assetHost}/emoji/1f418.svg`} /> }} />} />
|
||||
<Step to='/start/share' icon='copy' iconComponent={ContentCopyIcon} 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="Don't need help getting started?" /></p>
|
||||
|
||||
<div className='onboarding__links'>
|
||||
<Link to='/explore' className='onboarding__link'>
|
||||
<FormattedMessage id='onboarding.actions.go_to_explore' defaultMessage='Take me to trending' />
|
||||
<Icon icon={ArrowRightAltIcon} />
|
||||
</Link>
|
||||
|
||||
<Link to='/home' className='onboarding__link'>
|
||||
<FormattedMessage id='onboarding.actions.go_to_home' defaultMessage='Take me to my home feed' />
|
||||
<Icon icon={ArrowRightAltIcon} />
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</Route>
|
||||
|
||||
<Route path='/start/profile' component={Profile} />
|
||||
<Route path='/start/follows' component={Follows} />
|
||||
<Route path='/start/share' component={Share} />
|
||||
</Switch>
|
||||
|
||||
<Helmet>
|
||||
<meta name='robots' content='noindex' />
|
||||
</Helmet>
|
||||
</Column>
|
||||
);
|
||||
};
|
||||
|
||||
class Onboarding extends ImmutablePureComponent {
|
||||
static propTypes = {
|
||||
dispatch: PropTypes.func.isRequired,
|
||||
account: ImmutablePropTypes.record,
|
||||
...WithRouterPropTypes,
|
||||
};
|
||||
|
||||
state = {
|
||||
step: null,
|
||||
profileClicked: false,
|
||||
shareClicked: false,
|
||||
};
|
||||
|
||||
handleClose = () => {
|
||||
const { dispatch, history } = this.props;
|
||||
|
||||
dispatch(closeOnboarding());
|
||||
history.push('/home');
|
||||
};
|
||||
|
||||
handleProfileClick = () => {
|
||||
this.setState({ profileClicked: true });
|
||||
};
|
||||
|
||||
handleFollowClick = () => {
|
||||
this.setState({ step: 'follows' });
|
||||
};
|
||||
|
||||
handleComposeClick = () => {
|
||||
const { dispatch, intl, history } = this.props;
|
||||
|
||||
dispatch(focusCompose(history, intl.formatMessage(messages.template)));
|
||||
};
|
||||
|
||||
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' iconComponent={AccountCircleIcon} 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' iconComponent={PersonAddIcon} label={<FormattedMessage id='onboarding.steps.follow_people.title' defaultMessage='Find at least {count, plural, one {one person} other {# people}} to follow' values={{ count: 7 }} />} description={<FormattedMessage id='onboarding.steps.follow_people.body' defaultMessage="You curate your own home feed. Let's fill it with interesting people." />} />
|
||||
<Step onClick={this.handleComposeClick} completed={(account.get('statuses_count') * 1) >= 1} icon='pencil-square-o' iconComponent={EditNoteIcon} 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.' values={{ emoji: <img className='emojione' alt='🐘' src={`${assetHost}/emoji/1f418.svg`} /> }} />} />
|
||||
<Step onClick={this.handleShareClick} completed={shareClicked} icon='copy' iconComponent={ContentCopyIcon} 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="Don't need help getting started?" /></p>
|
||||
|
||||
<div className='onboarding__links'>
|
||||
<Link to='/explore' className='onboarding__link'>
|
||||
<FormattedMessage id='onboarding.actions.go_to_explore' defaultMessage='Take me to trending' />
|
||||
<Icon icon={ArrowRightAltIcon} />
|
||||
</Link>
|
||||
|
||||
<Link to='/home' className='onboarding__link'>
|
||||
<FormattedMessage id='onboarding.actions.go_to_home' defaultMessage='Take me to my home feed' />
|
||||
<Icon icon={ArrowRightAltIcon} />
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Helmet>
|
||||
<meta name='robots' content='noindex' />
|
||||
</Helmet>
|
||||
</Column>
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default withRouter(connect(mapStateToProps)(injectIntl(Onboarding)));
|
||||
export default Onboarding;
|
||||
|
|
160
app/javascript/mastodon/features/onboarding/profile.jsx
Normal file
160
app/javascript/mastodon/features/onboarding/profile.jsx
Normal file
|
@ -0,0 +1,160 @@
|
|||
import { useState, useMemo, useCallback, createRef } from 'react';
|
||||
|
||||
import { useIntl, defineMessages, FormattedMessage } from 'react-intl';
|
||||
|
||||
import classNames from 'classnames';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
|
||||
|
||||
import { useDispatch } from 'react-redux';
|
||||
|
||||
import { ReactComponent as AddPhotoAlternateIcon } from '@material-symbols/svg-600/outlined/add_photo_alternate.svg';
|
||||
import { ReactComponent as EditIcon } from '@material-symbols/svg-600/outlined/edit.svg';
|
||||
import Toggle from 'react-toggle';
|
||||
|
||||
import { updateAccount } from 'mastodon/actions/accounts';
|
||||
import { Button } from 'mastodon/components/button';
|
||||
import { ColumnBackButton } from 'mastodon/components/column_back_button';
|
||||
import { Icon } from 'mastodon/components/icon';
|
||||
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
|
||||
import { me } from 'mastodon/initial_state';
|
||||
import { useAppSelector } from 'mastodon/store';
|
||||
import { unescapeHTML } from 'mastodon/utils/html';
|
||||
|
||||
const messages = defineMessages({
|
||||
uploadHeader: { id: 'onboarding.profile.upload_header', defaultMessage: 'Upload profile header' },
|
||||
uploadAvatar: { id: 'onboarding.profile.upload_avatar', defaultMessage: 'Upload profile picture' },
|
||||
});
|
||||
|
||||
export const Profile = () => {
|
||||
const account = useAppSelector(state => state.getIn(['accounts', me]));
|
||||
const [displayName, setDisplayName] = useState(account.get('display_name'));
|
||||
const [note, setNote] = useState(unescapeHTML(account.get('note')));
|
||||
const [avatar, setAvatar] = useState(null);
|
||||
const [header, setHeader] = useState(null);
|
||||
const [discoverable, setDiscoverable] = useState(account.get('discoverable'));
|
||||
const [isSaving, setIsSaving] = useState(false);
|
||||
const [errors, setErrors] = useState();
|
||||
const avatarFileRef = createRef();
|
||||
const headerFileRef = createRef();
|
||||
const dispatch = useDispatch();
|
||||
const intl = useIntl();
|
||||
const history = useHistory();
|
||||
|
||||
const handleDisplayNameChange = useCallback(e => {
|
||||
setDisplayName(e.target.value);
|
||||
}, [setDisplayName]);
|
||||
|
||||
const handleNoteChange = useCallback(e => {
|
||||
setNote(e.target.value);
|
||||
}, [setNote]);
|
||||
|
||||
const handleDiscoverableChange = useCallback(e => {
|
||||
setDiscoverable(e.target.checked);
|
||||
}, [setDiscoverable]);
|
||||
|
||||
const handleAvatarChange = useCallback(e => {
|
||||
setAvatar(e.target?.files?.[0]);
|
||||
}, [setAvatar]);
|
||||
|
||||
const handleHeaderChange = useCallback(e => {
|
||||
setHeader(e.target?.files?.[0]);
|
||||
}, [setHeader]);
|
||||
|
||||
const avatarPreview = useMemo(() => avatar ? URL.createObjectURL(avatar) : account.get('avatar'), [avatar, account]);
|
||||
const headerPreview = useMemo(() => header ? URL.createObjectURL(header) : account.get('header'), [header, account]);
|
||||
|
||||
const handleSubmit = useCallback(() => {
|
||||
setIsSaving(true);
|
||||
|
||||
dispatch(updateAccount({
|
||||
displayName,
|
||||
note,
|
||||
avatar,
|
||||
header,
|
||||
discoverable,
|
||||
indexable: discoverable,
|
||||
})).then(() => history.push('/start/follows')).catch(err => {
|
||||
setIsSaving(false);
|
||||
setErrors(err.response.data.details);
|
||||
});
|
||||
}, [dispatch, displayName, note, avatar, header, discoverable, history]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<ColumnBackButton />
|
||||
|
||||
<div className='scrollable privacy-policy'>
|
||||
<div className='column-title'>
|
||||
<h3><FormattedMessage id='onboarding.profile.title' defaultMessage='Profile setup' /></h3>
|
||||
<p><FormattedMessage id='onboarding.profile.lead' defaultMessage='You can always complete this later in the settings, where even more customization options are available.' /></p>
|
||||
</div>
|
||||
|
||||
<div className='simple_form'>
|
||||
<div className='onboarding__profile'>
|
||||
<label className={classNames('app-form__header-input', { selected: !!headerPreview, invalid: !!errors?.header })} title={intl.formatMessage(messages.uploadHeader)}>
|
||||
<input
|
||||
type='file'
|
||||
hidden
|
||||
ref={headerFileRef}
|
||||
accept='image/*'
|
||||
onChange={handleHeaderChange}
|
||||
/>
|
||||
|
||||
{headerPreview && <img src={headerPreview} alt='' />}
|
||||
|
||||
<Icon icon={headerPreview ? EditIcon : AddPhotoAlternateIcon} />
|
||||
</label>
|
||||
|
||||
<label className={classNames('app-form__avatar-input', { selected: !!avatarPreview, invalid: !!errors?.avatar })} title={intl.formatMessage(messages.uploadAvatar)}>
|
||||
<input
|
||||
type='file'
|
||||
hidden
|
||||
ref={avatarFileRef}
|
||||
accept='image/*'
|
||||
onChange={handleAvatarChange}
|
||||
/>
|
||||
|
||||
{avatarPreview && <img src={avatarPreview} alt='' />}
|
||||
|
||||
<Icon icon={avatarPreview ? EditIcon : AddPhotoAlternateIcon} />
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div className={classNames('input with_block_label', { field_with_errors: !!errors?.display_name })}>
|
||||
<label htmlFor='display_name'><FormattedMessage id='onboarding.profile.display_name' defaultMessage='Display name' /></label>
|
||||
<span className='hint'><FormattedMessage id='onboarding.profile.display_name_hint' defaultMessage='Your full name or your fun name…' /></span>
|
||||
<div className='label_input'>
|
||||
<input id='display_name' type='text' value={displayName} onChange={handleDisplayNameChange} maxLength={30} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className={classNames('input with_block_label', { field_with_errors: !!errors?.note })}>
|
||||
<label htmlFor='note'><FormattedMessage id='onboarding.profile.note' defaultMessage='Bio' /></label>
|
||||
<span className='hint'><FormattedMessage id='onboarding.profile.note_hint' defaultMessage='You can @mention other people or #hashtags…' /></span>
|
||||
<div className='label_input'>
|
||||
<textarea id='note' value={note} onChange={handleNoteChange} maxLength={500} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label className='app-form__toggle'>
|
||||
<div className='app-form__toggle__label'>
|
||||
<strong><FormattedMessage id='onboarding.profile.discoverable' defaultMessage='Make my profile discoverable' /></strong> <span className='recommended'><FormattedMessage id='recommended' defaultMessage='Recommended' /></span>
|
||||
<span className='hint'><FormattedMessage id='onboarding.profile.discoverable_hint' defaultMessage='When you opt in to discoverability on Mastodon, your posts may appear in search results and trending, and your profile may be suggested to people with similar interests to you.' /></span>
|
||||
</div>
|
||||
|
||||
<div className='app-form__toggle__toggle'>
|
||||
<div>
|
||||
<Toggle checked={discoverable} onChange={handleDiscoverableChange} />
|
||||
</div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div className='onboarding__footer'>
|
||||
<Button block onClick={handleSubmit} disabled={isSaving}>{isSaving ? <LoadingIndicator /> : <FormattedMessage id='onboarding.profile.save_and_continue' defaultMessage='Save and continue' />}</Button>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
|
@ -1,31 +1,25 @@
|
|||
import PropTypes from 'prop-types';
|
||||
import { PureComponent } from 'react';
|
||||
|
||||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
||||
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
||||
|
||||
import classNames from 'classnames';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||
import { connect } from 'react-redux';
|
||||
|
||||
import { ReactComponent as ArrowRightAltIcon } from '@material-symbols/svg-600/outlined/arrow_right_alt.svg';
|
||||
import { ReactComponent as ContentCopyIcon } from '@material-symbols/svg-600/outlined/content_copy.svg';
|
||||
import SwipeableViews from 'react-swipeable-views';
|
||||
|
||||
import Column from 'mastodon/components/column';
|
||||
import { ColumnBackButton } from 'mastodon/components/column_back_button';
|
||||
import { Icon } from 'mastodon/components/icon';
|
||||
import { me, domain } from 'mastodon/initial_state';
|
||||
import { useAppSelector } from 'mastodon/store';
|
||||
|
||||
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 PureComponent {
|
||||
|
||||
static propTypes = {
|
||||
|
@ -141,59 +135,47 @@ class TipCarousel extends PureComponent {
|
|||
|
||||
}
|
||||
|
||||
class Share extends PureComponent {
|
||||
export const Share = () => {
|
||||
const account = useAppSelector(state => state.getIn(['accounts', me]));
|
||||
const intl = useIntl();
|
||||
const url = (new URL(`/@${account.get('username')}`, document.baseURI)).href;
|
||||
|
||||
static propTypes = {
|
||||
onBack: PropTypes.func,
|
||||
account: ImmutablePropTypes.record,
|
||||
intl: PropTypes.object,
|
||||
};
|
||||
return (
|
||||
<>
|
||||
<ColumnBackButton />
|
||||
|
||||
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 })} />
|
||||
|
||||
<TipCarousel>
|
||||
<div><p className='onboarding__lead'><FormattedMessage id='onboarding.tips.verification' defaultMessage='<strong>Did you know?</strong> You can verify your account by putting a link to your Mastodon profile on your own website and adding the website to your profile. No fees or documents necessary!' values={{ strong: chunks => <strong>{chunks}</strong> }} /></p></div>
|
||||
<div><p className='onboarding__lead'><FormattedMessage id='onboarding.tips.migration' defaultMessage='<strong>Did you know?</strong> If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!' values={{ domain, strong: chunks => <strong>{chunks}</strong> }} /></p></div>
|
||||
<div><p className='onboarding__lead'><FormattedMessage id='onboarding.tips.2fa' defaultMessage='<strong>Did you know?</strong> You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!' values={{ strong: chunks => <strong>{chunks}</strong> }} /></p></div>
|
||||
</TipCarousel>
|
||||
|
||||
<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'>
|
||||
<FormattedMessage id='onboarding.actions.go_to_home' defaultMessage='Take me to my home feed' />
|
||||
<Icon icon={ArrowRightAltIcon} />
|
||||
</Link>
|
||||
|
||||
<Link to='/explore' className='onboarding__link'>
|
||||
<FormattedMessage id='onboarding.actions.go_to_explore' defaultMessage='Take me to trending' />
|
||||
<Icon icon={ArrowRightAltIcon} />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<div className='onboarding__footer'>
|
||||
<button className='link-button' onClick={onBack}><FormattedMessage id='onboarding.action.back' defaultMessage='Take me back' /></button>
|
||||
</div>
|
||||
<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>
|
||||
</Column>
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
<CopyPasteText value={intl.formatMessage(messages.shareableMessage, { username: `@${account.get('username')}@${domain}`, url })} />
|
||||
|
||||
export default connect(mapStateToProps)(injectIntl(Share));
|
||||
<TipCarousel>
|
||||
<div><p className='onboarding__lead'><FormattedMessage id='onboarding.tips.verification' defaultMessage='<strong>Did you know?</strong> You can verify your account by putting a link to your Mastodon profile on your own website and adding the website to your profile. No fees or documents necessary!' values={{ strong: chunks => <strong>{chunks}</strong> }} /></p></div>
|
||||
<div><p className='onboarding__lead'><FormattedMessage id='onboarding.tips.migration' defaultMessage='<strong>Did you know?</strong> If you feel like {domain} is not a great server choice for you in the future, you can move to another Mastodon server without losing your followers. You can even host your own server!' values={{ domain, strong: chunks => <strong>{chunks}</strong> }} /></p></div>
|
||||
<div><p className='onboarding__lead'><FormattedMessage id='onboarding.tips.2fa' defaultMessage='<strong>Did you know?</strong> You can secure your account by setting up two-factor authentication in your account settings. It works with any TOTP app of your choice, no phone number necessary!' values={{ strong: chunks => <strong>{chunks}</strong> }} /></p></div>
|
||||
</TipCarousel>
|
||||
|
||||
<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'>
|
||||
<FormattedMessage id='onboarding.actions.go_to_home' defaultMessage='Take me to my home feed' />
|
||||
<Icon icon={ArrowRightAltIcon} />
|
||||
</Link>
|
||||
|
||||
<Link to='/explore' className='onboarding__link'>
|
||||
<FormattedMessage id='onboarding.actions.go_to_explore' defaultMessage='Take me to trending' />
|
||||
<Icon icon={ArrowRightAltIcon} />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
<div className='onboarding__footer'>
|
||||
<Link className='link-button' to='/start'><FormattedMessage id='onboarding.action.back' defaultMessage='Take me back' /></Link>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -166,7 +166,7 @@ class Footer extends ImmutablePureComponent {
|
|||
onClose();
|
||||
}
|
||||
|
||||
history.push(`/@${status.getIn(['account', 'acct'])}/${status.get('id')}`);
|
||||
this.props.history.push(`/@${status.getIn(['account', 'acct'])}/${status.get('id')}`);
|
||||
};
|
||||
|
||||
render () {
|
||||
|
|
|
@ -210,7 +210,7 @@ class SwitchingColumnsArea extends PureComponent {
|
|||
<WrappedRoute path='/bookmarks' component={BookmarkedStatuses} content={children} />
|
||||
<WrappedRoute path='/pinned' component={PinnedStatuses} content={children} />
|
||||
|
||||
<WrappedRoute path='/start' exact component={Onboarding} content={children} />
|
||||
<WrappedRoute path='/start' 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} />
|
||||
|
|
|
@ -250,6 +250,9 @@
|
|||
"notifications.column_settings.unread_notifications.highlight": "Lig ongelese kennisgewings uit",
|
||||
"notifications.filter.boosts": "Aangestuurde plasings",
|
||||
"notifications.group": "{count} kennisgewings",
|
||||
"notifications.permission_denied_alert": "Lessenaarkennisgewings kan nie geaktiveer word nie omdat 'n webblaaier toegewing voorheen geweier was",
|
||||
"notifications_permission_banner.enable": "Aktiveer lessenaarkennissgewings",
|
||||
"notifications_permission_banner.how_to_control": "Om kennisgewings te ontvang wanner Mastodon nie oop is nie, aktiveer lessenaarkennisgewings. Jy kan beheer watter spesifieke tipe interaksies lessenaarkennisgewings genereer deur die {icon} knoppie hier bo sodra hulle geaktiveer is.",
|
||||
"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!",
|
||||
|
|
|
@ -334,7 +334,6 @@
|
|||
"lists.search": "Buscar entre la chent a la quala sigues",
|
||||
"lists.subheading": "Las tuyas listas",
|
||||
"load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}",
|
||||
"loading_indicator.label": "Cargando...",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Amaga la imachen} other {Amaga las imáchens}}",
|
||||
"moved_to_account_banner.text": "La tuya cuenta {disabledAccount} ye actualment deshabilitada perque t'has mudau a {movedToAccount}.",
|
||||
"mute_modal.duration": "Duración",
|
||||
|
|
|
@ -389,7 +389,6 @@
|
|||
"lists.search": "إبحث في قائمة الحسابات التي تُتابِعها",
|
||||
"lists.subheading": "قوائمك",
|
||||
"load_pending": "{count, plural, one {# عنصر جديد} other {# عناصر جديدة}}",
|
||||
"loading_indicator.label": "جارٍ التحميل…",
|
||||
"media_gallery.toggle_visible": "{number, plural, zero {} one {اخف الصورة} two {اخف الصورتين} few {اخف الصور} many {اخف الصور} other {اخف الصور}}",
|
||||
"moved_to_account_banner.text": "حسابك {disabledAccount} معطل حاليًا لأنك انتقلت إلى {movedToAccount}.",
|
||||
"mute_modal.duration": "المدة",
|
||||
|
|
|
@ -13,27 +13,38 @@
|
|||
"about.rules": "Normes del sirvidor",
|
||||
"account.account_note_header": "Nota",
|
||||
"account.add_or_remove_from_list": "Amestar o quitar de les llistes",
|
||||
"account.badges.bot": "Automatizáu",
|
||||
"account.badges.group": "Grupu",
|
||||
"account.block": "Bloquiar a @{name}",
|
||||
"account.block_domain": "Bloquiar el dominiu {domain}",
|
||||
"account.block_short": "Bloquiar",
|
||||
"account.blocked": "Perfil bloquiáu",
|
||||
"account.browse_more_on_origin_server": "Restolar más nel perfil orixinal",
|
||||
"account.cancel_follow_request": "Atayar siguimientu",
|
||||
"account.copy": "Copiar I'enllaz al perfil",
|
||||
"account.direct": "Mentar a @{name} per privao",
|
||||
"account.disable_notifications": "Dexar d'avisame cuando @{name} espublice artículos",
|
||||
"account.domain_blocked": "Dominiu bloquiáu",
|
||||
"account.edit_profile": "Editar el perfil",
|
||||
"account.enable_notifications": "Avisame cuando @{name} espublice artículos",
|
||||
"account.endorse": "Destacar nel perfil",
|
||||
"account.featured_tags.last_status_at": "Últimu estáu en {date}",
|
||||
"account.featured_tags.last_status_never": "Sin estaos",
|
||||
"account.featured_tags.title": "Etiquetes destacaes de: {name}",
|
||||
"account.follow": "Siguir",
|
||||
"account.followers": "Siguidores",
|
||||
"account.followers.empty": "Naide sigue a esti perfil.",
|
||||
"account.followers_counter": "{count, plural, one {{counter} Siguíu} other {{counter} Siguíos}}",
|
||||
"account.following": "Siguiendo",
|
||||
"account.following_counter": "{count, plural,one {Sigue a {counter}} other {Sigue a {counter}}}",
|
||||
"account.follows.empty": "Esti perfil nun sigue a naide.",
|
||||
"account.follows_you": "Síguete",
|
||||
"account.go_to_profile": "Dir al perfil",
|
||||
"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": "Camudar llingües suscrites",
|
||||
"account.link_verified_on": "La propiedá d'esti enllaz foi comprobada'l {date}",
|
||||
"account.media": "Multimedia",
|
||||
"account.mention": "Mentar a @{name}",
|
||||
"account.moved_to": "{name} indicó qu'agora la so cuenta nueva ye:",
|
||||
|
@ -272,7 +283,6 @@
|
|||
"lists.search": "Buscar ente los perfiles que sigues",
|
||||
"lists.subheading": "Les tos llistes",
|
||||
"load_pending": "{count, plural, one {# elementu nuevu} other {# elementos nuevos}}",
|
||||
"loading_indicator.label": "Cargando…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Anubrir la imaxe} other {Anubrir les imáxenes}}",
|
||||
"mute_modal.duration": "Duración",
|
||||
"mute_modal.hide_notifications": "¿Quies anubrir los avisos d'esti perfil?",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Заблакіраваны",
|
||||
"account.browse_more_on_origin_server": "Глядзіце больш у арыгінальным профілі",
|
||||
"account.cancel_follow_request": "Скасаваць запыт на падпіску",
|
||||
"account.copy": "Скапіраваць спасылку на профіль",
|
||||
"account.direct": "Згадаць асабіста @{name}",
|
||||
"account.disable_notifications": "Не паведамляць мне пра публікацыі @{name}",
|
||||
"account.domain_blocked": "Дамен заблакаваны",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Адзначыць прачытаным",
|
||||
"conversation.open": "Прагледзець размову",
|
||||
"conversation.with": "З {names}",
|
||||
"copy_icon_button.copied": "Скапіявана ў буфер абмену",
|
||||
"copypaste.copied": "Скапіравана",
|
||||
"copypaste.copy_to_clipboard": "Капіраваць у буфер абмену",
|
||||
"directory.federated": "З вядомага федэсвету",
|
||||
|
@ -390,7 +392,7 @@
|
|||
"lists.search": "Шукайце сярод людзей, на якіх Вы падпісаны",
|
||||
"lists.subheading": "Вашыя спісы",
|
||||
"load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}",
|
||||
"loading_indicator.label": "Загрузка...",
|
||||
"loading_indicator.label": "Загрузка…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Схаваць відарыс} other {Схаваць відарысы}}",
|
||||
"moved_to_account_banner.text": "Ваш уліковы запіс {disabledAccount} зараз адключаны таму што вы перанесены на {movedToAccount}.",
|
||||
"mute_modal.duration": "Працягласць",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "На жаль, зараз немагчыма паказаць вынікі. Вы можаце паспрабаваць выкарыстоўваць пошук і праглядзець старонку агляду, каб знайсці людзей, на якіх можна падпісацца, або паўтарыце спробу пазней.",
|
||||
"onboarding.follows.lead": "Вы самі ствараеце свой хатні канал. Чым больш людзей вы падпішаце, тым больш актыўна і цікавей гэта будзе. Гэтыя профілі могуць стаць добрай адпраўной кропкай — вы заўсёды можаце адмяніць падпіску на іх пазней!",
|
||||
"onboarding.follows.title": "Папулярна на Mastodon",
|
||||
"onboarding.profile.discoverable": "Зрабіць мой профіль бачным",
|
||||
"onboarding.profile.discoverable_hint": "Калі вы звяртаецеся да адкрытасці на Mastodon, вашы паведамленні могуць з'яўляцца ў выніках пошуку і тэндэнцый, а ваш профіль можа быць прапанаваны людзям з такімі ж інтарэсамі.",
|
||||
"onboarding.profile.display_name": "Бачнае імя",
|
||||
"onboarding.profile.display_name_hint": "Ваша поўнае імя або ваш псеўданім…",
|
||||
"onboarding.profile.lead": "Вы заўсёды можаце выканаць гэта пазней у Наладах, дзе даступна яшчэ больш параметраў.",
|
||||
"onboarding.profile.note": "Біяграфія",
|
||||
"onboarding.profile.note_hint": "Вы можаце @згадаць іншых людзей або выкарыстоўваць #хэштэгі…",
|
||||
"onboarding.profile.save_and_continue": "Захаваць і працягнуць",
|
||||
"onboarding.profile.title": "Налады профілю",
|
||||
"onboarding.profile.upload_avatar": "Загрузіць фота профілю",
|
||||
"onboarding.profile.upload_header": "Загрузіць шапку профілю",
|
||||
"onboarding.share.lead": "Дайце людзям ведаць, як яны могуць знайсці вас на Mastodon!",
|
||||
"onboarding.share.message": "Я {username} на #Mastodon! Сачыце за мной на {url}",
|
||||
"onboarding.share.next_steps": "Магчымыя наступныя крокі:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Не ў стужках",
|
||||
"privacy_policy.last_updated": "Адноўлена {date}",
|
||||
"privacy_policy.title": "Палітыка канфідэнцыйнасці",
|
||||
"recommended": "Рэкамендуем",
|
||||
"refresh": "Абнавiць",
|
||||
"regeneration_indicator.label": "Загрузка…",
|
||||
"regeneration_indicator.sublabel": "Пачакайце, рыхтуем вашу стужку!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Супадзенне паведамленняў {x}",
|
||||
"search.search_or_paste": "Пошук",
|
||||
"search_popout.full_text_search_disabled_message": "Недаступна на {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Даступна толькі пры ўваходзе ў сістэму.",
|
||||
"search_popout.language_code": "ISO код мовы",
|
||||
"search_popout.options": "Параметры пошуку",
|
||||
"search_popout.quick_actions": "Хуткія дзеянні",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Блокирани",
|
||||
"account.browse_more_on_origin_server": "Разглеждане на още в оригиналния профил",
|
||||
"account.cancel_follow_request": "Оттегляне на заявката за последване",
|
||||
"account.copy": "Копиране на връзка към профила",
|
||||
"account.direct": "Частно споменаване на @{name}",
|
||||
"account.disable_notifications": "Сприране на известия при публикуване от @{name}",
|
||||
"account.domain_blocked": "Блокиран домейн",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Маркиране като прочетено",
|
||||
"conversation.open": "Преглед на разговора",
|
||||
"conversation.with": "С {names}",
|
||||
"copy_icon_button.copied": "Копиранo в буферната памет",
|
||||
"copypaste.copied": "Копирано",
|
||||
"copypaste.copy_to_clipboard": "Копиране в буферната памет",
|
||||
"directory.federated": "От позната федивселена",
|
||||
|
@ -222,6 +224,7 @@
|
|||
"emoji_button.search_results": "Резултати от търсене",
|
||||
"emoji_button.symbols": "Символи",
|
||||
"emoji_button.travel": "Пътуване и места",
|
||||
"empty_column.account_hides_collections": "Този потребител е избрал да не прави това сведение достъпно",
|
||||
"empty_column.account_suspended": "Спрян акаунт",
|
||||
"empty_column.account_timeline": "Тук няма публикации!",
|
||||
"empty_column.account_unavailable": "Профилът не е наличен",
|
||||
|
@ -389,7 +392,7 @@
|
|||
"lists.search": "Търсене измежду последваните",
|
||||
"lists.subheading": "Вашите списъци",
|
||||
"load_pending": "{count, plural, one {# нов елемент} other {# нови елемента}}",
|
||||
"loading_indicator.label": "Зареждане...",
|
||||
"loading_indicator.label": "Зареждане…",
|
||||
"media_gallery.toggle_visible": "Скриване на {number, plural, one {изображение} other {изображения}}",
|
||||
"moved_to_account_banner.text": "Вашият акаунт {disabledAccount} сега е изключен, защото се преместихте в {movedToAccount}.",
|
||||
"mute_modal.duration": "Времетраене",
|
||||
|
@ -478,6 +481,17 @@
|
|||
"onboarding.follows.empty": "За съжаление, в момента не могат да се показват резултати. Може да опитате да употребявате търсене или да прегледате страницата за изследване, за да намерите страница за последване, или да опитате пак по-късно.",
|
||||
"onboarding.follows.lead": "Може да бъдете куратор на началния си инфоканал. Последвайки повече хора, по-деен и по-интересен ще става. Тези профили може да са добра начална точка, от която винаги по-късно да спрете да следвате!",
|
||||
"onboarding.follows.title": "Популярно в Mastodon",
|
||||
"onboarding.profile.discoverable": "Правене на моя профил откриваем",
|
||||
"onboarding.profile.discoverable_hint": "Включвайки откриваемостта в Mastodon, вашите публикации може да се появят при резултатите от търсене и изгряващи неща, и вашия профил може да бъде предложен на хора с подобни интереси като вашите.",
|
||||
"onboarding.profile.display_name": "Името на показ",
|
||||
"onboarding.profile.display_name_hint": "Вашето пълно име или псевдоним…",
|
||||
"onboarding.profile.lead": "Винаги може да завършите това по-късно в настройките, където дори има повече възможности за настройване.",
|
||||
"onboarding.profile.note": "Биогр.",
|
||||
"onboarding.profile.note_hint": "Може да @споменавате други хора или #хаштагове…",
|
||||
"onboarding.profile.save_and_continue": "Запазване и продължаване",
|
||||
"onboarding.profile.title": "Настройване на профила",
|
||||
"onboarding.profile.upload_avatar": "Качване на снимка на профила",
|
||||
"onboarding.profile.upload_header": "Качване на заглавка на профила",
|
||||
"onboarding.share.lead": "Позволете на хората да знаят, че могат да ви намерят в Mastodon!",
|
||||
"onboarding.share.message": "Аз съм {username} в #Mastodon! Елате да ме последвате при {url}",
|
||||
"onboarding.share.next_steps": "Възможни следващи стъпки:",
|
||||
|
@ -521,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Несписъчно",
|
||||
"privacy_policy.last_updated": "Последно осъвременяване на {date}",
|
||||
"privacy_policy.title": "Политика за поверителност",
|
||||
"recommended": "Препоръчано",
|
||||
"refresh": "Опресняване",
|
||||
"regeneration_indicator.label": "Зареждане…",
|
||||
"regeneration_indicator.sublabel": "Подготовка на началния ви инфоканал!",
|
||||
|
@ -591,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Съвпадение на публикации {x}",
|
||||
"search.search_or_paste": "Търсене или поставяне на URL адрес",
|
||||
"search_popout.full_text_search_disabled_message": "Не е достъпно на {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Достъпно само при влизане в системата.",
|
||||
"search_popout.language_code": "Код на езика по ISO",
|
||||
"search_popout.options": "Възможности при търсене",
|
||||
"search_popout.quick_actions": "Бързи действия",
|
||||
|
|
|
@ -314,7 +314,6 @@
|
|||
"lists.search": "যাদের অনুসরণ করেন তাদের ভেতরে খুঁজুন",
|
||||
"lists.subheading": "আপনার তালিকা",
|
||||
"load_pending": "{count, plural, one {# নতুন জিনিস} other {# নতুন জিনিস}}",
|
||||
"loading_indicator.label": "আসছে...",
|
||||
"media_gallery.toggle_visible": "দৃশ্যতার অবস্থা বদলান",
|
||||
"mute_modal.duration": "সময়কাল",
|
||||
"mute_modal.hide_notifications": "এই ব্যবহারকারীর প্রজ্ঞাপন বন্ধ করবেন ?",
|
||||
|
|
|
@ -329,7 +329,6 @@
|
|||
"lists.search": "Klask e-touez tud heuliet ganeoc'h",
|
||||
"lists.subheading": "Ho listennoù",
|
||||
"load_pending": "{count, plural, one {# dra nevez} other {# dra nevez}}",
|
||||
"loading_indicator.label": "O kargañ...",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Kuzhat ar skeudenn} other {Kuzhat ar skeudenn}}",
|
||||
"mute_modal.duration": "Padelezh",
|
||||
"mute_modal.hide_notifications": "Kuzhat kemenadennoù eus an implijer-se ?",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Blocat",
|
||||
"account.browse_more_on_origin_server": "Explora'n més al perfil original",
|
||||
"account.cancel_follow_request": "Cancel·la el seguiment",
|
||||
"account.copy": "Copia l'enllaç al perfil",
|
||||
"account.direct": "Menciona privadament @{name}",
|
||||
"account.disable_notifications": "Deixa de notificar-me els tuts de @{name}",
|
||||
"account.domain_blocked": "Domini blocat",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Marca com a llegida",
|
||||
"conversation.open": "Mostra la conversa",
|
||||
"conversation.with": "Amb {names}",
|
||||
"copy_icon_button.copied": "Copiat al porta-retalls",
|
||||
"copypaste.copied": "Copiat",
|
||||
"copypaste.copy_to_clipboard": "Copia al porta-retalls",
|
||||
"directory.federated": "Del fedivers conegut",
|
||||
|
@ -222,7 +224,7 @@
|
|||
"emoji_button.search_results": "Resultats de la cerca",
|
||||
"emoji_button.symbols": "Símbols",
|
||||
"emoji_button.travel": "Viatges i llocs",
|
||||
"empty_column.account_hides_collections": "Aquest usuari ha elegit no mostrar aquesta informació",
|
||||
"empty_column.account_hides_collections": "Aquest usuari ha decidit no mostrar aquesta informació",
|
||||
"empty_column.account_suspended": "Compte suspès",
|
||||
"empty_column.account_timeline": "No hi ha tuts aquí!",
|
||||
"empty_column.account_unavailable": "Perfil no disponible",
|
||||
|
@ -390,7 +392,7 @@
|
|||
"lists.search": "Cerca entre les persones que segueixes",
|
||||
"lists.subheading": "Les teves llistes",
|
||||
"load_pending": "{count, plural, one {# element nou} other {# elements nous}}",
|
||||
"loading_indicator.label": "Es carrega...",
|
||||
"loading_indicator.label": "Es carrega…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Amaga la imatge} other {Amaga les imatges}}",
|
||||
"moved_to_account_banner.text": "El teu compte {disabledAccount} està desactivat perquè l'has mogut a {movedToAccount}.",
|
||||
"mute_modal.duration": "Durada",
|
||||
|
@ -479,6 +481,16 @@
|
|||
"onboarding.follows.empty": "Malauradament, cap resultat pot ser mostrat ara mateix. Pots provar de fer servir la cerca o visitar la pàgina Explora per a trobar gent a qui seguir o provar-ho de nou més tard.",
|
||||
"onboarding.follows.lead": "La teva línia de temps inici només està a les teves mans. Com més gent segueixis, més activa i interessant serà. Aquests perfils poden ser un bon punt d'inici—sempre pots acabar deixant de seguir-los!:",
|
||||
"onboarding.follows.title": "Personalitza la pantalla d'inci",
|
||||
"onboarding.profile.discoverable": "Fes el meu perfil descobrible",
|
||||
"onboarding.profile.display_name": "Nom que es mostrarà",
|
||||
"onboarding.profile.display_name_hint": "El teu nom complet o el teu malnom…",
|
||||
"onboarding.profile.lead": "Sempre ho pots completar més endavant a la configuració, on hi ha encara més opcions disponibles.",
|
||||
"onboarding.profile.note": "Biografia",
|
||||
"onboarding.profile.note_hint": "Pots @mencionar altra gent o #etiquetes…",
|
||||
"onboarding.profile.save_and_continue": "Desa i continua",
|
||||
"onboarding.profile.title": "Configuració del perfil",
|
||||
"onboarding.profile.upload_avatar": "Importa una foto de perfil",
|
||||
"onboarding.profile.upload_header": "Importa una capçalera de perfil",
|
||||
"onboarding.share.lead": "Permet que la gent sàpiga com trobar-te a Mastodon!",
|
||||
"onboarding.share.message": "Sóc {username} a #Mastodon! Vine i segueix-me a {url}",
|
||||
"onboarding.share.next_steps": "Possibles passes següents:",
|
||||
|
@ -522,6 +534,7 @@
|
|||
"privacy.unlisted.short": "No llistada",
|
||||
"privacy_policy.last_updated": "Darrera actualització {date}",
|
||||
"privacy_policy.title": "Política de Privacitat",
|
||||
"recommended": "Recomanat",
|
||||
"refresh": "Actualitza",
|
||||
"regeneration_indicator.label": "Es carrega…",
|
||||
"regeneration_indicator.sublabel": "Es prepara la teva línia de temps d'Inici!",
|
||||
|
@ -592,6 +605,7 @@
|
|||
"search.quick_action.status_search": "Tuts coincidint amb {x}",
|
||||
"search.search_or_paste": "Cerca o escriu l'URL",
|
||||
"search_popout.full_text_search_disabled_message": "No disponible a {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Només disponible en iniciar la sessió.",
|
||||
"search_popout.language_code": "Codi de llengua ISO",
|
||||
"search_popout.options": "Opcions de cerca",
|
||||
"search_popout.quick_actions": "Accions ràpides",
|
||||
|
|
|
@ -342,7 +342,6 @@
|
|||
"lists.search": "بگەڕێ لەناو ئەو کەسانەی کە شوێنیان کەوتویت",
|
||||
"lists.subheading": "لیستەکانت",
|
||||
"load_pending": "{count, plural, one {# بەڕگەی نوێ} other {# بەڕگەی نوێ}}",
|
||||
"loading_indicator.label": "بارکردن...",
|
||||
"media_gallery.toggle_visible": "شاردنەوەی {number, plural, one {image} other {images}}",
|
||||
"moved_to_account_banner.text": "ئەکاونتەکەت {disabledAccount} لە ئێستادا لەکارخراوە چونکە تۆ چوویتە {movedToAccount}.",
|
||||
"mute_modal.duration": "ماوە",
|
||||
|
|
|
@ -236,7 +236,6 @@
|
|||
"lists.search": "Circà indè i vostr'abbunamenti",
|
||||
"lists.subheading": "E vo liste",
|
||||
"load_pending": "{count, plural, one {# entrata nova} other {# entrate nove}}",
|
||||
"loading_indicator.label": "Caricamentu...",
|
||||
"media_gallery.toggle_visible": "Piattà {number, plural, one {ritrattu} other {ritratti}}",
|
||||
"mute_modal.duration": "Durata",
|
||||
"mute_modal.hide_notifications": "Piattà nutificazione da st'utilizatore?",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Blokovaný",
|
||||
"account.browse_more_on_origin_server": "Více na původním profilu",
|
||||
"account.cancel_follow_request": "Zrušit žádost o sledování",
|
||||
"account.copy": "Kopírovat odkaz na profil",
|
||||
"account.direct": "Soukromě zmínit @{name}",
|
||||
"account.disable_notifications": "Přestat mě upozorňovat, když @{name} zveřejní příspěvek",
|
||||
"account.domain_blocked": "Doména blokována",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Označit jako přečtené",
|
||||
"conversation.open": "Zobrazit konverzaci",
|
||||
"conversation.with": "S {names}",
|
||||
"copy_icon_button.copied": "Zkopírováno do schránky",
|
||||
"copypaste.copied": "Zkopírováno",
|
||||
"copypaste.copy_to_clipboard": "Zkopírovat do schránky",
|
||||
"directory.federated": "Ze známého fedivesmíru",
|
||||
|
@ -222,6 +224,7 @@
|
|||
"emoji_button.search_results": "Výsledky hledání",
|
||||
"emoji_button.symbols": "Symboly",
|
||||
"emoji_button.travel": "Cestování a místa",
|
||||
"empty_column.account_hides_collections": "Tento uživatel se rozhodl nezveřejňovat tuto informaci",
|
||||
"empty_column.account_suspended": "Účet je pozastaven",
|
||||
"empty_column.account_timeline": "Nejsou tu žádné příspěvky!",
|
||||
"empty_column.account_unavailable": "Profil není dostupný",
|
||||
|
@ -385,7 +388,6 @@
|
|||
"lists.search": "Hledejte mezi lidmi, které sledujete",
|
||||
"lists.subheading": "Vaše seznamy",
|
||||
"load_pending": "{count, plural, one {# nová položka} few {# nové položky} many {# nových položek} other {# nových položek}}",
|
||||
"loading_indicator.label": "Načítání...",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Skrýt obrázek} few {Skrýt obrázky} many {Skrýt obrázky} other {Skrýt obrázky}}",
|
||||
"moved_to_account_banner.text": "Váš účet {disabledAccount} je momentálně deaktivován, protože jste se přesunul/a na {movedToAccount}.",
|
||||
"mute_modal.duration": "Trvání",
|
||||
|
|
|
@ -191,6 +191,7 @@
|
|||
"conversation.mark_as_read": "Nodi fel wedi'i ddarllen",
|
||||
"conversation.open": "Gweld sgwrs",
|
||||
"conversation.with": "Gyda {names}",
|
||||
"copy_icon_button.copied": "Copïwyd i'r clipfwrdd",
|
||||
"copypaste.copied": "Wedi ei gopïo",
|
||||
"copypaste.copy_to_clipboard": "Copïo i'r clipfwrdd",
|
||||
"directory.federated": "O'r ffedysawd cyfan",
|
||||
|
@ -390,7 +391,7 @@
|
|||
"lists.search": "Chwilio ymysg pobl rydych yn eu dilyn",
|
||||
"lists.subheading": "Eich rhestrau",
|
||||
"load_pending": "{count, plural, one {# eitem newydd} other {# eitem newydd}}",
|
||||
"loading_indicator.label": "Llwytho...",
|
||||
"loading_indicator.label": "Yn llwytho…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Cuddio delwedd} other {Cuddio delwedd}}",
|
||||
"moved_to_account_banner.text": "Ar hyn y bryd, mae eich cyfrif {disabledAccount} wedi ei analluogi am i chi symud i {movedToAccount}.",
|
||||
"mute_modal.duration": "Hyd",
|
||||
|
@ -479,6 +480,14 @@
|
|||
"onboarding.follows.empty": "Yn anffodus, nid oes modd dangos unrhyw ganlyniadau ar hyn o bryd. Gallwch geisio defnyddio chwilio neu bori'r dudalen archwilio i ddod o hyd i bobl i'w dilyn, neu ceisio eto yn nes ymlaen.",
|
||||
"onboarding.follows.lead": "Rydych chi'n curadu eich ffrwd gartref eich hun. Po fwyaf o bobl y byddwch chi'n eu dilyn, y mwyaf egnïol a diddorol fydd hi. Gall y proffiliau hyn fod yn fan cychwyn da - gallwch chi bob amser eu dad-ddilyn yn nes ymlaen:",
|
||||
"onboarding.follows.title": "Yn boblogaidd ar Mastodon",
|
||||
"onboarding.profile.discoverable": "Gwnewch fy mhroffil yn un y gellir ei ddarganfod",
|
||||
"onboarding.profile.discoverable_hint": "Pan fyddwch yn optio i mewn i ddarganfodadwyedd ar Mastodon, gall eich postiadau ymddangos mewn canlyniadau chwilio a thueddiadau, ac efallai y bydd eich proffil yn cael ei awgrymu i bobl sydd â diddordebau tebyg i chi.",
|
||||
"onboarding.profile.display_name_hint": "Eich enw llawn neu'ch enw hwyl…",
|
||||
"onboarding.profile.note": "Bywgraffiad",
|
||||
"onboarding.profile.note_hint": "Gallwch @grybwyll pobl eraill neu #hashnodau…",
|
||||
"onboarding.profile.save_and_continue": "Cadw a pharhau",
|
||||
"onboarding.profile.title": "Gosodiad proffil",
|
||||
"onboarding.profile.upload_avatar": "Llwytho llun proffil",
|
||||
"onboarding.share.lead": "Cofiwch ddweud wrth bobl sut y gallan nhw ddod o hyd i chi ar Mastodon!",
|
||||
"onboarding.share.message": "Fi yw {username} ar #Mastodon! Dewch i'm dilyn i yn {url}",
|
||||
"onboarding.share.next_steps": "Camau nesaf posib:",
|
||||
|
@ -522,6 +531,7 @@
|
|||
"privacy.unlisted.short": "Heb ei restru",
|
||||
"privacy_policy.last_updated": "Diweddarwyd ddiwethaf ar {date}",
|
||||
"privacy_policy.title": "Polisi Preifatrwydd",
|
||||
"recommended": "Argymhellwyd",
|
||||
"refresh": "Adnewyddu",
|
||||
"regeneration_indicator.label": "Yn llwytho…",
|
||||
"regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Blokeret",
|
||||
"account.browse_more_on_origin_server": "Se mere på den oprindelige profil",
|
||||
"account.cancel_follow_request": "Annullér anmodning om at følge",
|
||||
"account.copy": "Kopiér link til profil",
|
||||
"account.direct": "Privat omtale @{name}",
|
||||
"account.disable_notifications": "Advisér mig ikke længere, når @{name} poster",
|
||||
"account.domain_blocked": "Domæne blokeret",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Markér som læst",
|
||||
"conversation.open": "Vis samtale",
|
||||
"conversation.with": "Med {names}",
|
||||
"copy_icon_button.copied": "Kopieret til udklipsholderen",
|
||||
"copypaste.copied": "Kopieret",
|
||||
"copypaste.copy_to_clipboard": "Kopiér til udklipsholder",
|
||||
"directory.federated": "Fra kendt fedivers",
|
||||
|
@ -390,7 +392,7 @@
|
|||
"lists.search": "Søg blandt personer, som følges",
|
||||
"lists.subheading": "Dine lister",
|
||||
"load_pending": "{count, plural, one {# nyt emne} other {# nye emner}}",
|
||||
"loading_indicator.label": "Indlæser...",
|
||||
"loading_indicator.label": "Indlæser…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Skjul billede} other {Skjul billeder}}",
|
||||
"moved_to_account_banner.text": "Din konto {disabledAccount} er pt. deaktiveret, da du flyttede til {movedToAccount}.",
|
||||
"mute_modal.duration": "Varighed",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Ingen resultater tilgængelige pt. Prøv at bruge søgning eller gennemse siden for at finde personer at følge, eller forsøg igen senere.",
|
||||
"onboarding.follows.lead": "Man kurerer sin eget hjemme-feed. Jo flere personer man følger, des mere aktiv og interessant vil det være. Disse profiler kan være et godt udgangspunkt – de kan altid fjernes senere!",
|
||||
"onboarding.follows.title": "Populært på Mastodon",
|
||||
"onboarding.profile.discoverable": "Gør min profil synlig",
|
||||
"onboarding.profile.discoverable_hint": "Når man vælger at være synlig på Mastodon, kan ens indlæg fremgå i søgeresultater og tendenser, og profilen kan blive foreslået til andre med tilsvarende interesse.",
|
||||
"onboarding.profile.display_name": "Visningsnavn",
|
||||
"onboarding.profile.display_name_hint": "Fulde navn eller dit sjove navn…",
|
||||
"onboarding.profile.lead": "Dette kan altid færdiggøres senere i indstillingerne, hvor endnu flere tilpasningsmuligheder forefindes.",
|
||||
"onboarding.profile.note": "Bio",
|
||||
"onboarding.profile.note_hint": "Man kan @omtale andre personer eller #hashtags…",
|
||||
"onboarding.profile.save_and_continue": "Gem og fortsæt",
|
||||
"onboarding.profile.title": "Profilopsætning",
|
||||
"onboarding.profile.upload_avatar": "Upload profilbillede",
|
||||
"onboarding.profile.upload_header": "Upload profiloverskrift",
|
||||
"onboarding.share.lead": "Lad folk vide, hvordan de kan finde dig på Mastodon!",
|
||||
"onboarding.share.message": "Jeg er {username} på #Mastodon! Følg mig på {url}",
|
||||
"onboarding.share.next_steps": "Mulige næste trin:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Diskret",
|
||||
"privacy_policy.last_updated": "Senest opdateret {date}",
|
||||
"privacy_policy.title": "Privatlivspolitik",
|
||||
"recommended": "Anbefalet",
|
||||
"refresh": "Genindlæs",
|
||||
"regeneration_indicator.label": "Indlæser…",
|
||||
"regeneration_indicator.sublabel": "Din hjemmetidslinje klargøres!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Indlæg matchende {x}",
|
||||
"search.search_or_paste": "Søg efter eller angiv URL",
|
||||
"search_popout.full_text_search_disabled_message": "Utilgængelig på {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Kun tilgængelig, når logget ind.",
|
||||
"search_popout.language_code": "ISO-sprogkode",
|
||||
"search_popout.options": "Søgevalg",
|
||||
"search_popout.quick_actions": "Hurtige handlinger",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Blockiert",
|
||||
"account.browse_more_on_origin_server": "Mehr auf dem Originalprofil durchsuchen",
|
||||
"account.cancel_follow_request": "Folgeanfrage zurückziehen",
|
||||
"account.copy": "Link zum Profil kopieren",
|
||||
"account.direct": "@{name} privat erwähnen",
|
||||
"account.disable_notifications": "Höre auf mich zu benachrichtigen wenn @{name} etwas postet",
|
||||
"account.domain_blocked": "Domain versteckt",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Als gelesen markieren",
|
||||
"conversation.open": "Unterhaltung anzeigen",
|
||||
"conversation.with": "Mit {names}",
|
||||
"copy_icon_button.copied": "In die Zwischenablage kopiert",
|
||||
"copypaste.copied": "Kopiert",
|
||||
"copypaste.copy_to_clipboard": "In die Zwischenablage kopieren",
|
||||
"directory.federated": "Aus bekanntem Fediverse",
|
||||
|
@ -390,7 +392,7 @@
|
|||
"lists.search": "Suche nach Leuten, denen du folgst",
|
||||
"lists.subheading": "Deine Listen",
|
||||
"load_pending": "{count, plural, one {# neuer Beitrag} other {# neue Beiträge}}",
|
||||
"loading_indicator.label": "Wird geladen …",
|
||||
"loading_indicator.label": "Wird geladen …",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Medium ausblenden} other {Medien ausblenden}}",
|
||||
"moved_to_account_banner.text": "Dein Konto {disabledAccount} ist derzeit deaktiviert, weil du zu {movedToAccount} umgezogen bist.",
|
||||
"mute_modal.duration": "Dauer",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Bedauerlicherweise können aktuell keine Ergebnisse angezeigt werden. Du kannst die Suche verwenden oder den Reiter „Entdecken“ auswählen, um neue Leute zum Folgen zu finden – oder du versuchst es später erneut.",
|
||||
"onboarding.follows.lead": "Deine Startseite ist der primäre Anlaufpunkt, um Mastodon zu erleben. Je mehr Profilen du folgst, umso aktiver und interessanter wird sie. Damit du direkt loslegen kannst, gibt es hier ein paar Vorschläge:",
|
||||
"onboarding.follows.title": "Personalisiere deine Startseite",
|
||||
"onboarding.profile.discoverable": "Mein Profil auffindbar machen",
|
||||
"onboarding.profile.discoverable_hint": "Wenn du entdeckt werden möchtest, dann können deine Beiträge in Suchergebnissen und Trends erscheinen. Dein Profil kann ebenfalls anderen mit ähnlichen Interessen vorgeschlagen werden.",
|
||||
"onboarding.profile.display_name": "Anzeigename",
|
||||
"onboarding.profile.display_name_hint": "Dein richtiger Name oder dein Fantasiename …",
|
||||
"onboarding.profile.lead": "Du kannst das später in den Einstellungen vervollständigen, wo noch mehr Anpassungsmöglichkeiten zur Verfügung stehen.",
|
||||
"onboarding.profile.note": "Über mich",
|
||||
"onboarding.profile.note_hint": "Du kannst andere @Profile erwähnen oder #Hashtags verwenden …",
|
||||
"onboarding.profile.save_and_continue": "Speichern und fortsetzen",
|
||||
"onboarding.profile.title": "Profil einrichten",
|
||||
"onboarding.profile.upload_avatar": "Profilbild hochladen",
|
||||
"onboarding.profile.upload_header": "Titelbild hochladen",
|
||||
"onboarding.share.lead": "Lass die Leute wissen, wie sie dich auf Mastodon finden können!",
|
||||
"onboarding.share.message": "Ich bin {username} auf #Mastodon! Folge mir auf {url}",
|
||||
"onboarding.share.next_steps": "Mögliche nächste Schritte:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Nicht gelistet",
|
||||
"privacy_policy.last_updated": "Stand: {date}",
|
||||
"privacy_policy.title": "Datenschutzerklärung",
|
||||
"recommended": "Empfohlen",
|
||||
"refresh": "Aktualisieren",
|
||||
"regeneration_indicator.label": "Wird geladen …",
|
||||
"regeneration_indicator.sublabel": "Deine Startseite wird gerade vorbereitet!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Beiträge passend zu {x}",
|
||||
"search.search_or_paste": "Suchen oder URL einfügen",
|
||||
"search_popout.full_text_search_disabled_message": "Auf {domain} nicht verfügbar.",
|
||||
"search_popout.full_text_search_logged_out_message": "Nur verfügbar, wenn angemeldet.",
|
||||
"search_popout.language_code": "ISO-Sprachcode",
|
||||
"search_popout.options": "Suchoptionen",
|
||||
"search_popout.quick_actions": "Schnellaktionen",
|
||||
|
|
|
@ -168,6 +168,7 @@
|
|||
"confirmations.mute.explanation": "Αυτό θα κρύψει τις δημοσιεύσεις τους και τις δημοσιεύσεις που τους αναφέρουν, αλλά θα συνεχίσουν να μπορούν να βλέπουν τις δημοσιεύσεις σου και να σε ακολουθούν.",
|
||||
"confirmations.mute.message": "Σίγουρα θες να αποσιωπήσεις {name};",
|
||||
"confirmations.redraft.confirm": "Διαγραφή & ξαναγράψιμο",
|
||||
"confirmations.redraft.message": "Σίγουρα θέλεις να σβήσεις αυτή την ανάρτηση και να την ξαναγράψεις; Οι προτιμήσεις και προωθήσεις θα χαθούν και οι απαντήσεις στην αρχική ανάρτηση θα μείνουν ορφανές.",
|
||||
"confirmations.reply.confirm": "Απάντησε",
|
||||
"confirmations.reply.message": "Απαντώντας τώρα θα αντικαταστήσεις το κείμενο που ήδη γράφεις. Σίγουρα θέλεις να συνεχίσεις;",
|
||||
"confirmations.unfollow.confirm": "Άρση ακολούθησης",
|
||||
|
@ -187,6 +188,7 @@
|
|||
"dismissable_banner.community_timeline": "Αυτές είναι οι πιο πρόσφατες δημόσιες αναρτήσεις ατόμων των οποίων οι λογαριασμοί φιλοξενούνται στο {domain}.",
|
||||
"dismissable_banner.dismiss": "Παράβλεψη",
|
||||
"dismissable_banner.explore_links": "Αυτές οι ειδήσεις συζητούνται σε αυτόν και άλλους διακομιστές του αποκεντρωμένου δικτύου αυτή τη στιγμή.",
|
||||
"dismissable_banner.explore_statuses": "Αυτές είναι οι αναρτήσεις που έχουν απήχηση στο κοινωνικό δίκτυο σήμερα. Οι νεώτερες αναρτήσεις με περισσότερες προωθήσεις και προτιμήσεις κατατάσσονται ψηλότερα.",
|
||||
"dismissable_banner.explore_tags": "Αυτές οι ετικέτες αποκτούν απήχηση σε αυτόν και άλλους διακομιστές του αποκεντρωμένου δικτύου αυτή τη στιγμή.",
|
||||
"embed.instructions": "Ενσωμάτωσε αυτή την ανάρτηση στην ιστοσελίδα σου αντιγράφοντας τον παρακάτω κώδικα.",
|
||||
"embed.preview": "Ορίστε πως θα φαίνεται:",
|
||||
|
@ -279,13 +281,17 @@
|
|||
"home.column_settings.basic": "Βασικές ρυθμίσεις",
|
||||
"home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων",
|
||||
"home.column_settings.show_replies": "Εμφάνιση απαντήσεων",
|
||||
"home.explore_prompt.body": "Your home feed will have a mix of posts from the hashtags you've chosen to follow, the people you've chosen to follow, and the posts they boost. If that feels too quiet, you may want to:\nΗ τροφοδοσία της αρχικής σελίδας σας είναι ένα μίγμα από αναρτήσεις με τις ετικέτες και τα άτομα που επιλέξατε να ακολουθείτε, και τις αναρτήσεις που προωθούν. Εάν αυτό σας φαίνεται πολύ ήσυχο, μπορεί να θέλετε:",
|
||||
"home.hide_announcements": "Απόκρυψη ανακοινώσεων",
|
||||
"home.show_announcements": "Εμφάνιση ανακοινώσεων",
|
||||
"interaction_modal.description.follow": "Με έναν λογαριασμό Mastodon, μπορείς να ακολουθήσεις τον/την {name} ώστε να λαμβάνεις τις αναρτήσεις του/της στη δική σου ροή.",
|
||||
"interaction_modal.description.reblog": "Με ένα λογαριασμό Mastodon, μπορείς να ενισχύσεις αυτή την ανάρτηση για να τη μοιραστείς με τους δικούς σου ακολούθους.",
|
||||
"interaction_modal.description.reply": "Με ένα λογαριασμό Mastodon, μπορείς να απαντήσεις σε αυτή την ανάρτηση.",
|
||||
"interaction_modal.login.action": "Take me home\nΠήγαινέ με στην αρχική σελίδα",
|
||||
"interaction_modal.no_account_yet": "Not on Mastodon?\nΔεν είστε στο Mastodon;",
|
||||
"interaction_modal.on_another_server": "Σε διαφορετικό διακομιστή",
|
||||
"interaction_modal.on_this_server": "Σε αυτόν τον διακομιστή",
|
||||
"interaction_modal.title.favourite": "Favorite {name}'s post\nΠροτίμησε την ανάρτηση της/του {name}",
|
||||
"interaction_modal.title.follow": "Ακολούθησε {name}",
|
||||
"interaction_modal.title.reblog": "Ενίσχυσε την ανάρτηση του {name}",
|
||||
"interaction_modal.title.reply": "Απάντηση στην ανάρτηση του {name}",
|
||||
|
@ -345,7 +351,6 @@
|
|||
"lists.search": "Αναζήτησε μεταξύ των ανθρώπων που ακουλουθείς",
|
||||
"lists.subheading": "Οι λίστες σου",
|
||||
"load_pending": "{count, plural, one {# νέο στοιχείο} other {# νέα στοιχεία}}",
|
||||
"loading_indicator.label": "Φορτώνει...",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Απόκρυψη εικόνας} other {Απόκρυψη εικόνων}}",
|
||||
"moved_to_account_banner.text": "Ο λογαριασμός σου {disabledAccount} είναι προσωρινά απενεργοποιημένος επειδή μεταφέρθηκες στον {movedToAccount}.",
|
||||
"mute_modal.duration": "Διάρκεια",
|
||||
|
@ -377,6 +382,7 @@
|
|||
"not_signed_in_indicator.not_signed_in": "Πρέπει να συνδεθείς για να αποκτήσεις πρόσβαση σε αυτόν τον πόρο.",
|
||||
"notification.admin.report": "Ο/Η {name} ανέφερε τον {target}",
|
||||
"notification.admin.sign_up": "{name} έχει εγγραφεί",
|
||||
"notification.favourite": "{name} favorited your post\n{name} προτίμησε την ανάρτηση σου",
|
||||
"notification.follow": "Ο/Η {name} σε ακολούθησε",
|
||||
"notification.follow_request": "Ο/H {name} ζήτησε να σε ακολουθήσει",
|
||||
"notification.mention": "Ο/Η {name} σε επισήμανε",
|
||||
|
@ -406,7 +412,7 @@
|
|||
"notifications.column_settings.unread_notifications.highlight": "Επισήμανση μη αναγνωσμένων ειδοποιήσεων",
|
||||
"notifications.column_settings.update": "Επεξεργασίες:",
|
||||
"notifications.filter.all": "Όλες",
|
||||
"notifications.filter.boosts": "Ενισχύσεις",
|
||||
"notifications.filter.boosts": "Προωθήσεις",
|
||||
"notifications.filter.follows": "Ακολουθείς",
|
||||
"notifications.filter.mentions": "Επισημάνσεις",
|
||||
"notifications.filter.polls": "Αποτελέσματα δημοσκόπησης",
|
||||
|
@ -426,9 +432,11 @@
|
|||
"onboarding.actions.go_to_home": "Πηγαίνετε στην αρχική σας ροή",
|
||||
"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": "Δημοφιλή στο Mastodon",
|
||||
"onboarding.share.lead": "Let people know how they can find you on Mastodon!\nΕνημερώστε άλλα άτομα πώς μπορούν να σας βρουν στο Mastodon!",
|
||||
"onboarding.share.next_steps": "Πιθανά επόμενα βήματα:",
|
||||
"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!\nΤα καταφέρατε!",
|
||||
"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.",
|
||||
|
@ -573,7 +581,7 @@
|
|||
"status.read_more": "Διάβασε περισότερα",
|
||||
"status.reblog": "Ενίσχυση",
|
||||
"status.reblog_private": "Ενίσχυση με αρχική ορατότητα",
|
||||
"status.reblogged_by": "{name} ενισχύθηκε",
|
||||
"status.reblogged_by": "{name} προώθησε",
|
||||
"status.reblogs.empty": "Κανείς δεν ενίσχυσε αυτή την ανάρτηση ακόμα. Μόλις το κάνει κάποιος, θα εμφανιστεί εδώ.",
|
||||
"status.redraft": "Σβήσε & ξαναγράψε",
|
||||
"status.remove_bookmark": "Αφαίρεση σελιδοδείκτη",
|
||||
|
|
|
@ -389,7 +389,7 @@
|
|||
"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...",
|
||||
"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",
|
||||
|
@ -478,6 +478,15 @@
|
|||
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
|
||||
"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": "Personalize your home feed",
|
||||
"onboarding.profile.display_name": "Display name",
|
||||
"onboarding.profile.display_name_hint": "Your full name or your fun name…",
|
||||
"onboarding.profile.lead": "You can always complete this later in the settings, where even more customisation options are available.",
|
||||
"onboarding.profile.note": "Bio",
|
||||
"onboarding.profile.note_hint": "You can @mention other people or #hashtags…",
|
||||
"onboarding.profile.save_and_continue": "Save and continue",
|
||||
"onboarding.profile.title": "Profile setup",
|
||||
"onboarding.profile.upload_avatar": "Upload profile picture",
|
||||
"onboarding.profile.upload_header": "Upload profile header",
|
||||
"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:",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Blocked",
|
||||
"account.browse_more_on_origin_server": "Browse more on the original profile",
|
||||
"account.cancel_follow_request": "Cancel follow",
|
||||
"account.copy": "Copy link to profile",
|
||||
"account.direct": "Privately mention @{name}",
|
||||
"account.disable_notifications": "Stop notifying me when @{name} posts",
|
||||
"account.domain_blocked": "Domain blocked",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Mark as read",
|
||||
"conversation.open": "View conversation",
|
||||
"conversation.with": "With {names}",
|
||||
"copy_icon_button.copied": "Copied to clipboard",
|
||||
"copypaste.copied": "Copied",
|
||||
"copypaste.copy_to_clipboard": "Copy to clipboard",
|
||||
"directory.federated": "From known fediverse",
|
||||
|
@ -390,7 +392,7 @@
|
|||
"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...",
|
||||
"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",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
|
||||
"onboarding.follows.lead": "Your home feed is the primary way to experience Mastodon. The more people you follow, the more active and interesting it will be. To get you started, here are some suggestions:",
|
||||
"onboarding.follows.title": "Personalize your home feed",
|
||||
"onboarding.profile.discoverable": "Make my profile discoverable",
|
||||
"onboarding.profile.discoverable_hint": "When you opt in to discoverability on Mastodon, your posts may appear in search results and trending, and your profile may be suggested to people with similar interests to you.",
|
||||
"onboarding.profile.display_name": "Display name",
|
||||
"onboarding.profile.display_name_hint": "Your full name or your fun name…",
|
||||
"onboarding.profile.lead": "You can always complete this later in the settings, where even more customization options are available.",
|
||||
"onboarding.profile.note": "Bio",
|
||||
"onboarding.profile.note_hint": "You can @mention other people or #hashtags…",
|
||||
"onboarding.profile.save_and_continue": "Save and continue",
|
||||
"onboarding.profile.title": "Profile setup",
|
||||
"onboarding.profile.upload_avatar": "Upload profile picture",
|
||||
"onboarding.profile.upload_header": "Upload profile header",
|
||||
"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:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Unlisted",
|
||||
"privacy_policy.last_updated": "Last updated {date}",
|
||||
"privacy_policy.title": "Privacy Policy",
|
||||
"recommended": "Recommended",
|
||||
"refresh": "Refresh",
|
||||
"regeneration_indicator.label": "Loading…",
|
||||
"regeneration_indicator.sublabel": "Your home feed is being prepared!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Posts matching {x}",
|
||||
"search.search_or_paste": "Search or paste URL",
|
||||
"search_popout.full_text_search_disabled_message": "Not available on {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Only available when logged in.",
|
||||
"search_popout.language_code": "ISO language code",
|
||||
"search_popout.options": "Search options",
|
||||
"search_popout.quick_actions": "Quick actions",
|
||||
|
|
|
@ -350,6 +350,7 @@
|
|||
"lightbox.previous": "Malantaŭen",
|
||||
"limited_account_hint.action": "Montru profilon ĉiukaze",
|
||||
"limited_account_hint.title": "La profilo estas kaŝita de la moderigantoj de {domain}.",
|
||||
"link_preview.author": "De {name}",
|
||||
"lists.account.add": "Aldoni al la listo",
|
||||
"lists.account.remove": "Forigi de la listo",
|
||||
"lists.delete": "Forigi la liston",
|
||||
|
@ -365,7 +366,6 @@
|
|||
"lists.search": "Serĉi inter la homoj, kiujn vi sekvas",
|
||||
"lists.subheading": "Viaj listoj",
|
||||
"load_pending": "{count,plural, one {# nova elemento} other {# novaj elementoj}}",
|
||||
"loading_indicator.label": "Ŝargado…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Kaŝi la bildon} other {Kaŝi la bildojn}}",
|
||||
"moved_to_account_banner.text": "Via konto {disabledAccount} estas malvalidigita ĉar vi movis ĝin al {movedToAccount}.",
|
||||
"mute_modal.duration": "Daŭro",
|
||||
|
@ -447,6 +447,7 @@
|
|||
"onboarding.follows.empty": "Bedaŭrinde, neniu rezulto estas montrebla nuntempe. Vi povas provi serĉi aŭ foliumi la esploran paĝon por trovi kontojn por sekvi, aŭ retrovi baldaŭ.",
|
||||
"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.profile.save_and_continue": "Konservi kaj daŭrigi",
|
||||
"onboarding.share.message": "Mi estas {username} en #Mastodon! Sekvu min ĉe {url}",
|
||||
"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?",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Bloqueado",
|
||||
"account.browse_more_on_origin_server": "Explorar más en el perfil original",
|
||||
"account.cancel_follow_request": "Dejar de seguir",
|
||||
"account.copy": "Copiar enlace al perfil",
|
||||
"account.direct": "Mención privada a @{name}",
|
||||
"account.disable_notifications": "Dejar de notificarme cuando @{name} envíe mensajes",
|
||||
"account.domain_blocked": "Dominio bloqueado",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Marcar como leída",
|
||||
"conversation.open": "Ver conversación",
|
||||
"conversation.with": "Con {names}",
|
||||
"copy_icon_button.copied": "Copiado en el portapapeles",
|
||||
"copypaste.copied": "Copiado",
|
||||
"copypaste.copy_to_clipboard": "Copiar al portapapeles",
|
||||
"directory.federated": "Desde fediverso conocido",
|
||||
|
@ -390,7 +392,7 @@
|
|||
"lists.search": "Buscar entre la gente que seguís",
|
||||
"lists.subheading": "Tus listas",
|
||||
"load_pending": "{count, plural, one {# elemento nuevo} other {# elementos nuevos}}",
|
||||
"loading_indicator.label": "Cargando...",
|
||||
"loading_indicator.label": "Cargando…",
|
||||
"media_gallery.toggle_visible": "Ocultar {number, plural, one {imagen} other {imágenes}}",
|
||||
"moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te mudaste a {movedToAccount}.",
|
||||
"mute_modal.duration": "Duración",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Desafortunadamente, no se pueden mostrar resultados en este momento. Podés intentar usar la búsqueda o navegar por la página de exploración para encontrar cuentas a las que seguir, o intentarlo de nuevo más tarde.",
|
||||
"onboarding.follows.lead": "Tu línea temporal de inicio es la forma principal de experimentar Mastodon. Cuanta más cuentas sigás, más activa e interesante será. Para empezar, acá tenés algunas sugerencias:",
|
||||
"onboarding.follows.title": "Personalizá tu línea de tiempo principal",
|
||||
"onboarding.profile.discoverable": "Hacer que mi perfil sea detectable",
|
||||
"onboarding.profile.discoverable_hint": "Cuando optás por ser detectable en Mastodon, tus mensajes pueden aparecer en los resultados de búsqueda y de tendencia, y tu perfil puede ser sugerido a personas con intereses similares a los tuyos.",
|
||||
"onboarding.profile.display_name": "Nombre para mostrar",
|
||||
"onboarding.profile.display_name_hint": "Tu nombre completo o tu pseudónimo…",
|
||||
"onboarding.profile.lead": "Siempre podés completar esto más tarde en la configuración, donde hay disponibles más opciones de personalización.",
|
||||
"onboarding.profile.note": "Biografía",
|
||||
"onboarding.profile.note_hint": "Podés @mencionar otras cuentas o usar #etiquetas…",
|
||||
"onboarding.profile.save_and_continue": "Guardar y continuar",
|
||||
"onboarding.profile.title": "Configuración del perfil",
|
||||
"onboarding.profile.upload_avatar": "Subir avatar",
|
||||
"onboarding.profile.upload_header": "Subir cabecera",
|
||||
"onboarding.share.lead": "¡Decile a la gente cómo te pueden encontrar en Mastodon!",
|
||||
"onboarding.share.message": "¡En #Mastodon soy «{username}»! Podés seguirme desde {url}",
|
||||
"onboarding.share.next_steps": "Posibles próximos pasos:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "No listado",
|
||||
"privacy_policy.last_updated": "Última actualización: {date}",
|
||||
"privacy_policy.title": "Política de privacidad",
|
||||
"recommended": "Opción recomendada",
|
||||
"refresh": "Refrescar",
|
||||
"regeneration_indicator.label": "Cargando…",
|
||||
"regeneration_indicator.sublabel": "¡Se está preparando tu línea temporal principal!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Mensajes que coinciden con {x}",
|
||||
"search.search_or_paste": "Buscar o pegar dirección web",
|
||||
"search_popout.full_text_search_disabled_message": "No disponible en {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Solo disponible al iniciar sesión.",
|
||||
"search_popout.language_code": "Código ISO de idioma",
|
||||
"search_popout.options": "Opciones de búsqueda",
|
||||
"search_popout.quick_actions": "Acciones rápidas",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Bloqueado",
|
||||
"account.browse_more_on_origin_server": "Ver más en el perfil original",
|
||||
"account.cancel_follow_request": "Retirar solicitud de seguimiento",
|
||||
"account.copy": "Copiar enlace al perfil",
|
||||
"account.direct": "Mención privada @{name}",
|
||||
"account.disable_notifications": "Dejar de notificarme cuando @{name} publique algo",
|
||||
"account.domain_blocked": "Dominio oculto",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Marcar como leído",
|
||||
"conversation.open": "Ver conversación",
|
||||
"conversation.with": "Con {names}",
|
||||
"copy_icon_button.copied": "Copiado al portapapeles",
|
||||
"copypaste.copied": "Copiado",
|
||||
"copypaste.copy_to_clipboard": "Copiar al portapapeles",
|
||||
"directory.federated": "Desde el fediverso conocido",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Desafortunadamente, no se pueden mostrar resultados en este momento. Puedes intentar usar la búsqueda o navegar por la página de exploración para encontrar gente a la que seguir, o inténtalo de nuevo más tarde.",
|
||||
"onboarding.follows.lead": "Tienes que personalizar tu inicio. Cuantas más personas sigas, más activo e interesante será. Estos perfiles pueden ser un buen punto de partida, ¡pero siempre puedes dejar de seguirlos más adelante!",
|
||||
"onboarding.follows.title": "Popular en Mastodon",
|
||||
"onboarding.profile.discoverable": "Make my profile discoverable",
|
||||
"onboarding.profile.discoverable_hint": "Cuando aceptas ser descubierto en Mastodon, tus publicaciones pueden aparecer en resultados de búsqueda y tendencias, y tu perfil puede ser sugerido a personas con intereses similares a los tuyos.",
|
||||
"onboarding.profile.display_name": "Nombre a mostrar",
|
||||
"onboarding.profile.display_name_hint": "Tu nombre completo o tu apodo…",
|
||||
"onboarding.profile.lead": "Siempre puedes completar esto más tarde en los ajustes, donde hay aún más opciones de personalización disponibles.",
|
||||
"onboarding.profile.note": "Biografía",
|
||||
"onboarding.profile.note_hint": "Puedes @mencionar a otras personas o #hashtags…",
|
||||
"onboarding.profile.save_and_continue": "Guardar y continuar",
|
||||
"onboarding.profile.title": "Configuración del perfil",
|
||||
"onboarding.profile.upload_avatar": "Subir foto de perfil",
|
||||
"onboarding.profile.upload_header": "Subir foto de cabecera",
|
||||
"onboarding.share.lead": "¡Dile a la gente cómo te pueden encontrar en Mastodon!",
|
||||
"onboarding.share.message": "¡Soy {username} en #Mastodon! Ven a seguirme en {url}",
|
||||
"onboarding.share.next_steps": "Posibles siguientes pasos:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "No listado",
|
||||
"privacy_policy.last_updated": "Actualizado por última vez {date}",
|
||||
"privacy_policy.title": "Política de Privacidad",
|
||||
"recommended": "Recomendado",
|
||||
"refresh": "Actualizar",
|
||||
"regeneration_indicator.label": "Cargando…",
|
||||
"regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Publicaciones que coinciden con {x}",
|
||||
"search.search_or_paste": "Buscar o pegar URL",
|
||||
"search_popout.full_text_search_disabled_message": "No disponible en {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Solo disponible si inicias sesión.",
|
||||
"search_popout.language_code": "Código de idioma ISO",
|
||||
"search_popout.options": "Opciones de búsqueda",
|
||||
"search_popout.quick_actions": "Acciones rápidas",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Bloqueado",
|
||||
"account.browse_more_on_origin_server": "Ver más en el perfil original",
|
||||
"account.cancel_follow_request": "Retirar solicitud de seguimiento",
|
||||
"account.copy": "Copiar enlace al perfil",
|
||||
"account.direct": "Mención privada a @{name}",
|
||||
"account.disable_notifications": "Dejar de notificarme cuando @{name} publique algo",
|
||||
"account.domain_blocked": "Dominio bloqueado",
|
||||
|
@ -65,7 +66,7 @@
|
|||
"account.unblock": "Desbloquear a @{name}",
|
||||
"account.unblock_domain": "Desbloquear dominio {domain}",
|
||||
"account.unblock_short": "Desbloquear",
|
||||
"account.unendorse": "No destacar en el perfil",
|
||||
"account.unendorse": "No mostrar en el perfil",
|
||||
"account.unfollow": "Dejar de seguir",
|
||||
"account.unmute": "Dejar de silenciar a @{name}",
|
||||
"account.unmute_notifications_short": "Dejar de silenciar notificaciones",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Marcar como leído",
|
||||
"conversation.open": "Ver conversación",
|
||||
"conversation.with": "Con {names}",
|
||||
"copy_icon_button.copied": "Copiado al portapapeles",
|
||||
"copypaste.copied": "Copiado",
|
||||
"copypaste.copy_to_clipboard": "Copiar al portapapeles",
|
||||
"directory.federated": "Desde el fediverso conocido",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Desafortunadamente, no se pueden mostrar resultados en este momento. Puedes intentar usar la búsqueda o navegar por la página de exploración para encontrar personas a las que seguir, o inténtalo de nuevo más tarde.",
|
||||
"onboarding.follows.lead": "Tu línea de inicio es la forma principal de experimentar Mastodon. Cuanta más personas sigas, más activa e interesante será. Para empezar, aquí hay algunas sugerencias:",
|
||||
"onboarding.follows.title": "Personaliza tu línea de inicio",
|
||||
"onboarding.profile.discoverable": "Hacer que mi perfil aparezca en búsquedas",
|
||||
"onboarding.profile.discoverable_hint": "Cuando permites que tu perfil aparezca en búsquedas en Mastodon, tus publicaciones podrán aparecer en los resultados de búsqueda y en tendencias, y tu perfil podrá recomendarse a gente con intereses similares a los tuyos.",
|
||||
"onboarding.profile.display_name": "Nombre para mostrar",
|
||||
"onboarding.profile.display_name_hint": "Tu nombre completo o tu apodo…",
|
||||
"onboarding.profile.lead": "Siempre puedes completar esto más tarde en los ajustes, donde hay aún más opciones de personalización disponibles.",
|
||||
"onboarding.profile.note": "Biografía",
|
||||
"onboarding.profile.note_hint": "Puedes @mencionar a otras personas o #etiquetas…",
|
||||
"onboarding.profile.save_and_continue": "Guardar y continuar",
|
||||
"onboarding.profile.title": "Configuración del perfil",
|
||||
"onboarding.profile.upload_avatar": "Subir foto de perfil",
|
||||
"onboarding.profile.upload_header": "Subir encabezado de perfil",
|
||||
"onboarding.share.lead": "¡Cuéntale a otras personas cómo te pueden encontrar en Mastodon!",
|
||||
"onboarding.share.message": "¡Soy {username} en #Mastodon! Ven a seguirme en {url}",
|
||||
"onboarding.share.next_steps": "Posibles siguientes pasos:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "No listado",
|
||||
"privacy_policy.last_updated": "Actualizado por última vez {date}",
|
||||
"privacy_policy.title": "Política de Privacidad",
|
||||
"recommended": "Recomendado",
|
||||
"refresh": "Actualizar",
|
||||
"regeneration_indicator.label": "Cargando…",
|
||||
"regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Publicaciones que coinciden con {x}",
|
||||
"search.search_or_paste": "Buscar o pegar URL",
|
||||
"search_popout.full_text_search_disabled_message": "No disponible en {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Solo disponible si inicias sesión.",
|
||||
"search_popout.language_code": "Código de idioma ISO",
|
||||
"search_popout.options": "Opciones de búsqueda",
|
||||
"search_popout.quick_actions": "Acciones rápidas",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Blokeeritud",
|
||||
"account.browse_more_on_origin_server": "Vaata rohkem algsel profiilil",
|
||||
"account.cancel_follow_request": "Võta jälgimistaotlus tagasi",
|
||||
"account.copy": "Kopeeri link profiili",
|
||||
"account.direct": "Maini privaatselt @{name}",
|
||||
"account.disable_notifications": "Peata teavitused @{name} postitustest",
|
||||
"account.domain_blocked": "Domeen peidetud",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Märgi loetuks",
|
||||
"conversation.open": "Vaata vestlust",
|
||||
"conversation.with": "Koos {names}",
|
||||
"copy_icon_button.copied": "Kopeeritud vahemällu",
|
||||
"copypaste.copied": "Kopeeritud",
|
||||
"copypaste.copy_to_clipboard": "Kopeeri vahemällu",
|
||||
"directory.federated": "Tuntud födiversumist",
|
||||
|
@ -390,7 +392,7 @@
|
|||
"lists.search": "Otsi enda jälgitavate inimeste hulgast",
|
||||
"lists.subheading": "Sinu nimekirjad",
|
||||
"load_pending": "{count, plural, one {# uus kirje} other {# uut kirjet}}",
|
||||
"loading_indicator.label": "Laeb..",
|
||||
"loading_indicator.label": "Laadimine…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Varja pilt} other {Varja pildid}}",
|
||||
"moved_to_account_banner.text": "Kontot {disabledAccount} ei ole praegu võimalik kasutada, sest kolisid kontole {movedToAccount}.",
|
||||
"mute_modal.duration": "Kestus",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Kahjuks ei saa hetkel tulemusi näidata. Proovi kasutada otsingut või lehitse uurimise lehte, et leida inimesi, keda jälgida, või proovi hiljem uuesti.",
|
||||
"onboarding.follows.lead": "Haldad ise oma koduvoogu. Mida rohkemaid inimesi jälgid, seda aktiivsem ja huvitavam see on. Need profiilid võiksid olla head alustamiskohad — saad nende jälgimise alati lõpetada!",
|
||||
"onboarding.follows.title": "Populaarne Mastodonis",
|
||||
"onboarding.profile.discoverable": "Muuda mu profiil avastatavaks",
|
||||
"onboarding.profile.discoverable_hint": "Kui nõustud enda avastamisega Mastodonis, võivad sinu postitused ilmuda otsingutulemustes ja trendides ning sinu profiili võidakse soovitada sinuga sarnaste huvidega inimestele.",
|
||||
"onboarding.profile.display_name": "Näidatav nimi",
|
||||
"onboarding.profile.display_name_hint": "Su täisnimi või naljanimi…",
|
||||
"onboarding.profile.lead": "Saad selle alati hiljem seadetes lõpuni viia, kus on saadaval veel rohkem kohandamisvalikuid.",
|
||||
"onboarding.profile.note": "Elulugu",
|
||||
"onboarding.profile.note_hint": "Saad @mainida teisi kasutajaid või #sildistada…",
|
||||
"onboarding.profile.save_and_continue": "Salvesta ja jätka",
|
||||
"onboarding.profile.title": "Profiili seadistamine",
|
||||
"onboarding.profile.upload_avatar": "Laadi üles profiilipilt",
|
||||
"onboarding.profile.upload_header": "Laadi üles profiili päis",
|
||||
"onboarding.share.lead": "Anna inimestele teada, kuidas sind Mastodonist üles leida!",
|
||||
"onboarding.share.message": "Ma olen #Mastodon võrgustikus {username}! tule ja jälgi mind aadressil {url}",
|
||||
"onboarding.share.next_steps": "Võimalikud järgmised sammud:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Määramata",
|
||||
"privacy_policy.last_updated": "Viimati uuendatud {date}",
|
||||
"privacy_policy.title": "Isikuandmete kaitse",
|
||||
"recommended": "Soovitatud",
|
||||
"refresh": "Värskenda",
|
||||
"regeneration_indicator.label": "Laeb…",
|
||||
"regeneration_indicator.sublabel": "Su koduvoog on ettevalmistamisel!",
|
||||
|
|
|
@ -16,16 +16,17 @@
|
|||
"account.badges.bot": "Bot-a",
|
||||
"account.badges.group": "Taldea",
|
||||
"account.block": "Blokeatu @{name}",
|
||||
"account.block_domain": "Ezkutatu {domain} domeinuko guztia",
|
||||
"account.block_domain": "Blokeatu {domain} domeinua",
|
||||
"account.block_short": "Blokeatu",
|
||||
"account.blocked": "Blokeatuta",
|
||||
"account.browse_more_on_origin_server": "Arakatu gehiago jatorrizko profilean",
|
||||
"account.cancel_follow_request": "Baztertu jarraitzeko eskaera",
|
||||
"account.copy": "Kopiatu profilerako esteka",
|
||||
"account.direct": "Aipatu pribatuki @{name}",
|
||||
"account.disable_notifications": "Utzi jakinarazteari @{name} erabiltzailearen bidalketetan",
|
||||
"account.disable_notifications": "Utzi jakinarazteari @{name} erabiltzaileak argitaratzean",
|
||||
"account.domain_blocked": "Ezkutatutako domeinua",
|
||||
"account.edit_profile": "Aldatu profila",
|
||||
"account.enable_notifications": "Jakinarazi @{name} erabiltzaileak bidalketak egitean",
|
||||
"account.enable_notifications": "Jakinarazi @{name} erabiltzaileak argitaratzean",
|
||||
"account.endorse": "Nabarmendu profilean",
|
||||
"account.featured_tags.last_status_at": "Azken bidalketa {date} datan",
|
||||
"account.featured_tags.last_status_never": "Bidalketarik ez",
|
||||
|
@ -39,7 +40,7 @@
|
|||
"account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.",
|
||||
"account.follows_you": "Jarraitzen dizu",
|
||||
"account.go_to_profile": "Joan profilera",
|
||||
"account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak",
|
||||
"account.hide_reblogs": "Ezkutatu @{name} erabiltzailearen bultzadak",
|
||||
"account.in_memoriam": "Oroimenezkoa.",
|
||||
"account.joined_short": "Elkartuta",
|
||||
"account.languages": "Aldatu harpidetutako hizkuntzak",
|
||||
|
@ -59,8 +60,8 @@
|
|||
"account.report": "Salatu @{name}",
|
||||
"account.requested": "Onarpenaren zain. Egin klik jarraipen-eskaera ezeztatzeko",
|
||||
"account.requested_follow": "{name}-(e)k zu jarraitzeko eskaera egin du",
|
||||
"account.share": "@{name}(e)ren profila elkarbanatu",
|
||||
"account.show_reblogs": "Erakutsi @{name}(r)en bultzadak",
|
||||
"account.share": "Partekatu @{name} erabiltzailearen profila",
|
||||
"account.show_reblogs": "Erakutsi @{name} erabiltzailearen bultzadak",
|
||||
"account.statuses_counter": "{count, plural, one {Bidalketa {counter}} other {{counter} bidalketa}}",
|
||||
"account.unblock": "Desblokeatu @{name}",
|
||||
"account.unblock_domain": "Berriz erakutsi {domain}",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Markatu irakurrita bezala",
|
||||
"conversation.open": "Ikusi elkarrizketa",
|
||||
"conversation.with": "Hauekin: {names}",
|
||||
"copy_icon_button.copied": "Arbelera kopiatu da",
|
||||
"copypaste.copied": "Kopiatuta",
|
||||
"copypaste.copy_to_clipboard": "Kopiatu arbelera",
|
||||
"directory.federated": "Fedibertso ezagunekoak",
|
||||
|
@ -389,8 +391,8 @@
|
|||
"lists.replies_policy.title": "Erakutsi erantzunak:",
|
||||
"lists.search": "Bilatu jarraitzen dituzun pertsonen artean",
|
||||
"lists.subheading": "Zure zerrendak",
|
||||
"load_pending": "{count, plural, one {eleentuberri #} other {# elementu berri}}",
|
||||
"loading_indicator.label": "Kargatzen...",
|
||||
"load_pending": "{count, plural, one {elementu berri #} other {# elementu berri}}",
|
||||
"loading_indicator.label": "Kargatzen…",
|
||||
"media_gallery.toggle_visible": "Txandakatu ikusgaitasuna",
|
||||
"moved_to_account_banner.text": "Zure {disabledAccount} kontua desgaituta dago une honetan, {movedToAccount} kontura aldatu zinelako.",
|
||||
"mute_modal.duration": "Iraupena",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Zoritxarrez, ezin da emaitzik erakutsi orain. Bilaketa erabil dezakezu edo Arakatu orrian jendea bilatu jarraitzeko, edo saiatu geroago.",
|
||||
"onboarding.follows.lead": "Hasierako orria zuk pertsonalizatzen duzu. Gero eta jende gehiagori jarraitu, orduan eta aktibo eta interesgarriago izango da. Profil hauek egokiak izan daitezke hasteko, beti ere, geroago jarraitzeari utz diezazkiekezu!",
|
||||
"onboarding.follows.title": "Mastodonen pil-pilean",
|
||||
"onboarding.profile.discoverable": "Profila aurkitzeko moduan jarri",
|
||||
"onboarding.profile.discoverable_hint": "Mastodon zure profila aurkitzeko moduan duzunean, zure mezuak bilaketa-emaitzetan eta jarraipenetan ager daitezke, eta zure profila antzeko interesa duen jendeari iradoki ahal zaio.",
|
||||
"onboarding.profile.display_name": "Bistaratzeko izena",
|
||||
"onboarding.profile.display_name_hint": "Zure izena edo ezizena…",
|
||||
"onboarding.profile.lead": "Geroagoago bete daiteke konfigurazioan, non pertsonalizatzeko aukera gehiago dauden.",
|
||||
"onboarding.profile.note": "Biografia",
|
||||
"onboarding.profile.note_hint": "Beste pertsona batzuk @aipa ditzakezu edo #traolak erabili…",
|
||||
"onboarding.profile.save_and_continue": "Gorde eta jarraitu",
|
||||
"onboarding.profile.title": "Profilaren konfigurazioa",
|
||||
"onboarding.profile.upload_avatar": "Igo profilaren irudia",
|
||||
"onboarding.profile.upload_header": "Igo profilaren goiburua",
|
||||
"onboarding.share.lead": "Esan jendeari nola aurki zaitzaketen Mastodonen!",
|
||||
"onboarding.share.message": "{username} naiz #Mastodon-en! Jarrai nazazu hemen: {url}",
|
||||
"onboarding.share.next_steps": "Hurrengo urrats posibleak:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Zerrendatu gabea",
|
||||
"privacy_policy.last_updated": "Azkenengo eguneraketa {date}",
|
||||
"privacy_policy.title": "Pribatutasun politika",
|
||||
"recommended": "Gomendatua",
|
||||
"refresh": "Berritu",
|
||||
"regeneration_indicator.label": "Kargatzen…",
|
||||
"regeneration_indicator.sublabel": "Zure hasiera-jarioa prestatzen ari da!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "{x}-(r)ekin bat datozen argitalpenak",
|
||||
"search.search_or_paste": "Bilatu edo itsatsi URLa",
|
||||
"search_popout.full_text_search_disabled_message": "{domain}-en ez dago eskuragarri.",
|
||||
"search_popout.full_text_search_logged_out_message": "Soilik erabilgarri saioa hastean.",
|
||||
"search_popout.language_code": "ISO hizkuntza-kodea",
|
||||
"search_popout.options": "Bilaketaren aukerak",
|
||||
"search_popout.quick_actions": "Ekintza azkarrak",
|
||||
|
|
|
@ -390,7 +390,7 @@
|
|||
"lists.search": "جستوجو بین کسانی که پیگرفتهاید",
|
||||
"lists.subheading": "سیاهههایتان",
|
||||
"load_pending": "{count, plural, one {# مورد جدید} other {# مورد جدید}}",
|
||||
"loading_indicator.label": "بار کردن…",
|
||||
"loading_indicator.label": "در حال بارگذاری…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {نهفتن تصویر} other {نهفتن تصاویر}}",
|
||||
"moved_to_account_banner.text": "حسابتان {disabledAccount} اکنون از کار افتاده؛ چرا که به {movedToAccount} منتقل شدید.",
|
||||
"mute_modal.duration": "مدت زمان",
|
||||
|
@ -479,6 +479,13 @@
|
|||
"onboarding.follows.empty": "متأسفانه هماکنون نتیجهای قابل نمایش نیست. میتوانید استفاده از جستوجو یا مرور صفحهٔ کاوش را برای یافتن افرادی برای پیگیری آزموده یا دوباره تلاش کنید.",
|
||||
"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.profile.discoverable": "نمایه خود را قابل نمایش کنید",
|
||||
"onboarding.profile.display_name": "نام نمایشی",
|
||||
"onboarding.profile.display_name_hint": "نام کامل یا نام باحالتان…",
|
||||
"onboarding.profile.note": "درباره شما",
|
||||
"onboarding.profile.note_hint": "میتوانید افراد دیگر را @نامبردن یا #برچسب بزنید…",
|
||||
"onboarding.profile.save_and_continue": "ذخیره کن و ادامه بده",
|
||||
"onboarding.profile.title": "تنظیم نمایه",
|
||||
"onboarding.share.lead": "بگذارید افراد بدانند چگونه میتوانند در ماستادون بیابندتان!",
|
||||
"onboarding.share.message": "من {username} روی #ماستودون هستم! مرا در {url} پیبگیرید",
|
||||
"onboarding.share.next_steps": "گامهای ممکن بعدی:",
|
||||
|
@ -522,6 +529,7 @@
|
|||
"privacy.unlisted.short": "فهرست نشده",
|
||||
"privacy_policy.last_updated": "آخرین بهروز رسانی در {date}",
|
||||
"privacy_policy.title": "سیاست محرمانگی",
|
||||
"recommended": "پیشنهادشده",
|
||||
"refresh": "نوسازی",
|
||||
"regeneration_indicator.label": "در حال بار شدن…",
|
||||
"regeneration_indicator.sublabel": "خوراک خانگیتان دارد آماده میشود!",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Estetty",
|
||||
"account.browse_more_on_origin_server": "Selaile lisää alkuperäisellä palvelimella",
|
||||
"account.cancel_follow_request": "Peruuta seurantapyyntö",
|
||||
"account.copy": "Kopioi profiililinkki",
|
||||
"account.direct": "Mainitse @{name} yksityisesti",
|
||||
"account.disable_notifications": "Lopeta ilmoittamasta minulle, kun @{name} julkaisee",
|
||||
"account.domain_blocked": "Verkkotunnus estetty",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Merkitse luetuksi",
|
||||
"conversation.open": "Näytä keskustelu",
|
||||
"conversation.with": "{names} kanssa",
|
||||
"copy_icon_button.copied": "Kopioitiin leikepöydälle",
|
||||
"copypaste.copied": "Kopioitu",
|
||||
"copypaste.copy_to_clipboard": "Kopioi leikepöydälle",
|
||||
"directory.federated": "Koko tunnettu fediversumi",
|
||||
|
@ -390,7 +392,7 @@
|
|||
"lists.search": "Etsi seuraamistasi henkilöistä",
|
||||
"lists.subheading": "Omat listasi",
|
||||
"load_pending": "{count, plural, one {# uusi kohde} other {# uutta kohdetta}}",
|
||||
"loading_indicator.label": "Ladataan...",
|
||||
"loading_indicator.label": "Ladataan…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Piilota kuva} other {Piilota kuvat}}",
|
||||
"moved_to_account_banner.text": "Tilisi {disabledAccount} on tällä hetkellä poissa käytöstä, koska teit siirron tiliin {movedToAccount}.",
|
||||
"mute_modal.duration": "Kesto",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Valitettavasti tuloksia ei voida näyttää juuri nyt. Voit kokeilla hakua tai selata tutustumissivua löytääksesi seurattavaa tai yrittää myöhemmin uudelleen.",
|
||||
"onboarding.follows.lead": "Kokoat oman kotisyötteesi itse. Mitä enemmän ihmisiä seuraat, sitä aktiivisempi ja kiinnostavampi syöte on. Nämä profiilit voivat olla alkuun hyvä lähtökohta — voit aina lopettaa niiden seuraamisen myöhemmin!",
|
||||
"onboarding.follows.title": "Mukauta kotisyötettäsi",
|
||||
"onboarding.profile.discoverable": "Aseta profiilini löydettäväksi",
|
||||
"onboarding.profile.discoverable_hint": "Kun olet määrittänyt itsesi löydettäväksi Mastodonista, julkaisusi voivat näkyä hakutuloksissa ja suosituissa kohteissa ja profiiliasi voidaan ehdottaa käyttäjille, jotka ovat kiinnostuneet samoista aiheista kuin sinä.",
|
||||
"onboarding.profile.display_name": "Näyttönimi",
|
||||
"onboarding.profile.display_name_hint": "Koko nimesi tai lempinimesi…",
|
||||
"onboarding.profile.lead": "Voit viimeistellä tämän milloin tahansa asetuksista, jotka tarjoavat vielä enemmän mukautusvalintoja.",
|
||||
"onboarding.profile.note": "Elämäkerta",
|
||||
"onboarding.profile.note_hint": "Voit @mainita muita käyttäjiä tai #aihetunnisteita…",
|
||||
"onboarding.profile.save_and_continue": "Tallenna ja jatka",
|
||||
"onboarding.profile.title": "Profiilin määritys",
|
||||
"onboarding.profile.upload_avatar": "Lataa profiilikuva",
|
||||
"onboarding.profile.upload_header": "Lataa profiilin otsakekuva",
|
||||
"onboarding.share.lead": "Kerro ihmisille, kuinka he voivat löytää sinut Mastodonista!",
|
||||
"onboarding.share.message": "Olen {username} #Mastodonissa! Seuraa minua osoitteessa {url}",
|
||||
"onboarding.share.next_steps": "Mahdolliset seuraavat vaiheet:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Listaamaton",
|
||||
"privacy_policy.last_updated": "Viimeksi päivitetty {date}",
|
||||
"privacy_policy.title": "Tietosuojakäytäntö",
|
||||
"recommended": "Suositeltu",
|
||||
"refresh": "Päivitä",
|
||||
"regeneration_indicator.label": "Ladataan…",
|
||||
"regeneration_indicator.sublabel": "Kotisyötettäsi valmistellaan!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Julkaisut haulla {x}",
|
||||
"search.search_or_paste": "Hae tai liitä URL-osoite",
|
||||
"search_popout.full_text_search_disabled_message": "Ei saatavilla palvelimella {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Saatavilla vain sisäänkirjautuneena.",
|
||||
"search_popout.language_code": "ISO-kielikoodi",
|
||||
"search_popout.options": "Hakuvalinnat",
|
||||
"search_popout.quick_actions": "Pikatoiminnot",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Bannað/ur",
|
||||
"account.browse_more_on_origin_server": "Kaga meira á upprunaligu vangamyndina",
|
||||
"account.cancel_follow_request": "Strika fylgjaraumbøn",
|
||||
"account.copy": "Avrita leinki til vangan",
|
||||
"account.direct": "Umrøð @{name} privat",
|
||||
"account.disable_notifications": "Ikki boða mær frá, tá @{name} skrivar",
|
||||
"account.domain_blocked": "Økisnavn bannað",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Merk sum lisið",
|
||||
"conversation.open": "Vís samrøðu",
|
||||
"conversation.with": "Við {names}",
|
||||
"copy_icon_button.copied": "Avritað til setiborðið",
|
||||
"copypaste.copied": "Avritað",
|
||||
"copypaste.copy_to_clipboard": "Avrita til setiborðið",
|
||||
"directory.federated": "Frá tí kenda fediversinum",
|
||||
|
@ -390,7 +392,6 @@
|
|||
"lists.search": "Leita millum fólk, sum tú fylgir",
|
||||
"lists.subheading": "Tínir listar",
|
||||
"load_pending": "{count, plural, one {# nýtt evni} other {# nýggj evni}}",
|
||||
"loading_indicator.label": "Innlesi...",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Fjal mynd} other {Fjal myndir}}",
|
||||
"moved_to_account_banner.text": "Konta tín {disabledAccount} er í løtuni óvirkin, tí tú flutti til {movedToAccount}.",
|
||||
"mute_modal.duration": "Tíðarbil",
|
||||
|
@ -479,6 +480,8 @@
|
|||
"onboarding.follows.empty": "Tíverri kunnu eingi úrslit vísast beint nú. Tú kanst royna at brúka leiting ella at kaga gjøgnum Rannsaka síðuna fyri at finna fólk at fylgja - ella royna aftur seinni.",
|
||||
"onboarding.follows.lead": "Tú snikkar sjálv/ur tína heimarás til. Jú fleiri fólk, tú fylgir, jú virknari og áhugaverdari verður tað. Hesir vangar kunnu vera ein góð byrjan — tú kanst altíð gevast at fylgja teimum seinni!",
|
||||
"onboarding.follows.title": "Vælumtókt á Mastodon",
|
||||
"onboarding.profile.discoverable": "Ger tað møguligt hjá øðrum at finna vangan hjá mær",
|
||||
"onboarding.profile.discoverable_hint": "Tá tú játtar at onnur skulu kunna finna teg á Mastodon, so kann henda, at postar tínir síggjast í leitiúrslitum og rákum, og vangin hjá tær kann vera skotin upp fyri fólki við áhugamálum sum minna um tíni.",
|
||||
"onboarding.share.lead": "Lat fólk vita, hvussu tey kunnu finna teg á Mastodon!",
|
||||
"onboarding.share.message": "Eg eri {username} á #Mastodon! Kom og fylg mær á {url}",
|
||||
"onboarding.share.next_steps": "Møgulig næstu stig:",
|
||||
|
@ -522,6 +525,7 @@
|
|||
"privacy.unlisted.short": "Ikki listað",
|
||||
"privacy_policy.last_updated": "Seinast dagført {date}",
|
||||
"privacy_policy.title": "Privatlívspolitikkur",
|
||||
"recommended": "Viðmælt",
|
||||
"refresh": "Endurles",
|
||||
"regeneration_indicator.label": "Innlesur…",
|
||||
"regeneration_indicator.sublabel": "Tín heimarás verður gjørd klár!",
|
||||
|
@ -592,6 +596,7 @@
|
|||
"search.quick_action.status_search": "Postar, ið samsvara {x}",
|
||||
"search.search_or_paste": "Leita ella set URL inn",
|
||||
"search_popout.full_text_search_disabled_message": "Ikki tøkt á {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Einans tøkt um innritað er.",
|
||||
"search_popout.language_code": "ISO málkoda",
|
||||
"search_popout.options": "Leitimøguleikar",
|
||||
"search_popout.quick_actions": "Skjótar atgerðir",
|
||||
|
|
|
@ -21,6 +21,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.copy": "Copier le lien vers le profil",
|
||||
"account.direct": "Mention privée @{name}",
|
||||
"account.disable_notifications": "Ne plus me notifier quand @{name} publie",
|
||||
"account.domain_blocked": "Domaine bloqué",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Marquer comme lu",
|
||||
"conversation.open": "Afficher cette conversation",
|
||||
"conversation.with": "Avec {names}",
|
||||
"copy_icon_button.copied": "Copié dans le presse-papier",
|
||||
"copypaste.copied": "Copié",
|
||||
"copypaste.copy_to_clipboard": "Copier dans le presse-papiers",
|
||||
"directory.federated": "D'un fediverse connu",
|
||||
|
@ -308,7 +310,7 @@
|
|||
"home.column_settings.basic": "Basique",
|
||||
"home.column_settings.show_reblogs": "Afficher boosts",
|
||||
"home.column_settings.show_replies": "Afficher réponses",
|
||||
"home.explore_prompt.body": "Votre fil d'actualité aura un mélange de messages depuis les hashtags que vous avez choisi de suivre, les personnes que vous avez choisi de suivre, et les messages qu'ils boostent. Si ça vous semble trop calme à votre goût, n’hésitez pas à :",
|
||||
"home.explore_prompt.body": "Votre fil d'actualité aura un mélange de messages depuis les hashtags que vous avez choisi de suivre, les personnes que vous avez choisi de suivre, et les messages qu'elles boostent. Si ça vous semble trop calme à votre goût, n’hésitez pas à :",
|
||||
"home.explore_prompt.title": "C'est votre page d'accueil dans Mastodon.",
|
||||
"home.hide_announcements": "Masquer les annonces",
|
||||
"home.pending_critical_update.body": "Veuillez mettre à jour votre serveur Mastodon dès que possible !",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Malheureusement, aucun résultat ne peut être affiché pour le moment. Vous pouvez essayer de rechercher ou de parcourir la page \"Explorer\" pour trouver des personnes à suivre, ou réessayer plus tard.",
|
||||
"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.profile.discoverable": "Rendre mon profil découvrable",
|
||||
"onboarding.profile.discoverable_hint": "Lorsque vous acceptez d'être découvert sur Mastodon, vos messages peuvent apparaître dans les résultats de recherche et les tendances, et votre profil peut être suggéré à des personnes ayant des intérêts similaires aux vôtres.",
|
||||
"onboarding.profile.display_name": "Nom affiché",
|
||||
"onboarding.profile.display_name_hint": "Votre nom complet ou votre nom rigolo…",
|
||||
"onboarding.profile.lead": "Vous pouvez toujours compléter cela plus tard dans les paramètres. Vous y trouverez encore plus d'options de personnalisation.",
|
||||
"onboarding.profile.note": "Biographie",
|
||||
"onboarding.profile.note_hint": "Vous pouvez @mentionner d'autres personnes ou #hashtags…",
|
||||
"onboarding.profile.save_and_continue": "Enregistrer et continuer",
|
||||
"onboarding.profile.title": "Configuration du profil",
|
||||
"onboarding.profile.upload_avatar": "Importer une photo de profil",
|
||||
"onboarding.profile.upload_header": "Importer un entête de profil",
|
||||
"onboarding.share.lead": "Faites savoir aux gens comment vous trouver sur Mastodon!",
|
||||
"onboarding.share.message": "Je suis {username} sur #Mastodon! Suivez-moi sur {url}",
|
||||
"onboarding.share.next_steps": "Étapes suivantes possibles:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Non listé",
|
||||
"privacy_policy.last_updated": "Dernière mise à jour {date}",
|
||||
"privacy_policy.title": "Politique de confidentialité",
|
||||
"recommended": "Recommandé",
|
||||
"refresh": "Actualiser",
|
||||
"regeneration_indicator.label": "Chargement…",
|
||||
"regeneration_indicator.sublabel": "Votre fil d'accueil est en cours de préparation!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Publications correspondant à {x}",
|
||||
"search.search_or_paste": "Rechercher ou saisir un URL",
|
||||
"search_popout.full_text_search_disabled_message": "Non disponible sur {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Disponible uniquement lorsque vous êtes connecté.",
|
||||
"search_popout.language_code": "code de langue ISO",
|
||||
"search_popout.options": "Options de recherche",
|
||||
"search_popout.quick_actions": "Actions rapides",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Bloqué·e",
|
||||
"account.browse_more_on_origin_server": "Parcourir davantage sur le profil original",
|
||||
"account.cancel_follow_request": "Annuler le suivi",
|
||||
"account.copy": "Copier le lien vers le profil",
|
||||
"account.direct": "Mention privée @{name}",
|
||||
"account.disable_notifications": "Ne plus me notifier quand @{name} publie quelque chose",
|
||||
"account.domain_blocked": "Domaine bloqué",
|
||||
|
@ -107,7 +108,7 @@
|
|||
"closed_registrations_modal.preamble": "Mastodon est décentralisé : peu importe où vous créez votre compte, vous serez en mesure de suivre et d'interagir avec quiconque sur ce serveur. Vous pouvez même l'héberger !",
|
||||
"closed_registrations_modal.title": "Inscription sur Mastodon",
|
||||
"column.about": "À propos",
|
||||
"column.blocks": "Comptes bloqués",
|
||||
"column.blocks": "Utilisateurs bloqués",
|
||||
"column.bookmarks": "Marque-pages",
|
||||
"column.community": "Fil public local",
|
||||
"column.direct": "Mentions privées",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Marquer comme lu",
|
||||
"conversation.open": "Afficher la conversation",
|
||||
"conversation.with": "Avec {names}",
|
||||
"copy_icon_button.copied": "Copié dans le presse-papier",
|
||||
"copypaste.copied": "Copié",
|
||||
"copypaste.copy_to_clipboard": "Copier dans le presse-papiers",
|
||||
"directory.federated": "Du fédiverse connu",
|
||||
|
@ -308,7 +310,7 @@
|
|||
"home.column_settings.basic": "Basique",
|
||||
"home.column_settings.show_reblogs": "Afficher les partages",
|
||||
"home.column_settings.show_replies": "Afficher les réponses",
|
||||
"home.explore_prompt.body": "Votre fil d'actualité aura un mélange de messages depuis les hashtags que vous avez choisi de suivre, les personnes que vous avez choisi de suivre, et les messages qu'ils boostent. Si ça vous semble trop calme à votre goût, n’hésitez pas à :",
|
||||
"home.explore_prompt.body": "Votre fil d'actualité aura un mélange de messages depuis les hashtags que vous avez choisi de suivre, les personnes que vous avez choisi de suivre, et les messages qu'elles boostent. Si ça vous semble trop calme à votre goût, n’hésitez pas à :",
|
||||
"home.explore_prompt.title": "C'est votre page d'accueil dans Mastodon.",
|
||||
"home.hide_announcements": "Masquer les annonces",
|
||||
"home.pending_critical_update.body": "Veuillez mettre à jour votre serveur Mastodon dès que possible !",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Malheureusement, aucun résultat ne peut être affiché pour le moment. Vous pouvez essayer d'utiliser la recherche ou parcourir la page de découverte pour trouver des personnes à suivre, ou réessayez plus tard.",
|
||||
"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": "Personnaliser votre flux principal",
|
||||
"onboarding.profile.discoverable": "Rendre mon profil découvrable",
|
||||
"onboarding.profile.discoverable_hint": "Lorsque vous acceptez d'être découvert sur Mastodon, vos messages peuvent apparaître dans les résultats de recherche et les tendances, et votre profil peut être suggéré à des personnes ayant des intérêts similaires aux vôtres.",
|
||||
"onboarding.profile.display_name": "Nom affiché",
|
||||
"onboarding.profile.display_name_hint": "Votre nom complet ou votre nom rigolo…",
|
||||
"onboarding.profile.lead": "Vous pouvez toujours compléter cela plus tard dans les paramètres. Vous y trouverez encore plus d'options de personnalisation.",
|
||||
"onboarding.profile.note": "Biographie",
|
||||
"onboarding.profile.note_hint": "Vous pouvez @mentionner d'autres personnes ou #hashtags…",
|
||||
"onboarding.profile.save_and_continue": "Enregistrer et continuer",
|
||||
"onboarding.profile.title": "Configuration du profil",
|
||||
"onboarding.profile.upload_avatar": "Importer une photo de profil",
|
||||
"onboarding.profile.upload_header": "Importer un entête de profil",
|
||||
"onboarding.share.lead": "Faites savoir aux gens comment ils peuvent vous trouver sur Mastodon!",
|
||||
"onboarding.share.message": "Je suis {username} sur #Mastodon ! Suivez-moi sur {url}",
|
||||
"onboarding.share.next_steps": "Étapes suivantes possibles :",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Non listé",
|
||||
"privacy_policy.last_updated": "Dernière mise à jour {date}",
|
||||
"privacy_policy.title": "Politique de confidentialité",
|
||||
"recommended": "Recommandé",
|
||||
"refresh": "Actualiser",
|
||||
"regeneration_indicator.label": "Chargement…",
|
||||
"regeneration_indicator.sublabel": "Votre fil principal est en cours de préparation !",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Publications correspondant à {x}",
|
||||
"search.search_or_paste": "Rechercher ou saisir une URL",
|
||||
"search_popout.full_text_search_disabled_message": "Non disponible sur {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Disponible uniquement lorsque vous êtes connecté.",
|
||||
"search_popout.language_code": "code de langue ISO",
|
||||
"search_popout.options": "Options de recherche",
|
||||
"search_popout.quick_actions": "Actions rapides",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Blokkearre",
|
||||
"account.browse_more_on_origin_server": "Mear op it orizjinele profyl besjen",
|
||||
"account.cancel_follow_request": "Folchfersyk annulearje",
|
||||
"account.copy": "Keppeling nei profyl kopiearje",
|
||||
"account.direct": "Privee fermelde @{name}",
|
||||
"account.disable_notifications": "Jou gjin melding mear wannear @{name} in berjocht pleatst",
|
||||
"account.domain_blocked": "Domein blokkearre",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "As lêzen markearje",
|
||||
"conversation.open": "Petear toane",
|
||||
"conversation.with": "Mei {names}",
|
||||
"copy_icon_button.copied": "Nei klamboerd kopiearre",
|
||||
"copypaste.copied": "Kopiearre",
|
||||
"copypaste.copy_to_clipboard": "Nei klamboerd kopiearje",
|
||||
"directory.federated": "Fediverse (wat bekend is)",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Spitigernôch kinne op dit stuit gjin resultaten toand wurde. Jo kinne probearje te sykjen of te blêdzjen troch de ferkenningsside om minsken te finen dy’t jo folgje kinne, of probearje it letter opnij.",
|
||||
"onboarding.follows.lead": "Jo beheare jo eigen startside. Hoe mear minsken jo folgje, hoe aktiver en ynteressanter it wêze sil. Dizze profilen kinne in goed startpunt wêze, jo kinne se letter altyd ûntfolgje!",
|
||||
"onboarding.follows.title": "Populêr op Mastodon",
|
||||
"onboarding.profile.discoverable": "Meitsje myn profyl te finen",
|
||||
"onboarding.profile.discoverable_hint": "Wannear’t jo akkoard gean mei it te finen wêzen op Mastodon, ferskine jo berjochten yn sykresultaten en kinne se trending wurde, en jo profyl kin oan oare minsken oanrekommandearre wurde wannear’t se fergelykbere ynteressen hawwe.",
|
||||
"onboarding.profile.display_name": "Werjeftenamme",
|
||||
"onboarding.profile.display_name_hint": "Jo folsleine namme of in aardige bynamme…",
|
||||
"onboarding.profile.lead": "Jo kinne dit letter altyd oanfolje yn de ynstellingen, wêr’t noch mear oanpassingsopsjes beskikber binne.",
|
||||
"onboarding.profile.note": "Biografy",
|
||||
"onboarding.profile.note_hint": "Jo kinne oare minsken @fermelde of #hashtags brûke…",
|
||||
"onboarding.profile.save_and_continue": "Bewarje en trochgean",
|
||||
"onboarding.profile.title": "Profyl ynstelle",
|
||||
"onboarding.profile.upload_avatar": "Profylfoto oplade",
|
||||
"onboarding.profile.upload_header": "Omslachfoto foar profyl oplade",
|
||||
"onboarding.share.lead": "Lit minsken witte hoe’t se jo fine kinne op Mastodon!",
|
||||
"onboarding.share.message": "Ik bin {username} op #Mastodon! Folgje my op {url}",
|
||||
"onboarding.share.next_steps": "Mooglike folgjende stappen:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Minder iepenbier",
|
||||
"privacy_policy.last_updated": "Lêst bywurke op {date}",
|
||||
"privacy_policy.title": "Privacybelied",
|
||||
"recommended": "Oanrekommandearre",
|
||||
"refresh": "Ferfarskje",
|
||||
"regeneration_indicator.label": "Lade…",
|
||||
"regeneration_indicator.sublabel": "Jo starttiidline wurdt oanmakke!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Berjochten dy’t oerienkomme mei {x}",
|
||||
"search.search_or_paste": "Sykje of fier URL yn",
|
||||
"search_popout.full_text_search_disabled_message": "Net beskikber op {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Allinnich beskikber as jo oanmeld binne.",
|
||||
"search_popout.language_code": "ISO-taalkoade",
|
||||
"search_popout.options": "Sykopsjes",
|
||||
"search_popout.quick_actions": "Flugge aksjes",
|
||||
|
|
|
@ -316,7 +316,6 @@
|
|||
"lists.replies_policy.title": "Taispeáin freagraí:",
|
||||
"lists.search": "Cuardaigh i measc daoine atá á leanúint agat",
|
||||
"lists.subheading": "Do liostaí",
|
||||
"loading_indicator.label": "Ag lódáil...",
|
||||
"mute_modal.duration": "Tréimhse",
|
||||
"mute_modal.hide_notifications": "Cuir póstalacha ón t-úsáideoir seo i bhfolach?",
|
||||
"mute_modal.indefinite": "Gan téarma",
|
||||
|
|
|
@ -389,7 +389,6 @@
|
|||
"lists.search": "Lorg am measg nan daoine a leanas tu",
|
||||
"lists.subheading": "Na liostaichean agad",
|
||||
"load_pending": "{count, plural, one {# nì ùr} two {# nì ùr} few {# nithean ùra} other {# nì ùr}}",
|
||||
"loading_indicator.label": "’Ga luchdadh…",
|
||||
"media_gallery.toggle_visible": "{number, plural, 1 {Falaich an dealbh} one {Falaich na dealbhan} two {Falaich na dealbhan} few {Falaich na dealbhan} other {Falaich na dealbhan}}",
|
||||
"moved_to_account_banner.text": "Tha an cunntas {disabledAccount} agad à comas on a rinn thu imrich gu {movedToAccount}.",
|
||||
"mute_modal.duration": "Faide",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Bloqueada",
|
||||
"account.browse_more_on_origin_server": "Busca máis no perfil orixinal",
|
||||
"account.cancel_follow_request": "Cancelar a solicitude de seguimento",
|
||||
"account.copy": "Copiar ligazón ao perfil",
|
||||
"account.direct": "Mencionar de xeito privado a @{name}",
|
||||
"account.disable_notifications": "Deixar de notificarme cando @{name} publica",
|
||||
"account.domain_blocked": "Dominio agochado",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Marcar como lido",
|
||||
"conversation.open": "Ver conversa",
|
||||
"conversation.with": "Con {names}",
|
||||
"copy_icon_button.copied": "Copiada ao portapapeis",
|
||||
"copypaste.copied": "Copiado",
|
||||
"copypaste.copy_to_clipboard": "Copiar ao portapapeis",
|
||||
"directory.federated": "Do fediverso coñecido",
|
||||
|
@ -390,7 +392,7 @@
|
|||
"lists.search": "Procurar entre as persoas que segues",
|
||||
"lists.subheading": "As túas listaxes",
|
||||
"load_pending": "{count, plural, one {# novo elemento} other {# novos elementos}}",
|
||||
"loading_indicator.label": "Estase a cargar...",
|
||||
"loading_indicator.label": "Estase a cargar…",
|
||||
"media_gallery.toggle_visible": "Agochar {number, plural, one {imaxe} other {imaxes}}",
|
||||
"moved_to_account_banner.text": "A túa conta {disabledAccount} está actualmente desactivada porque movéchela a {movedToAccount}.",
|
||||
"mute_modal.duration": "Duración",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Desgraciadamente agora mesmo non hai nada que mostrar. Podes intentalo coa busca ou na páxina descubrir para atopar persoas ás que seguir, ou intentalo máis tarde.",
|
||||
"onboarding.follows.lead": "Podes facer que a túa cronoloxía de inicio sexa como ti a queres. Canta máis xente sigas máis interesante será. Estes perfís poderían axudarche a comezar —sempre poderás deixar de seguilos despois!",
|
||||
"onboarding.follows.title": "Popular en Mastodon",
|
||||
"onboarding.profile.discoverable": "Que o meu perfil se poida atopar",
|
||||
"onboarding.profile.discoverable_hint": "Cando elixes que poidan atoparte en Mastodon as túas publicacións aparecerán nos resultados das buscas e nos temas en voga, e o teu perfil podería ser suxerido para seguimento a persoas con intereses semellantes aos teus.",
|
||||
"onboarding.profile.display_name": "Nome público",
|
||||
"onboarding.profile.display_name_hint": "O teu nome completo ou un nome divertido…",
|
||||
"onboarding.profile.lead": "Sempre poderás incluír esta información mais tarde nos axustes, onde terás máis opcións dispoñibles.",
|
||||
"onboarding.profile.note": "Acerca de ti",
|
||||
"onboarding.profile.note_hint": "Podes @mencionar a outras persoas ou usar #cancelos…",
|
||||
"onboarding.profile.save_and_continue": "Gardar e continuar",
|
||||
"onboarding.profile.title": "Configuración do perfil",
|
||||
"onboarding.profile.upload_avatar": "Subir imaxe do perfil",
|
||||
"onboarding.profile.upload_header": "Subir cabeceira para o perfil",
|
||||
"onboarding.share.lead": "Fai que as persoas saiban como atoparte en Mastodon!",
|
||||
"onboarding.share.message": "Son {username} en #Mastodon! Ségueme en {url}",
|
||||
"onboarding.share.next_steps": "Seguintes pasos:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Sen listar",
|
||||
"privacy_policy.last_updated": "Actualizado por última vez no {date}",
|
||||
"privacy_policy.title": "Política de Privacidade",
|
||||
"recommended": "Aconsellable",
|
||||
"refresh": "Actualizar",
|
||||
"regeneration_indicator.label": "Estase a cargar…",
|
||||
"regeneration_indicator.sublabel": "Estase a preparar a túa cronoloxía de inicio!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Publicacións coincidentes {x}",
|
||||
"search.search_or_paste": "Busca ou insire URL",
|
||||
"search_popout.full_text_search_disabled_message": "Non está dispoñible en {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Só dispoñible ao iniciar sesión.",
|
||||
"search_popout.language_code": "Código ISO do idioma",
|
||||
"search_popout.options": "Opcións de busca",
|
||||
"search_popout.quick_actions": "Accións rápidas",
|
||||
|
@ -672,7 +687,7 @@
|
|||
"status.translated_from_with": "Traducido do {lang} usando {provider}",
|
||||
"status.uncached_media_warning": "A vista previa non está dispoñíble",
|
||||
"status.unmute_conversation": "Deixar de silenciar conversa",
|
||||
"status.unpin": "Desafixar do perfil",
|
||||
"status.unpin": "Non fixar no perfil",
|
||||
"subscribed_languages.lead": "Ao facer cambios só as publicacións nos idiomas seleccionados aparecerán nas túas cronoloxías. Non elixas ningún para poder ver publicacións en tódolos idiomas.",
|
||||
"subscribed_languages.save": "Gardar cambios",
|
||||
"subscribed_languages.target": "Cambiar a subscrición a idiomas para {target}",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "לחסום",
|
||||
"account.browse_more_on_origin_server": "ראה יותר בפרופיל המקורי",
|
||||
"account.cancel_follow_request": "משיכת בקשת מעקב",
|
||||
"account.copy": "להעתיק קישור לפרופיל",
|
||||
"account.direct": "הודעה פרטית אל @{name}",
|
||||
"account.disable_notifications": "הפסק לשלוח לי התראות כש@{name} מפרסמים",
|
||||
"account.domain_blocked": "הדומיין חסום",
|
||||
|
@ -30,7 +31,7 @@
|
|||
"account.featured_tags.last_status_at": "חצרוץ אחרון בתאריך {date}",
|
||||
"account.featured_tags.last_status_never": "אין חצרוצים",
|
||||
"account.featured_tags.title": "התגיות המועדפות של {name}",
|
||||
"account.follow": "עקוב",
|
||||
"account.follow": "לעקוב",
|
||||
"account.followers": "עוקבים",
|
||||
"account.followers.empty": "אף אחד לא עוקב אחר המשתמש הזה עדיין.",
|
||||
"account.followers_counter": "{count, plural,one {עוקב אחד} other {{counter} עוקבים}}",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "סמן כנקרא",
|
||||
"conversation.open": "צפו בשיחה",
|
||||
"conversation.with": "עם {names}",
|
||||
"copy_icon_button.copied": "הועתק ללוח",
|
||||
"copypaste.copied": "הועתק",
|
||||
"copypaste.copy_to_clipboard": "העתקה ללוח הגזירים",
|
||||
"directory.federated": "מהפדרציה הידועה",
|
||||
|
@ -300,15 +302,15 @@
|
|||
"hashtag.counter_by_accounts": "{count, plural,one{{count} משתתף.ת}other{{count} משתתפיםות}}",
|
||||
"hashtag.counter_by_uses": "{count, plural, one {הודעה אחת} two {הודעותיים} many {{count} הודעות} other {{count} הודעות}}",
|
||||
"hashtag.counter_by_uses_today": "{count, plural, one {הודעה אחת} two {הודעותיים} many {{count} הודעות} other {{count} הודעות}} היום",
|
||||
"hashtag.follow": "מעקב אחר תגית",
|
||||
"hashtag.unfollow": "ביטול מעקב אחר תגית",
|
||||
"hashtag.follow": "לעקוב אחרי תגית",
|
||||
"hashtag.unfollow": "להפסיק לעקוב אחרי תגית",
|
||||
"hashtags.and_other": "…{count, plural,other {ועוד #}}",
|
||||
"home.actions.go_to_explore": "הצגת מגמות",
|
||||
"home.actions.go_to_suggestions": "למצוא א.נשים לעקוב אחריהן.ם",
|
||||
"home.column_settings.basic": "למתחילים",
|
||||
"home.column_settings.show_reblogs": "הצגת הדהודים",
|
||||
"home.column_settings.show_replies": "הצגת תגובות",
|
||||
"home.explore_prompt.body": "זרם הבית שלך יכיל תערובת של הודעות מהתגיות והאנשים שבחרת לעקיבה, וההודעות שהנעקבים בוחרים להדהד. אם זה נראה שקט מדי כרגע אז מה לגבי:",
|
||||
"home.explore_prompt.body": "פיד הבית שלך יכיל תערובת של הודעות מהתגיות והאנשים שבחרת למעקב, וההודעות שהנעקבים בוחרים להדהד. אם זה נראה שקט מדי כרגע אז מה לגבי:",
|
||||
"home.explore_prompt.title": "זהו בסיס הבית שלך בתוך מסטודון.",
|
||||
"home.hide_announcements": "הסתר הכרזות",
|
||||
"home.pending_critical_update.body": "יש לעדכן את תוכנת מסטודון בהקדם האפשרי!",
|
||||
|
@ -390,7 +392,7 @@
|
|||
"lists.search": "חיפוש בין אנשים שאני עוקב\\ת אחריהם",
|
||||
"lists.subheading": "הרשימות שלך",
|
||||
"load_pending": "{count, plural, one {# פריט חדש} other {# פריטים חדשים}}",
|
||||
"loading_indicator.label": "טוען...",
|
||||
"loading_indicator.label": "בטעינה…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {להסתיר תמונה} two {להסתיר תמונותיים} many {להסתיר תמונות} other {להסתיר תמונות}}",
|
||||
"moved_to_account_banner.text": "חשבונך {disabledAccount} אינו פעיל כרגע עקב מעבר ל{movedToAccount}.",
|
||||
"mute_modal.duration": "משך הזמן",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "למצער, תוצאות לחיפושך אינן בנמצא. ניתן להשתמש בחיפוש או בדף החקירות לשם מציאת אנשים ולעקבם. אפשר גם לנסות שוב אחר כך.",
|
||||
"onboarding.follows.lead": "אתם אוצרים את הזרם הבייתי שלכם. ככל שתעקבו אחרי יותר אנשים, הוא יהיה עשיר ופעיל יותר. הנה כמה פרופילים להתחיל בהם - תמיד ניתן להפסיק מעקב אחריהם בהמשך!",
|
||||
"onboarding.follows.title": "פופולארי על מסטודון",
|
||||
"onboarding.profile.discoverable": "כלול את הפרופיל שלי בעמודת התגליות",
|
||||
"onboarding.profile.discoverable_hint": "כשתבחרו להכלל ב\"תגליות\" על מסטודון, ההודעות שלכם עשויות להופיע בתוצאות חיפוש ועמודות \"נושאים חמים\", והפרופיל יוצע לאחרים עם תחומי עניין משותפים לכם.",
|
||||
"onboarding.profile.display_name": "שם להצגה",
|
||||
"onboarding.profile.display_name_hint": "שמך המלא או כינוי הכיף שלך…",
|
||||
"onboarding.profile.lead": "תמיד ניתן להשלים זאת אחר כך בהגדרות, שם יש אפילו עוד אפשרויות להתאמה אישית.",
|
||||
"onboarding.profile.note": "אודות",
|
||||
"onboarding.profile.note_hint": "ניתן @לאזכר משתמשים אחרים או #תגיות…",
|
||||
"onboarding.profile.save_and_continue": "לשמור ולהמשיך",
|
||||
"onboarding.profile.title": "הגדרת פרופיל",
|
||||
"onboarding.profile.upload_avatar": "העלאת תמונת פרופיל",
|
||||
"onboarding.profile.upload_header": "העלאת כותרת פרופיל",
|
||||
"onboarding.share.lead": "כדאי להודיע לחברים היכן למצוא אותך במסטודון!",
|
||||
"onboarding.share.message": "אני {username} ברשת #מסטודון! בואו לעקוב אחרי בכתובת {url}",
|
||||
"onboarding.share.next_steps": "לאיפה להמשיך מכאן:",
|
||||
|
@ -518,10 +531,11 @@
|
|||
"privacy.private.short": "לעוקבים בלבד",
|
||||
"privacy.public.long": "גלוי לכל",
|
||||
"privacy.public.short": "פומבי",
|
||||
"privacy.unlisted.long": "גלוי לכל, אבל מוסתר מאמצעי גילוי",
|
||||
"privacy.unlisted.long": "גלוי לכל, אבל מוסתר מאמצעי תגלית",
|
||||
"privacy.unlisted.short": "לא רשום (לא לפיד הכללי)",
|
||||
"privacy_policy.last_updated": "עודכן לאחרונה {date}",
|
||||
"privacy_policy.title": "מדיניות פרטיות",
|
||||
"recommended": "מומלץ",
|
||||
"refresh": "רענון",
|
||||
"regeneration_indicator.label": "טוען…",
|
||||
"regeneration_indicator.sublabel": "פיד הבית שלך בהכנה!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "הודעות המכילות {x}",
|
||||
"search.search_or_paste": "חפש או הזן קישור",
|
||||
"search_popout.full_text_search_disabled_message": "בלתי זמין על {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "זמין רק לאחר כניסה לאתר.",
|
||||
"search_popout.language_code": "קוד ISO לשפה",
|
||||
"search_popout.options": "אפשרויות חיפוש",
|
||||
"search_popout.quick_actions": "פעולות זריזות",
|
||||
|
|
|
@ -360,7 +360,6 @@
|
|||
"lists.replies_policy.none": "कोई नहीं",
|
||||
"lists.replies_policy.title": "इसके जवाब दिखाएं:",
|
||||
"lists.subheading": "आपकी सूचियाँ",
|
||||
"loading_indicator.label": "लोड हो रहा है...",
|
||||
"mute_modal.duration": "अवधि",
|
||||
"mute_modal.hide_notifications": "इस सभ्य की ओरसे आनेवाली सूचनाए शांत करे",
|
||||
"mute_modal.indefinite": "अनिश्चितकालीन",
|
||||
|
@ -416,6 +415,8 @@
|
|||
"onboarding.compose.template": "नमस्कार #मस्टोडोन",
|
||||
"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.profile.discoverable": "अपना प्रोफाइल खोजने योग्य बनाएं",
|
||||
"onboarding.profile.discoverable_hint": "जब आप मॅस्टोडॉन पर डिस्कवरेबिलिटी चुनते हैं तो आपके पोस्ट ट्रेंडिंग और सर्च में दिख सकते हैं और आपका प्रोफाइल आपके ही जैसे अकाउंट्स को सुझाया जा सकता है।",
|
||||
"onboarding.share.message": "मैं {username} मॅस्टोडॉन पर हूं! मुझे यहां {url} फॉलो करें",
|
||||
"onboarding.share.next_steps": "आगे कि संभवित विधि",
|
||||
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
|
||||
|
@ -442,6 +443,7 @@
|
|||
"privacy.public.long": "सब को दिखाई देगा",
|
||||
"privacy.public.short": "सार्वजनिक",
|
||||
"privacy.unlisted.short": "अनलिस्टेड",
|
||||
"recommended": "अनुशंसित",
|
||||
"refresh": "रीफ्रेश करें",
|
||||
"regeneration_indicator.label": "लोड हो रहा है...",
|
||||
"relative_time.full.just_now": "अभी-अभी",
|
||||
|
|
|
@ -225,6 +225,7 @@
|
|||
"follow_request.authorize": "Autoriziraj",
|
||||
"follow_request.reject": "Odbij",
|
||||
"footer.about": "O aplikaciji",
|
||||
"footer.directory": "Direktorij profila",
|
||||
"footer.get_app": "Preuzmi aplikaciju",
|
||||
"footer.invite": "Pozovi ljude",
|
||||
"footer.keyboard_shortcuts": "Tipkovni prečaci",
|
||||
|
@ -244,6 +245,7 @@
|
|||
"hashtag.column_settings.tag_toggle": "Uključi dodatne oznake za ovaj stupac",
|
||||
"hashtag.follow": "Prati hashtag",
|
||||
"hashtag.unfollow": "Prestani pratiti hashtag",
|
||||
"home.actions.go_to_explore": "Vidi trendove",
|
||||
"home.column_settings.basic": "Osnovno",
|
||||
"home.column_settings.show_reblogs": "Pokaži boostove",
|
||||
"home.column_settings.show_replies": "Pokaži odgovore",
|
||||
|
@ -306,11 +308,11 @@
|
|||
"lists.replies_policy.none": "Nitko",
|
||||
"lists.search": "Traži među praćenim ljudima",
|
||||
"lists.subheading": "Vaše liste",
|
||||
"loading_indicator.label": "Učitavanje...",
|
||||
"media_gallery.toggle_visible": "Sakrij {number, plural, one {sliku} other {slike}}",
|
||||
"mute_modal.duration": "Trajanje",
|
||||
"mute_modal.hide_notifications": "Sakrij obavijesti ovog korisnika?",
|
||||
"navigation_bar.about": "O aplikaciji",
|
||||
"navigation_bar.advanced_interface": "Otvori u naprednom web sučelju",
|
||||
"navigation_bar.blocks": "Blokirani korisnici",
|
||||
"navigation_bar.community_timeline": "Lokalna vremenska crta",
|
||||
"navigation_bar.compose": "Compose new toot",
|
||||
|
@ -365,6 +367,7 @@
|
|||
"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.profile.upload_avatar": "Učitaj sliku profila",
|
||||
"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.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
|
||||
|
@ -394,6 +397,7 @@
|
|||
"privacy.unlisted.short": "Neprikazano",
|
||||
"privacy_policy.last_updated": "Zadnje ažurirannje {date}",
|
||||
"privacy_policy.title": "Pravila o zaštiti privatnosti",
|
||||
"recommended": "Preporučeno",
|
||||
"refresh": "Osvježi",
|
||||
"regeneration_indicator.label": "Učitavanje…",
|
||||
"regeneration_indicator.sublabel": "Priprema se Vaša početna stranica!",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Letiltva",
|
||||
"account.browse_more_on_origin_server": "További böngészés az eredeti profilon",
|
||||
"account.cancel_follow_request": "Követési kérés visszavonása",
|
||||
"account.copy": "Hivatkozás másolása a profilba",
|
||||
"account.direct": "@{name} személyes említése",
|
||||
"account.disable_notifications": "Ne figyelmeztessen, ha @{name} bejegyzést tesz közzé",
|
||||
"account.domain_blocked": "Letiltott domain",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Megjelölés olvasottként",
|
||||
"conversation.open": "Beszélgetés megtekintése",
|
||||
"conversation.with": "Velük: {names}",
|
||||
"copy_icon_button.copied": "A szöveg a vágólapra másolva",
|
||||
"copypaste.copied": "Másolva",
|
||||
"copypaste.copy_to_clipboard": "Másolás vágólapra",
|
||||
"directory.federated": "Az ismert fediverzumból",
|
||||
|
@ -390,7 +392,7 @@
|
|||
"lists.search": "Keresés a követett személyek között",
|
||||
"lists.subheading": "Saját listák",
|
||||
"load_pending": "{count, plural, one {# új elem} other {# új elem}}",
|
||||
"loading_indicator.label": "Betöltés...",
|
||||
"loading_indicator.label": "Betöltés…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Kép elrejtése} other {Képek elrejtése}}",
|
||||
"moved_to_account_banner.text": "A(z) {disabledAccount} fiókod jelenleg le van tiltva, mert átköltöztél ide: {movedToAccount}.",
|
||||
"mute_modal.duration": "Időtartam",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Sajnos jelenleg nem jeleníthető meg eredmény. Kipróbálhatod a keresést vagy böngészheted a felfedező oldalon a követni kívánt személyeket, vagy próbáld meg később.",
|
||||
"onboarding.follows.lead": "A saját hírfolyamod az elsődleges tapasztalás a Mastodonon. Minél több embert követsz, annál aktívabb és érdekesebb a dolog. Az induláshoz itt van néhány javaslat:",
|
||||
"onboarding.follows.title": "Népszerű a Mastodonon",
|
||||
"onboarding.profile.discoverable": "Saját profil beállítása felfedezhetőként",
|
||||
"onboarding.profile.discoverable_hint": "A Mastodonon a felfedezhetőség választása esetén a saját bejegyzéseid megjelenhetnek a keresési eredmények és a felkapott tartalmak között, valamint a profilod a hozzád hasonló érdeklődési körrel rendelkező embereknél is ajánlásra kerülhet.",
|
||||
"onboarding.profile.display_name": "Megjelenített név",
|
||||
"onboarding.profile.display_name_hint": "Teljes neved vagy vicces neved…",
|
||||
"onboarding.profile.lead": "Ezt később bármikor befejezheted a beállításokban, ahol még több testreszabási lehetőség áll rendelkezésre.",
|
||||
"onboarding.profile.note": "Bemutatkozás",
|
||||
"onboarding.profile.note_hint": "Megemlíthetsz @másokat vagy #hashtag-eket…",
|
||||
"onboarding.profile.save_and_continue": "Mentés és folytatás",
|
||||
"onboarding.profile.title": "Profilbeállítás",
|
||||
"onboarding.profile.upload_avatar": "Profilkép feltöltése",
|
||||
"onboarding.profile.upload_header": "Profil fejléc feltöltése",
|
||||
"onboarding.share.lead": "Tudassuk az emberekkel, hogyan találhatnak meg a Mastodonon!",
|
||||
"onboarding.share.message": "{username} vagyok a #Mastodon hálózaton! Kövess itt: {url}.",
|
||||
"onboarding.share.next_steps": "Lehetséges következő lépések:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Listázatlan",
|
||||
"privacy_policy.last_updated": "Utoljára frissítve: {date}",
|
||||
"privacy_policy.title": "Adatvédelmi szabályzat",
|
||||
"recommended": "Ajánlott",
|
||||
"refresh": "Frissítés",
|
||||
"regeneration_indicator.label": "Betöltés…",
|
||||
"regeneration_indicator.sublabel": "A saját idővonalad épp készül!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Bejegyzések a következő keresésre: {x}",
|
||||
"search.search_or_paste": "Keresés vagy URL beillesztése",
|
||||
"search_popout.full_text_search_disabled_message": "Nem érhető el ezen: {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Csak bejelentkezve érhető el.",
|
||||
"search_popout.language_code": "ISO nyelvkód",
|
||||
"search_popout.options": "Keresési beállítások",
|
||||
"search_popout.quick_actions": "Gyors műveletek",
|
||||
|
|
|
@ -314,7 +314,6 @@
|
|||
"lists.search": "Փնտրել քո հետեւած մարդկանց մէջ",
|
||||
"lists.subheading": "Քո ցանկերը",
|
||||
"load_pending": "{count, plural, one {# նոր նիւթ} other {# նոր նիւթ}}",
|
||||
"loading_indicator.label": "Բեռնւում է…",
|
||||
"media_gallery.toggle_visible": "Ցուցադրել/թաքցնել",
|
||||
"mute_modal.duration": "Տեւողութիւն",
|
||||
"mute_modal.hide_notifications": "Թաքցնե՞լ ծանուցումներն այս օգտատիրոջից։",
|
||||
|
|
|
@ -353,7 +353,6 @@
|
|||
"lists.search": "Cari di antara orang yang Anda ikuti",
|
||||
"lists.subheading": "Daftar Anda",
|
||||
"load_pending": "{count, plural, other {# item baru}}",
|
||||
"loading_indicator.label": "Tunggu sebentar...",
|
||||
"media_gallery.toggle_visible": "Tampil/Sembunyikan",
|
||||
"moved_to_account_banner.text": "Akun {disabledAccount} Anda kini dinonaktifkan karena Anda pindah ke {movedToAccount}.",
|
||||
"mute_modal.duration": "Durasi",
|
||||
|
|
|
@ -88,7 +88,6 @@
|
|||
"lists.delete": "Hichapụ ndepụta",
|
||||
"lists.edit": "Dezie ndepụta",
|
||||
"lists.subheading": "Ndepụta gị",
|
||||
"loading_indicator.label": "Na-adọnye...",
|
||||
"navigation_bar.about": "Maka",
|
||||
"navigation_bar.bookmarks": "Ebenrụtụakā",
|
||||
"navigation_bar.domain_blocks": "Hidden domains",
|
||||
|
|
|
@ -383,7 +383,6 @@
|
|||
"lists.search": "Trovez inter personi quon vu sequas",
|
||||
"lists.subheading": "Vua listi",
|
||||
"load_pending": "{count, plural, one {# nova kozo} other {# nova kozi}}",
|
||||
"loading_indicator.label": "Kargante...",
|
||||
"media_gallery.toggle_visible": "Chanjar videbleso",
|
||||
"moved_to_account_banner.text": "Vua konto {disabledAccount} es nune desaktiva pro ke vu movis a {movedToAccount}.",
|
||||
"mute_modal.duration": "Durado",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Útilokaður",
|
||||
"account.browse_more_on_origin_server": "Skoða nánari upplýsingar á notandasniðinu",
|
||||
"account.cancel_follow_request": "Taka fylgjendabeiðni til baka",
|
||||
"account.copy": "Afrita tengil í notandasnið",
|
||||
"account.direct": "Einkaspjall við @{name}",
|
||||
"account.disable_notifications": "Hætta að láta mig vita þegar @{name} sendir inn",
|
||||
"account.domain_blocked": "Lén útilokað",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Merkja sem lesið",
|
||||
"conversation.open": "Skoða samtal",
|
||||
"conversation.with": "Við {names}",
|
||||
"copy_icon_button.copied": "Afritað á klippispjald",
|
||||
"copypaste.copied": "Afritað",
|
||||
"copypaste.copy_to_clipboard": "Afrita á klippispjald",
|
||||
"directory.federated": "Frá samtengdum vefþjónum",
|
||||
|
@ -303,7 +305,7 @@
|
|||
"hashtag.follow": "Fylgjast með myllumerki",
|
||||
"hashtag.unfollow": "Hætta að fylgjast með myllumerki",
|
||||
"hashtags.and_other": "…og {count, plural, other {# til viðbótar}}",
|
||||
"home.actions.go_to_explore": "Sjáðu hvað er í umræðunni",
|
||||
"home.actions.go_to_explore": "Sjá hvað er í umræðunni",
|
||||
"home.actions.go_to_suggestions": "Finna fólk til að fylgjast með",
|
||||
"home.column_settings.basic": "Einfalt",
|
||||
"home.column_settings.show_reblogs": "Sýna endurbirtingar",
|
||||
|
@ -390,7 +392,7 @@
|
|||
"lists.search": "Leita meðal þeirra sem þú fylgist með",
|
||||
"lists.subheading": "Listarnir þínir",
|
||||
"load_pending": "{count, plural, one {# nýtt atriði} other {# ný atriði}}",
|
||||
"loading_indicator.label": "Hleð inn...",
|
||||
"loading_indicator.label": "Hleð inn…",
|
||||
"media_gallery.toggle_visible": "Víxla sýnileika",
|
||||
"moved_to_account_banner.text": "Aðgangurinn þinn {disabledAccount} er óvirkur í augnablikinu vegna þess að þú fluttir þig yfir á {movedToAccount}.",
|
||||
"mute_modal.duration": "Lengd",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Því miður er ekki hægt að birta neinar niðurstöður í augnablikinu. Þú getur reynt að nota leitina eða skoðað könnunarsíðuna til að finna fólk til að fylgjast með, nú eða prófað aftur síðar.",
|
||||
"onboarding.follows.lead": "Þú ræktar heimastreymið þitt. Því fleira fólki sem þú fylgist með, því virkara og áhugaverðara verður það. Að fylgjast með þessum notendum gæti verið ágætt til að byrja með - þú getur alltaf hætt að fylgjast með þeim síðar!",
|
||||
"onboarding.follows.title": "Vinsælt á Mastodon",
|
||||
"onboarding.profile.discoverable": "Gera notandasniðið mitt uppgötvanlegt",
|
||||
"onboarding.profile.discoverable_hint": "Þegar þú velur að hægt sé að uppgötva þig á Mastodon, munu færslurnar þínar birtast í leitarniðurstöðum og vinsældalistum, auk þess sem stungið verður upp á notandasniðinu þínu við fólk sem er með svipuð áhugamál og þú.",
|
||||
"onboarding.profile.display_name": "Birtingarnafn",
|
||||
"onboarding.profile.display_name_hint": "Fullt nafn þitt eða eitthvað til gamans…",
|
||||
"onboarding.profile.lead": "Þú getur alltaf klárað þetta seinna í stillingunum, þar sem enn fleiri möguleikar bjóðast á sérsníðingum.",
|
||||
"onboarding.profile.note": "Æviágrip",
|
||||
"onboarding.profile.note_hint": "Þú getur @minnst á annað fólk eða #myllumerki…",
|
||||
"onboarding.profile.save_and_continue": "Vista og halda áfram",
|
||||
"onboarding.profile.title": "Uppsetning notandasniðs",
|
||||
"onboarding.profile.upload_avatar": "Sendu inn auðkennismynd",
|
||||
"onboarding.profile.upload_header": "Sendu inn bakgrunnsmynd í haus notandasniðs",
|
||||
"onboarding.share.lead": "Láttu fólk vita hvernig það getur fundið þig á Mastodon!",
|
||||
"onboarding.share.message": "Ég heiti {username} á #Mastodon! Þú getur fylgst með mér á {url}",
|
||||
"onboarding.share.next_steps": "Möguleg næstu skref:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Óskráð",
|
||||
"privacy_policy.last_updated": "Síðast uppfært {date}",
|
||||
"privacy_policy.title": "Persónuverndarstefna",
|
||||
"recommended": "Mælt með",
|
||||
"refresh": "Endurlesa",
|
||||
"regeneration_indicator.label": "Hleð inn…",
|
||||
"regeneration_indicator.sublabel": "Verið er að útbúa heimastreymið þitt!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Færslur sem samsvara {x}",
|
||||
"search.search_or_paste": "Leita eða líma slóð",
|
||||
"search_popout.full_text_search_disabled_message": "Ekki tiltækt á {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Aðeins tiltækt eftir innskráningu.",
|
||||
"search_popout.language_code": "ISO-kóði tungumáls",
|
||||
"search_popout.options": "Leitarvalkostir",
|
||||
"search_popout.quick_actions": "Flýtiaðgerðir",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "Bloccato",
|
||||
"account.browse_more_on_origin_server": "Sfoglia di più sul profilo originale",
|
||||
"account.cancel_follow_request": "Annulla la richiesta di seguire",
|
||||
"account.copy": "Copia link del profilo",
|
||||
"account.direct": "Menziona privatamente @{name}",
|
||||
"account.disable_notifications": "Smetti di avvisarmi quando @{name} pubblica un post",
|
||||
"account.domain_blocked": "Dominio bloccato",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "Segna come letto",
|
||||
"conversation.open": "Visualizza conversazione",
|
||||
"conversation.with": "Con {names}",
|
||||
"copy_icon_button.copied": "Copiato negli appunti",
|
||||
"copypaste.copied": "Copiato",
|
||||
"copypaste.copy_to_clipboard": "Copia negli Appunti",
|
||||
"directory.federated": "Da un fediverse noto",
|
||||
|
@ -252,7 +254,7 @@
|
|||
"explore.search_results": "Risultati della ricerca",
|
||||
"explore.suggested_follows": "Persone",
|
||||
"explore.title": "Esplora",
|
||||
"explore.trending_links": "Novità",
|
||||
"explore.trending_links": "Notizie",
|
||||
"explore.trending_statuses": "Post",
|
||||
"explore.trending_tags": "Hashtag",
|
||||
"filter_modal.added.context_mismatch_explanation": "La categoria di questo filtro non si applica al contesto in cui hai acceduto a questo post. Se desideri che il post sia filtrato anche in questo contesto, dovrai modificare il filtro.",
|
||||
|
@ -390,7 +392,7 @@
|
|||
"lists.search": "Cerca tra le persone che segui",
|
||||
"lists.subheading": "Le tue liste",
|
||||
"load_pending": "{count, plural, one {# nuovo oggetto} other {# nuovi oggetti}}",
|
||||
"loading_indicator.label": "Caricamento...",
|
||||
"loading_indicator.label": "Caricamento…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Nascondi immagine} other {Nascondi immagini}}",
|
||||
"moved_to_account_banner.text": "Il tuo profilo {disabledAccount} è correntemente disabilitato perché ti sei spostato a {movedToAccount}.",
|
||||
"mute_modal.duration": "Durata",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "Sfortunatamente, nessun risultato può essere mostrato in questo momento. Puoi provare a utilizzare la ricerca o sfogliare la pagina di esplorazione per trovare persone da seguire, oppure riprova più tardi.",
|
||||
"onboarding.follows.lead": "La cronologia della tua home è gestita da te. Più persone segui, più attiva e interessante sarà. Questi profili possono essere un buon punto di partenza; puoi sempre smettere di seguirli in seguito!",
|
||||
"onboarding.follows.title": "Popolare su Mastodon",
|
||||
"onboarding.profile.discoverable": "Rendi il mio profilo rilevabile",
|
||||
"onboarding.profile.discoverable_hint": "Quando attivi la rilevabilità su Mastodon, i tuoi post potrebbero apparire nei risultati di ricerca e nelle tendenze e il tuo profilo potrebbe essere suggerito a persone con interessi simili ai tuoi.",
|
||||
"onboarding.profile.display_name": "Nome da visualizzare",
|
||||
"onboarding.profile.display_name_hint": "Il tuo nome completo o il tuo nome divertente…",
|
||||
"onboarding.profile.lead": "Puoi sempre completarlo in un secondo momento nelle impostazioni, dove sono disponibili ancora più opzioni di personalizzazione.",
|
||||
"onboarding.profile.note": "Biografia",
|
||||
"onboarding.profile.note_hint": "Puoi @menzionare altre persone o #hashtags…",
|
||||
"onboarding.profile.save_and_continue": "Salva e continua",
|
||||
"onboarding.profile.title": "Configurazione del profilo",
|
||||
"onboarding.profile.upload_avatar": "Carica l'immagine del profilo",
|
||||
"onboarding.profile.upload_header": "Carica l'intestazione del profilo",
|
||||
"onboarding.share.lead": "Fai sapere alle persone come possono trovarti su Mastodon!",
|
||||
"onboarding.share.message": "Sono {username} su #Mastodon! Vieni a seguirmi su {url}",
|
||||
"onboarding.share.next_steps": "Possibili passaggi successivi:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "Non elencato",
|
||||
"privacy_policy.last_updated": "Ultimo aggiornamento {date}",
|
||||
"privacy_policy.title": "Politica sulla Privacy",
|
||||
"recommended": "Consigliato",
|
||||
"refresh": "Ricarica",
|
||||
"regeneration_indicator.label": "Caricamento…",
|
||||
"regeneration_indicator.sublabel": "Il feed della tua home è in preparazione!",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "Post corrispondenti a {x}",
|
||||
"search.search_or_paste": "Cerca o incolla URL",
|
||||
"search_popout.full_text_search_disabled_message": "Non disponibile in {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Disponibile solo dopo aver effettuato l'accesso.",
|
||||
"search_popout.language_code": "Codice ISO lingua",
|
||||
"search_popout.options": "Opzioni di ricerca",
|
||||
"search_popout.quick_actions": "Azioni rapide",
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
"account.blocked": "ブロック済み",
|
||||
"account.browse_more_on_origin_server": "リモートで表示",
|
||||
"account.cancel_follow_request": "フォローリクエストの取り消し",
|
||||
"account.copy": "プロフィールのリンクをコピーして下さい",
|
||||
"account.direct": "@{name}さんに非公開でメンション",
|
||||
"account.disable_notifications": "@{name}さんの投稿時の通知を停止",
|
||||
"account.domain_blocked": "ドメインブロック中",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "既読にする",
|
||||
"conversation.open": "会話を表示",
|
||||
"conversation.with": "{names}",
|
||||
"copy_icon_button.copied": "クリップボードにコピーされた",
|
||||
"copypaste.copied": "コピーしました",
|
||||
"copypaste.copy_to_clipboard": "クリップボードにコピー",
|
||||
"directory.federated": "既知の連合より",
|
||||
|
@ -390,7 +392,7 @@
|
|||
"lists.search": "フォローしている人の中から検索",
|
||||
"lists.subheading": "あなたのリスト",
|
||||
"load_pending": "{count}件の新着",
|
||||
"loading_indicator.label": "読み込み中...",
|
||||
"loading_indicator.label": "",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {画像を閉じる} other {画像を閉じる}}",
|
||||
"moved_to_account_banner.text": "あなたのアカウント『{disabledAccount}』は『{movedToAccount}』に移動したため現在無効になっています。",
|
||||
"mute_modal.duration": "ミュートする期間",
|
||||
|
@ -479,6 +481,17 @@
|
|||
"onboarding.follows.empty": "表示できる結果はありません。検索やエクスプローラーを使ったり、ほかのアカウントをフォローしたり、後でもう一度試しください。",
|
||||
"onboarding.follows.lead": "ホームタイムラインはMastodonの軸足となる場所です。たくさんのユーザーをフォローすることで、ホームタイムラインはよりにぎやかでおもしろいものになります。手はじめに、おすすめのアカウントから何人かフォローしてみましょう:",
|
||||
"onboarding.follows.title": "ホームタイムラインを埋める",
|
||||
"onboarding.profile.discoverable": "自分のプロフィールが発見できないようにする",
|
||||
"onboarding.profile.discoverable_hint": "マストドンの見つけやすくする機能が個人情報を利用することに承諾すると、あなたの投稿が検索結果やトレンドに表示されることがあります。また、あなたのプロフィールがあなたと似た興味関心を持つ人に提案されることがあります。",
|
||||
"onboarding.profile.display_name": "表示名",
|
||||
"onboarding.profile.display_name_hint": "あなたのフルネーム、または楽しい名前…",
|
||||
"onboarding.profile.lead": "このことは後でいつでも設定から完了させることが出来ますし、設定では更に多くのカスタマイズが利用可能になっています。",
|
||||
"onboarding.profile.note": "自己紹介",
|
||||
"onboarding.profile.note_hint": "@を使用して他の人々にメンションをすることができます。また#でハッシュタグが使用できます",
|
||||
"onboarding.profile.save_and_continue": "保存してから続行して下さい",
|
||||
"onboarding.profile.title": "プロフィールの設定",
|
||||
"onboarding.profile.upload_avatar": "プロフィール画像をアップロードしてください",
|
||||
"onboarding.profile.upload_header": "プロフィールのヘッダー画像をアップロードして下さい",
|
||||
"onboarding.share.lead": "新しいMastodonのアカウントをみんなに紹介しましょう。",
|
||||
"onboarding.share.message": "「{username}」で #Mastodon はじめました! {url}",
|
||||
"onboarding.share.next_steps": "次のステップに進む:",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "非収載",
|
||||
"privacy_policy.last_updated": "{date}に更新",
|
||||
"privacy_policy.title": "プライバシーポリシー",
|
||||
"recommended": "おすすめ",
|
||||
"refresh": "更新",
|
||||
"regeneration_indicator.label": "読み込み中…",
|
||||
"regeneration_indicator.sublabel": "ホームタイムラインは準備中です!",
|
||||
|
|
|
@ -165,7 +165,6 @@
|
|||
"lists.new.title_placeholder": "ახალი სიის სათაური",
|
||||
"lists.search": "ძებნა ადამიანებს შორის რომელთაც მიჰყვებით",
|
||||
"lists.subheading": "თქვენი სიები",
|
||||
"loading_indicator.label": "იტვირთება...",
|
||||
"media_gallery.toggle_visible": "ხილვადობის ჩართვა",
|
||||
"mute_modal.hide_notifications": "დავმალოთ შეტყობინებები ამ მომხმარებლისგან?",
|
||||
"navigation_bar.blocks": "დაბლოკილი მომხმარებლები",
|
||||
|
|
|
@ -274,7 +274,6 @@
|
|||
"lists.search": "Nadi gar yemdanen i teṭṭafaṛeḍ",
|
||||
"lists.subheading": "Tibdarin-ik·im",
|
||||
"load_pending": "{count, plural, one {# n uferdis amaynut} other {# n yiferdisen imaynuten}}",
|
||||
"loading_indicator.label": "Yessalay-d…",
|
||||
"media_gallery.toggle_visible": "Ffer {number, plural, one {tugna} other {tugniwin}}",
|
||||
"mute_modal.duration": "Tanzagt",
|
||||
"mute_modal.hide_notifications": "Tebɣiḍ ad teffreḍ talɣutin n umseqdac-a?",
|
||||
|
|
|
@ -242,7 +242,6 @@
|
|||
"lists.search": "Сіз іздеген адамдар арасында іздеу",
|
||||
"lists.subheading": "Тізімдеріңіз",
|
||||
"load_pending": "{count, plural, one {# жаңа нәрсе} other {# жаңа нәрсе}}",
|
||||
"loading_indicator.label": "Жүктеу...",
|
||||
"media_gallery.toggle_visible": "Көрінуді қосу",
|
||||
"mute_modal.hide_notifications": "Бұл қолданушы ескертпелерін жасырамыз ба?",
|
||||
"navigation_bar.blocks": "Бұғатталғандар",
|
||||
|
|
|
@ -21,10 +21,11 @@
|
|||
"account.blocked": "차단함",
|
||||
"account.browse_more_on_origin_server": "원본 프로필에서 더 탐색하기",
|
||||
"account.cancel_follow_request": "팔로우 취소",
|
||||
"account.copy": "프로필 링크 복사",
|
||||
"account.direct": "@{name} 님에게 개인적으로 멘션",
|
||||
"account.disable_notifications": "@{name} 의 게시물 알림 끄기",
|
||||
"account.domain_blocked": "도메인 차단함",
|
||||
"account.edit_profile": "프로필 수정",
|
||||
"account.edit_profile": "프로필 편집",
|
||||
"account.enable_notifications": "@{name} 의 게시물 알림 켜기",
|
||||
"account.endorse": "프로필에 추천하기",
|
||||
"account.featured_tags.last_status_at": "{date}에 마지막으로 게시",
|
||||
|
@ -175,7 +176,7 @@
|
|||
"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": "뮤트",
|
||||
|
@ -191,6 +192,7 @@
|
|||
"conversation.mark_as_read": "읽은 상태로 표시",
|
||||
"conversation.open": "대화 보기",
|
||||
"conversation.with": "{names} 님과",
|
||||
"copy_icon_button.copied": "클립보드에 복사됨",
|
||||
"copypaste.copied": "복사됨",
|
||||
"copypaste.copy_to_clipboard": "클립보드에 복사",
|
||||
"directory.federated": "알려진 연합우주로부터",
|
||||
|
@ -324,7 +326,7 @@
|
|||
"interaction_modal.no_account_yet": "Mastodon 계정이 없나요?",
|
||||
"interaction_modal.on_another_server": "다른 서버에",
|
||||
"interaction_modal.on_this_server": "이 서버에서",
|
||||
"interaction_modal.sign_in": "이 서버에 로그인되어 있지 않습니다. 계정이 어디에 속해 있나요?",
|
||||
"interaction_modal.sign_in": "이 서버에 로그인하지 않았습니다. 계정이 어디에 속해있습니까?",
|
||||
"interaction_modal.sign_in_hint": "팁: 여러분이 가입한 사이트입니다. 만약 기억이 나지 않는다면 가입환영 이메일을 찾아보는 것도 좋습니다. 전체 사용자이름(예: @mastodon@mastodon.social)을 넣어도 됩니다!",
|
||||
"interaction_modal.title.favourite": "{name} 님의 게시물을 좋아하기",
|
||||
"interaction_modal.title.follow": "{name} 님을 팔로우",
|
||||
|
@ -479,7 +481,18 @@
|
|||
"onboarding.follows.empty": "안타깝지만 아직은 아무 것도 보여드릴 수 없습니다. 검색을 이용하거나 발견하기 페이지에서 팔로우 할 사람을 찾을 수 있습니다. 아니면 잠시 후에 다시 시도하세요.",
|
||||
"onboarding.follows.lead": "홈 피드는 마스토돈을 경험하는 주된 경로입니다. 더 많은 사람들을 팔로우 할수록 더 활발하고 흥미로워질 것입니다. 여기 시작을 위한 몇몇 추천을 드립니다:",
|
||||
"onboarding.follows.title": "내게 맞는 홈 피드 꾸미기",
|
||||
"onboarding.share.lead": "여러 사람에게 마스토돈에서 나를 찾을 수 있는 방법을 알려주세요!",
|
||||
"onboarding.profile.discoverable": "내 프로필을 발견 가능하도록 설정",
|
||||
"onboarding.profile.discoverable_hint": "마스토돈의 발견하기 기능에 참여하면 게시물이 검색 결과와 유행 란에 표시될 수 있고, 비슷한 관심사를 가진 사람들에게 자신의 프로필이 추천될 수 있습니다.",
|
||||
"onboarding.profile.display_name": "표시되는 이름",
|
||||
"onboarding.profile.display_name_hint": "진짜 이름 또는 재미난 이름…",
|
||||
"onboarding.profile.lead": "언제든지 나중에 설정 메뉴에서 마저 할 수 있고, 그곳에서 더 많은 맞춤 옵션을 고를 수 있습니다.",
|
||||
"onboarding.profile.note": "자기소개",
|
||||
"onboarding.profile.note_hint": "남을 @mention 하거나 #hashtag 태그를 달 수 있습니다…",
|
||||
"onboarding.profile.save_and_continue": "저장 및 계속",
|
||||
"onboarding.profile.title": "프로필 설정",
|
||||
"onboarding.profile.upload_avatar": "프로필 사진 업로드",
|
||||
"onboarding.profile.upload_header": "프로필 헤더 업로드",
|
||||
"onboarding.share.lead": "여러 사람에게 마스토돈에서 나를 찾을 수 있는 방법을 알립니다!",
|
||||
"onboarding.share.message": "#마스토돈 이용하는 {username}입니다! {url} 에서 저를 팔로우 해보세요",
|
||||
"onboarding.share.next_steps": "할만한 다음 단계:",
|
||||
"onboarding.share.title": "프로필 공유하기",
|
||||
|
@ -522,6 +535,7 @@
|
|||
"privacy.unlisted.short": "미등재",
|
||||
"privacy_policy.last_updated": "{date}에 마지막으로 업데이트됨",
|
||||
"privacy_policy.title": "개인정보처리방침",
|
||||
"recommended": "추천함",
|
||||
"refresh": "새로고침",
|
||||
"regeneration_indicator.label": "불러오는 중…",
|
||||
"regeneration_indicator.sublabel": "홈 피드를 준비하고 있습니다!",
|
||||
|
@ -543,7 +557,7 @@
|
|||
"report.categories.other": "기타",
|
||||
"report.categories.spam": "스팸",
|
||||
"report.categories.violation": "콘텐츠가 한 개 이상의 서버 규칙을 위반합니다",
|
||||
"report.category.subtitle": "가장 알맞은 것을 선택하세요",
|
||||
"report.category.subtitle": "가장 알맞은 것을 선택",
|
||||
"report.category.title": "이 {type}에 무슨 문제가 있는지 알려주세요",
|
||||
"report.category.title_account": "프로필",
|
||||
"report.category.title_status": "게시물",
|
||||
|
@ -565,9 +579,9 @@
|
|||
"report.reasons.spam_description": "악성 링크, 반응 스팸, 또는 반복적인 답글",
|
||||
"report.reasons.violation": "서버 규칙을 위반합니다",
|
||||
"report.reasons.violation_description": "특정 규칙을 위반합니다",
|
||||
"report.rules.subtitle": "해당하는 사항을 모두 선택하세요",
|
||||
"report.rules.subtitle": "해당하는 사항을 모두 선택",
|
||||
"report.rules.title": "어떤 규칙을 위반했나요?",
|
||||
"report.statuses.subtitle": "해당하는 사항을 모두 선택하세요",
|
||||
"report.statuses.subtitle": "해당하는 사항을 모두 선택",
|
||||
"report.statuses.title": "이 신고에 대해서 더 참고해야 할 게시물이 있나요?",
|
||||
"report.submit": "신고하기",
|
||||
"report.target": "{target} 신고하기",
|
||||
|
@ -592,6 +606,7 @@
|
|||
"search.quick_action.status_search": "{x}에 맞는 게시물",
|
||||
"search.search_or_paste": "검색하거나 URL 붙여넣기",
|
||||
"search_popout.full_text_search_disabled_message": "{domain}에서는 이용할 수 없습니다.",
|
||||
"search_popout.full_text_search_logged_out_message": "로그인되어 있을 때만 할 수 있습니다.",
|
||||
"search_popout.language_code": "ISO 언어코드",
|
||||
"search_popout.options": "검색 옵션",
|
||||
"search_popout.quick_actions": "빠른 작업",
|
||||
|
@ -670,7 +685,7 @@
|
|||
"status.title.with_attachments": "{user} 님이 {attachmentCount, plural, one {첨부} other {{attachmentCount}개 첨부}}하여 게시",
|
||||
"status.translate": "번역",
|
||||
"status.translated_from_with": "{provider}에 의해 {lang}에서 번역됨",
|
||||
"status.uncached_media_warning": "미리보기를 사용할 수 없습니다",
|
||||
"status.uncached_media_warning": "마리보기 허용되지 않음",
|
||||
"status.unmute_conversation": "이 대화의 뮤트 해제하기",
|
||||
"status.unpin": "고정 해제",
|
||||
"subscribed_languages.lead": "변경 후에는 선택한 언어들로 작성된 게시물들만 홈 타임라인과 리스트 타임라인에 나타나게 됩니다. 아무 것도 선택하지 않으면 모든 언어로 작성된 게시물을 받아봅니다.",
|
||||
|
@ -696,7 +711,7 @@
|
|||
"upload_area.title": "드래그 & 드롭으로 업로드",
|
||||
"upload_button.label": "이미지, 영상, 오디오 파일 추가",
|
||||
"upload_error.limit": "파일 업로드 제한에 도달했습니다.",
|
||||
"upload_error.poll": "파일 업로드는 설문과 함께 쓸 수 없어요.",
|
||||
"upload_error.poll": "파일 업로드는 설문과 함께 쓸 수 없습니다.",
|
||||
"upload_form.audio_description": "청각 장애인을 위한 설명",
|
||||
"upload_form.description": "시각장애인을 위한 설명",
|
||||
"upload_form.description_missing": "설명이 추가되지 않음",
|
||||
|
@ -704,12 +719,12 @@
|
|||
"upload_form.thumbnail": "썸네일 변경",
|
||||
"upload_form.undo": "삭제",
|
||||
"upload_form.video_description": "청각, 시각 장애인을 위한 설명",
|
||||
"upload_modal.analyzing_picture": "이미지 분석 중…",
|
||||
"upload_modal.analyzing_picture": "사진 분석 중…",
|
||||
"upload_modal.apply": "적용",
|
||||
"upload_modal.applying": "적용 중...",
|
||||
"upload_modal.choose_image": "이미지 선택",
|
||||
"upload_modal.description_placeholder": "다람쥐 헌 쳇바퀴 타고파",
|
||||
"upload_modal.detect_text": "이미지에서 텍스트 추출",
|
||||
"upload_modal.detect_text": "사진에서 문자 탐색",
|
||||
"upload_modal.edit_media": "미디어 수정",
|
||||
"upload_modal.hint": "미리보기를 클릭하거나 드래그 해서 포컬 포인트를 맞추세요. 이 점은 썸네일에 항상 보여질 부분을 나타냅니다.",
|
||||
"upload_modal.preparing_ocr": "OCR 준비 중…",
|
||||
|
|
|
@ -339,7 +339,6 @@
|
|||
"lists.search": "Di navbera kesên ku te dişopînin bigere",
|
||||
"lists.subheading": "Lîsteyên te",
|
||||
"load_pending": "{count, plural, one {# hêmaneke nû} other {#hêmaneke nû}}",
|
||||
"loading_indicator.label": "Tê barkirin...",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Wêneyê veşêre} other {Wêneyan veşêre}}",
|
||||
"moved_to_account_banner.text": "Ajimêrê te {disabledAccount} niha neçalak e ji ber ku te bar kir bo {movedToAccount}.",
|
||||
"mute_modal.duration": "Dem",
|
||||
|
|
|
@ -235,7 +235,6 @@
|
|||
"lists.search": "Hwilas yn-mysk tus a holyewgh",
|
||||
"lists.subheading": "Agas rolyow",
|
||||
"load_pending": "{count, plural, one {# daklennowydh} other {# a daklennow nowydh}}",
|
||||
"loading_indicator.label": "Ow karga...",
|
||||
"media_gallery.toggle_visible": "Hide {number, plural, one {aven} other {aven}}",
|
||||
"mute_modal.duration": "Duryans",
|
||||
"mute_modal.hide_notifications": "Kudha gwarnyansow a'n devnydhyer ma?",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"about.blocks": "Prižiūrimi serveriai",
|
||||
"about.contact": "Kontaktuoti:",
|
||||
"about.disclaimer": "Mastodon – nemokama atvirojo šaltinio programa ir Mastodon gGmbH prekės ženklas.",
|
||||
"about.disclaimer": "Mastodon – nemokama atvirojo kodo programa ir Mastodon gGmbH prekės ženklas.",
|
||||
"about.domain_blocks.no_reason_available": "Priežastis nežinoma",
|
||||
"about.domain_blocks.preamble": "Mastodon paprastai leidžia peržiūrėti turinį ir bendrauti su naudotojais iš bet kurio kito fediverse esančio serverio. Šios yra išimtys, kurios buvo padarytos šiame konkrečiame serveryje.",
|
||||
"about.domain_blocks.silenced.explanation": "Paprastai nematysi profilių ir turinio iš šio serverio, nebent jį aiškiai ieškosi arba pasirinksi jį sekdamas (-a).",
|
||||
|
@ -21,40 +21,68 @@
|
|||
"account.blocked": "Užblokuota",
|
||||
"account.browse_more_on_origin_server": "Naršyti daugiau originaliame profilyje",
|
||||
"account.cancel_follow_request": "Atšaukti sekimą",
|
||||
"account.copy": "Kopijuoti nuorodą į profilį",
|
||||
"account.direct": "Privačiai paminėti @{name}",
|
||||
"account.disable_notifications": "Nustoti man pranešti, kai @{name} paskelbia",
|
||||
"account.domain_blocked": "Užblokuotas domenas",
|
||||
"account.edit_profile": "Redaguoti profilį",
|
||||
"account.enable_notifications": "Pranešti man, kai @{name} paskelbia",
|
||||
"account.endorse": "Savybė profilyje",
|
||||
"account.featured_tags.last_status_at": "Paskutinį kartą paskelbta {date}",
|
||||
"account.featured_tags.last_status_never": "Nėra įrašų",
|
||||
"account.featured_tags.title": "{name} rekomenduojamos grotažymės",
|
||||
"account.follow": "Sekti",
|
||||
"account.followers": "Sekėjai",
|
||||
"account.followers.empty": "Šio naudotojo dar niekas neseka.",
|
||||
"account.followers_counter": "{count, plural, one {{counter} sekėjas (-a)} few {{counter} sekėjai} many {{counter} sekėjo} other {{counter} sekėjų}}",
|
||||
"account.following": "Seka",
|
||||
"account.follows.empty": "Šis naudotojas (-a) dar nieko neseka.",
|
||||
"account.following_counter": "{count, plural, one {{counter} Seka} few {{counter} Seka} many {{counter} Seka} other {{counter} Seka}}",
|
||||
"account.follows.empty": "Šis (-i) naudotojas (-a) dar nieko neseka.",
|
||||
"account.follows_you": "Seka tave",
|
||||
"account.go_to_profile": "Eiti į profilį",
|
||||
"account.hide_reblogs": "Slėpti \"boosts\" iš @{name}",
|
||||
"account.in_memoriam": "Atminimui.",
|
||||
"account.joined_short": "Prisijungė",
|
||||
"account.languages": "Keisti prenumeruojamas kalbas",
|
||||
"account.link_verified_on": "Šios nuorodos nuosavybė buvo patikrinta {date}",
|
||||
"account.locked_info": "Šios paskyros privatumo būsena nustatyta kaip užrakinta. Savininkas (-ė) rankiniu būdu peržiūri, kas gali sekti.",
|
||||
"account.media": "Medija",
|
||||
"account.mention": "Paminėti @{name}",
|
||||
"account.moved_to": "{name} nurodė, kad dabar jų nauja paskyra yra:",
|
||||
"account.mute": "Užtildyti @{name}",
|
||||
"account.mute_notifications_short": "Nutildyti pranešimus",
|
||||
"account.mute_short": "Nutildyti",
|
||||
"account.muted": "Užtildytas",
|
||||
"account.posts": "Toots",
|
||||
"account.posts_with_replies": "Toots and replies",
|
||||
"account.report": "Pranešti apie @{name}",
|
||||
"account.requested": "Awaiting approval",
|
||||
"account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
|
||||
"account.unblock_domain": "Unhide {domain}",
|
||||
"account.no_bio": "Nėra pateikto aprašymo.",
|
||||
"account.open_original_page": "Atidaryti originalinį tinklalapį",
|
||||
"account.posts": "Įrašai",
|
||||
"account.posts_with_replies": "Įrašai ir atsakymai",
|
||||
"account.report": "Pranešti @{name}",
|
||||
"account.requested": "Laukiama patvirtinimo. Spausk, kad atšaukti sekimo užklausą.",
|
||||
"account.requested_follow": "{name} paprašė tave sekti",
|
||||
"account.share": "Bendrinti @{name} profilį",
|
||||
"account.show_reblogs": "Rodyti \"boosts\" iš @{name}",
|
||||
"account.statuses_counter": "{count, plural, one {{counter} įrašas} few {{counter} įrašai} many {{counter} įrašo} other {{counter} įrašų}}",
|
||||
"account.unblock": "Atblokuoti @{name}",
|
||||
"account.unblock_domain": "Atblokuoti domeną {domain}",
|
||||
"account.unblock_short": "Atblokuoti",
|
||||
"account.unendorse": "Nerodyti profilyje",
|
||||
"account.unfollow": "Nebesekti",
|
||||
"account.unmute": "Atitildyti @{name}",
|
||||
"account.unmute_notifications_short": "Atitildyti pranešimus",
|
||||
"account.unmute_short": "Atitildyti",
|
||||
"account_note.placeholder": "Click to add a note",
|
||||
"account_note.placeholder": "Spausk norėdamas (-a) pridėti pastabą",
|
||||
"admin.dashboard.daily_retention": "Vartotojų išbuvimo rodiklis pagal dieną po registracijos",
|
||||
"admin.dashboard.monthly_retention": "Vartotojų išbuvimo rodiklis pagal mėnesį po registracijos",
|
||||
"admin.dashboard.retention.average": "Vidurkis",
|
||||
"admin.dashboard.retention.cohort": "Registravimo mėnuo",
|
||||
"admin.dashboard.retention.cohort_size": "Nauji naudotojai",
|
||||
"admin.impact_report.instance_accounts": "Paskyrų profiliai, kuriuos tai ištrintų",
|
||||
"admin.impact_report.instance_followers": "Sekėjai, kuriuos prarastų mūsų naudotojai",
|
||||
"admin.impact_report.instance_follows": "Sekėjai, kuriuos prarastų jų naudotojai",
|
||||
"admin.impact_report.title": "Poveikio apibendrinimas",
|
||||
"alert.rate_limited.message": "Pabandyk vėliau po {retry_time, time, medium}.",
|
||||
"alert.rate_limited.title": "Spartos ribojimas",
|
||||
"alert.unexpected.message": "Įvyko netikėta klaida.",
|
||||
"alert.unexpected.title": "Ups!",
|
||||
"announcement.announcement": "Skelbimas",
|
||||
|
@ -65,40 +93,108 @@
|
|||
"bundle_column_error.copy_stacktrace": "Kopijuoti klaidos ataskaitą",
|
||||
"bundle_column_error.error.body": "Užklausos puslapio nepavyko atvaizduoti. Tai gali būti dėl mūsų kodo klaidos arba naršyklės suderinamumo problemos.",
|
||||
"bundle_column_error.error.title": "O, ne!",
|
||||
"column.domain_blocks": "Hidden domains",
|
||||
"bundle_column_error.network.body": "Bandant užkrauti šį puslapį įvyko klaida. Tai galėjo atsitikti dėl laikinos tavo interneto ryšio arba šio serverio problemos.",
|
||||
"bundle_column_error.network.title": "Tinklo klaida",
|
||||
"bundle_column_error.retry": "Bandyti dar kartą",
|
||||
"bundle_column_error.return": "Grįžti į pradžią",
|
||||
"bundle_column_error.routing.body": "Prašyto puslapio nepavyko rasti. Ar esi tikras (-a), kad adreso juostoje nurodytas URL adresas yra teisingas?",
|
||||
"bundle_column_error.routing.title": "404",
|
||||
"bundle_modal_error.close": "Uždaryti",
|
||||
"bundle_modal_error.message": "Kraunant šį komponentą kažkas nepavyko.",
|
||||
"bundle_modal_error.retry": "Bandyti dar kartą",
|
||||
"closed_registrations.other_server_instructions": "Kadangi Mastodon yra decentralizuotas, gali susikurti paskyrą kitame serveryje ir vis tiek bendrauti su šiuo serveriu.",
|
||||
"closed_registrations_modal.description": "Sukurti paskyrą {domain} šiuo metu neįmanoma, tačiau nepamiršk, kad norint naudotis Mastodon nebūtina turėti paskyrą {domain}.",
|
||||
"closed_registrations_modal.find_another_server": "Rasti kitą serverį",
|
||||
"closed_registrations_modal.preamble": "Mastodon yra decentralizuotas, todėl nesvarbu, kur susikursi paskyrą, galėsi sekti ir bendrauti su bet kuriuo šiame serveryje esančiu asmeniu. Jį gali net savarankiškai talpinti!",
|
||||
"closed_registrations_modal.title": "Užsiregistravimas į Mastodon",
|
||||
"column.about": "Apie",
|
||||
"column.blocks": "Užblokuoti naudotojai",
|
||||
"column.bookmarks": "Žymės",
|
||||
"column.community": "Vietinė laiko skalė",
|
||||
"column.direct": "Privatūs paminėjimai",
|
||||
"column.directory": "Naršyti profilius",
|
||||
"column.domain_blocks": "Užblokuoti domenai",
|
||||
"column.favourites": "Mėgstamiausi",
|
||||
"column.firehose": "Tiesioginiai padavimai",
|
||||
"column.follow_requests": "Sekti prašymus",
|
||||
"column.home": "Pradžia",
|
||||
"column.lists": "Sąrašai",
|
||||
"column.mutes": "Užtildyti vartotojai",
|
||||
"column.pins": "Pinned toot",
|
||||
"column.mutes": "Užtildyti naudotojai",
|
||||
"column.notifications": "Pranešimai",
|
||||
"column.pins": "Prisegti įrašai",
|
||||
"column.public": "Federacinė laiko skalė",
|
||||
"column_back_button.label": "Atgal",
|
||||
"column_header.hide_settings": "Slėpti nustatymus",
|
||||
"column_header.moveLeft_settings": "Judinti stulpelį į kairę",
|
||||
"column_header.moveRight_settings": "Judinti stulpelį į dešinę",
|
||||
"column_header.pin": "Prisegti",
|
||||
"column_header.show_settings": "Rodyti nustatymus",
|
||||
"column_header.unpin": "Atsegti",
|
||||
"column_subheading.settings": "Nustatymai",
|
||||
"community.column_settings.local_only": "Tik vietinis",
|
||||
"community.column_settings.media_only": "Tik medija",
|
||||
"community.column_settings.remote_only": "Tik nuotolinis",
|
||||
"compose.language.change": "Keisti kalbą",
|
||||
"compose.language.search": "Ieškoti kalbų...",
|
||||
"compose.published.body": "Įrašas paskelbtas.",
|
||||
"compose.published.open": "Atidaryti",
|
||||
"compose.saved.body": "Įrašas išsaugotas.",
|
||||
"compose_form.direct_message_warning_learn_more": "Sužinoti daugiau",
|
||||
"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.placeholder": "What is on your mind?",
|
||||
"compose_form.publish_form": "Publish",
|
||||
"compose_form.sensitive.hide": "{count, plural, one {Žymėti mediją kaip jautrią} few {Žymėti medijas kaip jautrias} many {Žymėti medijos kaip jautrios} other {Žymėti medijų kaip jautrių}}",
|
||||
"compose_form.sensitive.marked": "{count, plural, one {Medija pažymėta kaip jautri} few {Medijos pažymėtos kaip jautrios} many {Medijos pažymėta kaip jautrios} other {Medijų pažymėtos kaip jautrios}}",
|
||||
"compose_form.sensitive.unmarked": "{count, plural, one {Medija nepažymėta kaip jautri} few {Medijos nepažymėtos kaip jautrios} many {Medijos nepažymėta kaip jautri} other {Medijų nepažymėta kaip jautrios}}",
|
||||
"compose_form.spoiler.marked": "Text is hidden behind warning",
|
||||
"compose_form.spoiler.unmarked": "Text is not hidden",
|
||||
"compose_form.lock_disclaimer": "Jūsų paskyra nėra {locked}. Kiekvienas gali jus sekti ir peržiūrėti tik sekėjams skirtus įrašus.",
|
||||
"compose_form.lock_disclaimer.lock": "užrakinta",
|
||||
"compose_form.placeholder": "Kas tavo mintyse?",
|
||||
"compose_form.poll.add_option": "Pridėti pasirinkimą",
|
||||
"compose_form.poll.duration": "Apklausos trukmė",
|
||||
"compose_form.poll.option_placeholder": "Pasirinkimas {number}",
|
||||
"compose_form.poll.remove_option": "Pašalinti šį pasirinkimą",
|
||||
"compose_form.poll.switch_to_multiple": "Keisti apklausą, kad būtų galima pasirinkti kelis pasirinkimus",
|
||||
"compose_form.poll.switch_to_single": "Pakeisti apklausą, kad būtų galima pasirinkti vieną variantą",
|
||||
"compose_form.publish": "Skelbti",
|
||||
"compose_form.publish_form": "Naujas įrašas",
|
||||
"compose_form.publish_loud": "{publish}!",
|
||||
"compose_form.save_changes": "Išsaugoti pakeitimus",
|
||||
"compose_form.sensitive.hide": "{count, plural, one {Žymėti mediją kaip jautrią} few {Žymėti medijas kaip jautrias} many {Žymėti medijo kaip jautrio} other {Žymėti medijų kaip jautrių}}",
|
||||
"compose_form.sensitive.marked": "{count, plural, one {Medija pažymėta kaip jautri} few {Medijos pažymėtos kaip jautrios} many {Medijo pažymėta kaip jautrio} other {Medijų pažymėtų kaip jautrių}}",
|
||||
"compose_form.sensitive.unmarked": "{count, plural, one {Medija nepažymėta kaip jautri} few {Medijos nepažymėtos kaip jautrios} many {Medijo nepažymėta kaip jautrio} other {Medijų nepažymėtų kaip jautrių}}",
|
||||
"compose_form.spoiler.marked": "Pašalinti turinio įspėjimą",
|
||||
"compose_form.spoiler.unmarked": "Pridėti turinio įspėjimą",
|
||||
"compose_form.spoiler_placeholder": "Rašyk savo įspėjimą čia",
|
||||
"confirmation_modal.cancel": "Atšaukti",
|
||||
"confirmations.block.block_and_report": "Blokuoti ir pranešti",
|
||||
"confirmations.block.confirm": "Blokuoti",
|
||||
"confirmations.block.message": "Ar tikrai nori užblokuoti {name}?",
|
||||
"confirmations.cancel_follow_request.confirm": "Atšaukti prašymą",
|
||||
"confirmations.cancel_follow_request.message": "Ar tikrai nori atšaukti savo prašymą sekti {name}?",
|
||||
"confirmations.delete.confirm": "Ištrinti",
|
||||
"confirmations.delete.message": "Are you sure you want to delete this status?",
|
||||
"confirmations.delete_list.confirm": "Ištrinti",
|
||||
"confirmations.delete_list.message": "Ar tikrai nori visam laikui ištrinti šį sąrašą?",
|
||||
"confirmations.discard_edit_media.confirm": "Atmesti",
|
||||
"confirmations.discard_edit_media.message": "Turi neišsaugotų medijos aprašymo ar peržiūros pakeitimų, vis tiek juos atmesti?",
|
||||
"confirmations.domain_block.confirm": "Hide entire domain",
|
||||
"confirmations.edit.confirm": "Redaguoti",
|
||||
"confirmations.edit.message": "Redaguojant dabar, bus perrašyta šiuo metu kuriama žinutė. Ar tikrai nori tęsti?",
|
||||
"confirmations.logout.confirm": "Atsijungti",
|
||||
"confirmations.logout.message": "Ar tikrai nori atsijungti?",
|
||||
"confirmations.mute.confirm": "Nutildyti",
|
||||
"confirmations.mute.explanation": "Tai paslėps jų įrašus ir įrašus, kuriuose jie menėmi, tačiau jie vis tiek galės matyti tavo įrašus ir sekti.",
|
||||
"confirmations.reply.confirm": "Atsakyti",
|
||||
"confirmations.reply.message": "Atsakydamas (-a) dabar perrašysi šiuo metu rašomą žinutę. Ar tikrai nori tęsti?",
|
||||
"confirmations.reply.message": "Atsakant dabar, bus perrašyta metu kuriama žinutė. Ar tikrai nori tęsti?",
|
||||
"confirmations.unfollow.confirm": "Nebesekti",
|
||||
"conversation.mark_as_read": "Žymėti kaip skaitytą",
|
||||
"conversation.open": "Peržiūrėti pokalbį",
|
||||
"conversation.with": "Su {names}",
|
||||
"copy_icon_button.copied": "Nukopijuota į iškarpinę",
|
||||
"copypaste.copied": "Nukopijuota",
|
||||
"copypaste.copy_to_clipboard": "Kopijuoti į iškarpinę",
|
||||
"disabled_account_banner.account_settings": "Paskyros nustatymai",
|
||||
"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_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
|
||||
"embed.instructions": "Embed this status on your website by copying the code below.",
|
||||
"embed.preview": "Štai kaip tai atrodys:",
|
||||
"emoji_button.objects": "Objektai",
|
||||
"emoji_button.search": "Paieška...",
|
||||
"empty_column.account_hides_collections": "Šis naudotojas (-a) pasirinko nepadaryti šią informaciją prieinamą",
|
||||
"empty_column.account_timeline": "No toots here!",
|
||||
|
@ -107,12 +203,64 @@
|
|||
"empty_column.hashtag": "Nėra nieko šiame saitažodyje kol kas.",
|
||||
"empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}",
|
||||
"empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
|
||||
"explore.title": "Naršyti",
|
||||
"explore.trending_links": "Naujienos",
|
||||
"explore.trending_statuses": "Įrašai",
|
||||
"explore.trending_tags": "Saitažodžiai",
|
||||
"filter_modal.added.context_mismatch_explanation": "Ši filtro kategorija netaikoma kontekste, kuriame peržiūrėjote šį pranešimą. Jei norite, kad pranešimas būtų filtruojamas ir šiame kontekste, turėsite redaguoti filtrą.",
|
||||
"filter_modal.added.context_mismatch_title": "Konteksto neatitikimas!",
|
||||
"filter_modal.added.expired_explanation": "Ši filtro kategorija nustojo galioti, kad ji būtų taikoma, turėsite pakeisti galiojimo datą.",
|
||||
"filter_modal.added.expired_title": "Pasibaigė filtro galiojimo laikas!",
|
||||
"filter_modal.added.review_and_configure": "Norėdami peržiūrėti ir toliau konfigūruoti šią filtro kategoriją, eikite į {settings_link}.",
|
||||
"filter_modal.added.review_and_configure_title": "Filtro nuostatos",
|
||||
"filter_modal.added.settings_link": "nustatymų puslapis",
|
||||
"filter_modal.added.short_explanation": "Šis pranešimas buvo įtrauktas į šią filtro kategoriją: {title}.",
|
||||
"filter_modal.added.title": "Pridėtas filtras!",
|
||||
"filter_modal.select_filter.context_mismatch": "netaikoma šiame kontekste",
|
||||
"filter_modal.select_filter.expired": "nebegalioja",
|
||||
"filter_modal.select_filter.prompt_new": "Nauja kategorija: {name}",
|
||||
"filter_modal.select_filter.search": "Ieškoti arba sukurti",
|
||||
"filter_modal.select_filter.subtitle": "Naudoti esamą kategoriją arba sukurti naują",
|
||||
"filter_modal.select_filter.title": "Filtruoti šį įrašą",
|
||||
"filter_modal.title.status": "Filtruoti šį įrašą",
|
||||
"firehose.all": "Visi",
|
||||
"firehose.local": "Šis serveris",
|
||||
"firehose.remote": "Kiti serveriai",
|
||||
"follow_request.authorize": "Autorizuoti",
|
||||
"follow_request.reject": "Atmesti",
|
||||
"follow_requests.unlocked_explanation": "Nors tavo paskyra neužrakinta, {domain} personalas mano, kad galbūt norėsi rankiniu būdu patikrinti šių paskyrų sekimo užklausas.",
|
||||
"followed_tags": "Sekamos saitažodžiai",
|
||||
"footer.about": "Apie",
|
||||
"footer.directory": "Profilių katalogas",
|
||||
"footer.get_app": "Gauti programėlę",
|
||||
"footer.invite": "Kviesti žmones",
|
||||
"footer.keyboard_shortcuts": "Spartieji klavišai",
|
||||
"footer.privacy_policy": "Privatumo politika",
|
||||
"footer.source_code": "Peržiūrėti šaltinio kodą",
|
||||
"footer.status": "Būsena",
|
||||
"generic.saved": "Išsaugoti",
|
||||
"getting_started.heading": "Pradedant",
|
||||
"hashtag.column_header.tag_mode.all": "ir {additional}",
|
||||
"hashtag.column_header.tag_mode.any": "ar {additional}",
|
||||
"hashtag.column_header.tag_mode.none": "be {additional}",
|
||||
"hashtag.column_settings.select.no_options_message": "Pasiūlymų nerasta",
|
||||
"hashtag.column_settings.select.placeholder": "Įvesti grotažymes…",
|
||||
"hashtag.column_settings.tag_mode.all": "Visi šie",
|
||||
"hashtag.column_settings.tag_mode.any": "Bet kuris šių",
|
||||
"hashtag.column_settings.tag_mode.none": "Nė vienas iš šių",
|
||||
"hashtag.column_settings.tag_toggle": "Include additional tags in this column",
|
||||
"hashtag.counter_by_accounts": "{count, plural,one {{counter} dalyvis}other {{counter} dalyviai}}",
|
||||
"hashtag.counter_by_uses": "{count, plural, one {{counter} įrašas} other {{counter} įrašų}}",
|
||||
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} įrašas} other {{counter} įrašų}} šiandien",
|
||||
"hashtag.follow": "Sekti grotažymę",
|
||||
"hashtag.unfollow": "Nesekti grotažymės",
|
||||
"hashtags.and_other": "…ir{count, plural,other {#daugiau}}",
|
||||
"home.actions.go_to_explore": "Žiūrėti kas populiaru",
|
||||
"home.actions.go_to_suggestions": "Rasti žmonių sekimui",
|
||||
"home.column_settings.basic": "Pagrindinis",
|
||||
"home.column_settings.show_reblogs": "Rodyti \"boosts\"",
|
||||
"home.column_settings.show_replies": "Rodyti atsakymus",
|
||||
"home.hide_announcements": "Slėpti skelbimus",
|
||||
"interaction_modal.no_account_yet": "Nesi Mastodon?",
|
||||
"interaction_modal.on_another_server": "Kitame serveryje",
|
||||
"interaction_modal.on_this_server": "Šiame serveryje",
|
||||
|
@ -151,9 +299,20 @@
|
|||
"keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
|
||||
"keyboard_shortcuts.up": "to move up in the list",
|
||||
"lightbox.close": "Uždaryti",
|
||||
"loading_indicator.label": "Kraunama…",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Slėpti vaizdą} few {Slėpti vaizdus} many {Slėpti vaizdo} other {Slėpti vaizdų}}",
|
||||
"moved_to_account_banner.text": "Tavo paskyra {disabledAccount} šiuo metu yra išjungta, nes persikėlei į {movedToAccount}.",
|
||||
"mute_modal.duration": "Trukmė",
|
||||
"mute_modal.hide_notifications": "Slėpti šio naudotojo pranešimus?",
|
||||
"navigation_bar.compose": "Compose new toot",
|
||||
"navigation_bar.discover": "Atrasti",
|
||||
"navigation_bar.domain_blocks": "Hidden domains",
|
||||
"navigation_bar.edit_profile": "Redaguoti profilį",
|
||||
"navigation_bar.explore": "Naršyti",
|
||||
"navigation_bar.favourites": "Mėgstamiausi",
|
||||
"navigation_bar.filters": "Nutylėti žodžiai",
|
||||
"navigation_bar.follow_requests": "Sekti prašymus",
|
||||
"navigation_bar.followed_tags": "Sekti grotažymę",
|
||||
"navigation_bar.follows_and_followers": "Sekimai ir sekėjai",
|
||||
"navigation_bar.lists": "Sąrašai",
|
||||
"navigation_bar.logout": "Atsijungti",
|
||||
|
@ -162,7 +321,16 @@
|
|||
"navigation_bar.personal": "Asmeninis",
|
||||
"navigation_bar.pins": "Pinned toots",
|
||||
"navigation_bar.preferences": "Nuostatos",
|
||||
"navigation_bar.public_timeline": "Federuota laiko juosta",
|
||||
"navigation_bar.search": "Ieškoti",
|
||||
"navigation_bar.security": "Apsauga",
|
||||
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
|
||||
"notification.admin.report": "{name} pranešė.{target}",
|
||||
"notification.admin.sign_up": "{name} užsiregistravo",
|
||||
"notification.favourite": "{name} pamėgo jūsų įrašą",
|
||||
"notification.follow": "{name} pradėjo jus sekti",
|
||||
"notification.follow_request": "{name} nori tapti jūsų sekėju",
|
||||
"notification.mention": "{name} paminėjo jus",
|
||||
"notification.own_poll": "Tavo apklausa baigėsi",
|
||||
"notification.poll": "Apklausa, kurioje balsavai, pasibaigė",
|
||||
"notification.reblog": "{name} boosted your status",
|
||||
|
@ -171,18 +339,67 @@
|
|||
"notifications.clear": "Išvalyti pranešimus",
|
||||
"notifications.clear_confirmation": "Ar tikrai nori visam laikui išvalyti visus pranešimus?",
|
||||
"notifications.column_settings.admin.report": "Nauji ataskaitos:",
|
||||
"notifications.column_settings.admin.sign_up": "Nauji prisiregistravimai:",
|
||||
"notifications.column_settings.alert": "Darbalaukio pranešimai",
|
||||
"notifications.column_settings.favourite": "Mėgstamiausi:",
|
||||
"notifications.column_settings.filter_bar.advanced": "Rodyti visas kategorijas",
|
||||
"notifications.column_settings.filter_bar.category": "Greito filtro juosta",
|
||||
"notifications.column_settings.filter_bar.show_bar": "Rodyti filtro juostą",
|
||||
"notifications.column_settings.follow": "Nauji sekėjai:",
|
||||
"notifications.column_settings.follow_request": "Nauji prašymai sekti:",
|
||||
"notifications.column_settings.mention": "Paminėjimai:",
|
||||
"notifications.column_settings.poll": "Balsavimo rezultatai:",
|
||||
"notifications.column_settings.push": "\"Push\" pranešimai",
|
||||
"notifications.column_settings.reblog": "\"Boost\" kiekis:",
|
||||
"notifications.column_settings.show": "Rodyti stulpelyje",
|
||||
"notifications.column_settings.sound": "Paleisti garsą",
|
||||
"notifications.column_settings.status": "New toots:",
|
||||
"notifications.column_settings.unread_notifications.category": "Neperskaityti pranešimai",
|
||||
"notifications.column_settings.unread_notifications.highlight": "Paryškinti neperskaitytus pranešimus",
|
||||
"notifications.column_settings.update": "Redagavimai:",
|
||||
"notifications.filter.all": "Visi",
|
||||
"notifications.filter.boosts": "\"Boost\" kiekis",
|
||||
"notifications.filter.favourites": "Mėgstamiausi",
|
||||
"notifications.filter.follows": "Sekimai",
|
||||
"notifications.filter.mentions": "Paminėjimai",
|
||||
"notifications.filter.polls": "Balsavimo rezultatai",
|
||||
"notifications.filter.statuses": "Atnaujinimai iš žmonių kuriuos sekate",
|
||||
"notifications.grant_permission": "Suteikti leidimą.",
|
||||
"notifications.group": "{count} pranešimai",
|
||||
"notifications.mark_as_read": "Pažymėti kiekvieną pranešimą kaip perskaitytą",
|
||||
"notifications.permission_denied": "Darbalaukio pranešimai nepasiekiami dėl anksčiau atmestos naršyklės leidimų užklausos",
|
||||
"notifications.permission_denied_alert": "Negalima įjungti darbalaukio pranešimų, nes prieš tai naršyklės leidimas buvo atmestas",
|
||||
"notifications.permission_required": "Darbalaukio pranešimai nepasiekiami, nes nesuteiktas reikiamas leidimas.",
|
||||
"notifications_permission_banner.enable": "Įjungti darbalaukio pranešimus",
|
||||
"notifications_permission_banner.how_to_control": "Jei norite gauti pranešimus, kai \"Mastodon\" nėra atidarytas, įjunkite darbalaukio pranešimus. Įjungę darbalaukio pranešimus, galite tiksliai valdyti, kokių tipų sąveikos generuoja darbalaukio pranešimus, naudodamiesi pirmiau esančiu mygtuku {icon}.",
|
||||
"onboarding.action.back": "Gražinkite mane atgal",
|
||||
"onboarding.actions.back": "Gražinkite mane atgal",
|
||||
"onboarding.actions.go_to_explore": "See what's trending",
|
||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
||||
"onboarding.compose.template": "Sveiki #Mastodon!",
|
||||
"onboarding.follows.empty": "Deja, šiuo metu jokių rezultatų parodyti negalima. Galite pabandyti naudoti paiešką arba naršyti atradimo puslapyje, kad surastumėte žmonių, kuriuos norite sekti, arba pabandyti vėliau.",
|
||||
"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.profile.discoverable": "Padaryti mano profilį atrandamą",
|
||||
"onboarding.profile.discoverable_hint": "Kai pasirenki Mastodon atrandamumą, tavo įrašai gali būti rodomi paieškos rezultatuose ir trendose, o profilis gali būti siūlomas panašių interesų turintiems žmonėms.",
|
||||
"onboarding.profile.display_name": "Rodomas vardas",
|
||||
"onboarding.profile.display_name_hint": "Tavo pilnas vardas arba linksmas vardas…",
|
||||
"onboarding.profile.lead": "Gali visada tai užbaigti vėliau nustatymuose, kur yra dar daugiau pritaikymo parinkčių.",
|
||||
"onboarding.profile.note": "Biografija",
|
||||
"onboarding.profile.note_hint": "Gali @paminėti kitus žmones arba #saitažodžius…",
|
||||
"onboarding.profile.save_and_continue": "Išsaugoti ir tęsti",
|
||||
"onboarding.profile.title": "Profilio konfigūravimas",
|
||||
"onboarding.profile.upload_avatar": "Įkelti profilio nuotrauką",
|
||||
"onboarding.profile.upload_header": "Įkelti profilio antraštę",
|
||||
"onboarding.share.lead": "Praneškite žmonėms, kaip jus rasti \"Mastodon\"!",
|
||||
"onboarding.share.message": "Aš {username} #Mastodon! Ateik sekti manęs adresu {url}",
|
||||
"onboarding.share.next_steps": "Galimi kiti žingsniai:",
|
||||
"onboarding.start.lead": "Dabar esi Mastodon dalis – unikalios decentralizuotos socialinės žiniasklaidos platformos, kurioje tu, o ne algoritmas, pats nustatai savo patirtį. Pradėkime tavo kelionę šioje naujoje socialinėje erdvėje:",
|
||||
"onboarding.start.skip": "Want to skip right ahead?",
|
||||
"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": "Susikūrk savo pirmąjį įrašą",
|
||||
"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!",
|
||||
|
@ -198,28 +415,109 @@
|
|||
"privacy.unlisted.long": "Matomas visiems, bet atsisakyta atradimo funkcijų",
|
||||
"privacy.unlisted.short": "Neįtrauktas į sąrašą",
|
||||
"privacy_policy.last_updated": "Paskutinį kartą atnaujinta {date}",
|
||||
"report.placeholder": "Type or paste additional comments",
|
||||
"report.submit": "Submit report",
|
||||
"recommended": "Rekomenduojama",
|
||||
"relative_time.hours": "{number} val.",
|
||||
"relative_time.just_now": "dabar",
|
||||
"relative_time.minutes": "{number} min.",
|
||||
"relative_time.seconds": "{number} sek.",
|
||||
"relative_time.today": "šiandien",
|
||||
"report.mute_explanation": "Jų įrašų nematysi. Jie vis tiek gali tave sekti ir matyti įrašus, bet nežinos, kad jie nutildyti.",
|
||||
"report.next": "Tęsti",
|
||||
"report.placeholder": "Papildomi komentarai",
|
||||
"report.reasons.dislike": "Man tai nepatinka",
|
||||
"report.reasons.dislike_description": "Tai nėra tai, ką nori matyti",
|
||||
"report.reasons.legal": "Tai nelegalu",
|
||||
"report.reasons.legal_description": "Manai, kad tai pažeidžia tavo arba serverio šalies įstatymus",
|
||||
"report.reasons.other": "Tai kažkas kita",
|
||||
"report.rules.subtitle": "Pasirink viską, kas tinka",
|
||||
"report.rules.title": "Kokios taisyklės pažeidžiamos?",
|
||||
"report.statuses.subtitle": "Pasirinkti viską, kas tinka",
|
||||
"report.statuses.title": "Ar yra kokių nors įrašų, patvirtinančių šį pranešimą?",
|
||||
"report.submit": "Pateikti",
|
||||
"report.target": "Report {target}",
|
||||
"report.thanks.take_action": "Čia pateikiamos galimybės kontroliuoti, ką matote \"Mastodon\":",
|
||||
"report.thanks.take_action_actionable": "Kol tai peržiūrėsime, galite imtis veiksmų prieš @{name}:",
|
||||
"report.thanks.title": "Nenorite to matyti?",
|
||||
"report.thanks.title_actionable": "Ačiū, kad pranešėte, mes tai išnagrinėsime.",
|
||||
"report.unfollow": "Nebesekti @{name}",
|
||||
"report.unfollow_explanation": "Jūs sekate šią paskyrą. Norėdami nebematyti jų įrašų savo pagrindiniame kanale, panaikinkite jų sekimą.",
|
||||
"report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
|
||||
"search.placeholder": "Paieška",
|
||||
"search.search_or_paste": "Ieškok arba įklijuok URL",
|
||||
"search_popout.full_text_search_disabled_message": "Nepasiekima {domain}.",
|
||||
"search_popout.full_text_search_logged_out_message": "Pasiekiama tik prisijungus.",
|
||||
"search_popout.language_code": "ISO kalbos kodas",
|
||||
"search_popout.specific_date": "konkreti data",
|
||||
"search_popout.user": "naudotojas",
|
||||
"search_results.accounts": "Profiliai",
|
||||
"search_results.all": "Visi",
|
||||
"search_results.hashtags": "Saitažodžiai",
|
||||
"search_results.nothing_found": "Nepavyko rasti nieko pagal šiuos paieškos terminus.",
|
||||
"search_results.statuses": "Toots",
|
||||
"sign_in_banner.sign_in": "Sign in",
|
||||
"sign_in_banner.sign_in": "Prisijungimas",
|
||||
"sign_in_banner.text": "Prisijunk, kad galėtum sekti profilius arba saitažodžius, mėgsti, bendrinti ir atsakyti į įrašus. Taip pat gali bendrauti iš savo paskyros kitame serveryje.",
|
||||
"status.admin_status": "Open this status in the moderation interface",
|
||||
"status.copy": "Copy link to status",
|
||||
"status.copy": "Kopijuoti nuorodą į įrašą",
|
||||
"status.delete": "Ištrinti",
|
||||
"status.edit": "Redaguoti",
|
||||
"status.edited": "Redaguota {date}",
|
||||
"status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
|
||||
"status.hide": "Slėpti įrašą",
|
||||
"status.load_more": "Pakrauti daugiau",
|
||||
"status.media.open": "Spausk, kad atidaryti",
|
||||
"status.media.show": "Spausk, kad pamatyti",
|
||||
"status.media.show": "Spausk, kad matyti",
|
||||
"status.media_hidden": "Paslėpta medija",
|
||||
"status.mention": "Paminėti @{name}",
|
||||
"status.more": "Daugiau",
|
||||
"status.open": "Expand this status",
|
||||
"status.pinned": "Pinned toot",
|
||||
"status.pin": "Prisegti prie profilio",
|
||||
"status.pinned": "Prisegtas įrašas",
|
||||
"status.read_more": "Skaityti daugiau",
|
||||
"status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
|
||||
"status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
|
||||
"status.redraft": "Ištrinti ir iš naujo parengti juodraštį",
|
||||
"status.reply": "Atsakyti",
|
||||
"status.replyAll": "Atsakyti į giją",
|
||||
"status.report": "Pranešti @{name}",
|
||||
"status.sensitive_warning": "Jautrus turinys",
|
||||
"status.share": "Bendrinti",
|
||||
"status.show_filter_reason": "Rodyti vis tiek",
|
||||
"status.show_less": "Rodyti mažiau",
|
||||
"status.show_less_all": "Rodyti mažiau visiems",
|
||||
"status.show_more": "Rodyti daugiau",
|
||||
"status.show_more_all": "Rodyti daugiau visiems",
|
||||
"status.show_original": "Rodyti originalą",
|
||||
"status.title.with_attachments": "{user}{attachmentCount, plural, one {priedas} few {{attachmentCount} priedai} many {{attachmentCount} priedo} other {{attachmentCount} priedų}}",
|
||||
"status.translate": "Versti",
|
||||
"status.translated_from_with": "Išversta iš {lang} naudojant {provider}",
|
||||
"status.uncached_media_warning": "Peržiūra nepasiekiama",
|
||||
"timeline_hint.resources.statuses": "Older toots",
|
||||
"tabs_bar.home": "Pradžia",
|
||||
"tabs_bar.notifications": "Pranešimai",
|
||||
"time_remaining.days": "Liko {number, plural, one {# diena} few {# dienos} many {# dieno} other {# dienų}}",
|
||||
"timeline_hint.remote_resource_not_displayed": "{resource} iš kitų serverių nerodomas.",
|
||||
"timeline_hint.resources.followers": "Sekėjai",
|
||||
"timeline_hint.resources.follows": "Seka",
|
||||
"timeline_hint.resources.statuses": "Senesni įrašai",
|
||||
"trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}",
|
||||
"ui.beforeunload": "Jei paliksi Mastodon, tavo juodraštis bus prarastas.",
|
||||
"units.short.thousand": "{count} tūkst.",
|
||||
"upload_form.audio_description": "Describe for people with hearing loss",
|
||||
"upload_form.description": "Describe for the visually impaired",
|
||||
"upload_form.description_missing": "Nėra pridėto aprašymo",
|
||||
"upload_form.edit": "Redaguoti",
|
||||
"upload_form.undo": "Ištrinti",
|
||||
"upload_form.video_description": "Describe for people with hearing loss or visual impairment",
|
||||
"upload_modal.choose_image": "Pasirinkti vaizdą",
|
||||
"upload_modal.description_placeholder": "Greita rudoji lapė peršoka tinginį šunį",
|
||||
"upload_modal.edit_media": "Redaguoti mediją",
|
||||
"upload_progress.label": "Uploading…"
|
||||
"upload_progress.label": "Įkeliama...",
|
||||
"upload_progress.processing": "Apdorojama…",
|
||||
"username.taken": "Šis naudotojo vardas užimtas. Pabandyk kitą.",
|
||||
"video.close": "Uždaryti vaizdo įrašą",
|
||||
"video.download": "Atsisiųsti failą",
|
||||
"video.exit_fullscreen": "Išeiti iš viso ekrano",
|
||||
"video.fullscreen": "Visas ekranas",
|
||||
"video.hide": "Slėpti vaizdo įrašą",
|
||||
"video.mute": "Nutildyti garsą",
|
||||
"video.play": "Leisti",
|
||||
"video.unmute": "Atitildyti garsą"
|
||||
}
|
||||
|
|
|
@ -390,7 +390,6 @@
|
|||
"lists.search": "Meklēt starp cilvēkiem, kuriem tu seko",
|
||||
"lists.subheading": "Tavi saraksti",
|
||||
"load_pending": "{count, plural, one {# jauna lieta} other {# jaunas lietas}}",
|
||||
"loading_indicator.label": "Ielādē...",
|
||||
"media_gallery.toggle_visible": "{number, plural, one {Slēpt attēlu} other {Slēpt attēlus}}",
|
||||
"moved_to_account_banner.text": "Tavs konts {disabledAccount} pašlaik ir atspējots, jo pārcēlies uz kontu {movedToAccount}.",
|
||||
"mute_modal.duration": "Ilgums",
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue