mirror of
https://github.com/mastodon/mastodon
synced 2024-12-11 21:28:23 +09:00
Merge branch 'main' into main
This commit is contained in:
commit
a2fc9bba83
2
.github/workflows/bundler-audit.yml
vendored
2
.github/workflows/bundler-audit.yml
vendored
@ -36,4 +36,4 @@ jobs:
|
|||||||
bundler-cache: true
|
bundler-cache: true
|
||||||
|
|
||||||
- name: Run bundler-audit
|
- name: Run bundler-audit
|
||||||
run: bundle exec bundler-audit check --update
|
run: bin/bundler-audit check --update
|
||||||
|
10
.github/workflows/check-i18n.yml
vendored
10
.github/workflows/check-i18n.yml
vendored
@ -35,18 +35,18 @@ jobs:
|
|||||||
git diff --exit-code
|
git diff --exit-code
|
||||||
|
|
||||||
- name: Check locale file normalization
|
- name: Check locale file normalization
|
||||||
run: bundle exec i18n-tasks check-normalized
|
run: bin/i18n-tasks check-normalized
|
||||||
|
|
||||||
- name: Check for unused strings
|
- name: Check for unused strings
|
||||||
run: bundle exec i18n-tasks unused
|
run: bin/i18n-tasks unused
|
||||||
|
|
||||||
- name: Check for missing strings in English YML
|
- name: Check for missing strings in English YML
|
||||||
run: |
|
run: |
|
||||||
bundle exec i18n-tasks add-missing -l en
|
bin/i18n-tasks add-missing -l en
|
||||||
git diff --exit-code
|
git diff --exit-code
|
||||||
|
|
||||||
- name: Check for wrong string interpolations
|
- name: Check for wrong string interpolations
|
||||||
run: bundle exec i18n-tasks check-consistent-interpolations
|
run: bin/i18n-tasks check-consistent-interpolations
|
||||||
|
|
||||||
- name: Check that all required locale files exist
|
- name: Check that all required locale files exist
|
||||||
run: bundle exec rake repo:check_locales_files
|
run: bin/rake repo:check_locales_files
|
||||||
|
@ -46,7 +46,7 @@ jobs:
|
|||||||
uses: ./.github/actions/setup-ruby
|
uses: ./.github/actions/setup-ruby
|
||||||
|
|
||||||
- name: Run i18n normalize task
|
- name: Run i18n normalize task
|
||||||
run: bundle exec i18n-tasks normalize
|
run: bin/i18n-tasks normalize
|
||||||
|
|
||||||
# Create or update the pull request
|
# Create or update the pull request
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
|
2
.github/workflows/crowdin-download.yml
vendored
2
.github/workflows/crowdin-download.yml
vendored
@ -48,7 +48,7 @@ jobs:
|
|||||||
uses: ./.github/actions/setup-ruby
|
uses: ./.github/actions/setup-ruby
|
||||||
|
|
||||||
- name: Run i18n normalize task
|
- name: Run i18n normalize task
|
||||||
run: bundle exec i18n-tasks normalize
|
run: bin/i18n-tasks normalize
|
||||||
|
|
||||||
# Create or update the pull request
|
# Create or update the pull request
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
|
2
.github/workflows/lint-haml.yml
vendored
2
.github/workflows/lint-haml.yml
vendored
@ -43,4 +43,4 @@ jobs:
|
|||||||
- name: Run haml-lint
|
- name: Run haml-lint
|
||||||
run: |
|
run: |
|
||||||
echo "::add-matcher::.github/workflows/haml-lint-problem-matcher.json"
|
echo "::add-matcher::.github/workflows/haml-lint-problem-matcher.json"
|
||||||
bundle exec haml-lint --reporter github
|
bin/haml-lint --reporter github
|
||||||
|
@ -68,7 +68,7 @@ The following changelog entries focus on changes visible to users, administrator
|
|||||||
- `GET /api/v2/notifications`: https://docs.joinmastodon.org/methods/grouped_notifications/#get-grouped
|
- `GET /api/v2/notifications`: https://docs.joinmastodon.org/methods/grouped_notifications/#get-grouped
|
||||||
- `GET /api/v2/notifications/:group_key`: https://docs.joinmastodon.org/methods/grouped_notifications/#get-notification-group
|
- `GET /api/v2/notifications/:group_key`: https://docs.joinmastodon.org/methods/grouped_notifications/#get-notification-group
|
||||||
- `GET /api/v2/notifications/:group_key/accounts`: https://docs.joinmastodon.org/methods/grouped_notifications/#get-group-accounts
|
- `GET /api/v2/notifications/:group_key/accounts`: https://docs.joinmastodon.org/methods/grouped_notifications/#get-group-accounts
|
||||||
- `POST /api/v2/notifications/:group_key/dimsiss`: https://docs.joinmastodon.org/methods/grouped_notifications/#dismiss-group
|
- `POST /api/v2/notifications/:group_key/dismiss`: https://docs.joinmastodon.org/methods/grouped_notifications/#dismiss-group
|
||||||
- `GET /api/v2/notifications/:unread_count`: https://docs.joinmastodon.org/methods/grouped_notifications/#unread-group-count
|
- `GET /api/v2/notifications/:unread_count`: https://docs.joinmastodon.org/methods/grouped_notifications/#unread-group-count
|
||||||
- **Add notification policies, filtered notifications and notification requests** (#29366, #29529, #29433, #29565, #29567, #29572, #29575, #29588, #29646, #29652, #29658, #29666, #29693, #29699, #29737, #29706, #29570, #29752, #29810, #29826, #30114, #30251, #30559, #29868, #31008, #31011, #30996, #31149, #31220, #31222, #31225, #31242, #31262, #31250, #31273, #31310, #31316, #31322, #31329, #31324, #31331, #31343, #31342, #31309, #31358, #31378, #31406, #31256, #31456, #31419, #31457, #31508, #31540, #31541, #31723, #32062 and #32281 by @ClearlyClaire, @Gargron, @TheEssem, @mgmn, @oneiros, and @renchap)\
|
- **Add notification policies, filtered notifications and notification requests** (#29366, #29529, #29433, #29565, #29567, #29572, #29575, #29588, #29646, #29652, #29658, #29666, #29693, #29699, #29737, #29706, #29570, #29752, #29810, #29826, #30114, #30251, #30559, #29868, #31008, #31011, #30996, #31149, #31220, #31222, #31225, #31242, #31262, #31250, #31273, #31310, #31316, #31322, #31329, #31324, #31331, #31343, #31342, #31309, #31358, #31378, #31406, #31256, #31456, #31419, #31457, #31508, #31540, #31541, #31723, #32062 and #32281 by @ClearlyClaire, @Gargron, @TheEssem, @mgmn, @oneiros, and @renchap)\
|
||||||
The old “Block notifications from non-followers”, “Block notifications from people you don't follow” and “Block direct messages from people you don't follow” notification settings have been replaced by a new set of settings found directly in the notification column.\
|
The old “Block notifications from non-followers”, “Block notifications from people you don't follow” and “Block direct messages from people you don't follow” notification settings have been replaced by a new set of settings found directly in the notification column.\
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# syntax=docker/dockerfile:1.10
|
# syntax=docker/dockerfile:1.11
|
||||||
|
|
||||||
# This file is designed for production server deployment, not local development work
|
# This file is designed for production server deployment, not local development work
|
||||||
# For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/README.md#docker
|
# For a containerized local dev environment, see: https://github.com/mastodon/mastodon/blob/main/README.md#docker
|
||||||
|
43
Gemfile.lock
43
Gemfile.lock
@ -93,10 +93,9 @@ GEM
|
|||||||
annotaterb (4.13.0)
|
annotaterb (4.13.0)
|
||||||
ast (2.4.2)
|
ast (2.4.2)
|
||||||
attr_required (1.0.2)
|
attr_required (1.0.2)
|
||||||
awrence (1.2.1)
|
|
||||||
aws-eventstream (1.3.0)
|
aws-eventstream (1.3.0)
|
||||||
aws-partitions (1.1012.0)
|
aws-partitions (1.1013.0)
|
||||||
aws-sdk-core (3.213.0)
|
aws-sdk-core (3.214.0)
|
||||||
aws-eventstream (~> 1, >= 1.3.0)
|
aws-eventstream (~> 1, >= 1.3.0)
|
||||||
aws-partitions (~> 1, >= 1.992.0)
|
aws-partitions (~> 1, >= 1.992.0)
|
||||||
aws-sigv4 (~> 1.9)
|
aws-sigv4 (~> 1.9)
|
||||||
@ -104,7 +103,7 @@ GEM
|
|||||||
aws-sdk-kms (1.96.0)
|
aws-sdk-kms (1.96.0)
|
||||||
aws-sdk-core (~> 3, >= 3.210.0)
|
aws-sdk-core (~> 3, >= 3.210.0)
|
||||||
aws-sigv4 (~> 1.5)
|
aws-sigv4 (~> 1.5)
|
||||||
aws-sdk-s3 (1.173.0)
|
aws-sdk-s3 (1.174.0)
|
||||||
aws-sdk-core (~> 3, >= 3.210.0)
|
aws-sdk-core (~> 3, >= 3.210.0)
|
||||||
aws-sdk-kms (~> 1)
|
aws-sdk-kms (~> 1)
|
||||||
aws-sigv4 (~> 1.5)
|
aws-sigv4 (~> 1.5)
|
||||||
@ -349,7 +348,8 @@ GEM
|
|||||||
json-schema (5.1.0)
|
json-schema (5.1.0)
|
||||||
addressable (~> 2.8)
|
addressable (~> 2.8)
|
||||||
jsonapi-renderer (0.2.2)
|
jsonapi-renderer (0.2.2)
|
||||||
jwt (2.7.1)
|
jwt (2.9.3)
|
||||||
|
base64
|
||||||
kaminari (1.2.2)
|
kaminari (1.2.2)
|
||||||
activesupport (>= 4.1.0)
|
activesupport (>= 4.1.0)
|
||||||
kaminari-actionview (= 1.2.2)
|
kaminari-actionview (= 1.2.2)
|
||||||
@ -411,7 +411,7 @@ GEM
|
|||||||
minitest (5.25.1)
|
minitest (5.25.1)
|
||||||
msgpack (1.7.5)
|
msgpack (1.7.5)
|
||||||
multi_json (1.15.0)
|
multi_json (1.15.0)
|
||||||
mutex_m (0.2.0)
|
mutex_m (0.3.0)
|
||||||
net-http (0.5.0)
|
net-http (0.5.0)
|
||||||
uri
|
uri
|
||||||
net-imap (0.5.1)
|
net-imap (0.5.1)
|
||||||
@ -424,7 +424,7 @@ GEM
|
|||||||
timeout
|
timeout
|
||||||
net-smtp (0.5.0)
|
net-smtp (0.5.0)
|
||||||
net-protocol
|
net-protocol
|
||||||
nio4r (2.7.3)
|
nio4r (2.7.4)
|
||||||
nokogiri (1.16.7)
|
nokogiri (1.16.7)
|
||||||
mini_portile2 (~> 2.8.2)
|
mini_portile2 (~> 2.8.2)
|
||||||
racc (~> 1.4)
|
racc (~> 1.4)
|
||||||
@ -472,7 +472,7 @@ GEM
|
|||||||
opentelemetry-common (~> 0.20)
|
opentelemetry-common (~> 0.20)
|
||||||
opentelemetry-sdk (~> 1.2)
|
opentelemetry-sdk (~> 1.2)
|
||||||
opentelemetry-semantic_conventions
|
opentelemetry-semantic_conventions
|
||||||
opentelemetry-helpers-sql-obfuscation (0.2.0)
|
opentelemetry-helpers-sql-obfuscation (0.2.1)
|
||||||
opentelemetry-common (~> 0.21)
|
opentelemetry-common (~> 0.21)
|
||||||
opentelemetry-instrumentation-action_mailer (0.2.0)
|
opentelemetry-instrumentation-action_mailer (0.2.0)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
@ -492,7 +492,7 @@ GEM
|
|||||||
opentelemetry-instrumentation-active_model_serializers (0.20.2)
|
opentelemetry-instrumentation-active_model_serializers (0.20.2)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.22.1)
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
opentelemetry-instrumentation-active_record (0.8.0)
|
opentelemetry-instrumentation-active_record (0.8.1)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.22.1)
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
opentelemetry-instrumentation-active_support (0.6.0)
|
opentelemetry-instrumentation-active_support (0.6.0)
|
||||||
@ -505,29 +505,29 @@ GEM
|
|||||||
opentelemetry-instrumentation-concurrent_ruby (0.21.4)
|
opentelemetry-instrumentation-concurrent_ruby (0.21.4)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.22.1)
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
opentelemetry-instrumentation-excon (0.22.4)
|
opentelemetry-instrumentation-excon (0.22.5)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.22.1)
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
opentelemetry-instrumentation-faraday (0.24.6)
|
opentelemetry-instrumentation-faraday (0.24.7)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.22.1)
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
opentelemetry-instrumentation-http (0.23.4)
|
opentelemetry-instrumentation-http (0.23.5)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.22.1)
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
opentelemetry-instrumentation-http_client (0.22.7)
|
opentelemetry-instrumentation-http_client (0.22.8)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.22.1)
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
opentelemetry-instrumentation-net_http (0.22.7)
|
opentelemetry-instrumentation-net_http (0.22.8)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.22.1)
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
opentelemetry-instrumentation-pg (0.29.0)
|
opentelemetry-instrumentation-pg (0.29.1)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-helpers-sql-obfuscation
|
opentelemetry-helpers-sql-obfuscation
|
||||||
opentelemetry-instrumentation-base (~> 0.22.1)
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
opentelemetry-instrumentation-rack (0.25.0)
|
opentelemetry-instrumentation-rack (0.25.0)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-base (~> 0.22.1)
|
opentelemetry-instrumentation-base (~> 0.22.1)
|
||||||
opentelemetry-instrumentation-rails (0.33.0)
|
opentelemetry-instrumentation-rails (0.33.1)
|
||||||
opentelemetry-api (~> 1.0)
|
opentelemetry-api (~> 1.0)
|
||||||
opentelemetry-instrumentation-action_mailer (~> 0.2.0)
|
opentelemetry-instrumentation-action_mailer (~> 0.2.0)
|
||||||
opentelemetry-instrumentation-action_pack (~> 0.10.0)
|
opentelemetry-instrumentation-action_pack (~> 0.10.0)
|
||||||
@ -580,7 +580,7 @@ GEM
|
|||||||
psych (5.2.0)
|
psych (5.2.0)
|
||||||
stringio
|
stringio
|
||||||
public_suffix (6.0.1)
|
public_suffix (6.0.1)
|
||||||
puma (6.4.3)
|
puma (6.5.0)
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
pundit (2.4.0)
|
pundit (2.4.0)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
@ -752,7 +752,7 @@ GEM
|
|||||||
activerecord (>= 4.0.0)
|
activerecord (>= 4.0.0)
|
||||||
railties (>= 4.0.0)
|
railties (>= 4.0.0)
|
||||||
securerandom (0.3.2)
|
securerandom (0.3.2)
|
||||||
selenium-webdriver (4.26.0)
|
selenium-webdriver (4.27.0)
|
||||||
base64 (~> 0.2)
|
base64 (~> 0.2)
|
||||||
logger (~> 1.4)
|
logger (~> 1.4)
|
||||||
rexml (~> 3.2, >= 3.2.5)
|
rexml (~> 3.2, >= 3.2.5)
|
||||||
@ -844,9 +844,8 @@ GEM
|
|||||||
public_suffix
|
public_suffix
|
||||||
warden (1.2.9)
|
warden (1.2.9)
|
||||||
rack (>= 2.0.9)
|
rack (>= 2.0.9)
|
||||||
webauthn (3.1.0)
|
webauthn (3.2.2)
|
||||||
android_key_attestation (~> 0.3.0)
|
android_key_attestation (~> 0.3.0)
|
||||||
awrence (~> 1.1)
|
|
||||||
bindata (~> 2.4)
|
bindata (~> 2.4)
|
||||||
cbor (~> 0.5.9)
|
cbor (~> 0.5.9)
|
||||||
cose (~> 1.1)
|
cose (~> 1.1)
|
||||||
@ -1031,7 +1030,7 @@ DEPENDENCIES
|
|||||||
xorcist (~> 1.1)
|
xorcist (~> 1.1)
|
||||||
|
|
||||||
RUBY VERSION
|
RUBY VERSION
|
||||||
ruby 3.3.5p100
|
ruby 3.3.6p108
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.5.22
|
2.5.23
|
||||||
|
@ -22,7 +22,6 @@ class ApplicationController < ActionController::Base
|
|||||||
helper_method :use_seamless_external_login?
|
helper_method :use_seamless_external_login?
|
||||||
helper_method :sso_account_settings
|
helper_method :sso_account_settings
|
||||||
helper_method :limited_federation_mode?
|
helper_method :limited_federation_mode?
|
||||||
helper_method :body_class_string
|
|
||||||
helper_method :skip_csrf_meta_tags?
|
helper_method :skip_csrf_meta_tags?
|
||||||
|
|
||||||
rescue_from ActionController::ParameterMissing, Paperclip::AdapterRegistry::NoHandlerError, with: :bad_request
|
rescue_from ActionController::ParameterMissing, Paperclip::AdapterRegistry::NoHandlerError, with: :bad_request
|
||||||
@ -158,10 +157,6 @@ class ApplicationController < ActionController::Base
|
|||||||
current_user.setting_theme
|
current_user.setting_theme
|
||||||
end
|
end
|
||||||
|
|
||||||
def body_class_string
|
|
||||||
@body_classes || ''
|
|
||||||
end
|
|
||||||
|
|
||||||
def respond_with_error(code)
|
def respond_with_error(code)
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.any { render "errors/#{code}", layout: 'error', status: code, formats: [:html] }
|
format.any { render "errors/#{code}", layout: 'error', status: code, formats: [:html] }
|
||||||
|
@ -28,7 +28,7 @@ module CacheConcern
|
|||||||
def render_with_cache(**options)
|
def render_with_cache(**options)
|
||||||
raise ArgumentError, 'Only JSON render calls are supported' unless options.key?(:json) || block_given?
|
raise ArgumentError, 'Only JSON render calls are supported' unless options.key?(:json) || block_given?
|
||||||
|
|
||||||
key = options.delete(:key) || [[params[:controller], params[:action]].join('/'), options[:json].respond_to?(:cache_key) ? options[:json].cache_key : nil, options[:fields].nil? ? nil : options[:fields].join(',')].compact.join(':')
|
key = options.delete(:key) || [[params[:controller], params[:action]].join('/'), options[:json].respond_to?(:cache_key) ? options[:json].cache_key : nil, options[:fields]&.join(',')].compact.join(':')
|
||||||
expires_in = options.delete(:expires_in) || 3.minutes
|
expires_in = options.delete(:expires_in) || 3.minutes
|
||||||
body = Rails.cache.read(key, raw: true)
|
body = Rails.cache.read(key, raw: true)
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ module ApplicationHelper
|
|||||||
end
|
end
|
||||||
|
|
||||||
def body_classes
|
def body_classes
|
||||||
output = body_class_string.split
|
output = []
|
||||||
output << content_for(:body_classes)
|
output << content_for(:body_classes)
|
||||||
output << "theme-#{current_theme.parameterize}"
|
output << "theme-#{current_theme.parameterize}"
|
||||||
output << 'system-font' if current_account&.user&.setting_system_font_ui
|
output << 'system-font' if current_account&.user&.setting_system_font_ui
|
||||||
|
@ -230,62 +230,6 @@ function loaded() {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
Rails.delegate(
|
|
||||||
document,
|
|
||||||
'button.status__content__spoiler-link',
|
|
||||||
'click',
|
|
||||||
function () {
|
|
||||||
if (!(this instanceof HTMLButtonElement)) return;
|
|
||||||
|
|
||||||
const statusEl = this.parentNode?.parentNode;
|
|
||||||
|
|
||||||
if (
|
|
||||||
!(
|
|
||||||
statusEl instanceof HTMLDivElement &&
|
|
||||||
statusEl.classList.contains('.status__content')
|
|
||||||
)
|
|
||||||
)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (statusEl.dataset.spoiler === 'expanded') {
|
|
||||||
statusEl.dataset.spoiler = 'folded';
|
|
||||||
this.textContent = new IntlMessageFormat(
|
|
||||||
localeData['status.show_more'] ?? 'Show more',
|
|
||||||
locale,
|
|
||||||
).format() as string;
|
|
||||||
} else {
|
|
||||||
statusEl.dataset.spoiler = 'expanded';
|
|
||||||
this.textContent = new IntlMessageFormat(
|
|
||||||
localeData['status.show_less'] ?? 'Show less',
|
|
||||||
locale,
|
|
||||||
).format() as string;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
document
|
|
||||||
.querySelectorAll<HTMLButtonElement>('button.status__content__spoiler-link')
|
|
||||||
.forEach((spoilerLink) => {
|
|
||||||
const statusEl = spoilerLink.parentNode?.parentNode;
|
|
||||||
|
|
||||||
if (
|
|
||||||
!(
|
|
||||||
statusEl instanceof HTMLDivElement &&
|
|
||||||
statusEl.classList.contains('.status__content')
|
|
||||||
)
|
|
||||||
)
|
|
||||||
return;
|
|
||||||
|
|
||||||
const message =
|
|
||||||
statusEl.dataset.spoiler === 'expanded'
|
|
||||||
? (localeData['status.show_less'] ?? 'Show less')
|
|
||||||
: (localeData['status.show_more'] ?? 'Show more');
|
|
||||||
spoilerLink.textContent = new IntlMessageFormat(
|
|
||||||
message,
|
|
||||||
locale,
|
|
||||||
).format() as string;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Rails.delegate(
|
Rails.delegate(
|
||||||
@ -439,6 +383,24 @@ Rails.delegate(document, '#registration_new_user,#new_user', 'submit', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Rails.delegate(document, '.rules-list button', 'click', ({ target }) => {
|
||||||
|
if (!(target instanceof HTMLElement)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const button = target.closest('button');
|
||||||
|
|
||||||
|
if (!button) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (button.ariaExpanded === 'true') {
|
||||||
|
button.ariaExpanded = 'false';
|
||||||
|
} else {
|
||||||
|
button.ariaExpanded = 'true';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
function main() {
|
function main() {
|
||||||
ready(loaded).catch((error: unknown) => {
|
ready(loaded).catch((error: unknown) => {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
|
@ -1,58 +0,0 @@
|
|||||||
import api from '../api';
|
|
||||||
|
|
||||||
import { fetchRelationships } from './accounts';
|
|
||||||
import { importFetchedAccounts } from './importer';
|
|
||||||
|
|
||||||
export const SUGGESTIONS_FETCH_REQUEST = 'SUGGESTIONS_FETCH_REQUEST';
|
|
||||||
export const SUGGESTIONS_FETCH_SUCCESS = 'SUGGESTIONS_FETCH_SUCCESS';
|
|
||||||
export const SUGGESTIONS_FETCH_FAIL = 'SUGGESTIONS_FETCH_FAIL';
|
|
||||||
|
|
||||||
export const SUGGESTIONS_DISMISS = 'SUGGESTIONS_DISMISS';
|
|
||||||
|
|
||||||
export function fetchSuggestions(withRelationships = false) {
|
|
||||||
return (dispatch) => {
|
|
||||||
dispatch(fetchSuggestionsRequest());
|
|
||||||
|
|
||||||
api().get('/api/v2/suggestions', { params: { limit: 20 } }).then(response => {
|
|
||||||
dispatch(importFetchedAccounts(response.data.map(x => x.account)));
|
|
||||||
dispatch(fetchSuggestionsSuccess(response.data));
|
|
||||||
|
|
||||||
if (withRelationships) {
|
|
||||||
dispatch(fetchRelationships(response.data.map(item => item.account.id)));
|
|
||||||
}
|
|
||||||
}).catch(error => dispatch(fetchSuggestionsFail(error)));
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export function fetchSuggestionsRequest() {
|
|
||||||
return {
|
|
||||||
type: SUGGESTIONS_FETCH_REQUEST,
|
|
||||||
skipLoading: true,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export function fetchSuggestionsSuccess(suggestions) {
|
|
||||||
return {
|
|
||||||
type: SUGGESTIONS_FETCH_SUCCESS,
|
|
||||||
suggestions,
|
|
||||||
skipLoading: true,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export function fetchSuggestionsFail(error) {
|
|
||||||
return {
|
|
||||||
type: SUGGESTIONS_FETCH_FAIL,
|
|
||||||
error,
|
|
||||||
skipLoading: true,
|
|
||||||
skipAlert: true,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export const dismissSuggestion = accountId => (dispatch) => {
|
|
||||||
dispatch({
|
|
||||||
type: SUGGESTIONS_DISMISS,
|
|
||||||
id: accountId,
|
|
||||||
});
|
|
||||||
|
|
||||||
api().delete(`/api/v1/suggestions/${accountId}`).catch(() => {});
|
|
||||||
};
|
|
24
app/javascript/mastodon/actions/suggestions.ts
Normal file
24
app/javascript/mastodon/actions/suggestions.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import {
|
||||||
|
apiGetSuggestions,
|
||||||
|
apiDeleteSuggestion,
|
||||||
|
} from 'mastodon/api/suggestions';
|
||||||
|
import { createDataLoadingThunk } from 'mastodon/store/typed_functions';
|
||||||
|
|
||||||
|
import { fetchRelationships } from './accounts';
|
||||||
|
import { importFetchedAccounts } from './importer';
|
||||||
|
|
||||||
|
export const fetchSuggestions = createDataLoadingThunk(
|
||||||
|
'suggestions/fetch',
|
||||||
|
() => apiGetSuggestions(20),
|
||||||
|
(data, { dispatch }) => {
|
||||||
|
dispatch(importFetchedAccounts(data.map((x) => x.account)));
|
||||||
|
dispatch(fetchRelationships(data.map((x) => x.account.id)));
|
||||||
|
|
||||||
|
return data;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
export const dismissSuggestion = createDataLoadingThunk(
|
||||||
|
'suggestions/dismiss',
|
||||||
|
({ accountId }: { accountId: string }) => apiDeleteSuggestion(accountId),
|
||||||
|
);
|
8
app/javascript/mastodon/api/suggestions.ts
Normal file
8
app/javascript/mastodon/api/suggestions.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import { apiRequestGet, apiRequestDelete } from 'mastodon/api';
|
||||||
|
import type { ApiSuggestionJSON } from 'mastodon/api_types/suggestions';
|
||||||
|
|
||||||
|
export const apiGetSuggestions = (limit: number) =>
|
||||||
|
apiRequestGet<ApiSuggestionJSON[]>('v2/suggestions', { limit });
|
||||||
|
|
||||||
|
export const apiDeleteSuggestion = (accountId: string) =>
|
||||||
|
apiRequestDelete(`v1/suggestions/${accountId}`);
|
13
app/javascript/mastodon/api_types/suggestions.ts
Normal file
13
app/javascript/mastodon/api_types/suggestions.ts
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import type { ApiAccountJSON } from 'mastodon/api_types/accounts';
|
||||||
|
|
||||||
|
export type ApiSuggestionSourceJSON =
|
||||||
|
| 'featured'
|
||||||
|
| 'most_followed'
|
||||||
|
| 'most_interactions'
|
||||||
|
| 'similar_to_recently_followed'
|
||||||
|
| 'friends_of_friends';
|
||||||
|
|
||||||
|
export interface ApiSuggestionJSON {
|
||||||
|
sources: [ApiSuggestionSourceJSON, ...ApiSuggestionSourceJSON[]];
|
||||||
|
account: ApiAccountJSON;
|
||||||
|
}
|
@ -10,6 +10,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
|
|||||||
|
|
||||||
import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react';
|
import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react';
|
||||||
import { EmptyAccount } from 'mastodon/components/empty_account';
|
import { EmptyAccount } from 'mastodon/components/empty_account';
|
||||||
|
import { FollowButton } from 'mastodon/components/follow_button';
|
||||||
import { ShortNumber } from 'mastodon/components/short_number';
|
import { ShortNumber } from 'mastodon/components/short_number';
|
||||||
import { VerifiedBadge } from 'mastodon/components/verified_badge';
|
import { VerifiedBadge } from 'mastodon/components/verified_badge';
|
||||||
|
|
||||||
@ -23,9 +24,6 @@ import { DisplayName } from './display_name';
|
|||||||
import { RelativeTimestamp } from './relative_timestamp';
|
import { RelativeTimestamp } from './relative_timestamp';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
follow: { id: 'account.follow', defaultMessage: 'Follow' },
|
|
||||||
unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
|
|
||||||
cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Withdraw follow request' },
|
|
||||||
unblock: { id: 'account.unblock_short', defaultMessage: 'Unblock' },
|
unblock: { id: 'account.unblock_short', defaultMessage: 'Unblock' },
|
||||||
unmute: { id: 'account.unmute_short', defaultMessage: 'Unmute' },
|
unmute: { id: 'account.unmute_short', defaultMessage: 'Unmute' },
|
||||||
mute_notifications: { id: 'account.mute_notifications_short', defaultMessage: 'Mute notifications' },
|
mute_notifications: { id: 'account.mute_notifications_short', defaultMessage: 'Mute notifications' },
|
||||||
@ -35,13 +33,9 @@ const messages = defineMessages({
|
|||||||
more: { id: 'status.more', defaultMessage: 'More' },
|
more: { id: 'status.more', defaultMessage: 'More' },
|
||||||
});
|
});
|
||||||
|
|
||||||
const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifications, hidden, minimal, defaultAction, withBio }) => {
|
const Account = ({ size = 46, account, onBlock, onMute, onMuteNotifications, hidden, minimal, defaultAction, withBio }) => {
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
|
|
||||||
const handleFollow = useCallback(() => {
|
|
||||||
onFollow(account);
|
|
||||||
}, [onFollow, account]);
|
|
||||||
|
|
||||||
const handleBlock = useCallback(() => {
|
const handleBlock = useCallback(() => {
|
||||||
onBlock(account);
|
onBlock(account);
|
||||||
}, [onBlock, account]);
|
}, [onBlock, account]);
|
||||||
@ -74,13 +68,12 @@ const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifica
|
|||||||
let buttons;
|
let buttons;
|
||||||
|
|
||||||
if (account.get('id') !== me && account.get('relationship', null) !== null) {
|
if (account.get('id') !== me && account.get('relationship', null) !== null) {
|
||||||
const following = account.getIn(['relationship', 'following']);
|
|
||||||
const requested = account.getIn(['relationship', 'requested']);
|
const requested = account.getIn(['relationship', 'requested']);
|
||||||
const blocking = account.getIn(['relationship', 'blocking']);
|
const blocking = account.getIn(['relationship', 'blocking']);
|
||||||
const muting = account.getIn(['relationship', 'muting']);
|
const muting = account.getIn(['relationship', 'muting']);
|
||||||
|
|
||||||
if (requested) {
|
if (requested) {
|
||||||
buttons = <Button text={intl.formatMessage(messages.cancel_follow_request)} onClick={handleFollow} />;
|
buttons = <FollowButton accountId={account.get('id')} />;
|
||||||
} else if (blocking) {
|
} else if (blocking) {
|
||||||
buttons = <Button text={intl.formatMessage(messages.unblock)} onClick={handleBlock} />;
|
buttons = <Button text={intl.formatMessage(messages.unblock)} onClick={handleBlock} />;
|
||||||
} else if (muting) {
|
} else if (muting) {
|
||||||
@ -109,9 +102,11 @@ const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifica
|
|||||||
buttons = <Button text={intl.formatMessage(messages.mute)} onClick={handleMute} />;
|
buttons = <Button text={intl.formatMessage(messages.mute)} onClick={handleMute} />;
|
||||||
} else if (defaultAction === 'block') {
|
} else if (defaultAction === 'block') {
|
||||||
buttons = <Button text={intl.formatMessage(messages.block)} onClick={handleBlock} />;
|
buttons = <Button text={intl.formatMessage(messages.block)} onClick={handleBlock} />;
|
||||||
} else if (!account.get('suspended') && !account.get('moved') || following) {
|
} else {
|
||||||
buttons = <Button text={intl.formatMessage(following ? messages.unfollow : messages.follow)} onClick={handleFollow} />;
|
buttons = <FollowButton accountId={account.get('id')} />;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
buttons = <FollowButton accountId={account.get('id')} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
let muteTimeRemaining;
|
let muteTimeRemaining;
|
||||||
@ -168,7 +163,6 @@ const Account = ({ size = 46, account, onFollow, onBlock, onMute, onMuteNotifica
|
|||||||
Account.propTypes = {
|
Account.propTypes = {
|
||||||
size: PropTypes.number,
|
size: PropTypes.number,
|
||||||
account: ImmutablePropTypes.record,
|
account: ImmutablePropTypes.record,
|
||||||
onFollow: PropTypes.func,
|
|
||||||
onBlock: PropTypes.func,
|
onBlock: PropTypes.func,
|
||||||
onMute: PropTypes.func,
|
onMute: PropTypes.func,
|
||||||
onMuteNotifications: PropTypes.func,
|
onMuteNotifications: PropTypes.func,
|
||||||
|
@ -24,7 +24,7 @@ function useHandleClick(onClick?: OnClickCallback) {
|
|||||||
}, [history, onClick]);
|
}, [history, onClick]);
|
||||||
}
|
}
|
||||||
|
|
||||||
export const ColumnBackButton: React.FC<{ onClick: OnClickCallback }> = ({
|
export const ColumnBackButton: React.FC<{ onClick?: OnClickCallback }> = ({
|
||||||
onClick,
|
onClick,
|
||||||
}) => {
|
}) => {
|
||||||
const handleClick = useHandleClick(onClick);
|
const handleClick = useHandleClick(onClick);
|
||||||
|
67
app/javascript/mastodon/components/column_search_header.tsx
Normal file
67
app/javascript/mastodon/components/column_search_header.tsx
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
import { useCallback, useState, useEffect, useRef } from 'react';
|
||||||
|
|
||||||
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
|
export const ColumnSearchHeader: React.FC<{
|
||||||
|
onBack: () => void;
|
||||||
|
onSubmit: (value: string) => void;
|
||||||
|
onActivate: () => void;
|
||||||
|
placeholder: string;
|
||||||
|
active: boolean;
|
||||||
|
}> = ({ onBack, onActivate, onSubmit, placeholder, active }) => {
|
||||||
|
const inputRef = useRef<HTMLInputElement>(null);
|
||||||
|
const [value, setValue] = useState('');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!active) {
|
||||||
|
setValue('');
|
||||||
|
}
|
||||||
|
}, [active]);
|
||||||
|
|
||||||
|
const handleChange = useCallback(
|
||||||
|
({ target: { value } }: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
setValue(value);
|
||||||
|
onSubmit(value);
|
||||||
|
},
|
||||||
|
[setValue, onSubmit],
|
||||||
|
);
|
||||||
|
|
||||||
|
const handleKeyUp = useCallback(
|
||||||
|
(e: React.KeyboardEvent<HTMLInputElement>) => {
|
||||||
|
if (e.key === 'Escape') {
|
||||||
|
e.preventDefault();
|
||||||
|
onBack();
|
||||||
|
inputRef.current?.blur();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
[onBack],
|
||||||
|
);
|
||||||
|
|
||||||
|
const handleFocus = useCallback(() => {
|
||||||
|
onActivate();
|
||||||
|
}, [onActivate]);
|
||||||
|
|
||||||
|
const handleSubmit = useCallback(() => {
|
||||||
|
onSubmit(value);
|
||||||
|
}, [onSubmit, value]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<form className='column-search-header' onSubmit={handleSubmit}>
|
||||||
|
<input
|
||||||
|
ref={inputRef}
|
||||||
|
type='search'
|
||||||
|
value={value}
|
||||||
|
onChange={handleChange}
|
||||||
|
onKeyUp={handleKeyUp}
|
||||||
|
placeholder={placeholder}
|
||||||
|
onFocus={handleFocus}
|
||||||
|
/>
|
||||||
|
|
||||||
|
{active && (
|
||||||
|
<button type='button' className='link-button' onClick={onBack}>
|
||||||
|
<FormattedMessage id='column_search.cancel' defaultMessage='Cancel' />
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
|
</form>
|
||||||
|
);
|
||||||
|
};
|
@ -99,7 +99,12 @@ export const FollowButton: React.FC<{
|
|||||||
return (
|
return (
|
||||||
<Button
|
<Button
|
||||||
onClick={handleClick}
|
onClick={handleClick}
|
||||||
disabled={relationship?.blocked_by || relationship?.blocking}
|
disabled={
|
||||||
|
relationship?.blocked_by ||
|
||||||
|
relationship?.blocking ||
|
||||||
|
(!(relationship?.following || relationship?.requested) &&
|
||||||
|
(account?.suspended || !!account?.moved))
|
||||||
|
}
|
||||||
secondary={following}
|
secondary={following}
|
||||||
className={following ? 'button--destructive' : undefined}
|
className={following ? 'button--destructive' : undefined}
|
||||||
>
|
>
|
||||||
|
22
app/javascript/mastodon/components/gif.tsx
Normal file
22
app/javascript/mastodon/components/gif.tsx
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
import { useHovering } from '@/hooks/useHovering';
|
||||||
|
import { autoPlayGif } from 'mastodon/initial_state';
|
||||||
|
|
||||||
|
export const GIF: React.FC<{
|
||||||
|
src: string;
|
||||||
|
staticSrc: string;
|
||||||
|
className: string;
|
||||||
|
animate?: boolean;
|
||||||
|
}> = ({ src, staticSrc, className, animate = autoPlayGif }) => {
|
||||||
|
const { hovering, handleMouseEnter, handleMouseLeave } = useHovering(animate);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<img
|
||||||
|
className={className}
|
||||||
|
src={hovering || animate ? src : staticSrc}
|
||||||
|
alt=''
|
||||||
|
role='presentation'
|
||||||
|
onMouseEnter={handleMouseEnter}
|
||||||
|
onMouseLeave={handleMouseLeave}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
};
|
@ -173,7 +173,7 @@ class Status extends ImmutablePureComponent {
|
|||||||
handleMouseUp = e => {
|
handleMouseUp = e => {
|
||||||
// Only handle clicks on the empty space above the content
|
// Only handle clicks on the empty space above the content
|
||||||
|
|
||||||
if (e.target !== e.currentTarget) {
|
if (e.target !== e.currentTarget && e.detail >= 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@ class StatusContent extends PureComponent {
|
|||||||
element = element.parentNode;
|
element = element.parentNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (deltaX + deltaY < 5 && (e.button === 0 || e.button === 1) && this.props.onClick) {
|
if (deltaX + deltaY < 5 && (e.button === 0 || e.button === 1) && e.detail >= 1 && this.props.onClick) {
|
||||||
this.props.onClick(e);
|
this.props.onClick(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ class Links extends PureComponent {
|
|||||||
|
|
||||||
const banner = (
|
const banner = (
|
||||||
<DismissableBanner id='explore/links'>
|
<DismissableBanner id='explore/links'>
|
||||||
<FormattedMessage id='dismissable_banner.explore_links' defaultMessage='These are news stories being shared the most on the social web today. Newer news stories posted by more different people are ranked higher.' />
|
<FormattedMessage id='dismissable_banner.explore_links' defaultMessage='These news stories are being shared the most on the fediverse today. Newer news stories posted by more different people are ranked higher.' />
|
||||||
</DismissableBanner>
|
</DismissableBanner>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ class Statuses extends PureComponent {
|
|||||||
return (
|
return (
|
||||||
<StatusList
|
<StatusList
|
||||||
trackScroll
|
trackScroll
|
||||||
prepend={<DismissableBanner id='explore/statuses'><FormattedMessage id='dismissable_banner.explore_statuses' defaultMessage='These are posts from across the social web that are gaining traction today. Newer posts with more boosts and favorites are ranked higher.' /></DismissableBanner>}
|
prepend={<DismissableBanner id='explore/statuses'><FormattedMessage id='dismissable_banner.explore_statuses' defaultMessage='These posts from across the fediverse are gaining traction today. Newer posts with more boosts and favorites are ranked higher.' /></DismissableBanner>}
|
||||||
alwaysPrepend
|
alwaysPrepend
|
||||||
timelineId='explore'
|
timelineId='explore'
|
||||||
statusIds={statusIds}
|
statusIds={statusIds}
|
||||||
|
@ -5,7 +5,6 @@ import { FormattedMessage } from 'react-intl';
|
|||||||
|
|
||||||
import { withRouter } from 'react-router-dom';
|
import { withRouter } from 'react-router-dom';
|
||||||
|
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
import { fetchSuggestions } from 'mastodon/actions/suggestions';
|
import { fetchSuggestions } from 'mastodon/actions/suggestions';
|
||||||
@ -15,15 +14,15 @@ import { WithRouterPropTypes } from 'mastodon/utils/react_router';
|
|||||||
import { Card } from './components/card';
|
import { Card } from './components/card';
|
||||||
|
|
||||||
const mapStateToProps = state => ({
|
const mapStateToProps = state => ({
|
||||||
suggestions: state.getIn(['suggestions', 'items']),
|
suggestions: state.suggestions.items,
|
||||||
isLoading: state.getIn(['suggestions', 'isLoading']),
|
isLoading: state.suggestions.isLoading,
|
||||||
});
|
});
|
||||||
|
|
||||||
class Suggestions extends PureComponent {
|
class Suggestions extends PureComponent {
|
||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
isLoading: PropTypes.bool,
|
isLoading: PropTypes.bool,
|
||||||
suggestions: ImmutablePropTypes.list,
|
suggestions: PropTypes.array,
|
||||||
dispatch: PropTypes.func.isRequired,
|
dispatch: PropTypes.func.isRequired,
|
||||||
...WithRouterPropTypes,
|
...WithRouterPropTypes,
|
||||||
};
|
};
|
||||||
@ -32,17 +31,17 @@ class Suggestions extends PureComponent {
|
|||||||
const { dispatch, suggestions, history } = this.props;
|
const { dispatch, suggestions, history } = this.props;
|
||||||
|
|
||||||
// If we're navigating back to the screen, do not trigger a reload
|
// If we're navigating back to the screen, do not trigger a reload
|
||||||
if (history.action === 'POP' && suggestions.size > 0) {
|
if (history.action === 'POP' && suggestions.length > 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch(fetchSuggestions(true));
|
dispatch(fetchSuggestions());
|
||||||
}
|
}
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
const { isLoading, suggestions } = this.props;
|
const { isLoading, suggestions } = this.props;
|
||||||
|
|
||||||
if (!isLoading && suggestions.isEmpty()) {
|
if (!isLoading && suggestions.length === 0) {
|
||||||
return (
|
return (
|
||||||
<div className='explore__suggestions scrollable scrollable--flex'>
|
<div className='explore__suggestions scrollable scrollable--flex'>
|
||||||
<div className='empty-column-indicator'>
|
<div className='empty-column-indicator'>
|
||||||
@ -56,9 +55,9 @@ class Suggestions extends PureComponent {
|
|||||||
<div className='explore__suggestions scrollable' data-nosnippet>
|
<div className='explore__suggestions scrollable' data-nosnippet>
|
||||||
{isLoading ? <LoadingIndicator /> : suggestions.map(suggestion => (
|
{isLoading ? <LoadingIndicator /> : suggestions.map(suggestion => (
|
||||||
<Card
|
<Card
|
||||||
key={suggestion.get('account')}
|
key={suggestion.account_id}
|
||||||
id={suggestion.get('account')}
|
id={suggestion.account_id}
|
||||||
source={suggestion.getIn(['sources', 0])}
|
source={suggestion.sources[0]}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
@ -44,7 +44,7 @@ class Tags extends PureComponent {
|
|||||||
|
|
||||||
const banner = (
|
const banner = (
|
||||||
<DismissableBanner id='explore/tags'>
|
<DismissableBanner id='explore/tags'>
|
||||||
<FormattedMessage id='dismissable_banner.explore_tags' defaultMessage='These are hashtags that are gaining traction on the social web today. Hashtags that are used by more different people are ranked higher.' />
|
<FormattedMessage id='dismissable_banner.explore_tags' defaultMessage='These hashtags are gaining traction on the fediverse today. Hashtags that are used by more different people are ranked higher.' />
|
||||||
</DismissableBanner>
|
</DismissableBanner>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ const Firehose = ({ feedType, multiColumn }) => {
|
|||||||
<DismissableBanner id='public_timeline'>
|
<DismissableBanner id='public_timeline'>
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='dismissable_banner.public_timeline'
|
id='dismissable_banner.public_timeline'
|
||||||
defaultMessage='These are the most recent public posts from people on the social web that people on {domain} follow.'
|
defaultMessage='These are the most recent public posts from people on the fediverse that people on {domain} follow.'
|
||||||
values={{ domain }}
|
values={{ domain }}
|
||||||
/>
|
/>
|
||||||
</DismissableBanner>
|
</DismissableBanner>
|
||||||
|
@ -4,12 +4,17 @@ import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
|||||||
|
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
|
|
||||||
|
import MoreHorizIcon from '@/material-icons/400-24px/more_horiz.svg?react';
|
||||||
import { Button } from 'mastodon/components/button';
|
import { Button } from 'mastodon/components/button';
|
||||||
import { ShortNumber } from 'mastodon/components/short_number';
|
import { ShortNumber } from 'mastodon/components/short_number';
|
||||||
|
import DropdownMenuContainer from 'mastodon/containers/dropdown_menu_container';
|
||||||
|
import { withIdentity } from 'mastodon/identity_context';
|
||||||
|
import { PERMISSION_MANAGE_TAXONOMIES } from 'mastodon/permissions';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
followHashtag: { id: 'hashtag.follow', defaultMessage: 'Follow hashtag' },
|
followHashtag: { id: 'hashtag.follow', defaultMessage: 'Follow hashtag' },
|
||||||
unfollowHashtag: { id: 'hashtag.unfollow', defaultMessage: 'Unfollow hashtag' },
|
unfollowHashtag: { id: 'hashtag.unfollow', defaultMessage: 'Unfollow hashtag' },
|
||||||
|
adminModeration: { id: 'hashtag.admin_moderation', defaultMessage: 'Open moderation interface for #{name}' },
|
||||||
});
|
});
|
||||||
|
|
||||||
const usesRenderer = (displayNumber, pluralReady) => (
|
const usesRenderer = (displayNumber, pluralReady) => (
|
||||||
@ -45,11 +50,18 @@ const usesTodayRenderer = (displayNumber, pluralReady) => (
|
|||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|
||||||
export const HashtagHeader = injectIntl(({ tag, intl, disabled, onClick }) => {
|
export const HashtagHeader = withIdentity(injectIntl(({ tag, intl, disabled, onClick, identity }) => {
|
||||||
if (!tag) {
|
if (!tag) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const { signedIn, permissions } = identity;
|
||||||
|
const menu = [];
|
||||||
|
|
||||||
|
if (signedIn && (permissions & PERMISSION_MANAGE_TAXONOMIES) === PERMISSION_MANAGE_TAXONOMIES ) {
|
||||||
|
menu.push({ text: intl.formatMessage(messages.adminModeration, { name: tag.get("name") }), href: `/admin/tags/${tag.get('id')}` });
|
||||||
|
}
|
||||||
|
|
||||||
const [uses, people] = tag.get('history').reduce((arr, day) => [arr[0] + day.get('uses') * 1, arr[1] + day.get('accounts') * 1], [0, 0]);
|
const [uses, people] = tag.get('history').reduce((arr, day) => [arr[0] + day.get('uses') * 1, arr[1] + day.get('accounts') * 1], [0, 0]);
|
||||||
const dividingCircle = <span aria-hidden>{' · '}</span>;
|
const dividingCircle = <span aria-hidden>{' · '}</span>;
|
||||||
|
|
||||||
@ -57,8 +69,11 @@ export const HashtagHeader = injectIntl(({ tag, intl, disabled, onClick }) => {
|
|||||||
<div className='hashtag-header'>
|
<div className='hashtag-header'>
|
||||||
<div className='hashtag-header__header'>
|
<div className='hashtag-header__header'>
|
||||||
<h1>#{tag.get('name')}</h1>
|
<h1>#{tag.get('name')}</h1>
|
||||||
|
<div className='hashtag-header__header__buttons'>
|
||||||
|
{ menu.length > 0 && <DropdownMenuContainer disabled={menu.length === 0} items={menu} icon='ellipsis-v' iconComponent={MoreHorizIcon} size={24} direction='right' /> }
|
||||||
<Button onClick={onClick} text={intl.formatMessage(tag.get('following') ? messages.unfollowHashtag : messages.followHashtag)} disabled={disabled} />
|
<Button onClick={onClick} text={intl.formatMessage(tag.get('following') ? messages.unfollowHashtag : messages.followHashtag)} disabled={disabled} />
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<ShortNumber value={uses} renderer={usesRenderer} />
|
<ShortNumber value={uses} renderer={usesRenderer} />
|
||||||
@ -69,7 +84,7 @@ export const HashtagHeader = injectIntl(({ tag, intl, disabled, onClick }) => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
});
|
}));
|
||||||
|
|
||||||
HashtagHeader.propTypes = {
|
HashtagHeader.propTypes = {
|
||||||
tag: ImmutablePropTypes.map,
|
tag: ImmutablePropTypes.map,
|
||||||
|
@ -1,217 +0,0 @@
|
|||||||
import PropTypes from 'prop-types';
|
|
||||||
import { useEffect, useCallback, useRef, useState } from 'react';
|
|
||||||
|
|
||||||
import { FormattedMessage, useIntl, defineMessages } from 'react-intl';
|
|
||||||
|
|
||||||
import { Link } from 'react-router-dom';
|
|
||||||
|
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
|
||||||
import { useDispatch, useSelector } from 'react-redux';
|
|
||||||
|
|
||||||
import ChevronLeftIcon from '@/material-icons/400-24px/chevron_left.svg?react';
|
|
||||||
import ChevronRightIcon from '@/material-icons/400-24px/chevron_right.svg?react';
|
|
||||||
import CloseIcon from '@/material-icons/400-24px/close.svg?react';
|
|
||||||
import InfoIcon from '@/material-icons/400-24px/info.svg?react';
|
|
||||||
import { changeSetting } from 'mastodon/actions/settings';
|
|
||||||
import { fetchSuggestions, dismissSuggestion } from 'mastodon/actions/suggestions';
|
|
||||||
import { Avatar } from 'mastodon/components/avatar';
|
|
||||||
import { DisplayName } from 'mastodon/components/display_name';
|
|
||||||
import { FollowButton } from 'mastodon/components/follow_button';
|
|
||||||
import { Icon } from 'mastodon/components/icon';
|
|
||||||
import { IconButton } from 'mastodon/components/icon_button';
|
|
||||||
import { VerifiedBadge } from 'mastodon/components/verified_badge';
|
|
||||||
import { domain } from 'mastodon/initial_state';
|
|
||||||
|
|
||||||
const messages = defineMessages({
|
|
||||||
follow: { id: 'account.follow', defaultMessage: 'Follow' },
|
|
||||||
unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
|
|
||||||
previous: { id: 'lightbox.previous', defaultMessage: 'Previous' },
|
|
||||||
next: { id: 'lightbox.next', defaultMessage: 'Next' },
|
|
||||||
dismiss: { id: 'follow_suggestions.dismiss', defaultMessage: "Don't show again" },
|
|
||||||
friendsOfFriendsHint: { id: 'follow_suggestions.hints.friends_of_friends', defaultMessage: 'This profile is popular among the people you follow.' },
|
|
||||||
similarToRecentlyFollowedHint: { id: 'follow_suggestions.hints.similar_to_recently_followed', defaultMessage: 'This profile is similar to the profiles you have most recently followed.' },
|
|
||||||
featuredHint: { id: 'follow_suggestions.hints.featured', defaultMessage: 'This profile has been hand-picked by the {domain} team.' },
|
|
||||||
mostFollowedHint: { id: 'follow_suggestions.hints.most_followed', defaultMessage: 'This profile is one of the most followed on {domain}.'},
|
|
||||||
mostInteractionsHint: { id: 'follow_suggestions.hints.most_interactions', defaultMessage: 'This profile has been recently getting a lot of attention on {domain}.' },
|
|
||||||
});
|
|
||||||
|
|
||||||
const Source = ({ id }) => {
|
|
||||||
const intl = useIntl();
|
|
||||||
|
|
||||||
let label, hint;
|
|
||||||
|
|
||||||
switch (id) {
|
|
||||||
case 'friends_of_friends':
|
|
||||||
hint = intl.formatMessage(messages.friendsOfFriendsHint);
|
|
||||||
label = <FormattedMessage id='follow_suggestions.personalized_suggestion' defaultMessage='Personalized suggestion' />;
|
|
||||||
break;
|
|
||||||
case 'similar_to_recently_followed':
|
|
||||||
hint = intl.formatMessage(messages.similarToRecentlyFollowedHint);
|
|
||||||
label = <FormattedMessage id='follow_suggestions.personalized_suggestion' defaultMessage='Personalized suggestion' />;
|
|
||||||
break;
|
|
||||||
case 'featured':
|
|
||||||
hint = intl.formatMessage(messages.featuredHint, { domain });
|
|
||||||
label = <FormattedMessage id='follow_suggestions.curated_suggestion' defaultMessage='Staff pick' />;
|
|
||||||
break;
|
|
||||||
case 'most_followed':
|
|
||||||
hint = intl.formatMessage(messages.mostFollowedHint, { domain });
|
|
||||||
label = <FormattedMessage id='follow_suggestions.popular_suggestion' defaultMessage='Popular suggestion' />;
|
|
||||||
break;
|
|
||||||
case 'most_interactions':
|
|
||||||
hint = intl.formatMessage(messages.mostInteractionsHint, { domain });
|
|
||||||
label = <FormattedMessage id='follow_suggestions.popular_suggestion' defaultMessage='Popular suggestion' />;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className='inline-follow-suggestions__body__scrollable__card__text-stack__source' title={hint}>
|
|
||||||
<Icon icon={InfoIcon} />
|
|
||||||
{label}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
Source.propTypes = {
|
|
||||||
id: PropTypes.oneOf(['friends_of_friends', 'similar_to_recently_followed', 'featured', 'most_followed', 'most_interactions']),
|
|
||||||
};
|
|
||||||
|
|
||||||
const Card = ({ id, sources }) => {
|
|
||||||
const intl = useIntl();
|
|
||||||
const account = useSelector(state => state.getIn(['accounts', id]));
|
|
||||||
const firstVerifiedField = account.get('fields').find(item => !!item.get('verified_at'));
|
|
||||||
const dispatch = useDispatch();
|
|
||||||
|
|
||||||
const handleDismiss = useCallback(() => {
|
|
||||||
dispatch(dismissSuggestion(id));
|
|
||||||
}, [id, dispatch]);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className='inline-follow-suggestions__body__scrollable__card'>
|
|
||||||
<IconButton iconComponent={CloseIcon} onClick={handleDismiss} title={intl.formatMessage(messages.dismiss)} />
|
|
||||||
|
|
||||||
<div className='inline-follow-suggestions__body__scrollable__card__avatar'>
|
|
||||||
<Link to={`/@${account.get('acct')}`}><Avatar account={account} size={72} /></Link>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className='inline-follow-suggestions__body__scrollable__card__text-stack'>
|
|
||||||
<Link to={`/@${account.get('acct')}`}><DisplayName account={account} /></Link>
|
|
||||||
{firstVerifiedField ? <VerifiedBadge link={firstVerifiedField.get('value')} /> : <Source id={sources.get(0)} />}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<FollowButton accountId={id} />
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
Card.propTypes = {
|
|
||||||
id: PropTypes.string.isRequired,
|
|
||||||
sources: ImmutablePropTypes.list,
|
|
||||||
};
|
|
||||||
|
|
||||||
const DISMISSIBLE_ID = 'home/follow-suggestions';
|
|
||||||
|
|
||||||
export const InlineFollowSuggestions = ({ hidden }) => {
|
|
||||||
const intl = useIntl();
|
|
||||||
const dispatch = useDispatch();
|
|
||||||
const suggestions = useSelector(state => state.getIn(['suggestions', 'items']));
|
|
||||||
const isLoading = useSelector(state => state.getIn(['suggestions', 'isLoading']));
|
|
||||||
const dismissed = useSelector(state => state.getIn(['settings', 'dismissed_banners', DISMISSIBLE_ID]));
|
|
||||||
const bodyRef = useRef();
|
|
||||||
const [canScrollLeft, setCanScrollLeft] = useState(false);
|
|
||||||
const [canScrollRight, setCanScrollRight] = useState(true);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
dispatch(fetchSuggestions());
|
|
||||||
}, [dispatch]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (!bodyRef.current) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getComputedStyle(bodyRef.current).direction === 'rtl') {
|
|
||||||
setCanScrollLeft((bodyRef.current.clientWidth - bodyRef.current.scrollLeft) < bodyRef.current.scrollWidth);
|
|
||||||
setCanScrollRight(bodyRef.current.scrollLeft < 0);
|
|
||||||
} else {
|
|
||||||
setCanScrollLeft(bodyRef.current.scrollLeft > 0);
|
|
||||||
setCanScrollRight((bodyRef.current.scrollLeft + bodyRef.current.clientWidth) < bodyRef.current.scrollWidth);
|
|
||||||
}
|
|
||||||
}, [setCanScrollRight, setCanScrollLeft, bodyRef, suggestions]);
|
|
||||||
|
|
||||||
const handleLeftNav = useCallback(() => {
|
|
||||||
bodyRef.current.scrollLeft -= 200;
|
|
||||||
}, [bodyRef]);
|
|
||||||
|
|
||||||
const handleRightNav = useCallback(() => {
|
|
||||||
bodyRef.current.scrollLeft += 200;
|
|
||||||
}, [bodyRef]);
|
|
||||||
|
|
||||||
const handleScroll = useCallback(() => {
|
|
||||||
if (!bodyRef.current) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getComputedStyle(bodyRef.current).direction === 'rtl') {
|
|
||||||
setCanScrollLeft((bodyRef.current.clientWidth - bodyRef.current.scrollLeft) < bodyRef.current.scrollWidth);
|
|
||||||
setCanScrollRight(bodyRef.current.scrollLeft < 0);
|
|
||||||
} else {
|
|
||||||
setCanScrollLeft(bodyRef.current.scrollLeft > 0);
|
|
||||||
setCanScrollRight((bodyRef.current.scrollLeft + bodyRef.current.clientWidth) < bodyRef.current.scrollWidth);
|
|
||||||
}
|
|
||||||
}, [setCanScrollRight, setCanScrollLeft, bodyRef]);
|
|
||||||
|
|
||||||
const handleDismiss = useCallback(() => {
|
|
||||||
dispatch(changeSetting(['dismissed_banners', DISMISSIBLE_ID], true));
|
|
||||||
}, [dispatch]);
|
|
||||||
|
|
||||||
if (dismissed || (!isLoading && suggestions.isEmpty())) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hidden) {
|
|
||||||
return (
|
|
||||||
<div className='inline-follow-suggestions' />
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className='inline-follow-suggestions'>
|
|
||||||
<div className='inline-follow-suggestions__header'>
|
|
||||||
<h3><FormattedMessage id='follow_suggestions.who_to_follow' defaultMessage='Who to follow' /></h3>
|
|
||||||
|
|
||||||
<div className='inline-follow-suggestions__header__actions'>
|
|
||||||
<button className='link-button' onClick={handleDismiss}><FormattedMessage id='follow_suggestions.dismiss' defaultMessage="Don't show again" /></button>
|
|
||||||
<Link to='/explore/suggestions' className='link-button'><FormattedMessage id='follow_suggestions.view_all' defaultMessage='View all' /></Link>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className='inline-follow-suggestions__body'>
|
|
||||||
<div className='inline-follow-suggestions__body__scrollable' ref={bodyRef} onScroll={handleScroll}>
|
|
||||||
{suggestions.map(suggestion => (
|
|
||||||
<Card
|
|
||||||
key={suggestion.get('account')}
|
|
||||||
id={suggestion.get('account')}
|
|
||||||
sources={suggestion.get('sources')}
|
|
||||||
/>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{canScrollLeft && (
|
|
||||||
<button className='inline-follow-suggestions__body__scroll-button left' onClick={handleLeftNav} aria-label={intl.formatMessage(messages.previous)}>
|
|
||||||
<div className='inline-follow-suggestions__body__scroll-button__icon'><Icon icon={ChevronLeftIcon} /></div>
|
|
||||||
</button>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{canScrollRight && (
|
|
||||||
<button className='inline-follow-suggestions__body__scroll-button right' onClick={handleRightNav} aria-label={intl.formatMessage(messages.next)}>
|
|
||||||
<div className='inline-follow-suggestions__body__scroll-button__icon'><Icon icon={ChevronRightIcon} /></div>
|
|
||||||
</button>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
InlineFollowSuggestions.propTypes = {
|
|
||||||
hidden: PropTypes.bool,
|
|
||||||
};
|
|
@ -0,0 +1,326 @@
|
|||||||
|
import { useEffect, useCallback, useRef, useState } from 'react';
|
||||||
|
|
||||||
|
import { FormattedMessage, useIntl, defineMessages } from 'react-intl';
|
||||||
|
|
||||||
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
|
import ChevronLeftIcon from '@/material-icons/400-24px/chevron_left.svg?react';
|
||||||
|
import ChevronRightIcon from '@/material-icons/400-24px/chevron_right.svg?react';
|
||||||
|
import CloseIcon from '@/material-icons/400-24px/close.svg?react';
|
||||||
|
import InfoIcon from '@/material-icons/400-24px/info.svg?react';
|
||||||
|
import { changeSetting } from 'mastodon/actions/settings';
|
||||||
|
import {
|
||||||
|
fetchSuggestions,
|
||||||
|
dismissSuggestion,
|
||||||
|
} from 'mastodon/actions/suggestions';
|
||||||
|
import type { ApiSuggestionSourceJSON } from 'mastodon/api_types/suggestions';
|
||||||
|
import { Avatar } from 'mastodon/components/avatar';
|
||||||
|
import { DisplayName } from 'mastodon/components/display_name';
|
||||||
|
import { FollowButton } from 'mastodon/components/follow_button';
|
||||||
|
import { Icon } from 'mastodon/components/icon';
|
||||||
|
import { IconButton } from 'mastodon/components/icon_button';
|
||||||
|
import { VerifiedBadge } from 'mastodon/components/verified_badge';
|
||||||
|
import { domain } from 'mastodon/initial_state';
|
||||||
|
import { useAppDispatch, useAppSelector } from 'mastodon/store';
|
||||||
|
|
||||||
|
const messages = defineMessages({
|
||||||
|
follow: { id: 'account.follow', defaultMessage: 'Follow' },
|
||||||
|
unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },
|
||||||
|
previous: { id: 'lightbox.previous', defaultMessage: 'Previous' },
|
||||||
|
next: { id: 'lightbox.next', defaultMessage: 'Next' },
|
||||||
|
dismiss: {
|
||||||
|
id: 'follow_suggestions.dismiss',
|
||||||
|
defaultMessage: "Don't show again",
|
||||||
|
},
|
||||||
|
friendsOfFriendsHint: {
|
||||||
|
id: 'follow_suggestions.hints.friends_of_friends',
|
||||||
|
defaultMessage: 'This profile is popular among the people you follow.',
|
||||||
|
},
|
||||||
|
similarToRecentlyFollowedHint: {
|
||||||
|
id: 'follow_suggestions.hints.similar_to_recently_followed',
|
||||||
|
defaultMessage:
|
||||||
|
'This profile is similar to the profiles you have most recently followed.',
|
||||||
|
},
|
||||||
|
featuredHint: {
|
||||||
|
id: 'follow_suggestions.hints.featured',
|
||||||
|
defaultMessage: 'This profile has been hand-picked by the {domain} team.',
|
||||||
|
},
|
||||||
|
mostFollowedHint: {
|
||||||
|
id: 'follow_suggestions.hints.most_followed',
|
||||||
|
defaultMessage: 'This profile is one of the most followed on {domain}.',
|
||||||
|
},
|
||||||
|
mostInteractionsHint: {
|
||||||
|
id: 'follow_suggestions.hints.most_interactions',
|
||||||
|
defaultMessage:
|
||||||
|
'This profile has been recently getting a lot of attention on {domain}.',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const Source: React.FC<{
|
||||||
|
id: ApiSuggestionSourceJSON;
|
||||||
|
}> = ({ id }) => {
|
||||||
|
const intl = useIntl();
|
||||||
|
|
||||||
|
let label, hint;
|
||||||
|
|
||||||
|
switch (id) {
|
||||||
|
case 'friends_of_friends':
|
||||||
|
hint = intl.formatMessage(messages.friendsOfFriendsHint);
|
||||||
|
label = (
|
||||||
|
<FormattedMessage
|
||||||
|
id='follow_suggestions.personalized_suggestion'
|
||||||
|
defaultMessage='Personalized suggestion'
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case 'similar_to_recently_followed':
|
||||||
|
hint = intl.formatMessage(messages.similarToRecentlyFollowedHint);
|
||||||
|
label = (
|
||||||
|
<FormattedMessage
|
||||||
|
id='follow_suggestions.personalized_suggestion'
|
||||||
|
defaultMessage='Personalized suggestion'
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case 'featured':
|
||||||
|
hint = intl.formatMessage(messages.featuredHint, { domain });
|
||||||
|
label = (
|
||||||
|
<FormattedMessage
|
||||||
|
id='follow_suggestions.curated_suggestion'
|
||||||
|
defaultMessage='Staff pick'
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case 'most_followed':
|
||||||
|
hint = intl.formatMessage(messages.mostFollowedHint, { domain });
|
||||||
|
label = (
|
||||||
|
<FormattedMessage
|
||||||
|
id='follow_suggestions.popular_suggestion'
|
||||||
|
defaultMessage='Popular suggestion'
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case 'most_interactions':
|
||||||
|
hint = intl.formatMessage(messages.mostInteractionsHint, { domain });
|
||||||
|
label = (
|
||||||
|
<FormattedMessage
|
||||||
|
id='follow_suggestions.popular_suggestion'
|
||||||
|
defaultMessage='Popular suggestion'
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className='inline-follow-suggestions__body__scrollable__card__text-stack__source'
|
||||||
|
title={hint}
|
||||||
|
>
|
||||||
|
<Icon id='' icon={InfoIcon} />
|
||||||
|
{label}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const Card: React.FC<{
|
||||||
|
id: string;
|
||||||
|
sources: [ApiSuggestionSourceJSON, ...ApiSuggestionSourceJSON[]];
|
||||||
|
}> = ({ id, sources }) => {
|
||||||
|
const intl = useIntl();
|
||||||
|
const account = useAppSelector((state) => state.accounts.get(id));
|
||||||
|
const firstVerifiedField = account?.fields.find((item) => !!item.verified_at);
|
||||||
|
const dispatch = useAppDispatch();
|
||||||
|
|
||||||
|
const handleDismiss = useCallback(() => {
|
||||||
|
void dispatch(dismissSuggestion({ accountId: id }));
|
||||||
|
}, [id, dispatch]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className='inline-follow-suggestions__body__scrollable__card'>
|
||||||
|
<IconButton
|
||||||
|
icon=''
|
||||||
|
iconComponent={CloseIcon}
|
||||||
|
onClick={handleDismiss}
|
||||||
|
title={intl.formatMessage(messages.dismiss)}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<div className='inline-follow-suggestions__body__scrollable__card__avatar'>
|
||||||
|
<Link to={`/@${account?.acct}`}>
|
||||||
|
<Avatar account={account} size={72} />
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='inline-follow-suggestions__body__scrollable__card__text-stack'>
|
||||||
|
<Link to={`/@${account?.acct}`}>
|
||||||
|
<DisplayName account={account} />
|
||||||
|
</Link>
|
||||||
|
{firstVerifiedField ? (
|
||||||
|
<VerifiedBadge link={firstVerifiedField.value} />
|
||||||
|
) : (
|
||||||
|
<Source id={sources[0]} />
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<FollowButton accountId={id} />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const DISMISSIBLE_ID = 'home/follow-suggestions';
|
||||||
|
|
||||||
|
export const InlineFollowSuggestions: React.FC<{
|
||||||
|
hidden?: boolean;
|
||||||
|
}> = ({ hidden }) => {
|
||||||
|
const intl = useIntl();
|
||||||
|
const dispatch = useAppDispatch();
|
||||||
|
const suggestions = useAppSelector((state) => state.suggestions.items);
|
||||||
|
const isLoading = useAppSelector((state) => state.suggestions.isLoading);
|
||||||
|
const dismissed = useAppSelector(
|
||||||
|
(state) =>
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
|
||||||
|
state.settings.getIn(['dismissed_banners', DISMISSIBLE_ID]) as boolean,
|
||||||
|
);
|
||||||
|
const bodyRef = useRef<HTMLDivElement>(null);
|
||||||
|
const [canScrollLeft, setCanScrollLeft] = useState(false);
|
||||||
|
const [canScrollRight, setCanScrollRight] = useState(true);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
void dispatch(fetchSuggestions());
|
||||||
|
}, [dispatch]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!bodyRef.current) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getComputedStyle(bodyRef.current).direction === 'rtl') {
|
||||||
|
setCanScrollLeft(
|
||||||
|
bodyRef.current.clientWidth - bodyRef.current.scrollLeft <
|
||||||
|
bodyRef.current.scrollWidth,
|
||||||
|
);
|
||||||
|
setCanScrollRight(bodyRef.current.scrollLeft < 0);
|
||||||
|
} else {
|
||||||
|
setCanScrollLeft(bodyRef.current.scrollLeft > 0);
|
||||||
|
setCanScrollRight(
|
||||||
|
bodyRef.current.scrollLeft + bodyRef.current.clientWidth <
|
||||||
|
bodyRef.current.scrollWidth,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}, [setCanScrollRight, setCanScrollLeft, suggestions]);
|
||||||
|
|
||||||
|
const handleLeftNav = useCallback(() => {
|
||||||
|
if (!bodyRef.current) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bodyRef.current.scrollLeft -= 200;
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const handleRightNav = useCallback(() => {
|
||||||
|
if (!bodyRef.current) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bodyRef.current.scrollLeft += 200;
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const handleScroll = useCallback(() => {
|
||||||
|
if (!bodyRef.current) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getComputedStyle(bodyRef.current).direction === 'rtl') {
|
||||||
|
setCanScrollLeft(
|
||||||
|
bodyRef.current.clientWidth - bodyRef.current.scrollLeft <
|
||||||
|
bodyRef.current.scrollWidth,
|
||||||
|
);
|
||||||
|
setCanScrollRight(bodyRef.current.scrollLeft < 0);
|
||||||
|
} else {
|
||||||
|
setCanScrollLeft(bodyRef.current.scrollLeft > 0);
|
||||||
|
setCanScrollRight(
|
||||||
|
bodyRef.current.scrollLeft + bodyRef.current.clientWidth <
|
||||||
|
bodyRef.current.scrollWidth,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}, [setCanScrollRight, setCanScrollLeft]);
|
||||||
|
|
||||||
|
const handleDismiss = useCallback(() => {
|
||||||
|
dispatch(changeSetting(['dismissed_banners', DISMISSIBLE_ID], true));
|
||||||
|
}, [dispatch]);
|
||||||
|
|
||||||
|
if (dismissed || (!isLoading && suggestions.length === 0)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hidden) {
|
||||||
|
return <div className='inline-follow-suggestions' />;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className='inline-follow-suggestions'>
|
||||||
|
<div className='inline-follow-suggestions__header'>
|
||||||
|
<h3>
|
||||||
|
<FormattedMessage
|
||||||
|
id='follow_suggestions.who_to_follow'
|
||||||
|
defaultMessage='Who to follow'
|
||||||
|
/>
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<div className='inline-follow-suggestions__header__actions'>
|
||||||
|
<button className='link-button' onClick={handleDismiss}>
|
||||||
|
<FormattedMessage
|
||||||
|
id='follow_suggestions.dismiss'
|
||||||
|
defaultMessage="Don't show again"
|
||||||
|
/>
|
||||||
|
</button>
|
||||||
|
<Link to='/explore/suggestions' className='link-button'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='follow_suggestions.view_all'
|
||||||
|
defaultMessage='View all'
|
||||||
|
/>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='inline-follow-suggestions__body'>
|
||||||
|
<div
|
||||||
|
className='inline-follow-suggestions__body__scrollable'
|
||||||
|
ref={bodyRef}
|
||||||
|
onScroll={handleScroll}
|
||||||
|
>
|
||||||
|
{suggestions.map((suggestion) => (
|
||||||
|
<Card
|
||||||
|
key={suggestion.account_id}
|
||||||
|
id={suggestion.account_id}
|
||||||
|
sources={suggestion.sources}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{canScrollLeft && (
|
||||||
|
<button
|
||||||
|
className='inline-follow-suggestions__body__scroll-button left'
|
||||||
|
onClick={handleLeftNav}
|
||||||
|
aria-label={intl.formatMessage(messages.previous)}
|
||||||
|
>
|
||||||
|
<div className='inline-follow-suggestions__body__scroll-button__icon'>
|
||||||
|
<Icon id='' icon={ChevronLeftIcon} />
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{canScrollRight && (
|
||||||
|
<button
|
||||||
|
className='inline-follow-suggestions__body__scroll-button right'
|
||||||
|
onClick={handleRightNav}
|
||||||
|
aria-label={intl.formatMessage(messages.next)}
|
||||||
|
>
|
||||||
|
<div className='inline-follow-suggestions__body__scroll-button__icon'>
|
||||||
|
<Icon id='' icon={ChevronRightIcon} />
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
@ -7,11 +7,8 @@ import { useParams, Link } from 'react-router-dom';
|
|||||||
|
|
||||||
import { useDebouncedCallback } from 'use-debounce';
|
import { useDebouncedCallback } from 'use-debounce';
|
||||||
|
|
||||||
import AddIcon from '@/material-icons/400-24px/add.svg?react';
|
|
||||||
import ArrowBackIcon from '@/material-icons/400-24px/arrow_back.svg?react';
|
|
||||||
import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react';
|
import ListAltIcon from '@/material-icons/400-24px/list_alt.svg?react';
|
||||||
import SquigglyArrow from '@/svg-icons/squiggly_arrow.svg?react';
|
import SquigglyArrow from '@/svg-icons/squiggly_arrow.svg?react';
|
||||||
import { fetchFollowing } from 'mastodon/actions/accounts';
|
|
||||||
import { importFetchedAccounts } from 'mastodon/actions/importer';
|
import { importFetchedAccounts } from 'mastodon/actions/importer';
|
||||||
import { fetchList } from 'mastodon/actions/lists';
|
import { fetchList } from 'mastodon/actions/lists';
|
||||||
import { apiRequest } from 'mastodon/api';
|
import { apiRequest } from 'mastodon/api';
|
||||||
@ -25,14 +22,12 @@ import { Avatar } from 'mastodon/components/avatar';
|
|||||||
import { Button } from 'mastodon/components/button';
|
import { Button } from 'mastodon/components/button';
|
||||||
import Column from 'mastodon/components/column';
|
import Column from 'mastodon/components/column';
|
||||||
import { ColumnHeader } from 'mastodon/components/column_header';
|
import { ColumnHeader } from 'mastodon/components/column_header';
|
||||||
|
import { ColumnSearchHeader } from 'mastodon/components/column_search_header';
|
||||||
import { FollowersCounter } from 'mastodon/components/counters';
|
import { FollowersCounter } from 'mastodon/components/counters';
|
||||||
import { DisplayName } from 'mastodon/components/display_name';
|
import { DisplayName } from 'mastodon/components/display_name';
|
||||||
import { Icon } from 'mastodon/components/icon';
|
|
||||||
import ScrollableList from 'mastodon/components/scrollable_list';
|
import ScrollableList from 'mastodon/components/scrollable_list';
|
||||||
import { ShortNumber } from 'mastodon/components/short_number';
|
import { ShortNumber } from 'mastodon/components/short_number';
|
||||||
import { VerifiedBadge } from 'mastodon/components/verified_badge';
|
import { VerifiedBadge } from 'mastodon/components/verified_badge';
|
||||||
import { ButtonInTabsBar } from 'mastodon/features/ui/util/columns_context';
|
|
||||||
import { me } from 'mastodon/initial_state';
|
|
||||||
import { useAppDispatch, useAppSelector } from 'mastodon/store';
|
import { useAppDispatch, useAppSelector } from 'mastodon/store';
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
@ -49,54 +44,6 @@ const messages = defineMessages({
|
|||||||
|
|
||||||
type Mode = 'remove' | 'add';
|
type Mode = 'remove' | 'add';
|
||||||
|
|
||||||
const ColumnSearchHeader: React.FC<{
|
|
||||||
onBack: () => void;
|
|
||||||
onSubmit: (value: string) => void;
|
|
||||||
}> = ({ onBack, onSubmit }) => {
|
|
||||||
const intl = useIntl();
|
|
||||||
const [value, setValue] = useState('');
|
|
||||||
|
|
||||||
const handleChange = useCallback(
|
|
||||||
({ target: { value } }: React.ChangeEvent<HTMLInputElement>) => {
|
|
||||||
setValue(value);
|
|
||||||
onSubmit(value);
|
|
||||||
},
|
|
||||||
[setValue, onSubmit],
|
|
||||||
);
|
|
||||||
|
|
||||||
const handleSubmit = useCallback(() => {
|
|
||||||
onSubmit(value);
|
|
||||||
}, [onSubmit, value]);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<ButtonInTabsBar>
|
|
||||||
<form className='column-search-header' onSubmit={handleSubmit}>
|
|
||||||
<button
|
|
||||||
type='button'
|
|
||||||
className='column-header__back-button compact'
|
|
||||||
onClick={onBack}
|
|
||||||
aria-label={intl.formatMessage(messages.back)}
|
|
||||||
>
|
|
||||||
<Icon
|
|
||||||
id='chevron-left'
|
|
||||||
icon={ArrowBackIcon}
|
|
||||||
className='column-back-button__icon'
|
|
||||||
/>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<input
|
|
||||||
type='search'
|
|
||||||
value={value}
|
|
||||||
onChange={handleChange}
|
|
||||||
placeholder={intl.formatMessage(messages.placeholder)}
|
|
||||||
/* eslint-disable-next-line jsx-a11y/no-autofocus */
|
|
||||||
autoFocus
|
|
||||||
/>
|
|
||||||
</form>
|
|
||||||
</ButtonInTabsBar>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
const AccountItem: React.FC<{
|
const AccountItem: React.FC<{
|
||||||
accountId: string;
|
accountId: string;
|
||||||
listId: string;
|
listId: string;
|
||||||
@ -156,6 +103,7 @@ const AccountItem: React.FC<{
|
|||||||
text={intl.formatMessage(
|
text={intl.formatMessage(
|
||||||
partOfList ? messages.remove : messages.add,
|
partOfList ? messages.remove : messages.add,
|
||||||
)}
|
)}
|
||||||
|
secondary={partOfList}
|
||||||
onClick={handleClick}
|
onClick={handleClick}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@ -171,9 +119,6 @@ const ListMembers: React.FC<{
|
|||||||
const { id } = useParams<{ id: string }>();
|
const { id } = useParams<{ id: string }>();
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
|
|
||||||
const followingAccountIds = useAppSelector(
|
|
||||||
(state) => state.user_lists.getIn(['following', me, 'items']) as string[],
|
|
||||||
);
|
|
||||||
const [searching, setSearching] = useState(false);
|
const [searching, setSearching] = useState(false);
|
||||||
const [accountIds, setAccountIds] = useState<string[]>([]);
|
const [accountIds, setAccountIds] = useState<string[]>([]);
|
||||||
const [searchAccountIds, setSearchAccountIds] = useState<string[]>([]);
|
const [searchAccountIds, setSearchAccountIds] = useState<string[]>([]);
|
||||||
@ -195,8 +140,6 @@ const ListMembers: React.FC<{
|
|||||||
.catch(() => {
|
.catch(() => {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
dispatch(fetchFollowing(me));
|
|
||||||
}
|
}
|
||||||
}, [dispatch, id]);
|
}, [dispatch, id]);
|
||||||
|
|
||||||
@ -265,8 +208,8 @@ const ListMembers: React.FC<{
|
|||||||
|
|
||||||
let displayedAccountIds: string[];
|
let displayedAccountIds: string[];
|
||||||
|
|
||||||
if (mode === 'add') {
|
if (mode === 'add' && searching) {
|
||||||
displayedAccountIds = searching ? searchAccountIds : followingAccountIds;
|
displayedAccountIds = searchAccountIds;
|
||||||
} else {
|
} else {
|
||||||
displayedAccountIds = accountIds;
|
displayedAccountIds = accountIds;
|
||||||
}
|
}
|
||||||
@ -276,31 +219,21 @@ const ListMembers: React.FC<{
|
|||||||
bindToDocument={!multiColumn}
|
bindToDocument={!multiColumn}
|
||||||
label={intl.formatMessage(messages.heading)}
|
label={intl.formatMessage(messages.heading)}
|
||||||
>
|
>
|
||||||
{mode === 'remove' ? (
|
|
||||||
<ColumnHeader
|
<ColumnHeader
|
||||||
title={intl.formatMessage(messages.heading)}
|
title={intl.formatMessage(messages.heading)}
|
||||||
icon='list-ul'
|
icon='list-ul'
|
||||||
iconComponent={ListAltIcon}
|
iconComponent={ListAltIcon}
|
||||||
multiColumn={multiColumn}
|
multiColumn={multiColumn}
|
||||||
showBackButton
|
showBackButton
|
||||||
extraButton={
|
|
||||||
<button
|
|
||||||
onClick={handleSearchClick}
|
|
||||||
type='button'
|
|
||||||
className='column-header__button'
|
|
||||||
title={intl.formatMessage(messages.enterSearch)}
|
|
||||||
aria-label={intl.formatMessage(messages.enterSearch)}
|
|
||||||
>
|
|
||||||
<Icon id='plus' icon={AddIcon} />
|
|
||||||
</button>
|
|
||||||
}
|
|
||||||
/>
|
/>
|
||||||
) : (
|
|
||||||
<ColumnSearchHeader
|
<ColumnSearchHeader
|
||||||
|
placeholder={intl.formatMessage(messages.placeholder)}
|
||||||
onBack={handleDismissSearchClick}
|
onBack={handleDismissSearchClick}
|
||||||
onSubmit={handleSearch}
|
onSubmit={handleSearch}
|
||||||
|
onActivate={handleSearchClick}
|
||||||
|
active={mode === 'add'}
|
||||||
/>
|
/>
|
||||||
)}
|
|
||||||
|
|
||||||
<ScrollableList
|
<ScrollableList
|
||||||
scrollKey='list_members'
|
scrollKey='list_members'
|
||||||
@ -310,9 +243,8 @@ const ListMembers: React.FC<{
|
|||||||
showLoading={loading && displayedAccountIds.length === 0}
|
showLoading={loading && displayedAccountIds.length === 0}
|
||||||
hasMore={false}
|
hasMore={false}
|
||||||
footer={
|
footer={
|
||||||
mode === 'remove' && (
|
|
||||||
<>
|
<>
|
||||||
<div className='spacer' />
|
{displayedAccountIds.length > 0 && <div className='spacer' />}
|
||||||
|
|
||||||
<div className='column-footer'>
|
<div className='column-footer'>
|
||||||
<Link to={`/lists/${id}`} className='button button--block'>
|
<Link to={`/lists/${id}`} className='button button--block'>
|
||||||
@ -320,7 +252,6 @@ const ListMembers: React.FC<{
|
|||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
)
|
|
||||||
}
|
}
|
||||||
emptyMessage={
|
emptyMessage={
|
||||||
mode === 'remove' ? (
|
mode === 'remove' ? (
|
||||||
|
@ -1,119 +0,0 @@
|
|||||||
import PropTypes from 'prop-types';
|
|
||||||
import { PureComponent } from 'react';
|
|
||||||
|
|
||||||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
|
||||||
|
|
||||||
import HomeIcon from '@/material-icons/400-24px/home-fill.svg?react';
|
|
||||||
import InsertChartIcon from '@/material-icons/400-24px/insert_chart.svg?react';
|
|
||||||
import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react';
|
|
||||||
import RepeatIcon from '@/material-icons/400-24px/repeat.svg?react';
|
|
||||||
import ReplyAllIcon from '@/material-icons/400-24px/reply_all.svg?react';
|
|
||||||
import StarIcon from '@/material-icons/400-24px/star.svg?react';
|
|
||||||
import { Icon } from 'mastodon/components/icon';
|
|
||||||
|
|
||||||
const tooltips = defineMessages({
|
|
||||||
mentions: { id: 'notifications.filter.mentions', defaultMessage: 'Mentions' },
|
|
||||||
favourites: { id: 'notifications.filter.favourites', defaultMessage: 'Favorites' },
|
|
||||||
boosts: { id: 'notifications.filter.boosts', defaultMessage: 'Boosts' },
|
|
||||||
polls: { id: 'notifications.filter.polls', defaultMessage: 'Poll results' },
|
|
||||||
follows: { id: 'notifications.filter.follows', defaultMessage: 'Follows' },
|
|
||||||
statuses: { id: 'notifications.filter.statuses', defaultMessage: 'Updates from people you follow' },
|
|
||||||
});
|
|
||||||
|
|
||||||
class FilterBar extends PureComponent {
|
|
||||||
|
|
||||||
static propTypes = {
|
|
||||||
selectFilter: PropTypes.func.isRequired,
|
|
||||||
selectedFilter: PropTypes.string.isRequired,
|
|
||||||
advancedMode: PropTypes.bool.isRequired,
|
|
||||||
intl: PropTypes.object.isRequired,
|
|
||||||
};
|
|
||||||
|
|
||||||
onClick (notificationType) {
|
|
||||||
return () => this.props.selectFilter(notificationType);
|
|
||||||
}
|
|
||||||
|
|
||||||
render () {
|
|
||||||
const { selectedFilter, advancedMode, intl } = this.props;
|
|
||||||
const renderedElement = !advancedMode ? (
|
|
||||||
<div className='notification__filter-bar'>
|
|
||||||
<button
|
|
||||||
className={selectedFilter === 'all' ? 'active' : ''}
|
|
||||||
onClick={this.onClick('all')}
|
|
||||||
>
|
|
||||||
<FormattedMessage
|
|
||||||
id='notifications.filter.all'
|
|
||||||
defaultMessage='All'
|
|
||||||
/>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
className={selectedFilter === 'mention' ? 'active' : ''}
|
|
||||||
onClick={this.onClick('mention')}
|
|
||||||
>
|
|
||||||
<FormattedMessage
|
|
||||||
id='notifications.filter.mentions'
|
|
||||||
defaultMessage='Mentions'
|
|
||||||
/>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
) : (
|
|
||||||
<div className='notification__filter-bar'>
|
|
||||||
<button
|
|
||||||
className={selectedFilter === 'all' ? 'active' : ''}
|
|
||||||
onClick={this.onClick('all')}
|
|
||||||
>
|
|
||||||
<FormattedMessage
|
|
||||||
id='notifications.filter.all'
|
|
||||||
defaultMessage='All'
|
|
||||||
/>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
className={selectedFilter === 'mention' ? 'active' : ''}
|
|
||||||
onClick={this.onClick('mention')}
|
|
||||||
title={intl.formatMessage(tooltips.mentions)}
|
|
||||||
>
|
|
||||||
<Icon id='reply-all' icon={ReplyAllIcon} />
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
className={selectedFilter === 'favourite' ? 'active' : ''}
|
|
||||||
onClick={this.onClick('favourite')}
|
|
||||||
title={intl.formatMessage(tooltips.favourites)}
|
|
||||||
>
|
|
||||||
<Icon id='star' icon={StarIcon} />
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
className={selectedFilter === 'reblog' ? 'active' : ''}
|
|
||||||
onClick={this.onClick('reblog')}
|
|
||||||
title={intl.formatMessage(tooltips.boosts)}
|
|
||||||
>
|
|
||||||
<Icon id='retweet' icon={RepeatIcon} />
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
className={selectedFilter === 'poll' ? 'active' : ''}
|
|
||||||
onClick={this.onClick('poll')}
|
|
||||||
title={intl.formatMessage(tooltips.polls)}
|
|
||||||
>
|
|
||||||
<Icon id='tasks' icon={InsertChartIcon} />
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
className={selectedFilter === 'status' ? 'active' : ''}
|
|
||||||
onClick={this.onClick('status')}
|
|
||||||
title={intl.formatMessage(tooltips.statuses)}
|
|
||||||
>
|
|
||||||
<Icon id='home' icon={HomeIcon} />
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
className={selectedFilter === 'follow' ? 'active' : ''}
|
|
||||||
onClick={this.onClick('follow')}
|
|
||||||
title={intl.formatMessage(tooltips.follows)}
|
|
||||||
>
|
|
||||||
<Icon id='user-plus' icon={PersonAddIcon} />
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
return renderedElement;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export default injectIntl(FilterBar);
|
|
@ -1,17 +0,0 @@
|
|||||||
import { connect } from 'react-redux';
|
|
||||||
|
|
||||||
import { setFilter } from '../../../actions/notifications';
|
|
||||||
import FilterBar from '../components/filter_bar';
|
|
||||||
|
|
||||||
const makeMapStateToProps = state => ({
|
|
||||||
selectedFilter: state.getIn(['settings', 'notifications', 'quickFilter', 'active']),
|
|
||||||
advancedMode: state.getIn(['settings', 'notifications', 'quickFilter', 'advanced']),
|
|
||||||
});
|
|
||||||
|
|
||||||
const mapDispatchToProps = (dispatch) => ({
|
|
||||||
selectFilter (newActiveFilter) {
|
|
||||||
dispatch(setFilter(newActiveFilter));
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
export default connect(makeMapStateToProps, mapDispatchToProps)(FilterBar);
|
|
@ -1,308 +0,0 @@
|
|||||||
import PropTypes from 'prop-types';
|
|
||||||
import { PureComponent } from 'react';
|
|
||||||
|
|
||||||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
|
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
|
|
||||||
import { createSelector } from '@reduxjs/toolkit';
|
|
||||||
import { List as ImmutableList } from 'immutable';
|
|
||||||
import ImmutablePropTypes from 'react-immutable-proptypes';
|
|
||||||
import { connect } from 'react-redux';
|
|
||||||
|
|
||||||
import { debounce } from 'lodash';
|
|
||||||
|
|
||||||
import DoneAllIcon from '@/material-icons/400-24px/done_all.svg?react';
|
|
||||||
import NotificationsIcon from '@/material-icons/400-24px/notifications-fill.svg?react';
|
|
||||||
import { compareId } from 'mastodon/compare_id';
|
|
||||||
import { Icon } from 'mastodon/components/icon';
|
|
||||||
import { NotSignedInIndicator } from 'mastodon/components/not_signed_in_indicator';
|
|
||||||
import { identityContextPropShape, withIdentity } from 'mastodon/identity_context';
|
|
||||||
|
|
||||||
import { addColumn, removeColumn, moveColumn } from '../../actions/columns';
|
|
||||||
import { submitMarkers } from '../../actions/markers';
|
|
||||||
import {
|
|
||||||
expandNotifications,
|
|
||||||
scrollTopNotifications,
|
|
||||||
loadPending,
|
|
||||||
mountNotifications,
|
|
||||||
unmountNotifications,
|
|
||||||
markNotificationsAsRead,
|
|
||||||
} from '../../actions/notifications';
|
|
||||||
import Column from '../../components/column';
|
|
||||||
import ColumnHeader from '../../components/column_header';
|
|
||||||
import { LoadGap } from '../../components/load_gap';
|
|
||||||
import ScrollableList from '../../components/scrollable_list';
|
|
||||||
|
|
||||||
import {
|
|
||||||
FilteredNotificationsBanner,
|
|
||||||
FilteredNotificationsIconButton,
|
|
||||||
} from './components/filtered_notifications_banner';
|
|
||||||
import NotificationsPermissionBanner from './components/notifications_permission_banner';
|
|
||||||
import ColumnSettingsContainer from './containers/column_settings_container';
|
|
||||||
import FilterBarContainer from './containers/filter_bar_container';
|
|
||||||
import NotificationContainer from './containers/notification_container';
|
|
||||||
|
|
||||||
const messages = defineMessages({
|
|
||||||
title: { id: 'column.notifications', defaultMessage: 'Notifications' },
|
|
||||||
markAsRead : { id: 'notifications.mark_as_read', defaultMessage: 'Mark every notification as read' },
|
|
||||||
});
|
|
||||||
|
|
||||||
const getExcludedTypes = createSelector([
|
|
||||||
state => state.getIn(['settings', 'notifications', 'shows']),
|
|
||||||
], (shows) => {
|
|
||||||
return ImmutableList(shows.filter(item => !item).keys());
|
|
||||||
});
|
|
||||||
|
|
||||||
const getNotifications = createSelector([
|
|
||||||
state => state.getIn(['settings', 'notifications', 'quickFilter', 'show']),
|
|
||||||
state => state.getIn(['settings', 'notifications', 'quickFilter', 'active']),
|
|
||||||
getExcludedTypes,
|
|
||||||
state => state.getIn(['notifications', 'items']),
|
|
||||||
], (showFilterBar, allowedType, excludedTypes, notifications) => {
|
|
||||||
if (!showFilterBar || allowedType === 'all') {
|
|
||||||
// used if user changed the notification settings after loading the notifications from the server
|
|
||||||
// otherwise a list of notifications will come pre-filtered from the backend
|
|
||||||
// we need to turn it off for FilterBar in order not to block ourselves from seeing a specific category
|
|
||||||
return notifications.filterNot(item => item !== null && excludedTypes.includes(item.get('type')));
|
|
||||||
}
|
|
||||||
return notifications.filter(item => item === null || allowedType === item.get('type'));
|
|
||||||
});
|
|
||||||
|
|
||||||
const mapStateToProps = state => ({
|
|
||||||
notifications: getNotifications(state),
|
|
||||||
isLoading: state.getIn(['notifications', 'isLoading'], 0) > 0,
|
|
||||||
isUnread: state.getIn(['notifications', 'unread']) > 0 || state.getIn(['notifications', 'pendingItems']).size > 0,
|
|
||||||
hasMore: state.getIn(['notifications', 'hasMore']),
|
|
||||||
numPending: state.getIn(['notifications', 'pendingItems'], ImmutableList()).size,
|
|
||||||
lastReadId: state.getIn(['settings', 'notifications', 'showUnread']) ? state.getIn(['notifications', 'readMarkerId']) : '0',
|
|
||||||
canMarkAsRead: state.getIn(['settings', 'notifications', 'showUnread']) && state.getIn(['notifications', 'readMarkerId']) !== '0' && getNotifications(state).some(item => item !== null && compareId(item.get('id'), state.getIn(['notifications', 'readMarkerId'])) > 0),
|
|
||||||
needsNotificationPermission: state.getIn(['settings', 'notifications', 'alerts']).includes(true) && state.getIn(['notifications', 'browserSupport']) && state.getIn(['notifications', 'browserPermission']) === 'default' && !state.getIn(['settings', 'notifications', 'dismissPermissionBanner']),
|
|
||||||
});
|
|
||||||
|
|
||||||
class Notifications extends PureComponent {
|
|
||||||
static propTypes = {
|
|
||||||
identity: identityContextPropShape,
|
|
||||||
columnId: PropTypes.string,
|
|
||||||
notifications: ImmutablePropTypes.list.isRequired,
|
|
||||||
dispatch: PropTypes.func.isRequired,
|
|
||||||
intl: PropTypes.object.isRequired,
|
|
||||||
isLoading: PropTypes.bool,
|
|
||||||
isUnread: PropTypes.bool,
|
|
||||||
multiColumn: PropTypes.bool,
|
|
||||||
hasMore: PropTypes.bool,
|
|
||||||
numPending: PropTypes.number,
|
|
||||||
lastReadId: PropTypes.string,
|
|
||||||
canMarkAsRead: PropTypes.bool,
|
|
||||||
needsNotificationPermission: PropTypes.bool,
|
|
||||||
};
|
|
||||||
|
|
||||||
static defaultProps = {
|
|
||||||
trackScroll: true,
|
|
||||||
};
|
|
||||||
|
|
||||||
UNSAFE_componentWillMount() {
|
|
||||||
this.props.dispatch(mountNotifications());
|
|
||||||
}
|
|
||||||
|
|
||||||
componentWillUnmount () {
|
|
||||||
this.handleLoadOlder.cancel();
|
|
||||||
this.handleScrollToTop.cancel();
|
|
||||||
this.handleScroll.cancel();
|
|
||||||
this.props.dispatch(scrollTopNotifications(false));
|
|
||||||
this.props.dispatch(unmountNotifications());
|
|
||||||
}
|
|
||||||
|
|
||||||
handleLoadGap = (maxId) => {
|
|
||||||
this.props.dispatch(expandNotifications({ maxId }));
|
|
||||||
};
|
|
||||||
|
|
||||||
handleLoadOlder = debounce(() => {
|
|
||||||
const last = this.props.notifications.last();
|
|
||||||
this.props.dispatch(expandNotifications({ maxId: last && last.get('id') }));
|
|
||||||
}, 300, { leading: true });
|
|
||||||
|
|
||||||
handleLoadPending = () => {
|
|
||||||
this.props.dispatch(loadPending());
|
|
||||||
};
|
|
||||||
|
|
||||||
handleScrollToTop = debounce(() => {
|
|
||||||
this.props.dispatch(scrollTopNotifications(true));
|
|
||||||
}, 100);
|
|
||||||
|
|
||||||
handleScroll = debounce(() => {
|
|
||||||
this.props.dispatch(scrollTopNotifications(false));
|
|
||||||
}, 100);
|
|
||||||
|
|
||||||
handlePin = () => {
|
|
||||||
const { columnId, dispatch } = this.props;
|
|
||||||
|
|
||||||
if (columnId) {
|
|
||||||
dispatch(removeColumn(columnId));
|
|
||||||
} else {
|
|
||||||
dispatch(addColumn('NOTIFICATIONS', {}));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
handleMove = (dir) => {
|
|
||||||
const { columnId, dispatch } = this.props;
|
|
||||||
dispatch(moveColumn(columnId, dir));
|
|
||||||
};
|
|
||||||
|
|
||||||
handleHeaderClick = () => {
|
|
||||||
this.column.scrollTop();
|
|
||||||
};
|
|
||||||
|
|
||||||
setColumnRef = c => {
|
|
||||||
this.column = c;
|
|
||||||
};
|
|
||||||
|
|
||||||
handleMoveUp = id => {
|
|
||||||
const elementIndex = this.props.notifications.findIndex(item => item !== null && item.get('id') === id) - 1;
|
|
||||||
this._selectChild(elementIndex, true);
|
|
||||||
};
|
|
||||||
|
|
||||||
handleMoveDown = id => {
|
|
||||||
const elementIndex = this.props.notifications.findIndex(item => item !== null && item.get('id') === id) + 1;
|
|
||||||
this._selectChild(elementIndex, false);
|
|
||||||
};
|
|
||||||
|
|
||||||
_selectChild (index, align_top) {
|
|
||||||
const container = this.column.node;
|
|
||||||
const element = container.querySelector(`article:nth-of-type(${index + 1}) .focusable`);
|
|
||||||
|
|
||||||
if (element) {
|
|
||||||
if (align_top && container.scrollTop > element.offsetTop) {
|
|
||||||
element.scrollIntoView(true);
|
|
||||||
} else if (!align_top && container.scrollTop + container.clientHeight < element.offsetTop + element.offsetHeight) {
|
|
||||||
element.scrollIntoView(false);
|
|
||||||
}
|
|
||||||
element.focus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
handleMarkAsRead = () => {
|
|
||||||
this.props.dispatch(markNotificationsAsRead());
|
|
||||||
this.props.dispatch(submitMarkers({ immediate: true }));
|
|
||||||
};
|
|
||||||
|
|
||||||
render () {
|
|
||||||
const { intl, notifications, isLoading, isUnread, columnId, multiColumn, hasMore, numPending, lastReadId, canMarkAsRead, needsNotificationPermission } = this.props;
|
|
||||||
const pinned = !!columnId;
|
|
||||||
const emptyMessage = <FormattedMessage id='empty_column.notifications' defaultMessage="You don't have any notifications yet. When other people interact with you, you will see it here." />;
|
|
||||||
const { signedIn } = this.props.identity;
|
|
||||||
|
|
||||||
let scrollableContent = null;
|
|
||||||
|
|
||||||
const filterBarContainer = signedIn
|
|
||||||
? (<FilterBarContainer />)
|
|
||||||
: null;
|
|
||||||
|
|
||||||
if (isLoading && this.scrollableContent) {
|
|
||||||
scrollableContent = this.scrollableContent;
|
|
||||||
} else if (notifications.size > 0 || hasMore) {
|
|
||||||
scrollableContent = notifications.map((item, index) => item === null ? (
|
|
||||||
<LoadGap
|
|
||||||
key={'gap:' + notifications.getIn([index + 1, 'id'])}
|
|
||||||
disabled={isLoading}
|
|
||||||
param={index > 0 ? notifications.getIn([index - 1, 'id']) : null}
|
|
||||||
onClick={this.handleLoadGap}
|
|
||||||
/>
|
|
||||||
) : (
|
|
||||||
<NotificationContainer
|
|
||||||
key={item.get('id')}
|
|
||||||
notification={item}
|
|
||||||
accountId={item.get('account')}
|
|
||||||
onMoveUp={this.handleMoveUp}
|
|
||||||
onMoveDown={this.handleMoveDown}
|
|
||||||
unread={lastReadId !== '0' && compareId(item.get('id'), lastReadId) > 0}
|
|
||||||
/>
|
|
||||||
));
|
|
||||||
} else {
|
|
||||||
scrollableContent = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.scrollableContent = scrollableContent;
|
|
||||||
|
|
||||||
let scrollContainer;
|
|
||||||
|
|
||||||
const prepend = (
|
|
||||||
<>
|
|
||||||
{needsNotificationPermission && <NotificationsPermissionBanner />}
|
|
||||||
<FilteredNotificationsBanner />
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
|
|
||||||
if (signedIn) {
|
|
||||||
scrollContainer = (
|
|
||||||
<ScrollableList
|
|
||||||
scrollKey={`notifications-${columnId}`}
|
|
||||||
trackScroll={!pinned}
|
|
||||||
isLoading={isLoading}
|
|
||||||
showLoading={isLoading && notifications.size === 0}
|
|
||||||
hasMore={hasMore}
|
|
||||||
numPending={numPending}
|
|
||||||
prepend={prepend}
|
|
||||||
alwaysPrepend
|
|
||||||
emptyMessage={emptyMessage}
|
|
||||||
onLoadMore={this.handleLoadOlder}
|
|
||||||
onLoadPending={this.handleLoadPending}
|
|
||||||
onScrollToTop={this.handleScrollToTop}
|
|
||||||
onScroll={this.handleScroll}
|
|
||||||
bindToDocument={!multiColumn}
|
|
||||||
>
|
|
||||||
{scrollableContent}
|
|
||||||
</ScrollableList>
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
scrollContainer = <NotSignedInIndicator />;
|
|
||||||
}
|
|
||||||
|
|
||||||
const extraButton = (
|
|
||||||
<>
|
|
||||||
<FilteredNotificationsIconButton className='column-header__button' />
|
|
||||||
{canMarkAsRead && (
|
|
||||||
<button
|
|
||||||
aria-label={intl.formatMessage(messages.markAsRead)}
|
|
||||||
title={intl.formatMessage(messages.markAsRead)}
|
|
||||||
onClick={this.handleMarkAsRead}
|
|
||||||
className='column-header__button'
|
|
||||||
>
|
|
||||||
<Icon id='done-all' icon={DoneAllIcon} />
|
|
||||||
</button>
|
|
||||||
)}
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Column bindToDocument={!multiColumn} ref={this.setColumnRef} label={intl.formatMessage(messages.title)}>
|
|
||||||
<ColumnHeader
|
|
||||||
icon='bell'
|
|
||||||
iconComponent={NotificationsIcon}
|
|
||||||
active={isUnread}
|
|
||||||
title={intl.formatMessage(messages.title)}
|
|
||||||
onPin={this.handlePin}
|
|
||||||
onMove={this.handleMove}
|
|
||||||
onClick={this.handleHeaderClick}
|
|
||||||
pinned={pinned}
|
|
||||||
multiColumn={multiColumn}
|
|
||||||
extraButton={extraButton}
|
|
||||||
>
|
|
||||||
<ColumnSettingsContainer />
|
|
||||||
</ColumnHeader>
|
|
||||||
|
|
||||||
{filterBarContainer}
|
|
||||||
|
|
||||||
{scrollContainer}
|
|
||||||
|
|
||||||
<Helmet>
|
|
||||||
<title>{intl.formatMessage(messages.title)}</title>
|
|
||||||
<meta name='robots' content='noindex' />
|
|
||||||
</Helmet>
|
|
||||||
</Column>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export default connect(mapStateToProps)(withIdentity(injectIntl(Notifications)));
|
|
@ -1,9 +0,0 @@
|
|||||||
import Notifications_v2 from 'mastodon/features/notifications_v2';
|
|
||||||
|
|
||||||
export const NotificationsWrapper = (props) => {
|
|
||||||
return (
|
|
||||||
<Notifications_v2 {...props} />
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default NotificationsWrapper;
|
|
@ -1,57 +0,0 @@
|
|||||||
import PropTypes from 'prop-types';
|
|
||||||
|
|
||||||
import { Link } from 'react-router-dom';
|
|
||||||
|
|
||||||
import ArrowRightAltIcon from '@/material-icons/400-24px/arrow_right_alt.svg?react';
|
|
||||||
import CheckIcon from '@/material-icons/400-24px/done.svg?react';
|
|
||||||
import { Icon } from 'mastodon/components/icon';
|
|
||||||
|
|
||||||
export const Step = ({ label, description, icon, iconComponent, completed, onClick, href, to }) => {
|
|
||||||
const content = (
|
|
||||||
<>
|
|
||||||
<div className='onboarding__steps__item__icon'>
|
|
||||||
<Icon id={icon} icon={iconComponent} />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className='onboarding__steps__item__description'>
|
|
||||||
<h6>{label}</h6>
|
|
||||||
<p>{description}</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className={completed ? 'onboarding__steps__item__progress' : 'onboarding__steps__item__go'}>
|
|
||||||
{completed ? <Icon icon={CheckIcon} /> : <Icon icon={ArrowRightAltIcon} />}
|
|
||||||
</div>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
|
|
||||||
if (href) {
|
|
||||||
return (
|
|
||||||
<a href={href} onClick={onClick} target='_blank' rel='noopener' className='onboarding__steps__item'>
|
|
||||||
{content}
|
|
||||||
</a>
|
|
||||||
);
|
|
||||||
} else if (to) {
|
|
||||||
return (
|
|
||||||
<Link to={to} className='onboarding__steps__item'>
|
|
||||||
{content}
|
|
||||||
</Link>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<button onClick={onClick} className='onboarding__steps__item'>
|
|
||||||
{content}
|
|
||||||
</button>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
Step.propTypes = {
|
|
||||||
label: PropTypes.node,
|
|
||||||
description: PropTypes.node,
|
|
||||||
icon: PropTypes.string,
|
|
||||||
iconComponent: PropTypes.func,
|
|
||||||
completed: PropTypes.bool,
|
|
||||||
href: PropTypes.string,
|
|
||||||
to: PropTypes.string,
|
|
||||||
onClick: PropTypes.func,
|
|
||||||
};
|
|
@ -1,62 +0,0 @@
|
|||||||
import { useEffect } from 'react';
|
|
||||||
|
|
||||||
import { FormattedMessage } from 'react-intl';
|
|
||||||
|
|
||||||
import { Link } from 'react-router-dom';
|
|
||||||
|
|
||||||
import { useDispatch } from 'react-redux';
|
|
||||||
|
|
||||||
|
|
||||||
import { fetchSuggestions } from 'mastodon/actions/suggestions';
|
|
||||||
import { markAsPartial } from 'mastodon/actions/timelines';
|
|
||||||
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';
|
|
||||||
|
|
||||||
export const Follows = () => {
|
|
||||||
const dispatch = useDispatch();
|
|
||||||
const isLoading = useAppSelector(state => state.getIn(['suggestions', 'isLoading']));
|
|
||||||
const suggestions = useAppSelector(state => state.getIn(['suggestions', 'items']));
|
|
||||||
|
|
||||||
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 />);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<ColumnBackButton />
|
|
||||||
|
|
||||||
<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'>
|
|
||||||
<Link className='link-button' to='/start'><FormattedMessage id='onboarding.actions.back' defaultMessage='Take me back' /></Link>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
};
|
|
191
app/javascript/mastodon/features/onboarding/follows.tsx
Normal file
191
app/javascript/mastodon/features/onboarding/follows.tsx
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
import { useEffect, useState, useCallback, useRef } from 'react';
|
||||||
|
|
||||||
|
import { FormattedMessage, useIntl, defineMessages } from 'react-intl';
|
||||||
|
|
||||||
|
import { Helmet } from 'react-helmet';
|
||||||
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
|
import { useDebouncedCallback } from 'use-debounce';
|
||||||
|
|
||||||
|
import PersonIcon from '@/material-icons/400-24px/person.svg?react';
|
||||||
|
import { fetchRelationships } from 'mastodon/actions/accounts';
|
||||||
|
import { importFetchedAccounts } from 'mastodon/actions/importer';
|
||||||
|
import { fetchSuggestions } from 'mastodon/actions/suggestions';
|
||||||
|
import { markAsPartial } from 'mastodon/actions/timelines';
|
||||||
|
import { apiRequest } from 'mastodon/api';
|
||||||
|
import type { ApiAccountJSON } from 'mastodon/api_types/accounts';
|
||||||
|
import Column from 'mastodon/components/column';
|
||||||
|
import { ColumnHeader } from 'mastodon/components/column_header';
|
||||||
|
import { ColumnSearchHeader } from 'mastodon/components/column_search_header';
|
||||||
|
import ScrollableList from 'mastodon/components/scrollable_list';
|
||||||
|
import Account from 'mastodon/containers/account_container';
|
||||||
|
import { useAppSelector, useAppDispatch } from 'mastodon/store';
|
||||||
|
|
||||||
|
const messages = defineMessages({
|
||||||
|
title: {
|
||||||
|
id: 'onboarding.follows.title',
|
||||||
|
defaultMessage: 'Follow people to get started',
|
||||||
|
},
|
||||||
|
search: { id: 'onboarding.follows.search', defaultMessage: 'Search' },
|
||||||
|
back: { id: 'onboarding.follows.back', defaultMessage: 'Back' },
|
||||||
|
});
|
||||||
|
|
||||||
|
type Mode = 'remove' | 'add';
|
||||||
|
|
||||||
|
export const Follows: React.FC<{
|
||||||
|
multiColumn?: boolean;
|
||||||
|
}> = ({ multiColumn }) => {
|
||||||
|
const intl = useIntl();
|
||||||
|
const dispatch = useAppDispatch();
|
||||||
|
const isLoading = useAppSelector((state) => state.suggestions.isLoading);
|
||||||
|
const suggestions = useAppSelector((state) => state.suggestions.items);
|
||||||
|
const [searchAccountIds, setSearchAccountIds] = useState<string[]>([]);
|
||||||
|
const [mode, setMode] = useState<Mode>('remove');
|
||||||
|
const [isLoadingSearch, setIsLoadingSearch] = useState(false);
|
||||||
|
const [isSearching, setIsSearching] = useState(false);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
void dispatch(fetchSuggestions());
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
dispatch(markAsPartial('home'));
|
||||||
|
};
|
||||||
|
}, [dispatch]);
|
||||||
|
|
||||||
|
const handleSearchClick = useCallback(() => {
|
||||||
|
setMode('add');
|
||||||
|
}, [setMode]);
|
||||||
|
|
||||||
|
const handleDismissSearchClick = useCallback(() => {
|
||||||
|
setMode('remove');
|
||||||
|
setIsSearching(false);
|
||||||
|
}, [setMode, setIsSearching]);
|
||||||
|
|
||||||
|
const searchRequestRef = useRef<AbortController | null>(null);
|
||||||
|
|
||||||
|
const handleSearch = useDebouncedCallback(
|
||||||
|
(value: string) => {
|
||||||
|
if (searchRequestRef.current) {
|
||||||
|
searchRequestRef.current.abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value.trim().length === 0) {
|
||||||
|
setIsSearching(false);
|
||||||
|
setSearchAccountIds([]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setIsSearching(true);
|
||||||
|
setIsLoadingSearch(true);
|
||||||
|
|
||||||
|
searchRequestRef.current = new AbortController();
|
||||||
|
|
||||||
|
void apiRequest<ApiAccountJSON[]>('GET', 'v1/accounts/search', {
|
||||||
|
signal: searchRequestRef.current.signal,
|
||||||
|
params: {
|
||||||
|
q: value,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then((data) => {
|
||||||
|
dispatch(importFetchedAccounts(data));
|
||||||
|
dispatch(fetchRelationships(data.map((a) => a.id)));
|
||||||
|
setSearchAccountIds(data.map((a) => a.id));
|
||||||
|
setIsLoadingSearch(false);
|
||||||
|
return '';
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
setIsLoadingSearch(false);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
500,
|
||||||
|
{ leading: true, trailing: true },
|
||||||
|
);
|
||||||
|
|
||||||
|
let displayedAccountIds: string[];
|
||||||
|
|
||||||
|
if (mode === 'add' && isSearching) {
|
||||||
|
displayedAccountIds = searchAccountIds;
|
||||||
|
} else {
|
||||||
|
displayedAccountIds = suggestions.map(
|
||||||
|
(suggestion) => suggestion.account_id,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Column
|
||||||
|
bindToDocument={!multiColumn}
|
||||||
|
label={intl.formatMessage(messages.title)}
|
||||||
|
>
|
||||||
|
<ColumnHeader
|
||||||
|
title={intl.formatMessage(messages.title)}
|
||||||
|
icon='person'
|
||||||
|
iconComponent={PersonIcon}
|
||||||
|
multiColumn={multiColumn}
|
||||||
|
showBackButton
|
||||||
|
/>
|
||||||
|
|
||||||
|
<ColumnSearchHeader
|
||||||
|
placeholder={intl.formatMessage(messages.search)}
|
||||||
|
onBack={handleDismissSearchClick}
|
||||||
|
onActivate={handleSearchClick}
|
||||||
|
active={mode === 'add'}
|
||||||
|
onSubmit={handleSearch}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<ScrollableList
|
||||||
|
scrollKey='follow_recommendations'
|
||||||
|
trackScroll={!multiColumn}
|
||||||
|
bindToDocument={!multiColumn}
|
||||||
|
showLoading={
|
||||||
|
(isLoading || isLoadingSearch) && displayedAccountIds.length === 0
|
||||||
|
}
|
||||||
|
hasMore={false}
|
||||||
|
isLoading={isLoading || isLoadingSearch}
|
||||||
|
footer={
|
||||||
|
<>
|
||||||
|
{displayedAccountIds.length > 0 && <div className='spacer' />}
|
||||||
|
|
||||||
|
<div className='column-footer'>
|
||||||
|
<Link className='button button--block' to='/home'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='onboarding.follows.done'
|
||||||
|
defaultMessage='Done'
|
||||||
|
/>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
}
|
||||||
|
emptyMessage={
|
||||||
|
mode === 'remove' ? (
|
||||||
|
<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.'
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<FormattedMessage
|
||||||
|
id='lists.no_results_found'
|
||||||
|
defaultMessage='No results found.'
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{displayedAccountIds.map((accountId) => (
|
||||||
|
<Account
|
||||||
|
/* @ts-expect-error inferred props are wrong */
|
||||||
|
id={accountId}
|
||||||
|
key={accountId}
|
||||||
|
withBio={false}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</ScrollableList>
|
||||||
|
|
||||||
|
<Helmet>
|
||||||
|
<title>{intl.formatMessage(messages.title)}</title>
|
||||||
|
<meta name='robots' content='noindex' />
|
||||||
|
</Helmet>
|
||||||
|
</Column>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
// eslint-disable-next-line import/no-default-export
|
||||||
|
export default Follows;
|
@ -1,91 +0,0 @@
|
|||||||
import { useCallback } from 'react';
|
|
||||||
|
|
||||||
import { FormattedMessage, useIntl, defineMessages } from 'react-intl';
|
|
||||||
|
|
||||||
import { Helmet } from 'react-helmet';
|
|
||||||
import { Link, Switch, Route } from 'react-router-dom';
|
|
||||||
|
|
||||||
import { useDispatch } from 'react-redux';
|
|
||||||
|
|
||||||
|
|
||||||
import illustration from '@/images/elephant_ui_conversation.svg';
|
|
||||||
import AccountCircleIcon from '@/material-icons/400-24px/account_circle.svg?react';
|
|
||||||
import ArrowRightAltIcon from '@/material-icons/400-24px/arrow_right_alt.svg?react';
|
|
||||||
import ContentCopyIcon from '@/material-icons/400-24px/content_copy.svg?react';
|
|
||||||
import EditNoteIcon from '@/material-icons/400-24px/edit_note.svg?react';
|
|
||||||
import PersonAddIcon from '@/material-icons/400-24px/person_add.svg?react';
|
|
||||||
import { focusCompose } from 'mastodon/actions/compose';
|
|
||||||
import { Icon } from 'mastodon/components/icon';
|
|
||||||
import { NotSignedInIndicator } from 'mastodon/components/not_signed_in_indicator';
|
|
||||||
import Column from 'mastodon/features/ui/components/column';
|
|
||||||
import { me } from 'mastodon/initial_state';
|
|
||||||
import { useAppSelector } from 'mastodon/store';
|
|
||||||
import { assetHost } from 'mastodon/utils/config';
|
|
||||||
|
|
||||||
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 Onboarding = () => {
|
|
||||||
const account = useAppSelector(state => state.getIn(['accounts', me]));
|
|
||||||
const dispatch = useDispatch();
|
|
||||||
const intl = useIntl();
|
|
||||||
|
|
||||||
const handleComposeClick = useCallback(() => {
|
|
||||||
dispatch(focusCompose(intl.formatMessage(messages.template)));
|
|
||||||
}, [dispatch, intl]);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Column>
|
|
||||||
{account ? (
|
|
||||||
<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>
|
|
||||||
) : <NotSignedInIndicator />}
|
|
||||||
|
|
||||||
<Helmet>
|
|
||||||
<meta name='robots' content='noindex' />
|
|
||||||
</Helmet>
|
|
||||||
</Column>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default Onboarding;
|
|
@ -1,162 +0,0 @@
|
|||||||
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 Toggle from 'react-toggle';
|
|
||||||
|
|
||||||
import AddPhotoAlternateIcon from '@/material-icons/400-24px/add_photo_alternate.svg?react';
|
|
||||||
import EditIcon from '@/material-icons/400-24px/edit.svg?react';
|
|
||||||
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' },
|
|
||||||
});
|
|
||||||
|
|
||||||
const nullIfMissing = path => path.endsWith('missing.png') ? null : path;
|
|
||||||
|
|
||||||
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) : nullIfMissing(account.get('avatar')), [avatar, account]);
|
|
||||||
const headerPreview = useMemo(() => header ? URL.createObjectURL(header) : nullIfMissing(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>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
};
|
|
329
app/javascript/mastodon/features/onboarding/profile.tsx
Normal file
329
app/javascript/mastodon/features/onboarding/profile.tsx
Normal file
@ -0,0 +1,329 @@
|
|||||||
|
import { useState, useMemo, useCallback, createRef } from 'react';
|
||||||
|
|
||||||
|
import { useIntl, defineMessages, FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
|
import classNames from 'classnames';
|
||||||
|
import { Helmet } from 'react-helmet';
|
||||||
|
import { useHistory } from 'react-router-dom';
|
||||||
|
|
||||||
|
import Toggle from 'react-toggle';
|
||||||
|
|
||||||
|
import AddPhotoAlternateIcon from '@/material-icons/400-24px/add_photo_alternate.svg?react';
|
||||||
|
import EditIcon from '@/material-icons/400-24px/edit.svg?react';
|
||||||
|
import PersonIcon from '@/material-icons/400-24px/person.svg?react';
|
||||||
|
import { updateAccount } from 'mastodon/actions/accounts';
|
||||||
|
import { Button } from 'mastodon/components/button';
|
||||||
|
import Column from 'mastodon/components/column';
|
||||||
|
import { ColumnHeader } from 'mastodon/components/column_header';
|
||||||
|
import { Icon } from 'mastodon/components/icon';
|
||||||
|
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
|
||||||
|
import { me } from 'mastodon/initial_state';
|
||||||
|
import { useAppSelector, useAppDispatch } from 'mastodon/store';
|
||||||
|
import { unescapeHTML } from 'mastodon/utils/html';
|
||||||
|
|
||||||
|
const messages = defineMessages({
|
||||||
|
title: {
|
||||||
|
id: 'onboarding.profile.title',
|
||||||
|
defaultMessage: 'Profile setup',
|
||||||
|
},
|
||||||
|
uploadHeader: {
|
||||||
|
id: 'onboarding.profile.upload_header',
|
||||||
|
defaultMessage: 'Upload profile header',
|
||||||
|
},
|
||||||
|
uploadAvatar: {
|
||||||
|
id: 'onboarding.profile.upload_avatar',
|
||||||
|
defaultMessage: 'Upload profile picture',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const nullIfMissing = (path: string) =>
|
||||||
|
path.endsWith('missing.png') ? null : path;
|
||||||
|
|
||||||
|
interface ApiAccountErrors {
|
||||||
|
display_name?: unknown;
|
||||||
|
note?: unknown;
|
||||||
|
avatar?: unknown;
|
||||||
|
header?: unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const Profile: React.FC<{
|
||||||
|
multiColumn?: boolean;
|
||||||
|
}> = ({ multiColumn }) => {
|
||||||
|
const account = useAppSelector((state) =>
|
||||||
|
me ? state.accounts.get(me) : undefined,
|
||||||
|
);
|
||||||
|
const [displayName, setDisplayName] = useState(account?.display_name ?? '');
|
||||||
|
const [note, setNote] = useState(
|
||||||
|
account ? (unescapeHTML(account.note) ?? '') : '',
|
||||||
|
);
|
||||||
|
const [avatar, setAvatar] = useState<File>();
|
||||||
|
const [header, setHeader] = useState<File>();
|
||||||
|
const [discoverable, setDiscoverable] = useState(true);
|
||||||
|
const [isSaving, setIsSaving] = useState(false);
|
||||||
|
const [errors, setErrors] = useState<ApiAccountErrors>();
|
||||||
|
const avatarFileRef = createRef<HTMLInputElement>();
|
||||||
|
const headerFileRef = createRef<HTMLInputElement>();
|
||||||
|
const dispatch = useAppDispatch();
|
||||||
|
const intl = useIntl();
|
||||||
|
const history = useHistory();
|
||||||
|
|
||||||
|
const handleDisplayNameChange = useCallback(
|
||||||
|
(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
setDisplayName(e.target.value);
|
||||||
|
},
|
||||||
|
[setDisplayName],
|
||||||
|
);
|
||||||
|
|
||||||
|
const handleNoteChange = useCallback(
|
||||||
|
(e: React.ChangeEvent<HTMLTextAreaElement>) => {
|
||||||
|
setNote(e.target.value);
|
||||||
|
},
|
||||||
|
[setNote],
|
||||||
|
);
|
||||||
|
|
||||||
|
const handleDiscoverableChange = useCallback(
|
||||||
|
(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
setDiscoverable(e.target.checked);
|
||||||
|
},
|
||||||
|
[setDiscoverable],
|
||||||
|
);
|
||||||
|
|
||||||
|
const handleAvatarChange = useCallback(
|
||||||
|
(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
setAvatar(e.target.files?.[0]);
|
||||||
|
},
|
||||||
|
[setAvatar],
|
||||||
|
);
|
||||||
|
|
||||||
|
const handleHeaderChange = useCallback(
|
||||||
|
(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
setHeader(e.target.files?.[0]);
|
||||||
|
},
|
||||||
|
[setHeader],
|
||||||
|
);
|
||||||
|
|
||||||
|
const avatarPreview = useMemo(
|
||||||
|
() =>
|
||||||
|
avatar
|
||||||
|
? URL.createObjectURL(avatar)
|
||||||
|
: nullIfMissing(account?.avatar ?? 'missing.png'),
|
||||||
|
[avatar, account],
|
||||||
|
);
|
||||||
|
const headerPreview = useMemo(
|
||||||
|
() =>
|
||||||
|
header
|
||||||
|
? URL.createObjectURL(header)
|
||||||
|
: nullIfMissing(account?.header ?? 'missing.png'),
|
||||||
|
[header, account],
|
||||||
|
);
|
||||||
|
|
||||||
|
const handleSubmit = useCallback(() => {
|
||||||
|
setIsSaving(true);
|
||||||
|
|
||||||
|
dispatch(
|
||||||
|
updateAccount({
|
||||||
|
displayName,
|
||||||
|
note,
|
||||||
|
avatar,
|
||||||
|
header,
|
||||||
|
discoverable,
|
||||||
|
indexable: discoverable,
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
history.push('/start/follows');
|
||||||
|
return '';
|
||||||
|
})
|
||||||
|
// eslint-disable-next-line @typescript-eslint/use-unknown-in-catch-callback-variable
|
||||||
|
.catch((err) => {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
||||||
|
if (err.response) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
|
||||||
|
const { details }: { details: ApiAccountErrors } = err.response.data;
|
||||||
|
setErrors(details);
|
||||||
|
}
|
||||||
|
|
||||||
|
setIsSaving(false);
|
||||||
|
});
|
||||||
|
}, [dispatch, displayName, note, avatar, header, discoverable, history]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Column
|
||||||
|
bindToDocument={!multiColumn}
|
||||||
|
label={intl.formatMessage(messages.title)}
|
||||||
|
>
|
||||||
|
<ColumnHeader
|
||||||
|
title={intl.formatMessage(messages.title)}
|
||||||
|
icon='person'
|
||||||
|
iconComponent={PersonIcon}
|
||||||
|
multiColumn={multiColumn}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<div className='scrollable scrollable--flex'>
|
||||||
|
<div className='simple_form app-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
|
||||||
|
id=''
|
||||||
|
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
|
||||||
|
id=''
|
||||||
|
icon={avatarPreview ? EditIcon : AddPhotoAlternateIcon}
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className='fields-group'>
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<div className='fields-group'>
|
||||||
|
<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>
|
||||||
|
</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='spacer' />
|
||||||
|
|
||||||
|
<div className='column-footer'>
|
||||||
|
<Button block onClick={handleSubmit} disabled={isSaving}>
|
||||||
|
{isSaving ? (
|
||||||
|
<LoadingIndicator />
|
||||||
|
) : (
|
||||||
|
<FormattedMessage
|
||||||
|
id='onboarding.profile.save_and_continue'
|
||||||
|
defaultMessage='Save and continue'
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Helmet>
|
||||||
|
<title>{intl.formatMessage(messages.title)}</title>
|
||||||
|
<meta name='robots' content='noindex' />
|
||||||
|
</Helmet>
|
||||||
|
</Column>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
// eslint-disable-next-line import/no-default-export
|
||||||
|
export default Profile;
|
@ -1,120 +0,0 @@
|
|||||||
import PropTypes from 'prop-types';
|
|
||||||
import { PureComponent } from 'react';
|
|
||||||
|
|
||||||
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
|
||||||
|
|
||||||
import classNames from 'classnames';
|
|
||||||
import { Link } from 'react-router-dom';
|
|
||||||
|
|
||||||
|
|
||||||
import SwipeableViews from 'react-swipeable-views';
|
|
||||||
|
|
||||||
import ArrowRightAltIcon from '@/material-icons/400-24px/arrow_right_alt.svg?react';
|
|
||||||
import { ColumnBackButton } from 'mastodon/components/column_back_button';
|
|
||||||
import { CopyPasteText } from 'mastodon/components/copy_paste_text';
|
|
||||||
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}' },
|
|
||||||
});
|
|
||||||
|
|
||||||
class TipCarousel extends PureComponent {
|
|
||||||
|
|
||||||
static propTypes = {
|
|
||||||
children: PropTypes.node,
|
|
||||||
};
|
|
||||||
|
|
||||||
state = {
|
|
||||||
index: 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
handleSwipe = index => {
|
|
||||||
this.setState({ index });
|
|
||||||
};
|
|
||||||
|
|
||||||
handleChangeIndex = e => {
|
|
||||||
this.setState({ index: Number(e.currentTarget.getAttribute('data-index')) });
|
|
||||||
};
|
|
||||||
|
|
||||||
handleKeyDown = e => {
|
|
||||||
switch(e.key) {
|
|
||||||
case 'ArrowLeft':
|
|
||||||
e.preventDefault();
|
|
||||||
this.setState(({ index }, { children }) => ({ index: Math.abs(index - 1) % children.length }));
|
|
||||||
break;
|
|
||||||
case 'ArrowRight':
|
|
||||||
e.preventDefault();
|
|
||||||
this.setState(({ index }, { children }) => ({ index: (index + 1) % children.length }));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
render () {
|
|
||||||
const { children } = this.props;
|
|
||||||
const { index } = this.state;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<div className='tip-carousel' tabIndex='0' onKeyDown={this.handleKeyDown}>
|
|
||||||
<SwipeableViews onChangeIndex={this.handleSwipe} index={index} enableMouseEvents tabIndex='-1'>
|
|
||||||
{children}
|
|
||||||
</SwipeableViews>
|
|
||||||
|
|
||||||
<div className='media-modal__pagination'>
|
|
||||||
{children.map((_, i) => (
|
|
||||||
<button key={i} className={classNames('media-modal__page-dot', { active: i === index })} data-index={i} onClick={this.handleChangeIndex}>
|
|
||||||
{i + 1}
|
|
||||||
</button>
|
|
||||||
))}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Share = () => {
|
|
||||||
const account = useAppSelector(state => state.getIn(['accounts', me]));
|
|
||||||
const intl = useIntl();
|
|
||||||
const url = (new URL(`/@${account.get('username')}`, document.baseURI)).href;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<ColumnBackButton />
|
|
||||||
|
|
||||||
<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'>
|
|
||||||
<Link className='link-button' to='/start'><FormattedMessage id='onboarding.action.back' defaultMessage='Take me back' /></Link>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
};
|
|
@ -142,7 +142,7 @@ class PublicTimeline extends PureComponent {
|
|||||||
</ColumnHeader>
|
</ColumnHeader>
|
||||||
|
|
||||||
<StatusListContainer
|
<StatusListContainer
|
||||||
prepend={<DismissableBanner id='public_timeline'><FormattedMessage id='dismissable_banner.public_timeline' defaultMessage='These are the most recent public posts from people on the social web that people on {domain} follow.' values={{ domain }} /></DismissableBanner>}
|
prepend={<DismissableBanner id='public_timeline'><FormattedMessage id='dismissable_banner.public_timeline' defaultMessage='These are the most recent public posts from people on the fediverse that people on {domain} follow.' values={{ domain }} /></DismissableBanner>}
|
||||||
timelineId={`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`}
|
timelineId={`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`}
|
||||||
onLoadMore={this.handleLoadMore}
|
onLoadMore={this.handleLoadMore}
|
||||||
trackScroll={!pinned}
|
trackScroll={!pinned}
|
||||||
|
@ -9,58 +9,7 @@ import { Link } from 'react-router-dom';
|
|||||||
|
|
||||||
import { Button } from 'mastodon/components/button';
|
import { Button } from 'mastodon/components/button';
|
||||||
import Column from 'mastodon/components/column';
|
import Column from 'mastodon/components/column';
|
||||||
import { autoPlayGif } from 'mastodon/initial_state';
|
import { GIF } from 'mastodon/components/gif';
|
||||||
|
|
||||||
class GIF extends PureComponent {
|
|
||||||
|
|
||||||
static propTypes = {
|
|
||||||
src: PropTypes.string.isRequired,
|
|
||||||
staticSrc: PropTypes.string.isRequired,
|
|
||||||
className: PropTypes.string,
|
|
||||||
animate: PropTypes.bool,
|
|
||||||
};
|
|
||||||
|
|
||||||
static defaultProps = {
|
|
||||||
animate: autoPlayGif,
|
|
||||||
};
|
|
||||||
|
|
||||||
state = {
|
|
||||||
hovering: false,
|
|
||||||
};
|
|
||||||
|
|
||||||
handleMouseEnter = () => {
|
|
||||||
const { animate } = this.props;
|
|
||||||
|
|
||||||
if (!animate) {
|
|
||||||
this.setState({ hovering: true });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
handleMouseLeave = () => {
|
|
||||||
const { animate } = this.props;
|
|
||||||
|
|
||||||
if (!animate) {
|
|
||||||
this.setState({ hovering: false });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
render () {
|
|
||||||
const { src, staticSrc, className, animate } = this.props;
|
|
||||||
const { hovering } = this.state;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<img
|
|
||||||
className={className}
|
|
||||||
src={(hovering || animate) ? src : staticSrc}
|
|
||||||
alt=''
|
|
||||||
role='presentation'
|
|
||||||
onMouseEnter={this.handleMouseEnter}
|
|
||||||
onMouseLeave={this.handleMouseLeave}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
class CopyButton extends PureComponent {
|
class CopyButton extends PureComponent {
|
||||||
|
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
import PropTypes from 'prop-types';
|
|
||||||
import { PureComponent } from 'react';
|
|
||||||
|
|
||||||
import { defineMessages, injectIntl } from 'react-intl';
|
|
||||||
|
|
||||||
import RefreshIcon from '@/material-icons/400-24px/refresh.svg?react';
|
|
||||||
|
|
||||||
import { IconButton } from '../../../components/icon_button';
|
|
||||||
|
|
||||||
const messages = defineMessages({
|
|
||||||
error: { id: 'bundle_modal_error.message', defaultMessage: 'Something went wrong while loading this component.' },
|
|
||||||
retry: { id: 'bundle_modal_error.retry', defaultMessage: 'Try again' },
|
|
||||||
close: { id: 'bundle_modal_error.close', defaultMessage: 'Close' },
|
|
||||||
});
|
|
||||||
|
|
||||||
class BundleModalError extends PureComponent {
|
|
||||||
|
|
||||||
static propTypes = {
|
|
||||||
onRetry: PropTypes.func.isRequired,
|
|
||||||
onClose: PropTypes.func.isRequired,
|
|
||||||
intl: PropTypes.object.isRequired,
|
|
||||||
};
|
|
||||||
|
|
||||||
handleRetry = () => {
|
|
||||||
this.props.onRetry();
|
|
||||||
};
|
|
||||||
|
|
||||||
render () {
|
|
||||||
const { onClose, intl: { formatMessage } } = this.props;
|
|
||||||
|
|
||||||
// Keep the markup in sync with <ModalLoading />
|
|
||||||
// (make sure they have the same dimensions)
|
|
||||||
return (
|
|
||||||
<div className='modal-root__modal error-modal'>
|
|
||||||
<div className='error-modal__body'>
|
|
||||||
<IconButton title={formatMessage(messages.retry)} icon='refresh' iconComponent={RefreshIcon} onClick={this.handleRetry} size={64} />
|
|
||||||
{formatMessage(messages.error)}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div className='error-modal__footer'>
|
|
||||||
<div>
|
|
||||||
<button
|
|
||||||
onClick={onClose}
|
|
||||||
className='error-modal__nav onboarding-modal__skip'
|
|
||||||
>
|
|
||||||
{formatMessage(messages.close)}
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export default injectIntl(BundleModalError);
|
|
@ -8,7 +8,7 @@ import { scrollRight } from '../../../scroll';
|
|||||||
import BundleContainer from '../containers/bundle_container';
|
import BundleContainer from '../containers/bundle_container';
|
||||||
import {
|
import {
|
||||||
Compose,
|
Compose,
|
||||||
NotificationsWrapper,
|
Notifications,
|
||||||
HomeTimeline,
|
HomeTimeline,
|
||||||
CommunityTimeline,
|
CommunityTimeline,
|
||||||
PublicTimeline,
|
PublicTimeline,
|
||||||
@ -30,7 +30,7 @@ import NavigationPanel from './navigation_panel';
|
|||||||
const componentMap = {
|
const componentMap = {
|
||||||
'COMPOSE': Compose,
|
'COMPOSE': Compose,
|
||||||
'HOME': HomeTimeline,
|
'HOME': HomeTimeline,
|
||||||
'NOTIFICATIONS': NotificationsWrapper,
|
'NOTIFICATIONS': Notifications,
|
||||||
'PUBLIC': PublicTimeline,
|
'PUBLIC': PublicTimeline,
|
||||||
'REMOTE': PublicTimeline,
|
'REMOTE': PublicTimeline,
|
||||||
'COMMUNITY': CommunityTimeline,
|
'COMMUNITY': CommunityTimeline,
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
import { LoadingIndicator } from '../../../components/loading_indicator';
|
|
||||||
|
|
||||||
// Keep the markup in sync with <BundleModalError />
|
|
||||||
// (make sure they have the same dimensions)
|
|
||||||
const ModalLoading = () => (
|
|
||||||
<div className='modal-root__modal error-modal'>
|
|
||||||
<div className='error-modal__body'>
|
|
||||||
<LoadingIndicator />
|
|
||||||
</div>
|
|
||||||
<div className='error-modal__footer'>
|
|
||||||
<div>
|
|
||||||
<button className='error-modal__nav onboarding-modal__skip' />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
|
|
||||||
export default ModalLoading;
|
|
@ -0,0 +1,61 @@
|
|||||||
|
import { useCallback } from 'react';
|
||||||
|
|
||||||
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
|
import { Button } from 'mastodon/components/button';
|
||||||
|
import { GIF } from 'mastodon/components/gif';
|
||||||
|
import { LoadingIndicator } from 'mastodon/components/loading_indicator';
|
||||||
|
|
||||||
|
export const ModalPlaceholder: React.FC<{
|
||||||
|
loading: boolean;
|
||||||
|
onClose: (arg0: string | undefined, arg1: boolean) => void;
|
||||||
|
onRetry?: () => void;
|
||||||
|
}> = ({ loading, onClose, onRetry }) => {
|
||||||
|
const handleClose = useCallback(() => {
|
||||||
|
onClose(undefined, false);
|
||||||
|
}, [onClose]);
|
||||||
|
|
||||||
|
const handleRetry = useCallback(() => {
|
||||||
|
if (onRetry) onRetry();
|
||||||
|
}, [onRetry]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className='modal-root__modal modal-placeholder' aria-busy={loading}>
|
||||||
|
{loading ? (
|
||||||
|
<LoadingIndicator />
|
||||||
|
) : (
|
||||||
|
<div className='modal-placeholder__error'>
|
||||||
|
<GIF
|
||||||
|
src='/oops.gif'
|
||||||
|
staticSrc='/oops.png'
|
||||||
|
className='modal-placeholder__error__image'
|
||||||
|
/>
|
||||||
|
|
||||||
|
<div className='modal-placeholder__error__message'>
|
||||||
|
<p>
|
||||||
|
<FormattedMessage
|
||||||
|
id='bundle_modal_error.message'
|
||||||
|
defaultMessage='Something went wrong while loading this screen.'
|
||||||
|
/>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div className='modal-placeholder__error__message__actions'>
|
||||||
|
<Button onClick={handleRetry}>
|
||||||
|
<FormattedMessage
|
||||||
|
id='bundle_modal_error.retry'
|
||||||
|
defaultMessage='Try again'
|
||||||
|
/>
|
||||||
|
</Button>
|
||||||
|
<Button onClick={handleClose} className='button button-tertiary'>
|
||||||
|
<FormattedMessage
|
||||||
|
id='bundle_modal_error.close'
|
||||||
|
defaultMessage='Close'
|
||||||
|
/>
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
@ -26,7 +26,6 @@ import BundleContainer from '../containers/bundle_container';
|
|||||||
import ActionsModal from './actions_modal';
|
import ActionsModal from './actions_modal';
|
||||||
import AudioModal from './audio_modal';
|
import AudioModal from './audio_modal';
|
||||||
import { BoostModal } from './boost_modal';
|
import { BoostModal } from './boost_modal';
|
||||||
import BundleModalError from './bundle_modal_error';
|
|
||||||
import {
|
import {
|
||||||
ConfirmationModal,
|
ConfirmationModal,
|
||||||
ConfirmDeleteStatusModal,
|
ConfirmDeleteStatusModal,
|
||||||
@ -40,7 +39,7 @@ import {
|
|||||||
import FocalPointModal from './focal_point_modal';
|
import FocalPointModal from './focal_point_modal';
|
||||||
import ImageModal from './image_modal';
|
import ImageModal from './image_modal';
|
||||||
import MediaModal from './media_modal';
|
import MediaModal from './media_modal';
|
||||||
import ModalLoading from './modal_loading';
|
import { ModalPlaceholder } from './modal_placeholder';
|
||||||
import VideoModal from './video_modal';
|
import VideoModal from './video_modal';
|
||||||
|
|
||||||
export const MODAL_COMPONENTS = {
|
export const MODAL_COMPONENTS = {
|
||||||
@ -105,14 +104,16 @@ export default class ModalRoot extends PureComponent {
|
|||||||
this.setState({ backgroundColor: color });
|
this.setState({ backgroundColor: color });
|
||||||
};
|
};
|
||||||
|
|
||||||
renderLoading = modalId => () => {
|
renderLoading = () => {
|
||||||
return ['MEDIA', 'VIDEO', 'BOOST', 'CONFIRM', 'ACTIONS'].indexOf(modalId) === -1 ? <ModalLoading /> : null;
|
const { onClose } = this.props;
|
||||||
|
|
||||||
|
return <ModalPlaceholder loading onClose={onClose} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
renderError = (props) => {
|
renderError = (props) => {
|
||||||
const { onClose } = this.props;
|
const { onClose } = this.props;
|
||||||
|
|
||||||
return <BundleModalError {...props} onClose={onClose} />;
|
return <ModalPlaceholder {...props} onClose={onClose} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
handleClose = (ignoreFocus = false) => {
|
handleClose = (ignoreFocus = false) => {
|
||||||
@ -134,7 +135,7 @@ export default class ModalRoot extends PureComponent {
|
|||||||
<Base backgroundColor={backgroundColor} onClose={this.handleClose} ignoreFocus={ignoreFocus}>
|
<Base backgroundColor={backgroundColor} onClose={this.handleClose} ignoreFocus={ignoreFocus}>
|
||||||
{visible && (
|
{visible && (
|
||||||
<>
|
<>
|
||||||
<BundleContainer fetchComponent={MODAL_COMPONENTS[type]} loading={this.renderLoading(type)} error={this.renderError} renderDelay={200}>
|
<BundleContainer fetchComponent={MODAL_COMPONENTS[type]} loading={this.renderLoading} error={this.renderError} renderDelay={200}>
|
||||||
{(SpecificComponent) => {
|
{(SpecificComponent) => {
|
||||||
const ref = typeof SpecificComponent !== 'function' ? this.setModalRef : undefined;
|
const ref = typeof SpecificComponent !== 'function' ? this.setModalRef : undefined;
|
||||||
return <SpecificComponent {...props} onChangeBackgroundColor={this.setBackgroundColor} onClose={this.handleClose} ref={ref} />;
|
return <SpecificComponent {...props} onChangeBackgroundColor={this.setBackgroundColor} onClose={this.handleClose} ref={ref} />;
|
||||||
|
@ -49,7 +49,7 @@ import {
|
|||||||
Favourites,
|
Favourites,
|
||||||
DirectTimeline,
|
DirectTimeline,
|
||||||
HashtagTimeline,
|
HashtagTimeline,
|
||||||
NotificationsWrapper,
|
Notifications,
|
||||||
NotificationRequests,
|
NotificationRequests,
|
||||||
NotificationRequest,
|
NotificationRequest,
|
||||||
FollowRequests,
|
FollowRequests,
|
||||||
@ -66,8 +66,9 @@ import {
|
|||||||
Mutes,
|
Mutes,
|
||||||
PinnedStatuses,
|
PinnedStatuses,
|
||||||
Directory,
|
Directory,
|
||||||
|
OnboardingProfile,
|
||||||
|
OnboardingFollows,
|
||||||
Explore,
|
Explore,
|
||||||
Onboarding,
|
|
||||||
About,
|
About,
|
||||||
PrivacyPolicy,
|
PrivacyPolicy,
|
||||||
} from './util/async-components';
|
} from './util/async-components';
|
||||||
@ -211,7 +212,7 @@ class SwitchingColumnsArea extends PureComponent {
|
|||||||
<WrappedRoute path='/lists/:id/edit' component={ListEdit} content={children} />
|
<WrappedRoute path='/lists/:id/edit' component={ListEdit} content={children} />
|
||||||
<WrappedRoute path='/lists/:id/members' component={ListMembers} content={children} />
|
<WrappedRoute path='/lists/:id/members' component={ListMembers} content={children} />
|
||||||
<WrappedRoute path='/lists/:id' component={ListTimeline} content={children} />
|
<WrappedRoute path='/lists/:id' component={ListTimeline} content={children} />
|
||||||
<WrappedRoute path='/notifications' component={NotificationsWrapper} content={children} exact />
|
<WrappedRoute path='/notifications' component={Notifications} content={children} exact />
|
||||||
<WrappedRoute path='/notifications/requests' component={NotificationRequests} content={children} exact />
|
<WrappedRoute path='/notifications/requests' component={NotificationRequests} content={children} exact />
|
||||||
<WrappedRoute path='/notifications/requests/:id' component={NotificationRequest} content={children} exact />
|
<WrappedRoute path='/notifications/requests/:id' component={NotificationRequest} content={children} exact />
|
||||||
<WrappedRoute path='/favourites' component={FavouritedStatuses} content={children} />
|
<WrappedRoute path='/favourites' component={FavouritedStatuses} content={children} />
|
||||||
@ -219,7 +220,8 @@ class SwitchingColumnsArea extends PureComponent {
|
|||||||
<WrappedRoute path='/bookmarks' component={BookmarkedStatuses} content={children} />
|
<WrappedRoute path='/bookmarks' component={BookmarkedStatuses} content={children} />
|
||||||
<WrappedRoute path='/pinned' component={PinnedStatuses} content={children} />
|
<WrappedRoute path='/pinned' component={PinnedStatuses} content={children} />
|
||||||
|
|
||||||
<WrappedRoute path='/start' component={Onboarding} content={children} />
|
<WrappedRoute path={['/start', '/start/profile']} exact component={OnboardingProfile} content={children} />
|
||||||
|
<WrappedRoute path='/start/follows' component={OnboardingFollows} content={children} />
|
||||||
<WrappedRoute path='/directory' component={Directory} content={children} />
|
<WrappedRoute path='/directory' component={Directory} content={children} />
|
||||||
<WrappedRoute path={['/explore', '/search']} component={Explore} content={children} />
|
<WrappedRoute path={['/explore', '/search']} component={Explore} content={children} />
|
||||||
<WrappedRoute path={['/publish', '/statuses/new']} component={Compose} content={children} />
|
<WrappedRoute path={['/publish', '/statuses/new']} component={Compose} content={children} />
|
||||||
|
@ -7,15 +7,7 @@ export function Compose () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function Notifications () {
|
export function Notifications () {
|
||||||
return import(/* webpackChunkName: "features/notifications_v1" */'../../notifications');
|
return import(/* webpackChunkName: "features/notifications" */'../../notifications_v2');
|
||||||
}
|
|
||||||
|
|
||||||
export function Notifications_v2 () {
|
|
||||||
return import(/* webpackChunkName: "features/notifications_v2" */'../../notifications_v2');
|
|
||||||
}
|
|
||||||
|
|
||||||
export function NotificationsWrapper () {
|
|
||||||
return import(/* webpackChunkName: "features/notifications" */'../../notifications_wrapper');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function HomeTimeline () {
|
export function HomeTimeline () {
|
||||||
@ -166,8 +158,12 @@ export function Directory () {
|
|||||||
return import(/* webpackChunkName: "features/directory" */'../../directory');
|
return import(/* webpackChunkName: "features/directory" */'../../directory');
|
||||||
}
|
}
|
||||||
|
|
||||||
export function Onboarding () {
|
export function OnboardingProfile () {
|
||||||
return import(/* webpackChunkName: "features/onboarding" */'../../onboarding');
|
return import(/* webpackChunkName: "features/onboarding" */'../../onboarding/profile');
|
||||||
|
}
|
||||||
|
|
||||||
|
export function OnboardingFollows () {
|
||||||
|
return import(/* webpackChunkName: "features/onboarding" */'../../onboarding/follows');
|
||||||
}
|
}
|
||||||
|
|
||||||
export function CompareHistoryModal () {
|
export function CompareHistoryModal () {
|
||||||
|
@ -248,19 +248,6 @@
|
|||||||
"notifications.permission_denied_alert": "Lessenaarkennisgewings kan nie geaktiveer word nie omdat 'n webblaaier toegewing voorheen geweier was",
|
"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.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.",
|
"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!",
|
|
||||||
"onboarding.follows.title": "Popular on Mastodon",
|
|
||||||
"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.",
|
|
||||||
"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.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"privacy.change": "Verander privaatheid van plasing",
|
"privacy.change": "Verander privaatheid van plasing",
|
||||||
"privacy.public.short": "Publiek",
|
"privacy.public.short": "Publiek",
|
||||||
"privacy_policy.last_updated": "Laaste bywerking op {date}",
|
"privacy_policy.last_updated": "Laaste bywerking op {date}",
|
||||||
|
@ -359,19 +359,6 @@
|
|||||||
"notifications_permission_banner.enable": "Habilitar notificacions d'escritorio",
|
"notifications_permission_banner.enable": "Habilitar notificacions d'escritorio",
|
||||||
"notifications_permission_banner.how_to_control": "Pa recibir notificacions quan Mastodon no sía ubierto, habilite las notificacions d'escritorio. Puetz controlar con precisión qué tipos d'interaccions cheneran notificacions d'escritorio a traviés d'o botón {icon} d'alto una vegada que sían habilitadas.",
|
"notifications_permission_banner.how_to_control": "Pa recibir notificacions quan Mastodon no sía ubierto, habilite las notificacions d'escritorio. Puetz controlar con precisión qué tipos d'interaccions cheneran notificacions d'escritorio a traviés d'o botón {icon} d'alto una vegada que sían habilitadas.",
|
||||||
"notifications_permission_banner.title": "Nunca te pierdas cosa",
|
"notifications_permission_banner.title": "Nunca te pierdas cosa",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
|
||||||
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
|
|
||||||
"onboarding.follows.title": "Popular on Mastodon",
|
|
||||||
"onboarding.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.",
|
|
||||||
"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.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"picture_in_picture.restore": "Restaurar",
|
"picture_in_picture.restore": "Restaurar",
|
||||||
"poll.closed": "Zarrada",
|
"poll.closed": "Zarrada",
|
||||||
"poll.refresh": "Actualizar",
|
"poll.refresh": "Actualizar",
|
||||||
|
@ -563,44 +563,17 @@
|
|||||||
"notifications_permission_banner.enable": "تفعيل إشعارات سطح المكتب",
|
"notifications_permission_banner.enable": "تفعيل إشعارات سطح المكتب",
|
||||||
"notifications_permission_banner.how_to_control": "لتلقي الإشعارات عندما لا يكون ماستدون مفتوح، قم بتفعيل إشعارات سطح المكتب، يمكنك التحكم بدقة في أنواع التفاعلات التي تولد إشعارات سطح المكتب من خلال زر الـ{icon} أعلاه بمجرد تفعيلها.",
|
"notifications_permission_banner.how_to_control": "لتلقي الإشعارات عندما لا يكون ماستدون مفتوح، قم بتفعيل إشعارات سطح المكتب، يمكنك التحكم بدقة في أنواع التفاعلات التي تولد إشعارات سطح المكتب من خلال زر الـ{icon} أعلاه بمجرد تفعيلها.",
|
||||||
"notifications_permission_banner.title": "لا تفوت شيئاً أبداً",
|
"notifications_permission_banner.title": "لا تفوت شيئاً أبداً",
|
||||||
"onboarding.action.back": "تراجع",
|
|
||||||
"onboarding.actions.back": "تراجع",
|
|
||||||
"onboarding.actions.go_to_explore": "خذني إلى المتداولة",
|
|
||||||
"onboarding.actions.go_to_home": "خذني إلى وصلات خيطي الرئيس",
|
|
||||||
"onboarding.compose.template": "مرحبا #ماستدون!",
|
|
||||||
"onboarding.follows.empty": "نأسف، لا يمكن عرض نتائج في الوقت الحالي. جرب البحث أو انتقل لصفحة الاستكشاف لإيجاد أشخاص للمتابعة، أو حاول مرة أخرى.",
|
"onboarding.follows.empty": "نأسف، لا يمكن عرض نتائج في الوقت الحالي. جرب البحث أو انتقل لصفحة الاستكشاف لإيجاد أشخاص للمتابعة، أو حاول مرة أخرى.",
|
||||||
"onboarding.follows.lead": "مقتطفات خيطك الرئيس هي الطريقة الأساسية لتجربة ماستدون. كلما زاد عدد الأشخاص الذين تتبعهم، كلما زاد خيط أخبارك نشاطا وإثارة للاهتمام. بداية، إليك بعض الاقتراحات:",
|
|
||||||
"onboarding.follows.title": "أضفِ طابعا شخصيا على موجزات خيطك الرئيس",
|
|
||||||
"onboarding.profile.discoverable": "اجعل ملفي الشخصي قابلاً للاكتشاف",
|
"onboarding.profile.discoverable": "اجعل ملفي الشخصي قابلاً للاكتشاف",
|
||||||
"onboarding.profile.discoverable_hint": "عندما تختار تفعيل إمكانية الاكتشاف على ماستدون، قد تظهر منشوراتك في نتائج البحث والمواضيع الرائجة، وقد يتم اقتراح ملفك الشخصي لأشخاص ذوي اهتمامات مماثلة معك.",
|
"onboarding.profile.discoverable_hint": "عندما تختار تفعيل إمكانية الاكتشاف على ماستدون، قد تظهر منشوراتك في نتائج البحث والمواضيع الرائجة، وقد يتم اقتراح ملفك الشخصي لأشخاص ذوي اهتمامات مماثلة معك.",
|
||||||
"onboarding.profile.display_name": "الاسم العلني",
|
"onboarding.profile.display_name": "الاسم العلني",
|
||||||
"onboarding.profile.display_name_hint": "اسمك الكامل أو اسمك المرح…",
|
"onboarding.profile.display_name_hint": "اسمك الكامل أو اسمك المرح…",
|
||||||
"onboarding.profile.lead": "يمكنك دائمًا إكمال ذلك لاحقًا في الإعدادات، حيث يتوفر المزيد من خيارات التخصيص.",
|
|
||||||
"onboarding.profile.note": "نبذة عنك",
|
"onboarding.profile.note": "نبذة عنك",
|
||||||
"onboarding.profile.note_hint": "يمكنك @ذِكر أشخاص آخرين أو استعمال #الوسوم…",
|
"onboarding.profile.note_hint": "يمكنك @ذِكر أشخاص آخرين أو استعمال #الوسوم…",
|
||||||
"onboarding.profile.save_and_continue": "حفظ و إستمرار",
|
"onboarding.profile.save_and_continue": "حفظ و إستمرار",
|
||||||
"onboarding.profile.title": "إعداد الملف الشخصي",
|
"onboarding.profile.title": "إعداد الملف الشخصي",
|
||||||
"onboarding.profile.upload_avatar": "تحميل صورة الملف الشخصي",
|
"onboarding.profile.upload_avatar": "تحميل صورة الملف الشخصي",
|
||||||
"onboarding.profile.upload_header": "تحميل رأسية الملف الشخصي",
|
"onboarding.profile.upload_header": "تحميل رأسية الملف الشخصي",
|
||||||
"onboarding.share.lead": "اسمح للأشخاص بمعرفة إمكانية الوصول إليك على ماستدون!",
|
|
||||||
"onboarding.share.message": "أنا {username} في #Mastodon! تعال لمتابعتي على {url}",
|
|
||||||
"onboarding.share.next_steps": "الخطوات المحتملة التالية:",
|
|
||||||
"onboarding.share.title": "شارك ملفك التعريفي",
|
|
||||||
"onboarding.start.lead": "أنت الآن جزء من ماستدون، منصة إعلامية اجتماعية فريدة من نوعها ولا مركزية حيث أنت - وليست الخوارزميات - من يقوم بضبط تجربتك الخاصة. دعنا نبدأ على هذه الحدود الاجتماعية الجديدة:",
|
|
||||||
"onboarding.start.skip": "ألست بحاجة للمساعدة للبداية؟",
|
|
||||||
"onboarding.start.title": "لقد نجحت!",
|
|
||||||
"onboarding.steps.follow_people.body": "إن متابعة الأشخاص المثيرين للاهتمام هي غاية ماستدون.",
|
|
||||||
"onboarding.steps.follow_people.title": "أضفِ طابعا شخصيا على خيطك الرئيس",
|
|
||||||
"onboarding.steps.publish_status.body": "قل مرحبا للعالَم عبر نصّ أو صور أو فيديوهات أو استطلاعات رأي {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "قم بإنشاء أول منشور لك",
|
|
||||||
"onboarding.steps.setup_profile.body": "قم بتعزيز تفاعلاتك عبر الحصول على مِلَفّ شخصي شامل.",
|
|
||||||
"onboarding.steps.setup_profile.title": "قم بتخصيص ملفك التعريفي",
|
|
||||||
"onboarding.steps.share_profile.body": "أخبر أصدقائك بكيفية العثور عليك على ماستدون",
|
|
||||||
"onboarding.steps.share_profile.title": "شارك مِلَفّ ماستدون التعريفي الخاص بك",
|
|
||||||
"onboarding.tips.2fa": "<strong>هل تعلم؟</strong> يمكنك تأمين حسابك عن طريق إعداد المصادقة ذات عاملين في إعدادات حسابك. تعمل مع أي تطبيق TOTP من اختيارك، لا حاجة لرقم هاتف!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>هل تعلم؟</strong> لأن ماستدون لامركزية فإن بعض الحسابات التي تصادفها ستكون مستضافة على خوادم غير خادمك. ومع ذلك يمكنك التفاعل معها بسلاسة! خادمهم هو النصف الآخر من اسم المستخدم خاصتهم!",
|
|
||||||
"onboarding.tips.migration": "<strong>هل تعلم؟</strong> إذا شعرت بأن {domain} ليس خياراً ممتازاً لك في المستقبل، فيمكنك الانتقال إلى خادم ماستدون آخر دون خسارة متابعيك. يمكنك حتى استضافة خادمك الخاص!",
|
|
||||||
"onboarding.tips.verification": "<strong>هل تعلم؟</strong> يمكنك تأكيد حسابك عبر وضع رابط إلى ملف ماستدون الشخصي الخاص بك في موقعك الخاص وإضافة رابط موقعك على ملفك الشخصي. لا حاجة لأي رسوم أو مستندات!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "تأكيد كلمة المرور يتجاوز الحد الأقصى لطول كلمة المرور",
|
"password_confirmation.exceeds_maxlength": "تأكيد كلمة المرور يتجاوز الحد الأقصى لطول كلمة المرور",
|
||||||
"password_confirmation.mismatching": "تأكيد كلمة المرور غير مطابق",
|
"password_confirmation.mismatching": "تأكيد كلمة المرور غير مطابق",
|
||||||
"picture_in_picture.restore": "ضعها مرة أخرى",
|
"picture_in_picture.restore": "ضعها مرة أخرى",
|
||||||
|
@ -309,10 +309,6 @@
|
|||||||
"notifications.mark_as_read": "Marcar tolos avisos como lleíos",
|
"notifications.mark_as_read": "Marcar tolos avisos como lleíos",
|
||||||
"notifications.permission_required": "Los avisos d'escritoriu nun tán disponibles porque nun se concedió'l permisu riquíu.",
|
"notifications.permission_required": "Los avisos d'escritoriu nun tán disponibles porque nun se concedió'l permisu riquíu.",
|
||||||
"onboarding.profile.note_hint": "Pues @mentar a otros perfiles o poner #etiquetes…",
|
"onboarding.profile.note_hint": "Pues @mentar a otros perfiles o poner #etiquetes…",
|
||||||
"onboarding.start.lead": "Yá yes parte de Mastodon, una plataforma social multimedia descentralizada onde tu y non un algoritmu, personalices la to esperiencia. Vamos presentate esti llugar social nuevu:",
|
|
||||||
"onboarding.start.skip": "¿Nun precises ayuda pa comenzar?",
|
|
||||||
"onboarding.steps.follow_people.body": "Mastodon trata namás de siguir a cuentes interesantes.",
|
|
||||||
"onboarding.steps.publish_status.body": "Saluda al mundu con semeyes, vídeos, testu o encuestes {emoji}",
|
|
||||||
"password_confirmation.exceeds_maxlength": "La contraseña de confirmación supera la llongura de caráuteres máxima",
|
"password_confirmation.exceeds_maxlength": "La contraseña de confirmación supera la llongura de caráuteres máxima",
|
||||||
"password_confirmation.mismatching": "La contraseña de confirmación nun concasa",
|
"password_confirmation.mismatching": "La contraseña de confirmación nun concasa",
|
||||||
"poll.closed": "Finó",
|
"poll.closed": "Finó",
|
||||||
|
@ -568,44 +568,17 @@
|
|||||||
"notifications_permission_banner.enable": "Уключыць апавяшчэнні на працоўным стале",
|
"notifications_permission_banner.enable": "Уключыць апавяшчэнні на працоўным стале",
|
||||||
"notifications_permission_banner.how_to_control": "Каб атрымліваць апавяшчэнні, калі Mastodon не адкрыты, уключыце апавяшчэнні працоўнага стала. Вы зможаце дакладна кантраляваць, якія падзеі будуць ствараць апавяшчэнні з дапамогай {icon} кнопкі, як толькі яны будуць уключаны.",
|
"notifications_permission_banner.how_to_control": "Каб атрымліваць апавяшчэнні, калі Mastodon не адкрыты, уключыце апавяшчэнні працоўнага стала. Вы зможаце дакладна кантраляваць, якія падзеі будуць ствараць апавяшчэнні з дапамогай {icon} кнопкі, як толькі яны будуць уключаны.",
|
||||||
"notifications_permission_banner.title": "Не прапусціце нічога",
|
"notifications_permission_banner.title": "Не прапусціце нічога",
|
||||||
"onboarding.action.back": "Прыняць мяне назад",
|
|
||||||
"onboarding.actions.back": "Прыняць мяне назад",
|
|
||||||
"onboarding.actions.go_to_explore": "Паглядзіце, што ў трэндзе",
|
|
||||||
"onboarding.actions.go_to_home": "Перайдзіце на свой хатні канал",
|
|
||||||
"onboarding.compose.template": "Прывітанне, #Mastodon!",
|
|
||||||
"onboarding.follows.empty": "На жаль, зараз немагчыма паказаць вынікі. Вы можаце паспрабаваць выкарыстоўваць пошук і праглядзець старонку агляду, каб знайсці людзей, на якіх можна падпісацца, або паўтарыце спробу пазней.",
|
"onboarding.follows.empty": "На жаль, зараз немагчыма паказаць вынікі. Вы можаце паспрабаваць выкарыстоўваць пошук і праглядзець старонку агляду, каб знайсці людзей, на якіх можна падпісацца, або паўтарыце спробу пазней.",
|
||||||
"onboarding.follows.lead": "Вы самі ствараеце свой хатні канал. Чым больш людзей вы падпішаце, тым больш актыўна і цікавей гэта будзе. Гэтыя профілі могуць стаць добрай адпраўной кропкай — вы заўсёды можаце адмяніць падпіску на іх пазней!",
|
|
||||||
"onboarding.follows.title": "Папулярна на Mastodon",
|
|
||||||
"onboarding.profile.discoverable": "Зрабіць мой профіль бачным",
|
"onboarding.profile.discoverable": "Зрабіць мой профіль бачным",
|
||||||
"onboarding.profile.discoverable_hint": "Калі вы звяртаецеся да адкрытасці на Mastodon, вашы паведамленні могуць з'яўляцца ў выніках пошуку і тэндэнцый, а ваш профіль можа быць прапанаваны людзям з такімі ж інтарэсамі.",
|
"onboarding.profile.discoverable_hint": "Калі вы звяртаецеся да адкрытасці на Mastodon, вашы паведамленні могуць з'яўляцца ў выніках пошуку і тэндэнцый, а ваш профіль можа быць прапанаваны людзям з такімі ж інтарэсамі.",
|
||||||
"onboarding.profile.display_name": "Бачнае імя",
|
"onboarding.profile.display_name": "Бачнае імя",
|
||||||
"onboarding.profile.display_name_hint": "Ваша поўнае імя або ваш псеўданім…",
|
"onboarding.profile.display_name_hint": "Ваша поўнае імя або ваш псеўданім…",
|
||||||
"onboarding.profile.lead": "Вы заўсёды можаце выканаць гэта пазней у Наладах, дзе даступна яшчэ больш параметраў.",
|
|
||||||
"onboarding.profile.note": "Біяграфія",
|
"onboarding.profile.note": "Біяграфія",
|
||||||
"onboarding.profile.note_hint": "Вы можаце @згадаць іншых людзей або выкарыстоўваць #хэштэгі…",
|
"onboarding.profile.note_hint": "Вы можаце @згадаць іншых людзей або выкарыстоўваць #хэштэгі…",
|
||||||
"onboarding.profile.save_and_continue": "Захаваць і працягнуць",
|
"onboarding.profile.save_and_continue": "Захаваць і працягнуць",
|
||||||
"onboarding.profile.title": "Налады профілю",
|
"onboarding.profile.title": "Налады профілю",
|
||||||
"onboarding.profile.upload_avatar": "Загрузіць фота профілю",
|
"onboarding.profile.upload_avatar": "Загрузіць фота профілю",
|
||||||
"onboarding.profile.upload_header": "Загрузіць шапку профілю",
|
"onboarding.profile.upload_header": "Загрузіць шапку профілю",
|
||||||
"onboarding.share.lead": "Дайце людзям ведаць, як яны могуць знайсці вас на Mastodon!",
|
|
||||||
"onboarding.share.message": "Я {username} на #Mastodon! Сачыце за мной на {url}",
|
|
||||||
"onboarding.share.next_steps": "Магчымыя наступныя крокі:",
|
|
||||||
"onboarding.share.title": "Абагульце свой профіль",
|
|
||||||
"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": "Вы зрабілі гэта!",
|
|
||||||
"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": "Зрабіце свой першы допіс",
|
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Абагульць ваш профіль у Mastodon",
|
|
||||||
"onboarding.tips.2fa": "<strong>Ці вы ведаеце?</strong> Вы можаце абараніць свой уліковы запіс, усталяваўшы двухфактарную аўтэнтыфікацыю ў наладах уліковага запісу. Яна працуе з любой праграмай TOTP на ваш выбар, нумар тэлефона не патрэбны!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Ці вы ведаеце?</strong> Паколькі Mastodon дэцэнтралізаваны, некаторыя профілі, якія вам трапляюцца, будуць размяшчацца на іншых серверах, адрозных ад вашага. І ўсё ж вы можаце бесперашкодна ўзаемадзейнічаць з імі! Іх сервер пазначаны ў другой палове імя карыстальніка!",
|
|
||||||
"onboarding.tips.migration": "<strong>Ці вы ведаеце?</strong> Калі вы адчуваеце, што {domain} не з'яўляецца для вас лепшым выбарам у будучыні, вы можаце перайсці на іншы сервер Mastodon, не губляючы сваіх падпісчыкаў. Вы нават можаце стварыць свой уласны сервер!",
|
|
||||||
"onboarding.tips.verification": "<strong>Ці вы ведаеце?</strong> Вы можаце пацвердзіць свой уліковы запіс, размясціўшы спасылку на свой профіль Mastodon на сваім вэб-сайце і дадаўшы вэб-сайт у свой профіль. Ніякіх збораў і дакументаў не патрабуецца!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Пароль пацьверджання перавышае максімальна дапушчальную даўжыню",
|
"password_confirmation.exceeds_maxlength": "Пароль пацьверджання перавышае максімальна дапушчальную даўжыню",
|
||||||
"password_confirmation.mismatching": "Пароль пацьверджання не супадае",
|
"password_confirmation.mismatching": "Пароль пацьверджання не супадае",
|
||||||
"picture_in_picture.restore": "Вярніце назад",
|
"picture_in_picture.restore": "Вярніце назад",
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
"account.cancel_follow_request": "Оттегляне на заявката за последване",
|
"account.cancel_follow_request": "Оттегляне на заявката за последване",
|
||||||
"account.copy": "Копиране на връзка към профила",
|
"account.copy": "Копиране на връзка към профила",
|
||||||
"account.direct": "Частно споменаване на @{name}",
|
"account.direct": "Частно споменаване на @{name}",
|
||||||
"account.disable_notifications": "Сприране на известия при публикуване от @{name}",
|
"account.disable_notifications": "Спиране на известяване при публикуване от @{name}",
|
||||||
"account.domain_blocked": "Блокиран домейн",
|
"account.domain_blocked": "Блокиран домейн",
|
||||||
"account.edit_profile": "Редактиране на профила",
|
"account.edit_profile": "Редактиране на профила",
|
||||||
"account.enable_notifications": "Известяване при публикуване от @{name}",
|
"account.enable_notifications": "Известяване при публикуване от @{name}",
|
||||||
@ -97,7 +97,7 @@
|
|||||||
"annual_report.summary.here_it_is": "Ето преглед на вашата {year} година:",
|
"annual_report.summary.here_it_is": "Ето преглед на вашата {year} година:",
|
||||||
"annual_report.summary.highlighted_post.by_favourites": "най-правено като любима публикация",
|
"annual_report.summary.highlighted_post.by_favourites": "най-правено като любима публикация",
|
||||||
"annual_report.summary.highlighted_post.by_reblogs": "най-подсилваната публикация",
|
"annual_report.summary.highlighted_post.by_reblogs": "най-подсилваната публикация",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "публикации с най-много отговори",
|
"annual_report.summary.highlighted_post.by_replies": "публикация с най-много отговори",
|
||||||
"annual_report.summary.highlighted_post.possessive": "на {name}",
|
"annual_report.summary.highlighted_post.possessive": "на {name}",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "най-употребявано приложение",
|
"annual_report.summary.most_used_app.most_used_app": "най-употребявано приложение",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "най-употребяван хаштаг",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "най-употребяван хаштаг",
|
||||||
@ -138,7 +138,7 @@
|
|||||||
"column.about": "Относно",
|
"column.about": "Относно",
|
||||||
"column.blocks": "Блокирани потребители",
|
"column.blocks": "Блокирани потребители",
|
||||||
"column.bookmarks": "Отметки",
|
"column.bookmarks": "Отметки",
|
||||||
"column.community": "Локален инфопоток",
|
"column.community": "Локална хронология",
|
||||||
"column.create_list": "Създаване на списък",
|
"column.create_list": "Създаване на списък",
|
||||||
"column.direct": "Частни споменавания",
|
"column.direct": "Частни споменавания",
|
||||||
"column.directory": "Разглеждане на профили",
|
"column.directory": "Разглеждане на профили",
|
||||||
@ -153,7 +153,7 @@
|
|||||||
"column.mutes": "Заглушени потребители",
|
"column.mutes": "Заглушени потребители",
|
||||||
"column.notifications": "Известия",
|
"column.notifications": "Известия",
|
||||||
"column.pins": "Закачени публикации",
|
"column.pins": "Закачени публикации",
|
||||||
"column.public": "Федериран инфопоток",
|
"column.public": "Федеративна хронология",
|
||||||
"column_back_button.label": "Назад",
|
"column_back_button.label": "Назад",
|
||||||
"column_header.hide_settings": "Скриване на настройките",
|
"column_header.hide_settings": "Скриване на настройките",
|
||||||
"column_header.moveLeft_settings": "Преместване на колона вляво",
|
"column_header.moveLeft_settings": "Преместване на колона вляво",
|
||||||
@ -161,6 +161,7 @@
|
|||||||
"column_header.pin": "Закачане",
|
"column_header.pin": "Закачане",
|
||||||
"column_header.show_settings": "Показване на настройките",
|
"column_header.show_settings": "Показване на настройките",
|
||||||
"column_header.unpin": "Разкачане",
|
"column_header.unpin": "Разкачане",
|
||||||
|
"column_search.cancel": "Отказ",
|
||||||
"column_subheading.settings": "Настройки",
|
"column_subheading.settings": "Настройки",
|
||||||
"community.column_settings.local_only": "Само локално",
|
"community.column_settings.local_only": "Само локално",
|
||||||
"community.column_settings.media_only": "Само мултимедия",
|
"community.column_settings.media_only": "Само мултимедия",
|
||||||
@ -214,7 +215,7 @@
|
|||||||
"confirmations.reply.message": "Отговарянето сега ще замени съобщението, което в момента съставяте. Сигурни ли сте, че искате да продължите?",
|
"confirmations.reply.message": "Отговарянето сега ще замени съобщението, което в момента съставяте. Сигурни ли сте, че искате да продължите?",
|
||||||
"confirmations.reply.title": "Презаписвате ли публикацията?",
|
"confirmations.reply.title": "Презаписвате ли публикацията?",
|
||||||
"confirmations.unfollow.confirm": "Без следване",
|
"confirmations.unfollow.confirm": "Без следване",
|
||||||
"confirmations.unfollow.message": "Наистина ли искате да не следвате {name}?",
|
"confirmations.unfollow.message": "Наистина ли искате вече да не следвате {name}?",
|
||||||
"confirmations.unfollow.title": "Спирате ли да следвате потребителя?",
|
"confirmations.unfollow.title": "Спирате ли да следвате потребителя?",
|
||||||
"content_warning.hide": "Скриване на публ.",
|
"content_warning.hide": "Скриване на публ.",
|
||||||
"content_warning.show": "Нека се покаже",
|
"content_warning.show": "Нека се покаже",
|
||||||
@ -234,7 +235,7 @@
|
|||||||
"disabled_account_banner.text": "Вашият акаунт {disabledAccount} сега е изключен.",
|
"disabled_account_banner.text": "Вашият акаунт {disabledAccount} сега е изключен.",
|
||||||
"dismissable_banner.community_timeline": "Ето най-скорошните публични публикации от хора, чиито акаунти са разположени в {domain}.",
|
"dismissable_banner.community_timeline": "Ето най-скорошните публични публикации от хора, чиито акаунти са разположени в {domain}.",
|
||||||
"dismissable_banner.dismiss": "Отхвърляне",
|
"dismissable_banner.dismiss": "Отхвърляне",
|
||||||
"dismissable_banner.explore_links": "Това са най-споделяните новини в социалната мрежа днес. По-нови истории, споделени от повече хора се показват по-напред.",
|
"dismissable_banner.explore_links": "Има новинарски истории, които са най-споделяните в социалната мрежа днес. По-нови новинарски истории, публикувани от повече различни хора са класирани по-напред.",
|
||||||
"dismissable_banner.explore_statuses": "Има публикации през социалната мрежа, които днес набират популярност. По-новите публикации с повече подсилвания и любими са класирани по-високо.",
|
"dismissable_banner.explore_statuses": "Има публикации през социалната мрежа, които днес набират популярност. По-новите публикации с повече подсилвания и любими са класирани по-високо.",
|
||||||
"dismissable_banner.explore_tags": "Тези хаштагове сега набират популярност сред хората в този и други сървъри на децентрализирата мрежа.",
|
"dismissable_banner.explore_tags": "Тези хаштагове сега набират популярност сред хората в този и други сървъри на децентрализирата мрежа.",
|
||||||
"dismissable_banner.public_timeline": "Ето най-новите обществени публикации от хора в социална мрежа, която хората в {domain} следват.",
|
"dismissable_banner.public_timeline": "Ето най-новите обществени публикации от хора в социална мрежа, която хората в {domain} следват.",
|
||||||
@ -244,6 +245,8 @@
|
|||||||
"domain_block_modal.they_cant_follow": "Никого от този сървър не може да ви последва.",
|
"domain_block_modal.they_cant_follow": "Никого от този сървър не може да ви последва.",
|
||||||
"domain_block_modal.they_wont_know": "Няма да узнаят, че са били блокирани.",
|
"domain_block_modal.they_wont_know": "Няма да узнаят, че са били блокирани.",
|
||||||
"domain_block_modal.title": "Блокирате ли домейн?",
|
"domain_block_modal.title": "Блокирате ли домейн?",
|
||||||
|
"domain_block_modal.you_will_lose_num_followers": "Ще загубите {followersCount, plural, one {{followersCountDisplay} последовател} other {{followersCountDisplay} последователи}} и {followingCount, plural, one {{followingCountDisplay} лице, което следвате} other {{followingCountDisplay} души, които следвате}}.",
|
||||||
|
"domain_block_modal.you_will_lose_relationships": "Ще загубите всичките си последователи и хората, които следвате от този сървър.",
|
||||||
"domain_block_modal.you_wont_see_posts": "Няма да виждате публикации или известия от потребителите на този сървър.",
|
"domain_block_modal.you_wont_see_posts": "Няма да виждате публикации или известия от потребителите на този сървър.",
|
||||||
"domain_pill.activitypub_lets_connect": "Позволява ви да се свързвате и взаимодействате с хора не само в Mastodon, но и през различни социални приложения.",
|
"domain_pill.activitypub_lets_connect": "Позволява ви да се свързвате и взаимодействате с хора не само в Mastodon, но и през различни социални приложения.",
|
||||||
"domain_pill.activitypub_like_language": "ActivityPub е като език на Mastodon, говорещ с други социални мрежи.",
|
"domain_pill.activitypub_like_language": "ActivityPub е като език на Mastodon, говорещ с други социални мрежи.",
|
||||||
@ -281,16 +284,16 @@
|
|||||||
"empty_column.account_unavailable": "Профилът не е наличен",
|
"empty_column.account_unavailable": "Профилът не е наличен",
|
||||||
"empty_column.blocks": "Още не сте блокирали никакви потребители.",
|
"empty_column.blocks": "Още не сте блокирали никакви потребители.",
|
||||||
"empty_column.bookmarked_statuses": "Още не сте отметнали публикации. Отметвайки някоя, то тя ще се покаже тук.",
|
"empty_column.bookmarked_statuses": "Още не сте отметнали публикации. Отметвайки някоя, то тя ще се покаже тук.",
|
||||||
"empty_column.community": "Локалният инфопоток е празен. Публикувайте нещо, за да започнете!",
|
"empty_column.community": "Локалната хронология е празна. Напишете нещо публично, за да завъртите процеса!",
|
||||||
"empty_column.direct": "Още нямате никакви частни споменавания. Тук ще се показват, изпращайки или получавайки едно.",
|
"empty_column.direct": "Още нямате никакви частни споменавания. Тук ще се показват, изпращайки или получавайки едно.",
|
||||||
"empty_column.domain_blocks": "Още няма блокирани домейни.",
|
"empty_column.domain_blocks": "Още няма блокирани домейни.",
|
||||||
"empty_column.explore_statuses": "Няма тенденции в момента. Проверете пак по-късно!",
|
"empty_column.explore_statuses": "Няма нищо популярно в момента. Проверете пак по-късно!",
|
||||||
"empty_column.favourited_statuses": "Още нямате никакви любими публикации. Правейки любима, то тя ще се покаже тук.",
|
"empty_column.favourited_statuses": "Още нямате никакви любими публикации. Правейки любима, то тя ще се покаже тук.",
|
||||||
"empty_column.favourites": "Още никого не е слагал публикацията в любими. Когато някой го направи, този човек ще се покаже тук.",
|
"empty_column.favourites": "Още никого не е слагал публикацията в любими. Когато някой го направи, този човек ще се покаже тук.",
|
||||||
"empty_column.follow_requests": "Още нямате заявки за последване. Получавайки такава, то тя ще се покаже тук.",
|
"empty_column.follow_requests": "Още нямате заявки за последване. Получавайки такава, то тя ще се покаже тук.",
|
||||||
"empty_column.followed_tags": "Още не сте последвали никакви хаштагове. Последваните хаштагове ще се покажат тук.",
|
"empty_column.followed_tags": "Още не сте последвали никакви хаштагове. Последваните хаштагове ще се покажат тук.",
|
||||||
"empty_column.hashtag": "Още няма нищо в този хаштаг.",
|
"empty_column.hashtag": "Още няма нищо в този хаштаг.",
|
||||||
"empty_column.home": "Вашата начална часова ос е празна! Последвайте повече хора, за да я запълните. {suggestions}",
|
"empty_column.home": "Вашата начална хронология е празна! Последвайте повече хора, за да се запълни.",
|
||||||
"empty_column.list": "Все още списъкът е празен. Членуващите на списъка, публикуващи нови публикации, ще се появят тук.",
|
"empty_column.list": "Все още списъкът е празен. Членуващите на списъка, публикуващи нови публикации, ще се появят тук.",
|
||||||
"empty_column.mutes": "Още не сте заглушавали потребители.",
|
"empty_column.mutes": "Още не сте заглушавали потребители.",
|
||||||
"empty_column.notification_requests": "Всичко е чисто! Тук няма нищо. Получавайки нови известия, те ще се появят тук според настройките ви.",
|
"empty_column.notification_requests": "Всичко е чисто! Тук няма нищо. Получавайки нови известия, те ще се появят тук според настройките ви.",
|
||||||
@ -324,6 +327,7 @@
|
|||||||
"filter_modal.select_filter.subtitle": "Изберете съществуваща категория или създайте нова",
|
"filter_modal.select_filter.subtitle": "Изберете съществуваща категория или създайте нова",
|
||||||
"filter_modal.select_filter.title": "Филтриране на публ.",
|
"filter_modal.select_filter.title": "Филтриране на публ.",
|
||||||
"filter_modal.title.status": "Филтриране на публ.",
|
"filter_modal.title.status": "Филтриране на публ.",
|
||||||
|
"filter_warning.matches_filter": "Съвпадащ филтър на “<span>{title}</span>”",
|
||||||
"filtered_notifications_banner.pending_requests": "От {count, plural, =0 {никого, когото може да познавате} one {едно лице, което може да познавате} other {# души, които може да познавате}}",
|
"filtered_notifications_banner.pending_requests": "От {count, plural, =0 {никого, когото може да познавате} one {едно лице, което може да познавате} other {# души, които може да познавате}}",
|
||||||
"filtered_notifications_banner.title": "Филтрирани известия",
|
"filtered_notifications_banner.title": "Филтрирани известия",
|
||||||
"firehose.all": "Всичко",
|
"firehose.all": "Всичко",
|
||||||
@ -391,11 +395,13 @@
|
|||||||
"ignore_notifications_modal.disclaimer": "Mastodon не може да осведоми потребители, че сте пренебрегнали известията им. Пренебрегването на известията няма да спре самите съобщения да не бъдат изпращани.",
|
"ignore_notifications_modal.disclaimer": "Mastodon не може да осведоми потребители, че сте пренебрегнали известията им. Пренебрегването на известията няма да спре самите съобщения да не бъдат изпращани.",
|
||||||
"ignore_notifications_modal.filter_to_act_users": "Вие все още ще може да приемате, отхвърляте или докладвате потребители",
|
"ignore_notifications_modal.filter_to_act_users": "Вие все още ще може да приемате, отхвърляте или докладвате потребители",
|
||||||
"ignore_notifications_modal.filter_to_avoid_confusion": "Прецеждането помага за избягване на възможно объркване",
|
"ignore_notifications_modal.filter_to_avoid_confusion": "Прецеждането помага за избягване на възможно объркване",
|
||||||
|
"ignore_notifications_modal.filter_to_review_separately": "Може да разгледате отделно филтрираните известия",
|
||||||
"ignore_notifications_modal.ignore": "Пренебрегване на известията",
|
"ignore_notifications_modal.ignore": "Пренебрегване на известията",
|
||||||
"ignore_notifications_modal.limited_accounts_title": "Пренебрегвате ли известията от модерирани акаунти?",
|
"ignore_notifications_modal.limited_accounts_title": "Пренебрегвате ли известията от модерирани акаунти?",
|
||||||
"ignore_notifications_modal.new_accounts_title": "Пренебрегвате ли известията от нови акаунти?",
|
"ignore_notifications_modal.new_accounts_title": "Пренебрегвате ли известията от нови акаунти?",
|
||||||
"ignore_notifications_modal.not_followers_title": "Пренебрегвате ли известията от хора, които не са ви последвали?",
|
"ignore_notifications_modal.not_followers_title": "Пренебрегвате ли известията от хора, които не са ви последвали?",
|
||||||
"ignore_notifications_modal.not_following_title": "Пренебрегвате ли известията от хора, които не сте последвали?",
|
"ignore_notifications_modal.not_following_title": "Пренебрегвате ли известията от хора, които не сте последвали?",
|
||||||
|
"ignore_notifications_modal.private_mentions_title": "Пренебрегвате ли известия от непоискани лични споменавания?",
|
||||||
"interaction_modal.description.favourite": "Имайки акаунт в Mastodon, може да сложите тази публикации в любими, за да позволите на автора да узнае, че я цените и да я запазите за по-късно.",
|
"interaction_modal.description.favourite": "Имайки акаунт в Mastodon, може да сложите тази публикации в любими, за да позволите на автора да узнае, че я цените и да я запазите за по-късно.",
|
||||||
"interaction_modal.description.follow": "С акаунт в Mastodon може да последвате {name}, за да получавате публикациите от този акаунт в началния си инфоканал.",
|
"interaction_modal.description.follow": "С акаунт в Mastodon може да последвате {name}, за да получавате публикациите от този акаунт в началния си инфоканал.",
|
||||||
"interaction_modal.description.reblog": "С акаунт в Mastodon може да подсилите тази публикация, за да я споделите с последователите си.",
|
"interaction_modal.description.reblog": "С акаунт в Mastodon може да подсилите тази публикация, за да я споделите с последователите си.",
|
||||||
@ -403,7 +409,7 @@
|
|||||||
"interaction_modal.description.vote": "Имайки акаунт в Mastodon, можете да гласувате в тази анкета.",
|
"interaction_modal.description.vote": "Имайки акаунт в Mastodon, можете да гласувате в тази анкета.",
|
||||||
"interaction_modal.login.action": "Към началото",
|
"interaction_modal.login.action": "Към началото",
|
||||||
"interaction_modal.login.prompt": "Домейнът на сървъра ви, примерно, mastodon.social",
|
"interaction_modal.login.prompt": "Домейнът на сървъра ви, примерно, mastodon.social",
|
||||||
"interaction_modal.no_account_yet": "Още не е в Мастодон?",
|
"interaction_modal.no_account_yet": "Още ли не сте в Mastodon?",
|
||||||
"interaction_modal.on_another_server": "На различен сървър",
|
"interaction_modal.on_another_server": "На различен сървър",
|
||||||
"interaction_modal.on_this_server": "На този сървър",
|
"interaction_modal.on_this_server": "На този сървър",
|
||||||
"interaction_modal.sign_in": "Не сте влезли в този сървър. Къде се хоства акаунтът ви?",
|
"interaction_modal.sign_in": "Не сте влезли в този сървър. Къде се хоства акаунтът ви?",
|
||||||
@ -427,12 +433,12 @@
|
|||||||
"keyboard_shortcuts.enter": "Отваряне на публикация",
|
"keyboard_shortcuts.enter": "Отваряне на публикация",
|
||||||
"keyboard_shortcuts.favourite": "Любима публикация",
|
"keyboard_shortcuts.favourite": "Любима публикация",
|
||||||
"keyboard_shortcuts.favourites": "Отваряне на списъка с любими",
|
"keyboard_shortcuts.favourites": "Отваряне на списъка с любими",
|
||||||
"keyboard_shortcuts.federated": "Отваряне на федерирания инфопоток",
|
"keyboard_shortcuts.federated": "Отваряне на федералната хронология",
|
||||||
"keyboard_shortcuts.heading": "Клавишни съчетания",
|
"keyboard_shortcuts.heading": "Клавишни съчетания",
|
||||||
"keyboard_shortcuts.home": "Отваряне на личния инфопоток",
|
"keyboard_shortcuts.home": "Отваряне на началната хронология",
|
||||||
"keyboard_shortcuts.hotkey": "Бърз клавиш",
|
"keyboard_shortcuts.hotkey": "Бърз клавиш",
|
||||||
"keyboard_shortcuts.legend": "Показване на тази легенда",
|
"keyboard_shortcuts.legend": "Показване на тази легенда",
|
||||||
"keyboard_shortcuts.local": "Отваряне на локалния инфопоток",
|
"keyboard_shortcuts.local": "Отваряне на локалната хронология",
|
||||||
"keyboard_shortcuts.mention": "Споменаване на автора",
|
"keyboard_shortcuts.mention": "Споменаване на автора",
|
||||||
"keyboard_shortcuts.muted": "Отваряне на списъка със заглушени потребители",
|
"keyboard_shortcuts.muted": "Отваряне на списъка със заглушени потребители",
|
||||||
"keyboard_shortcuts.my_profile": "Отваряне на профила ви",
|
"keyboard_shortcuts.my_profile": "Отваряне на профила ви",
|
||||||
@ -460,13 +466,22 @@
|
|||||||
"link_preview.author": "От {name}",
|
"link_preview.author": "От {name}",
|
||||||
"link_preview.more_from_author": "Още от {name}",
|
"link_preview.more_from_author": "Още от {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} публикация} other {{counter} публикации}}",
|
"link_preview.shares": "{count, plural, one {{counter} публикация} other {{counter} публикации}}",
|
||||||
|
"lists.add_member": "Добавяне",
|
||||||
|
"lists.add_to_list": "Добавяне в списък",
|
||||||
|
"lists.add_to_lists": "Добавяне на {name} в списъци",
|
||||||
|
"lists.create": "Създаване",
|
||||||
|
"lists.create_a_list_to_organize": "Сътворете нов списък, за да организирате инфоканала си на Начало",
|
||||||
"lists.create_list": "Създаване на списък",
|
"lists.create_list": "Създаване на списък",
|
||||||
"lists.delete": "Изтриване на списъка",
|
"lists.delete": "Изтриване на списъка",
|
||||||
"lists.done": "Готово",
|
"lists.done": "Готово",
|
||||||
"lists.edit": "Промяна на списъка",
|
"lists.edit": "Промяна на списъка",
|
||||||
|
"lists.exclusive": "Скриване на членуващи в Начало",
|
||||||
|
"lists.exclusive_hint": "Ако някой е в този списък, то скрийте го в инфоканала си на Начало, за да избегнете виждането на публикациите му два пъти.",
|
||||||
"lists.find_users_to_add": "Намерете потребители за добавяне",
|
"lists.find_users_to_add": "Намерете потребители за добавяне",
|
||||||
"lists.list_members": "Списък членуващи",
|
"lists.list_members": "Списък членуващи",
|
||||||
|
"lists.list_members_count": "{count, plural, one {# членуващ} other {# членуващи}}",
|
||||||
"lists.list_name": "Име на списък",
|
"lists.list_name": "Име на списък",
|
||||||
|
"lists.new_list_name": "Ново име на списък",
|
||||||
"lists.no_lists_yet": "Още няма списъци.",
|
"lists.no_lists_yet": "Още няма списъци.",
|
||||||
"lists.no_members_yet": "Още няма членуващи.",
|
"lists.no_members_yet": "Още няма членуващи.",
|
||||||
"lists.no_results_found": "Няма намерени резултати.",
|
"lists.no_results_found": "Няма намерени резултати.",
|
||||||
@ -476,6 +491,7 @@
|
|||||||
"lists.replies_policy.none": "Никого",
|
"lists.replies_policy.none": "Никого",
|
||||||
"lists.save": "Запазване",
|
"lists.save": "Запазване",
|
||||||
"lists.search_placeholder": "Търсене сред, които сте последвали",
|
"lists.search_placeholder": "Търсене сред, които сте последвали",
|
||||||
|
"lists.show_replies_to": "Включва отговори от членуващи в списъка до",
|
||||||
"load_pending": "{count, plural, one {# нов елемент} other {# нови елемента}}",
|
"load_pending": "{count, plural, one {# нов елемент} other {# нови елемента}}",
|
||||||
"loading_indicator.label": "Зареждане…",
|
"loading_indicator.label": "Зареждане…",
|
||||||
"media_gallery.hide": "Скриване",
|
"media_gallery.hide": "Скриване",
|
||||||
@ -494,7 +510,7 @@
|
|||||||
"navigation_bar.advanced_interface": "Отваряне в разширен уебинтерфейс",
|
"navigation_bar.advanced_interface": "Отваряне в разширен уебинтерфейс",
|
||||||
"navigation_bar.blocks": "Блокирани потребители",
|
"navigation_bar.blocks": "Блокирани потребители",
|
||||||
"navigation_bar.bookmarks": "Отметки",
|
"navigation_bar.bookmarks": "Отметки",
|
||||||
"navigation_bar.community_timeline": "Локален инфопоток",
|
"navigation_bar.community_timeline": "Локална хронология",
|
||||||
"navigation_bar.compose": "Съставяне на нова публикация",
|
"navigation_bar.compose": "Съставяне на нова публикация",
|
||||||
"navigation_bar.direct": "Частни споменавания",
|
"navigation_bar.direct": "Частни споменавания",
|
||||||
"navigation_bar.discover": "Откриване",
|
"navigation_bar.discover": "Откриване",
|
||||||
@ -524,6 +540,8 @@
|
|||||||
"notification.admin.report_statuses_other": "{name} докладва {target}",
|
"notification.admin.report_statuses_other": "{name} докладва {target}",
|
||||||
"notification.admin.sign_up": "{name} се регистрира",
|
"notification.admin.sign_up": "{name} се регистрира",
|
||||||
"notification.admin.sign_up.name_and_others": "{name} и {count, plural, one {# друг} other {# други}} се регистрираха",
|
"notification.admin.sign_up.name_and_others": "{name} и {count, plural, one {# друг} other {# други}} се регистрираха",
|
||||||
|
"notification.annual_report.message": "#Wrapstodon за {year} година ви очаква! Свалете булото на изтъкнатото и паметните моменти за годината си в Mastodon!",
|
||||||
|
"notification.annual_report.view": "Преглед на #Wrapstodon",
|
||||||
"notification.favourite": "{name} направи любима публикацията ви",
|
"notification.favourite": "{name} направи любима публикацията ви",
|
||||||
"notification.favourite.name_and_others_with_link": "{name} и <a>{count, plural, one {# друг} other {# други}}</a> направиха любима ваша публикация",
|
"notification.favourite.name_and_others_with_link": "{name} и <a>{count, plural, one {# друг} other {# други}}</a> направиха любима ваша публикация",
|
||||||
"notification.follow": "{name} ви последва",
|
"notification.follow": "{name} ви последва",
|
||||||
@ -557,10 +575,15 @@
|
|||||||
"notification.status": "{name} току-що публикува",
|
"notification.status": "{name} току-що публикува",
|
||||||
"notification.update": "{name} промени публикация",
|
"notification.update": "{name} промени публикация",
|
||||||
"notification_requests.accept": "Приемам",
|
"notification_requests.accept": "Приемам",
|
||||||
|
"notification_requests.accept_multiple": "{count, plural, one {Приемане на # заявка…} other {Приемане на # заявки…}}",
|
||||||
|
"notification_requests.confirm_accept_multiple.button": "{count, plural, one {Приемане на заявката} other {Приемане на заявките}}",
|
||||||
"notification_requests.confirm_accept_multiple.message": "На път сте да приемете {count, plural, one {едно известие за заявка} other {# известия за заявки}}. Наистина ли искате да продължите?",
|
"notification_requests.confirm_accept_multiple.message": "На път сте да приемете {count, plural, one {едно известие за заявка} other {# известия за заявки}}. Наистина ли искате да продължите?",
|
||||||
"notification_requests.confirm_accept_multiple.title": "Приемате ли заявките за известие?",
|
"notification_requests.confirm_accept_multiple.title": "Приемате ли заявките за известие?",
|
||||||
|
"notification_requests.confirm_dismiss_multiple.button": "{count, plural, one {Отхвърляне на заявката} other {Отхвърляне на заявките}}",
|
||||||
|
"notification_requests.confirm_dismiss_multiple.message": "На път сте да отхвърлите {count, plural, one {една заявка за известие} other {# заявки за известие}}. Няма да имате лесен достъп до {count, plural, one {това лице} other {тях}} отново. Наистина ли искате да продължите?",
|
||||||
"notification_requests.confirm_dismiss_multiple.title": "Отхвърляте ли заявките за известие?",
|
"notification_requests.confirm_dismiss_multiple.title": "Отхвърляте ли заявките за известие?",
|
||||||
"notification_requests.dismiss": "Отхвърлям",
|
"notification_requests.dismiss": "Отхвърлям",
|
||||||
|
"notification_requests.dismiss_multiple": "{count, plural, one {Отхвърляне на # заявка…} other {Отхвърляне на # заявки…}}",
|
||||||
"notification_requests.edit_selection": "Редактиране",
|
"notification_requests.edit_selection": "Редактиране",
|
||||||
"notification_requests.exit_selection": "Готово",
|
"notification_requests.exit_selection": "Готово",
|
||||||
"notification_requests.explainer_for_limited_account": "Известията от този акаунт са прецедени, защото акаунтът е ограничен от модератор.",
|
"notification_requests.explainer_for_limited_account": "Известията от този акаунт са прецедени, защото акаунтът е ограничен от модератор.",
|
||||||
@ -581,6 +604,7 @@
|
|||||||
"notifications.column_settings.filter_bar.category": "Лента за бърз филтър",
|
"notifications.column_settings.filter_bar.category": "Лента за бърз филтър",
|
||||||
"notifications.column_settings.follow": "Нови последователи:",
|
"notifications.column_settings.follow": "Нови последователи:",
|
||||||
"notifications.column_settings.follow_request": "Нови заявки за последване:",
|
"notifications.column_settings.follow_request": "Нови заявки за последване:",
|
||||||
|
"notifications.column_settings.group": "Групиране",
|
||||||
"notifications.column_settings.mention": "Споменавания:",
|
"notifications.column_settings.mention": "Споменавания:",
|
||||||
"notifications.column_settings.poll": "Резултати от анкета:",
|
"notifications.column_settings.poll": "Резултати от анкета:",
|
||||||
"notifications.column_settings.push": "Изскачащи известия",
|
"notifications.column_settings.push": "Изскачащи известия",
|
||||||
@ -606,6 +630,7 @@
|
|||||||
"notifications.permission_required": "Известията на работния плот ги няма, щото няма дадено нужното позволение.",
|
"notifications.permission_required": "Известията на работния плот ги няма, щото няма дадено нужното позволение.",
|
||||||
"notifications.policy.accept": "Приемам",
|
"notifications.policy.accept": "Приемам",
|
||||||
"notifications.policy.accept_hint": "Показване в известия",
|
"notifications.policy.accept_hint": "Показване в известия",
|
||||||
|
"notifications.policy.drop": "Пренебрегване",
|
||||||
"notifications.policy.drop_hint": "Изпращане в празнотата, за да не се видим никога пак",
|
"notifications.policy.drop_hint": "Изпращане в празнотата, за да не се видим никога пак",
|
||||||
"notifications.policy.filter": "Филтър",
|
"notifications.policy.filter": "Филтър",
|
||||||
"notifications.policy.filter_limited_accounts_hint": "Ограничено от модераторите на сървъра",
|
"notifications.policy.filter_limited_accounts_hint": "Ограничено от модераторите на сървъра",
|
||||||
@ -622,44 +647,21 @@
|
|||||||
"notifications_permission_banner.enable": "Включване на известията на работния плот",
|
"notifications_permission_banner.enable": "Включване на известията на работния плот",
|
||||||
"notifications_permission_banner.how_to_control": "За да получавате известия, когато Mastodon не е отворен, включете известията на работния плот. Може да управлявате точно кои видове взаимодействия пораждат известия на работния плот чрез бутона {icon} по-горе, след като бъдат включени.",
|
"notifications_permission_banner.how_to_control": "За да получавате известия, когато Mastodon не е отворен, включете известията на работния плот. Може да управлявате точно кои видове взаимодействия пораждат известия на работния плот чрез бутона {icon} по-горе, след като бъдат включени.",
|
||||||
"notifications_permission_banner.title": "Никога не пропускайте нищо",
|
"notifications_permission_banner.title": "Никога не пропускайте нищо",
|
||||||
"onboarding.action.back": "Върнете ме обратно",
|
"onboarding.follows.back": "Назад",
|
||||||
"onboarding.actions.back": "Върнете ме обратно",
|
"onboarding.follows.done": "Готово",
|
||||||
"onboarding.actions.go_to_explore": "Виж тенденции",
|
"onboarding.follows.empty": "За съжаление, в момента не могат да се показват резултати. Може да опитате посредством търсене или сърфиране да разгледате страницата, за да намерите хора за последване, или опитайте пак по-късно.",
|
||||||
"onboarding.actions.go_to_home": "Към началния ми инфоканал",
|
"onboarding.follows.search": "Търсене",
|
||||||
"onboarding.compose.template": "Здравейте, #Mastodon!",
|
"onboarding.follows.title": "Последвайте хора, за да започнете",
|
||||||
"onboarding.follows.empty": "За съжаление, в момента не могат да бъдат показани резултати. Може да опитате да търсите или да разгледате, за да намерите кого да последвате, или опитайте отново по-късно.",
|
|
||||||
"onboarding.follows.lead": "Може да бъдете куратор на началния си инфоканал. Последвайки повече хора, по-деен и по-интересен ще става. Тези профили може да са добра начална точка, от която винаги по-късно да спрете да следвате!",
|
|
||||||
"onboarding.follows.title": "Популярно в Mastodon",
|
|
||||||
"onboarding.profile.discoverable": "Правене на моя профил откриваем",
|
"onboarding.profile.discoverable": "Правене на моя профил откриваем",
|
||||||
"onboarding.profile.discoverable_hint": "Включвайки откриваемостта в Mastodon, вашите публикации може да се появят при резултатите от търсене и изгряващи неща, и вашия профил може да бъде предложен на хора с подобни интереси като вашите.",
|
"onboarding.profile.discoverable_hint": "Включвайки откриваемостта в Mastodon, вашите публикации може да се появят при резултатите от търсене и изгряващи неща, и вашия профил може да бъде предложен на хора с подобни интереси като вашите.",
|
||||||
"onboarding.profile.display_name": "Името на показ",
|
"onboarding.profile.display_name": "Името на показ",
|
||||||
"onboarding.profile.display_name_hint": "Вашето пълно име или псевдоним…",
|
"onboarding.profile.display_name_hint": "Вашето пълно име или псевдоним…",
|
||||||
"onboarding.profile.lead": "Винаги може да завършите това по-късно в настройките, където дори има повече възможности за настройване.",
|
"onboarding.profile.note": "Биография",
|
||||||
"onboarding.profile.note": "Биогр.",
|
|
||||||
"onboarding.profile.note_hint": "Може да @споменавате други хора или #хаштагове…",
|
"onboarding.profile.note_hint": "Може да @споменавате други хора или #хаштагове…",
|
||||||
"onboarding.profile.save_and_continue": "Запазване и продължаване",
|
"onboarding.profile.save_and_continue": "Запазване и продължаване",
|
||||||
"onboarding.profile.title": "Настройване на профила",
|
"onboarding.profile.title": "Настройване на профила",
|
||||||
"onboarding.profile.upload_avatar": "Качване на снимка на профила",
|
"onboarding.profile.upload_avatar": "Качване на снимка на профила",
|
||||||
"onboarding.profile.upload_header": "Качване на заглавка на профила",
|
"onboarding.profile.upload_header": "Качване на заглавка на профила",
|
||||||
"onboarding.share.lead": "Позволете на хората да знаят, че могат да ви намерят в Mastodon!",
|
|
||||||
"onboarding.share.message": "Аз съм {username} в #Mastodon! Елате да ме последвате при {url}",
|
|
||||||
"onboarding.share.next_steps": "Възможни следващи стъпки:",
|
|
||||||
"onboarding.share.title": "Споделяне на профила ви",
|
|
||||||
"onboarding.start.lead": "Вашият нов акаунт в Mastodon е готов за употреба. Ето как може да се възползвате по най-добрия начин от него:",
|
|
||||||
"onboarding.start.skip": "Желаете ли да прескочите?",
|
|
||||||
"onboarding.start.title": "Успяхте!",
|
|
||||||
"onboarding.steps.follow_people.body": "Може да бъдете куратор на инфоканала си. Хайде да го запълним с интересни хора.",
|
|
||||||
"onboarding.steps.follow_people.title": "Персонализиране на началния ви инфоканал",
|
|
||||||
"onboarding.steps.publish_status.body": "Поздравете целия свят.",
|
|
||||||
"onboarding.steps.publish_status.title": "Направете първата си публикация",
|
|
||||||
"onboarding.steps.setup_profile.body": "Подсилете взаимодействията си, имайки изчерпателен профил.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Пригодете профила си",
|
|
||||||
"onboarding.steps.share_profile.body": "Позволете на приятелите си да знаят как да ви намират в Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Споделяне на профила ви",
|
|
||||||
"onboarding.tips.2fa": "<strong>Знаете ли, че?</strong> Може да защитите акаунта си, настройвайки двуфакторното удостоверяване в настройките на акаунта си. То работи с всяко приложение TOTP по ваш избор, не е необходим номер телефона!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Знаете ли, че?</strong> Откак Mastodon е децентрализиран, някои профили, които срещате ще бъдат разположени на сървъри различен от вашия. И още може да взаимодействате с тях безпроблемно! Сървърът им е втората половина от потребителското им име!",
|
|
||||||
"onboarding.tips.migration": "<strong>Знаете ли, че?</strong> Ако се чувствате, че {domain} не е чудесен избор на сървър в бъдуще, може да се преместите на друг сървър на Mastodon без да загубите последователите си. Дори може да сте съдържатели на свой собствен сървър!",
|
|
||||||
"onboarding.tips.verification": "<strong>Знаете ли, че?</strong> Може да потвърдите акаунта си, слагайки връзка към профила си в Mastodon на уебсайта си и добавите уебсайта в профила си. Не са необходими документи или такси!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Потвърждаването на паролата превишава максимално допустимата дължина за парола",
|
"password_confirmation.exceeds_maxlength": "Потвърждаването на паролата превишава максимално допустимата дължина за парола",
|
||||||
"password_confirmation.mismatching": "Потвърждаването на паролата не съвпада",
|
"password_confirmation.mismatching": "Потвърждаването на паролата не съвпада",
|
||||||
"picture_in_picture.restore": "Връщане обратно",
|
"picture_in_picture.restore": "Връщане обратно",
|
||||||
@ -723,7 +725,7 @@
|
|||||||
"report.placeholder": "Допълнителни коментари",
|
"report.placeholder": "Допълнителни коментари",
|
||||||
"report.reasons.dislike": "Не ми харесва",
|
"report.reasons.dislike": "Не ми харесва",
|
||||||
"report.reasons.dislike_description": "Не е нещо, което искате да виждате",
|
"report.reasons.dislike_description": "Не е нещо, което искате да виждате",
|
||||||
"report.reasons.legal": "Законово е",
|
"report.reasons.legal": "Незаконно е",
|
||||||
"report.reasons.legal_description": "Смятате, че това нарушава закона на вашата страна или държавата на сървъра",
|
"report.reasons.legal_description": "Смятате, че това нарушава закона на вашата страна или държавата на сървъра",
|
||||||
"report.reasons.other": "Нещо друго е",
|
"report.reasons.other": "Нещо друго е",
|
||||||
"report.reasons.other_description": "Проблемът не попада в нито една от останалите категории",
|
"report.reasons.other_description": "Проблемът не попада в нито една от останалите категории",
|
||||||
@ -761,7 +763,7 @@
|
|||||||
"search.quick_action.open_url": "Отваряне на URL адреса в Mastodon",
|
"search.quick_action.open_url": "Отваряне на URL адреса в Mastodon",
|
||||||
"search.quick_action.status_search": "Съвпадение на публикации {x}",
|
"search.quick_action.status_search": "Съвпадение на публикации {x}",
|
||||||
"search.search_or_paste": "Търсене/поставяне на URL",
|
"search.search_or_paste": "Търсене/поставяне на URL",
|
||||||
"search_popout.full_text_search_disabled_message": "Не е достъпно на {domain}.",
|
"search_popout.full_text_search_disabled_message": "Не е налично на {domain}.",
|
||||||
"search_popout.full_text_search_logged_out_message": "Достъпно само при влизане в системата.",
|
"search_popout.full_text_search_logged_out_message": "Достъпно само при влизане в системата.",
|
||||||
"search_popout.language_code": "Код на езика по ISO",
|
"search_popout.language_code": "Код на езика по ISO",
|
||||||
"search_popout.options": "Възможности при търсене",
|
"search_popout.options": "Възможности при търсене",
|
||||||
@ -843,9 +845,9 @@
|
|||||||
"status.uncached_media_warning": "Онагледяването не е налично",
|
"status.uncached_media_warning": "Онагледяването не е налично",
|
||||||
"status.unmute_conversation": "Без заглушаването на разговора",
|
"status.unmute_conversation": "Без заглушаването на разговора",
|
||||||
"status.unpin": "Разкачане от профила",
|
"status.unpin": "Разкачане от профила",
|
||||||
"subscribed_languages.lead": "Публикации само на избрани езици ще се явяват в началото ви и в списъка с часови оси след промяната. Изберете \"нищо\", за да получавате публикации на всички езици.",
|
"subscribed_languages.lead": "Публикации само на избрани езици ще се явяват в началото ви и в хронологичните списъци след промяната. Изберете \"нищо\", за да получавате публикации на всички езици.",
|
||||||
"subscribed_languages.save": "Запазване на промените",
|
"subscribed_languages.save": "Запазване на промените",
|
||||||
"subscribed_languages.target": "Смяна на езика за {target}",
|
"subscribed_languages.target": "Промяна на абонираните езици за {target}",
|
||||||
"tabs_bar.home": "Начало",
|
"tabs_bar.home": "Начало",
|
||||||
"tabs_bar.notifications": "Известия",
|
"tabs_bar.notifications": "Известия",
|
||||||
"time_remaining.days": "{number, plural, one {остава # ден} other {остават # дни}}",
|
"time_remaining.days": "{number, plural, one {остава # ден} other {остават # дни}}",
|
||||||
|
@ -327,21 +327,6 @@
|
|||||||
"notifications.filter.mentions": "উল্লেখিত",
|
"notifications.filter.mentions": "উল্লেখিত",
|
||||||
"notifications.filter.polls": "নির্বাচনের ফলাফল",
|
"notifications.filter.polls": "নির্বাচনের ফলাফল",
|
||||||
"notifications.group": "{count} প্রজ্ঞাপন",
|
"notifications.group": "{count} প্রজ্ঞাপন",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
|
||||||
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
|
|
||||||
"onboarding.follows.title": "Popular on Mastodon",
|
|
||||||
"onboarding.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.",
|
|
||||||
"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.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>তুমি কি জানতে?</strong> যেহেতু মাস্টোডন বিকেন্দ্রীভূত, কিছু অ্যাকাউন্ট তোমার নিজের ছাড়া অন্য কোনো সার্ভারে থাকতে পারে। অথচ তুমি তাদের সাথে কোনো সমস্যা ছাড়াই কথা বলতে পারছো! তাদের সার্ভার তাদের ব্যবহারকারী নামের দ্বিতীয় অর্ধাংশ!",
|
|
||||||
"onboarding.tips.migration": "<strong>তুমি কি জানো?</strong> {domain} তোমার পছন্দ না হলে, ভবিষ্যতে তুমি অন্য কোনো সার্ভারে যেতে পারো তোমার অনুসরণকারীদেরকে না হারিয়েই। এমনকি তুমি নিজের সার্ভারও তৈরি করতে পারো!",
|
|
||||||
"picture_in_picture.restore": "ফিরত রাখো",
|
"picture_in_picture.restore": "ফিরত রাখো",
|
||||||
"poll.closed": "বন্ধ",
|
"poll.closed": "বন্ধ",
|
||||||
"poll.refresh": "বদলেছে কিনা দেখতে",
|
"poll.refresh": "বদলেছে কিনা দেখতে",
|
||||||
|
@ -129,6 +129,7 @@
|
|||||||
"column_header.pin": "Spilhennañ",
|
"column_header.pin": "Spilhennañ",
|
||||||
"column_header.show_settings": "Diskouez an arventennoù",
|
"column_header.show_settings": "Diskouez an arventennoù",
|
||||||
"column_header.unpin": "Dispilhennañ",
|
"column_header.unpin": "Dispilhennañ",
|
||||||
|
"column_search.cancel": "Nullañ",
|
||||||
"column_subheading.settings": "Arventennoù",
|
"column_subheading.settings": "Arventennoù",
|
||||||
"community.column_settings.local_only": "Nemet lec'hel",
|
"community.column_settings.local_only": "Nemet lec'hel",
|
||||||
"community.column_settings.media_only": "Nemet Mediaoù",
|
"community.column_settings.media_only": "Nemet Mediaoù",
|
||||||
@ -422,33 +423,15 @@
|
|||||||
"notifications_permission_banner.enable": "Lezel kemennoù war ar burev",
|
"notifications_permission_banner.enable": "Lezel kemennoù war ar burev",
|
||||||
"notifications_permission_banner.how_to_control": "Evit reseviñ kemennoù pa ne vez ket digoret Mastodon, lezelit kemennoù war ar burev. Gallout a rit kontrollañ peseurt eskemmoù a c'henel kemennoù war ar burev gant ar {icon} nozelenn a-us kentre ma'z int lezelet.",
|
"notifications_permission_banner.how_to_control": "Evit reseviñ kemennoù pa ne vez ket digoret Mastodon, lezelit kemennoù war ar burev. Gallout a rit kontrollañ peseurt eskemmoù a c'henel kemennoù war ar burev gant ar {icon} nozelenn a-us kentre ma'z int lezelet.",
|
||||||
"notifications_permission_banner.title": "Na vankit netra morse",
|
"notifications_permission_banner.title": "Na vankit netra morse",
|
||||||
"onboarding.action.back": "Distreiñ",
|
"onboarding.follows.back": "Distreiñ",
|
||||||
"onboarding.actions.back": "Distreiñ",
|
"onboarding.follows.done": "Graet",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.follows.search": "Klask",
|
||||||
"onboarding.actions.go_to_home": "Mont d'ho red degemer",
|
|
||||||
"onboarding.compose.template": "Salud #Mastodon!",
|
|
||||||
"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.display_name": "Anv diskouezet",
|
"onboarding.profile.display_name": "Anv diskouezet",
|
||||||
"onboarding.profile.display_name_hint": "Hoc'h anv klok pe hoc'h anv fentus…",
|
"onboarding.profile.display_name_hint": "Hoc'h anv klok pe hoc'h anv fentus…",
|
||||||
"onboarding.profile.note": "Berr-ha-berr",
|
"onboarding.profile.note": "Berr-ha-berr",
|
||||||
"onboarding.profile.note_hint": "Gallout a rit @menegiñ tud all pe #hashtagoù…",
|
"onboarding.profile.note_hint": "Gallout a rit @menegiñ tud all pe #hashtagoù…",
|
||||||
"onboarding.profile.save_and_continue": "Enrollañ ha kenderc'hel",
|
"onboarding.profile.save_and_continue": "Enrollañ ha kenderc'hel",
|
||||||
"onboarding.profile.upload_avatar": "Enporzhiañ ur skeudenn profil",
|
"onboarding.profile.upload_avatar": "Enporzhiañ ur skeudenn profil",
|
||||||
"onboarding.share.lead": "Roit da c'houzout d'an dud e c'hallont ho kavout war vMastondon!",
|
|
||||||
"onboarding.share.message": "Me a zo {username} war #Mastodon! Heuilhit ac'hanon war {url}",
|
|
||||||
"onboarding.share.title": "Skignañ ho profil",
|
|
||||||
"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": "Deuet oc'h a-benn!",
|
|
||||||
"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": "Grit hoc'h embannadur kentañ",
|
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Rannit ho kont Mastodon",
|
|
||||||
"password_confirmation.mismatching": "Disheñvel eo an daou c'her-termen-se",
|
"password_confirmation.mismatching": "Disheñvel eo an daou c'her-termen-se",
|
||||||
"picture_in_picture.restore": "Adlakaat",
|
"picture_in_picture.restore": "Adlakaat",
|
||||||
"poll.closed": "Serret",
|
"poll.closed": "Serret",
|
||||||
|
@ -51,19 +51,6 @@
|
|||||||
"navigation_bar.domain_blocks": "Hidden domains",
|
"navigation_bar.domain_blocks": "Hidden domains",
|
||||||
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
|
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
|
||||||
"notification.reblog": "{name} boosted your status",
|
"notification.reblog": "{name} boosted your status",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
|
||||||
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
|
|
||||||
"onboarding.follows.title": "Popular on Mastodon",
|
|
||||||
"onboarding.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.",
|
|
||||||
"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.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"privacy.change": "Adjust status privacy",
|
"privacy.change": "Adjust status privacy",
|
||||||
"report.placeholder": "Type or paste additional comments",
|
"report.placeholder": "Type or paste additional comments",
|
||||||
"report.submit": "Submit report",
|
"report.submit": "Submit report",
|
||||||
|
@ -134,13 +134,16 @@
|
|||||||
"column.blocks": "Usuaris blocats",
|
"column.blocks": "Usuaris blocats",
|
||||||
"column.bookmarks": "Marcadors",
|
"column.bookmarks": "Marcadors",
|
||||||
"column.community": "Línia de temps local",
|
"column.community": "Línia de temps local",
|
||||||
|
"column.create_list": "Crea una llista",
|
||||||
"column.direct": "Mencions privades",
|
"column.direct": "Mencions privades",
|
||||||
"column.directory": "Navega pels perfils",
|
"column.directory": "Navega pels perfils",
|
||||||
"column.domain_blocks": "Dominis blocats",
|
"column.domain_blocks": "Dominis blocats",
|
||||||
|
"column.edit_list": "Edita la llista",
|
||||||
"column.favourites": "Favorits",
|
"column.favourites": "Favorits",
|
||||||
"column.firehose": "Tuts en directe",
|
"column.firehose": "Tuts en directe",
|
||||||
"column.follow_requests": "Peticions de seguir-te",
|
"column.follow_requests": "Peticions de seguir-te",
|
||||||
"column.home": "Inici",
|
"column.home": "Inici",
|
||||||
|
"column.list_members": "Gestiona els membres de la llista",
|
||||||
"column.lists": "Llistes",
|
"column.lists": "Llistes",
|
||||||
"column.mutes": "Usuaris silenciats",
|
"column.mutes": "Usuaris silenciats",
|
||||||
"column.notifications": "Notificacions",
|
"column.notifications": "Notificacions",
|
||||||
@ -153,6 +156,7 @@
|
|||||||
"column_header.pin": "Fixa",
|
"column_header.pin": "Fixa",
|
||||||
"column_header.show_settings": "Mostra la configuració",
|
"column_header.show_settings": "Mostra la configuració",
|
||||||
"column_header.unpin": "Desfixa",
|
"column_header.unpin": "Desfixa",
|
||||||
|
"column_search.cancel": "Cancel·la",
|
||||||
"column_subheading.settings": "Configuració",
|
"column_subheading.settings": "Configuració",
|
||||||
"community.column_settings.local_only": "Només local",
|
"community.column_settings.local_only": "Només local",
|
||||||
"community.column_settings.media_only": "Només contingut",
|
"community.column_settings.media_only": "Només contingut",
|
||||||
@ -458,11 +462,32 @@
|
|||||||
"link_preview.author": "Per {name}",
|
"link_preview.author": "Per {name}",
|
||||||
"link_preview.more_from_author": "Més de {name}",
|
"link_preview.more_from_author": "Més de {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} publicació} other {{counter} publicacions}}",
|
"link_preview.shares": "{count, plural, one {{counter} publicació} other {{counter} publicacions}}",
|
||||||
|
"lists.add_member": "Afegeix",
|
||||||
|
"lists.add_to_list": "Afegeix a la llista",
|
||||||
|
"lists.add_to_lists": "Afegeix {name} a les llistes",
|
||||||
|
"lists.create": "Crea",
|
||||||
|
"lists.create_a_list_to_organize": "Creeu una nova llista per a organitzar la pantalla d'inici",
|
||||||
|
"lists.create_list": "Crea una llista",
|
||||||
"lists.delete": "Elimina la llista",
|
"lists.delete": "Elimina la llista",
|
||||||
|
"lists.done": "Fet",
|
||||||
"lists.edit": "Edita la llista",
|
"lists.edit": "Edita la llista",
|
||||||
|
"lists.exclusive": "Amaga membres a Inici",
|
||||||
|
"lists.exclusive_hint": "Si algú és a la llista, amagueu-los de la pantalla d'inici, per a no veure'n les publicacions duplicades.",
|
||||||
|
"lists.find_users_to_add": "Troba usuaris per a afegir",
|
||||||
|
"lists.list_members": "Membres de la llista",
|
||||||
|
"lists.list_members_count": "{count, plural, one {# membre} other {# membres}}",
|
||||||
|
"lists.list_name": "Nom de la llista",
|
||||||
|
"lists.new_list_name": "Nom de la nova llista",
|
||||||
|
"lists.no_lists_yet": "Encara no hi ha cap llista.",
|
||||||
|
"lists.no_members_yet": "Encara no hi ha membres.",
|
||||||
|
"lists.no_results_found": "No s'han trobat resultats.",
|
||||||
|
"lists.remove_member": "Elimina",
|
||||||
"lists.replies_policy.followed": "Qualsevol usuari que segueixis",
|
"lists.replies_policy.followed": "Qualsevol usuari que segueixis",
|
||||||
"lists.replies_policy.list": "Membres de la llista",
|
"lists.replies_policy.list": "Membres de la llista",
|
||||||
"lists.replies_policy.none": "Ningú",
|
"lists.replies_policy.none": "Ningú",
|
||||||
|
"lists.save": "Desa",
|
||||||
|
"lists.search_placeholder": "Cerca persones que seguiu",
|
||||||
|
"lists.show_replies_to": "Inclou respostes de membres de la llista a",
|
||||||
"load_pending": "{count, plural, one {# element nou} other {# elements nous}}",
|
"load_pending": "{count, plural, one {# element nou} other {# elements nous}}",
|
||||||
"loading_indicator.label": "Es carrega…",
|
"loading_indicator.label": "Es carrega…",
|
||||||
"media_gallery.hide": "Amaga",
|
"media_gallery.hide": "Amaga",
|
||||||
@ -617,44 +642,21 @@
|
|||||||
"notifications_permission_banner.enable": "Activa les notificacions d’escriptori",
|
"notifications_permission_banner.enable": "Activa les notificacions d’escriptori",
|
||||||
"notifications_permission_banner.how_to_control": "Per a rebre notificacions quan Mastodon no és obert cal activar les notificacions d’escriptori. Pots controlar amb precisió quins tipus d’interaccions generen notificacions d’escriptori després d’activar el botó {icon} de dalt.",
|
"notifications_permission_banner.how_to_control": "Per a rebre notificacions quan Mastodon no és obert cal activar les notificacions d’escriptori. Pots controlar amb precisió quins tipus d’interaccions generen notificacions d’escriptori després d’activar el botó {icon} de dalt.",
|
||||||
"notifications_permission_banner.title": "No et perdis mai res",
|
"notifications_permission_banner.title": "No et perdis mai res",
|
||||||
"onboarding.action.back": "Porta'm enrere",
|
"onboarding.follows.back": "Enrere",
|
||||||
"onboarding.actions.back": "Porta'm enrere",
|
"onboarding.follows.done": "Fet",
|
||||||
"onboarding.actions.go_to_explore": "Mira què és tendència",
|
|
||||||
"onboarding.actions.go_to_home": "Ves a la teva línia de temps",
|
|
||||||
"onboarding.compose.template": "Hola Mastodon!",
|
|
||||||
"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.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.search": "Cerca",
|
||||||
"onboarding.follows.title": "Personalitza la pantalla d'inci",
|
"onboarding.follows.title": "Seguiu gent per a començar",
|
||||||
"onboarding.profile.discoverable": "Fes el meu perfil descobrible",
|
"onboarding.profile.discoverable": "Fes el meu perfil descobrible",
|
||||||
"onboarding.profile.discoverable_hint": "En acceptar d'ésser descobert a Mastodon els teus missatges poden aparèixer dins les tendències i els resultats de cerques, i el teu perfil es pot suggerir a qui tingui interessos semblants als teus.",
|
"onboarding.profile.discoverable_hint": "En acceptar d'ésser descobert a Mastodon els teus missatges poden aparèixer dins les tendències i els resultats de cerques, i el teu perfil es pot suggerir a qui tingui interessos semblants als teus.",
|
||||||
"onboarding.profile.display_name": "Nom que es mostrarà",
|
"onboarding.profile.display_name": "Nom que es mostrarà",
|
||||||
"onboarding.profile.display_name_hint": "El teu nom complet o el teu malnom…",
|
"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": "Biografia",
|
||||||
"onboarding.profile.note_hint": "Pots @mencionar altra gent o #etiquetes…",
|
"onboarding.profile.note_hint": "Pots @mencionar altra gent o #etiquetes…",
|
||||||
"onboarding.profile.save_and_continue": "Desa i continua",
|
"onboarding.profile.save_and_continue": "Desa i continua",
|
||||||
"onboarding.profile.title": "Configuració del perfil",
|
"onboarding.profile.title": "Configuració del perfil",
|
||||||
"onboarding.profile.upload_avatar": "Importa una foto de perfil",
|
"onboarding.profile.upload_avatar": "Importa una foto de perfil",
|
||||||
"onboarding.profile.upload_header": "Importa una capçalera 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:",
|
|
||||||
"onboarding.share.title": "Comparteix el teu perfil",
|
|
||||||
"onboarding.start.lead": "El teu nou compte ja està preparat a Mastodon, la xarxa social on tu—no un algorisme—té tot el control. Aquí tens com en pots treure tot el suc:",
|
|
||||||
"onboarding.start.skip": "Vols saltar-te tota la resta?",
|
|
||||||
"onboarding.start.title": "Llestos!",
|
|
||||||
"onboarding.steps.follow_people.body": "Mastodon va de seguir a gent interessant.",
|
|
||||||
"onboarding.steps.follow_people.title": "Personalitza la pantalla d'inci",
|
|
||||||
"onboarding.steps.publish_status.body": "Saluda al món amb text, fotos, vídeos o enquestes {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Fes el teu primer tut",
|
|
||||||
"onboarding.steps.setup_profile.body": "És més fàcil que altres interactuïn amb tu si tens un perfil complet.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Personalitza el perfil",
|
|
||||||
"onboarding.steps.share_profile.body": "Fer saber als teus amics com trobar-te a Mastodon",
|
|
||||||
"onboarding.steps.share_profile.title": "Comparteix el teu perfil",
|
|
||||||
"onboarding.tips.2fa": "<strong>Ho sabies?</strong> Pots securitzar el teu compte activant l'autenticació de doble factor en la configuració del teu perfil. Funciona amb qualsevol aplicació TOTP de la teva elecció, no cal número de telèfon!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Ho sabies?</strong> Com Mastodon és descentralitzat, et pots trobar amb perfils que són a servidors diferents del teu. I, tanmateix, també hi pots interactuar sense cap problema! El servidor és la segona part del seu nom d'usuari!",
|
|
||||||
"onboarding.tips.migration": "<strong>Ho sabies?</strong> Si et sembla que {domain} no és una bona elecció de servidor per a tu en el futur, pots moure't a un altre servidor Mastodon sense perdre els teus seguidors. Fins i tot pots tenir el teu propi servidor!",
|
|
||||||
"onboarding.tips.verification": "<strong>Ho sabies?</strong> Pots verificar el teu compte posant un enllaç al teu perfil a Mastodon en la teva pàgina web i afegint la adreça d'aquesta web en el teu perfil. Sense cap mena de tarifa o document!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "La confirmació de la contrasenya excedeix la longitud màxima",
|
"password_confirmation.exceeds_maxlength": "La confirmació de la contrasenya excedeix la longitud màxima",
|
||||||
"password_confirmation.mismatching": "La confirmació de contrasenya no és coincident",
|
"password_confirmation.mismatching": "La confirmació de contrasenya no és coincident",
|
||||||
"picture_in_picture.restore": "Retorna’l",
|
"picture_in_picture.restore": "Retorna’l",
|
||||||
@ -683,7 +685,7 @@
|
|||||||
"recommended": "Recomanat",
|
"recommended": "Recomanat",
|
||||||
"refresh": "Actualitza",
|
"refresh": "Actualitza",
|
||||||
"regeneration_indicator.label": "Es carrega…",
|
"regeneration_indicator.label": "Es carrega…",
|
||||||
"regeneration_indicator.sublabel": "Es prepara la teva línia de temps d'Inici!",
|
"regeneration_indicator.sublabel": "Es prepara la vostra pantalla d'Inici!",
|
||||||
"relative_time.days": "{number}d",
|
"relative_time.days": "{number}d",
|
||||||
"relative_time.full.days": "fa {number, plural, one {# dia} other {# dies}}",
|
"relative_time.full.days": "fa {number, plural, one {# dia} other {# dies}}",
|
||||||
"relative_time.full.hours": "fa {number, plural, one {# hora} other {# hores}}",
|
"relative_time.full.hours": "fa {number, plural, one {# hora} other {# hores}}",
|
||||||
|
@ -407,19 +407,6 @@
|
|||||||
"notifications_permission_banner.enable": "چالاککردنی ئاگانامەکانی دێسکتۆپ",
|
"notifications_permission_banner.enable": "چالاککردنی ئاگانامەکانی دێسکتۆپ",
|
||||||
"notifications_permission_banner.how_to_control": "بۆ وەرگرتنی ئاگانامەکان کاتێک ماستۆدۆن نەکراوەیە، ئاگانامەکانی دێسکتۆپ چالاک بکە. دەتوانیت بە وردی کۆنترۆڵی جۆری کارلێکەکان بکەیت کە ئاگانامەکانی دێسکتۆپ دروست دەکەن لە ڕێگەی دوگمەی {icon} لەسەرەوە کاتێک چالاک دەکرێن.",
|
"notifications_permission_banner.how_to_control": "بۆ وەرگرتنی ئاگانامەکان کاتێک ماستۆدۆن نەکراوەیە، ئاگانامەکانی دێسکتۆپ چالاک بکە. دەتوانیت بە وردی کۆنترۆڵی جۆری کارلێکەکان بکەیت کە ئاگانامەکانی دێسکتۆپ دروست دەکەن لە ڕێگەی دوگمەی {icon} لەسەرەوە کاتێک چالاک دەکرێن.",
|
||||||
"notifications_permission_banner.title": "هەرگیز شتێک لە دەست مەدە",
|
"notifications_permission_banner.title": "هەرگیز شتێک لە دەست مەدە",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
|
||||||
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
|
|
||||||
"onboarding.follows.title": "Popular on Mastodon",
|
|
||||||
"onboarding.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.",
|
|
||||||
"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.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"picture_in_picture.restore": "بیگەڕێنەوە",
|
"picture_in_picture.restore": "بیگەڕێنەوە",
|
||||||
"poll.closed": "دابخە",
|
"poll.closed": "دابخە",
|
||||||
"poll.refresh": "نوێکردنەوە",
|
"poll.refresh": "نوێکردنەوە",
|
||||||
|
@ -253,19 +253,6 @@
|
|||||||
"notifications_permission_banner.enable": "Attivà e nutificazione nant'à l'urdinatore",
|
"notifications_permission_banner.enable": "Attivà e nutificazione nant'à l'urdinatore",
|
||||||
"notifications_permission_banner.how_to_control": "Per riceve nutificazione quandu Mastodon ùn hè micca aperta, attivate e nutificazione nant'à l'urdinatore. Pudete decide quali tippi d'interazione anu da mandà ste nutificazione cù u buttone {icon} quì sopra quandu saranu attivate.",
|
"notifications_permission_banner.how_to_control": "Per riceve nutificazione quandu Mastodon ùn hè micca aperta, attivate e nutificazione nant'à l'urdinatore. Pudete decide quali tippi d'interazione anu da mandà ste nutificazione cù u buttone {icon} quì sopra quandu saranu attivate.",
|
||||||
"notifications_permission_banner.title": "Ùn mancate mai nunda",
|
"notifications_permission_banner.title": "Ùn mancate mai nunda",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
|
||||||
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
|
|
||||||
"onboarding.follows.title": "Popular on Mastodon",
|
|
||||||
"onboarding.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.",
|
|
||||||
"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.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"picture_in_picture.restore": "Rimette in piazza",
|
"picture_in_picture.restore": "Rimette in piazza",
|
||||||
"poll.closed": "Chjosu",
|
"poll.closed": "Chjosu",
|
||||||
"poll.refresh": "Attualizà",
|
"poll.refresh": "Attualizà",
|
||||||
|
@ -534,44 +534,17 @@
|
|||||||
"notifications_permission_banner.enable": "Povolit oznámení na ploše",
|
"notifications_permission_banner.enable": "Povolit oznámení na ploše",
|
||||||
"notifications_permission_banner.how_to_control": "Chcete-li dostávat oznámení, i když nemáte Mastodon otevřený, povolte oznámení na ploše. Můžete si zvolit, o kterých druzích interakcí chcete být oznámením na ploše informování pod tlačítkem {icon} výše.",
|
"notifications_permission_banner.how_to_control": "Chcete-li dostávat oznámení, i když nemáte Mastodon otevřený, povolte oznámení na ploše. Můžete si zvolit, o kterých druzích interakcí chcete být oznámením na ploše informování pod tlačítkem {icon} výše.",
|
||||||
"notifications_permission_banner.title": "Nenechte si nic uniknout",
|
"notifications_permission_banner.title": "Nenechte si nic uniknout",
|
||||||
"onboarding.action.back": "Vrátit se zpět",
|
|
||||||
"onboarding.actions.back": "Vrátit se zpět",
|
|
||||||
"onboarding.actions.go_to_explore": "Podívejte se, co je populární",
|
|
||||||
"onboarding.actions.go_to_home": "Přejít na svůj domovský feed",
|
|
||||||
"onboarding.compose.template": "Ahoj #Mastodon!",
|
|
||||||
"onboarding.follows.empty": "Bohužel, žádné výsledky nelze momentálně zobrazit. Můžete zkusit vyhledat nebo procházet stránku s průzkumem a najít lidi, kteří budou sledovat, nebo to zkuste znovu později.",
|
"onboarding.follows.empty": "Bohužel, žádné výsledky nelze momentálně zobrazit. Můžete zkusit vyhledat nebo procházet stránku s průzkumem a najít lidi, kteří budou sledovat, nebo to zkuste znovu později.",
|
||||||
"onboarding.follows.lead": "Domovský kanál je hlavní metodou zažívání Mastodonu. Čím více lidí sledujete, tím aktivnější a zajímavější bude. Pro začnutí, zde máte několik návrhů:",
|
|
||||||
"onboarding.follows.title": "Přispůsobit vlastní domovský kanál",
|
|
||||||
"onboarding.profile.discoverable": "Udělat svůj profil vyhledatelným",
|
"onboarding.profile.discoverable": "Udělat svůj profil vyhledatelným",
|
||||||
"onboarding.profile.discoverable_hint": "Když se rozhodnete být vyhledatelný na Mastodonu, vaše příspěvky se mohou objevit ve výsledcích vyhledávání a v populárních, a váš profil může být navrhován lidem s podobnými zájmy.",
|
"onboarding.profile.discoverable_hint": "Když se rozhodnete být vyhledatelný na Mastodonu, vaše příspěvky se mohou objevit ve výsledcích vyhledávání a v populárních, a váš profil může být navrhován lidem s podobnými zájmy.",
|
||||||
"onboarding.profile.display_name": "Zobrazované jméno",
|
"onboarding.profile.display_name": "Zobrazované jméno",
|
||||||
"onboarding.profile.display_name_hint": "Vaše celé jméno nebo přezdívka…",
|
"onboarding.profile.display_name_hint": "Vaše celé jméno nebo přezdívka…",
|
||||||
"onboarding.profile.lead": "Toto můžete vždy dokončit později v nastavení, kde je k dispozici ještě více možností přizpůsobení.",
|
|
||||||
"onboarding.profile.note": "O vás",
|
"onboarding.profile.note": "O vás",
|
||||||
"onboarding.profile.note_hint": "Můžete @zmínit jiné osoby nebo #hashtagy…",
|
"onboarding.profile.note_hint": "Můžete @zmínit jiné osoby nebo #hashtagy…",
|
||||||
"onboarding.profile.save_and_continue": "Uložit a pokračovat",
|
"onboarding.profile.save_and_continue": "Uložit a pokračovat",
|
||||||
"onboarding.profile.title": "Nastavení profilu",
|
"onboarding.profile.title": "Nastavení profilu",
|
||||||
"onboarding.profile.upload_avatar": "Nahrát profilový obrázek",
|
"onboarding.profile.upload_avatar": "Nahrát profilový obrázek",
|
||||||
"onboarding.profile.upload_header": "Nahrát hlavičku profilu",
|
"onboarding.profile.upload_header": "Nahrát hlavičku profilu",
|
||||||
"onboarding.share.lead": "Dejte lidem vědět, jak vás mohou najít na Mastodonu!",
|
|
||||||
"onboarding.share.message": "Jsem {username} na #Mastodonu! Pojď mě sledovat na {url}",
|
|
||||||
"onboarding.share.next_steps": "Možné další kroky:",
|
|
||||||
"onboarding.share.title": "Sdílejte svůj profil",
|
|
||||||
"onboarding.start.lead": "Nyní jste součástí Mastodonu, unikátní sociální sítě, kde vy - ne algoritmus - vytváří vaše vlastní prožitky. Začněte na této nové sociální platformě:",
|
|
||||||
"onboarding.start.skip": "Nepotřebujete pomoci začít?",
|
|
||||||
"onboarding.start.title": "Dokázali jste to!",
|
|
||||||
"onboarding.steps.follow_people.body": "Mastodon je o sledování zajimavých lidí.",
|
|
||||||
"onboarding.steps.follow_people.title": "Přispůsobit vlastní domovský kanál",
|
|
||||||
"onboarding.steps.publish_status.body": "Řekněte světu ahoj s pomocí textem, fotografiemi, videami nebo anketami {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Vytvořte svůj první příspěvek",
|
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Přizpůsobit svůj profil",
|
|
||||||
"onboarding.steps.share_profile.body": "Dejte blízkým lidem vědět, jak vás mohou najít na Mastodonu",
|
|
||||||
"onboarding.steps.share_profile.title": "Sdílejte svůj profil",
|
|
||||||
"onboarding.tips.2fa": "<strong>Víte, že?</strong> Svůj účet můžete zabezpečit nastavením dvoufaktorového ověřování v nastavení účtu. Funguje s jakoukoli TOTP aplikací podle vašeho výběru, telefonní číslo není nutné!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Víte, že?</strong> Protože je Mastodon decentralizovaný, některé profily, na které narazíte, budou hostovány na jiných serverech, než je ten váš. A přesto s nimi můžete bezproblémově komunikovat! Jejich server se nachází v druhé polovině uživatelského jména!",
|
|
||||||
"onboarding.tips.migration": "<strong>Víte, že?</strong> Pokud máte pocit, že {domain} pro vás v budoucnu není vhodnou volbou, můžete se přesunout na jiný Mastodon server, aniž byste přišli o své sledující. Můžete dokonce hostovat svůj vlastní server!",
|
|
||||||
"onboarding.tips.verification": "<strong>Víte, že?</strong> Svůj účet můžete ověřit tak, že na své webové stránky umístíte odkaz na váš Mastodon profil a odkaz na stránku přidáte do svého profilu. Nejsou k tomu potřeba žádné poplatky ani dokumenty!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Potvrzení hesla překračuje maximální povolenou délku hesla",
|
"password_confirmation.exceeds_maxlength": "Potvrzení hesla překračuje maximální povolenou délku hesla",
|
||||||
"password_confirmation.mismatching": "Zadaná hesla se neshodují",
|
"password_confirmation.mismatching": "Zadaná hesla se neshodují",
|
||||||
"picture_in_picture.restore": "Vrátit zpět",
|
"picture_in_picture.restore": "Vrátit zpět",
|
||||||
|
@ -140,13 +140,16 @@
|
|||||||
"column.blocks": "Defnyddwyr a flociwyd",
|
"column.blocks": "Defnyddwyr a flociwyd",
|
||||||
"column.bookmarks": "Llyfrnodau",
|
"column.bookmarks": "Llyfrnodau",
|
||||||
"column.community": "Ffrwd lleol",
|
"column.community": "Ffrwd lleol",
|
||||||
|
"column.create_list": "Creu rhestr",
|
||||||
"column.direct": "Crybwylliadau preifat",
|
"column.direct": "Crybwylliadau preifat",
|
||||||
"column.directory": "Pori proffiliau",
|
"column.directory": "Pori proffiliau",
|
||||||
"column.domain_blocks": "Parthau wedi'u blocio",
|
"column.domain_blocks": "Parthau wedi'u blocio",
|
||||||
|
"column.edit_list": "Golygu rhestr",
|
||||||
"column.favourites": "Ffefrynnau",
|
"column.favourites": "Ffefrynnau",
|
||||||
"column.firehose": "Ffrydiau byw",
|
"column.firehose": "Ffrydiau byw",
|
||||||
"column.follow_requests": "Ceisiadau dilyn",
|
"column.follow_requests": "Ceisiadau dilyn",
|
||||||
"column.home": "Cartref",
|
"column.home": "Cartref",
|
||||||
|
"column.list_members": "Rheoli aelodau rhestr",
|
||||||
"column.lists": "Rhestrau",
|
"column.lists": "Rhestrau",
|
||||||
"column.mutes": "Defnyddwyr wedi'u tewi",
|
"column.mutes": "Defnyddwyr wedi'u tewi",
|
||||||
"column.notifications": "Hysbysiadau",
|
"column.notifications": "Hysbysiadau",
|
||||||
@ -159,6 +162,7 @@
|
|||||||
"column_header.pin": "Pinio",
|
"column_header.pin": "Pinio",
|
||||||
"column_header.show_settings": "Dangos gosodiadau",
|
"column_header.show_settings": "Dangos gosodiadau",
|
||||||
"column_header.unpin": "Dadbinio",
|
"column_header.unpin": "Dadbinio",
|
||||||
|
"column_search.cancel": "Diddymu",
|
||||||
"column_subheading.settings": "Gosodiadau",
|
"column_subheading.settings": "Gosodiadau",
|
||||||
"community.column_settings.local_only": "Lleol yn unig",
|
"community.column_settings.local_only": "Lleol yn unig",
|
||||||
"community.column_settings.media_only": "Cyfryngau yn unig",
|
"community.column_settings.media_only": "Cyfryngau yn unig",
|
||||||
@ -464,11 +468,32 @@
|
|||||||
"link_preview.author": "Gan {name}",
|
"link_preview.author": "Gan {name}",
|
||||||
"link_preview.more_from_author": "Mwy gan {name}",
|
"link_preview.more_from_author": "Mwy gan {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} postiad } two {{counter} bostiad } few {{counter} postiad} many {{counter} postiad} other {{counter} postiad}}",
|
"link_preview.shares": "{count, plural, one {{counter} postiad } two {{counter} bostiad } few {{counter} postiad} many {{counter} postiad} other {{counter} postiad}}",
|
||||||
|
"lists.add_member": "Ychwanegu",
|
||||||
|
"lists.add_to_list": "Ychwanegu at restr",
|
||||||
|
"lists.add_to_lists": "Ychwanegu {name} at restrau",
|
||||||
|
"lists.create": "Creu",
|
||||||
|
"lists.create_a_list_to_organize": "Creu rhestr newydd i drefnu eich llif Cartref",
|
||||||
|
"lists.create_list": "Creu rhestr",
|
||||||
"lists.delete": "Dileu rhestr",
|
"lists.delete": "Dileu rhestr",
|
||||||
|
"lists.done": "Wedi gorffen",
|
||||||
"lists.edit": "Golygu rhestr",
|
"lists.edit": "Golygu rhestr",
|
||||||
|
"lists.exclusive": "Cuddio aelodau yn y Cartref",
|
||||||
|
"lists.exclusive_hint": "Os oes rhywun ar y rhestr hon, cuddiwch nhw yn eich llif Cartref i osgoi gweld eu postiadau ddwywaith.",
|
||||||
|
"lists.find_users_to_add": "Canfod defnyddwyr i'w hychwanegu",
|
||||||
|
"lists.list_members": "Aelodau rhestr",
|
||||||
|
"lists.list_members_count": "{count, plural, one {# aelod} other {# aelod}}",
|
||||||
|
"lists.list_name": "Enw rhestr",
|
||||||
|
"lists.new_list_name": "Enw rhestr newydd",
|
||||||
|
"lists.no_lists_yet": "Dim rhestrau eto.",
|
||||||
|
"lists.no_members_yet": "Dim aelodau eto.",
|
||||||
|
"lists.no_results_found": "Heb ganfod canlyniadau.",
|
||||||
|
"lists.remove_member": "Tynnu",
|
||||||
"lists.replies_policy.followed": "Unrhyw ddefnyddiwr sy'n cael ei ddilyn",
|
"lists.replies_policy.followed": "Unrhyw ddefnyddiwr sy'n cael ei ddilyn",
|
||||||
"lists.replies_policy.list": "Aelodau'r rhestr",
|
"lists.replies_policy.list": "Aelodau'r rhestr",
|
||||||
"lists.replies_policy.none": "Neb",
|
"lists.replies_policy.none": "Neb",
|
||||||
|
"lists.save": "Cadw",
|
||||||
|
"lists.search_placeholder": "Chwiliwch am bobl rydych chi'n eu dilyn",
|
||||||
|
"lists.show_replies_to": "Cynhwyswch atebion gan aelodau'r rhestr i",
|
||||||
"load_pending": "{count, plural, one {# eitem newydd} other {# eitem newydd}}",
|
"load_pending": "{count, plural, one {# eitem newydd} other {# eitem newydd}}",
|
||||||
"loading_indicator.label": "Yn llwytho…",
|
"loading_indicator.label": "Yn llwytho…",
|
||||||
"media_gallery.hide": "Cuddio",
|
"media_gallery.hide": "Cuddio",
|
||||||
@ -625,44 +650,21 @@
|
|||||||
"notifications_permission_banner.enable": "Galluogi hysbysiadau bwrdd gwaith",
|
"notifications_permission_banner.enable": "Galluogi hysbysiadau bwrdd gwaith",
|
||||||
"notifications_permission_banner.how_to_control": "I dderbyn hysbysiadau pan nad yw Mastodon ar agor, galluogwch hysbysiadau bwrdd gwaith. Gallwch reoli'n union pa fathau o ryngweithiadau sy'n cynhyrchu hysbysiadau bwrdd gwaith trwy'r botwm {icon} uchod unwaith y byddan nhw wedi'u galluogi.",
|
"notifications_permission_banner.how_to_control": "I dderbyn hysbysiadau pan nad yw Mastodon ar agor, galluogwch hysbysiadau bwrdd gwaith. Gallwch reoli'n union pa fathau o ryngweithiadau sy'n cynhyrchu hysbysiadau bwrdd gwaith trwy'r botwm {icon} uchod unwaith y byddan nhw wedi'u galluogi.",
|
||||||
"notifications_permission_banner.title": "Peidiwch â cholli dim",
|
"notifications_permission_banner.title": "Peidiwch â cholli dim",
|
||||||
"onboarding.action.back": "Ewch â fi nôl",
|
"onboarding.follows.back": "Nôl",
|
||||||
"onboarding.actions.back": "Ewch â fi nôl",
|
"onboarding.follows.done": "Wedi gorffen",
|
||||||
"onboarding.actions.go_to_explore": "Gweld y pynciau llosg",
|
|
||||||
"onboarding.actions.go_to_home": "Ewch i'm ffrwd gartref",
|
|
||||||
"onboarding.compose.template": "Helo, #Mastodon!",
|
|
||||||
"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.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.search": "Chwilio",
|
||||||
"onboarding.follows.title": "Personolwch eich ffrwd gartref",
|
"onboarding.follows.title": "Dilynwch bobl i gychwyn arni",
|
||||||
"onboarding.profile.discoverable": "Gwnewch fy mhroffil yn un y gellir ei ddarganfod",
|
"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 threndiau, ac efallai y bydd eich proffil yn cael ei awgrymu i bobl sydd â diddordebau tebyg i chi.",
|
"onboarding.profile.discoverable_hint": "Pan fyddwch yn optio i mewn i ddarganfodadwyedd ar Mastodon, gall eich postiadau ymddangos mewn canlyniadau chwilio a threndiau, ac efallai y bydd eich proffil yn cael ei awgrymu i bobl sydd â diddordebau tebyg i chi.",
|
||||||
"onboarding.profile.display_name": "Enw dangos",
|
"onboarding.profile.display_name": "Enw dangos",
|
||||||
"onboarding.profile.display_name_hint": "Eich enw llawn neu'ch enw hwyl…",
|
"onboarding.profile.display_name_hint": "Eich enw llawn neu'ch enw hwyl…",
|
||||||
"onboarding.profile.lead": "Gallwch chi bob amser gwblhau hyn yn ddiweddarach yn y gosodiadau, lle mae hyd yn oed mwy o ddewisiadau cyfaddasu ar gael.",
|
|
||||||
"onboarding.profile.note": "Bywgraffiad",
|
"onboarding.profile.note": "Bywgraffiad",
|
||||||
"onboarding.profile.note_hint": "Gallwch @grybwyll pobl eraill neu #hashnodau…",
|
"onboarding.profile.note_hint": "Gallwch @grybwyll pobl eraill neu #hashnodau…",
|
||||||
"onboarding.profile.save_and_continue": "Cadw a pharhau",
|
"onboarding.profile.save_and_continue": "Cadw a pharhau",
|
||||||
"onboarding.profile.title": "Gosodiad proffil",
|
"onboarding.profile.title": "Gosodiad proffil",
|
||||||
"onboarding.profile.upload_avatar": "Llwytho llun proffil",
|
"onboarding.profile.upload_avatar": "Llwytho llun proffil",
|
||||||
"onboarding.profile.upload_header": "Llwytho pennyn proffil",
|
"onboarding.profile.upload_header": "Llwytho pennyn 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:",
|
|
||||||
"onboarding.share.title": "Rhannwch eich proffil",
|
|
||||||
"onboarding.start.lead": "Mae eich cyfrif Mastodon newydd yn barod! Dyma sut y gallwch chi wneud y gorau ohono:",
|
|
||||||
"onboarding.start.skip": "Eisiau mynd syth yn eich blaen?",
|
|
||||||
"onboarding.start.title": "Rydych chi wedi cyrraedd!",
|
|
||||||
"onboarding.steps.follow_people.body": "Rydych chi'n curadu eich ffrwd eich hun. Gadewch i ni ei lenwi â phobl ddiddorol.",
|
|
||||||
"onboarding.steps.follow_people.title": "Personolwch eich ffrwd gartref",
|
|
||||||
"onboarding.steps.publish_status.body": "Dywedwch helo wrth y byd gyda thestun, lluniau, fideos neu arolygon barn {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Gwnewch eich postiad cyntaf",
|
|
||||||
"onboarding.steps.setup_profile.body": "Mae eraill yn fwy tebygol o ryngweithio â chi gyda phroffil wedi'i lenwi.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Cyfaddaswch eich proffil",
|
|
||||||
"onboarding.steps.share_profile.body": "Gadewch i'ch ffrindiau wybod sut i ddod o hyd i chi ar Mastodon",
|
|
||||||
"onboarding.steps.share_profile.title": "Rhannwch eich proffil",
|
|
||||||
"onboarding.tips.2fa": "<strong>Oeddech chi'n gwybod?</strong> Gallwch ddiogelu'ch cyfrif trwy osod dilysiad dau ffactor yng ngosodiadau eich cyfrif. Mae'n gweithio gydag unrhyw app TOTP o'ch dewis, nid oes angen rhif ffôn!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Oeddech chi'n gwybod?</strong> Gan fod Mastodon wedi'i ddatganoli, bydd rhai proffiliau y dewch ar eu traws yn cael eu cynnal ar weinyddion heblaw eich un chi. Ac eto gallwch chi ryngweithio â nhw yn hawdd! Mae eu gweinydd yn ail hanner eu henw defnyddiwr!",
|
|
||||||
"onboarding.tips.migration": "<strong>Oeddech chi'n gwybod?</strong> Os ydych chi'n teimlo nad yw {domain} yn ddewis gweinydd gwych i chi i'r dyfodol, gallwch chi symud i weinydd Mastodon arall heb golli'ch dilynwyr. Gallwch chi hyd yn oed gynnal eich gweinydd eich hun!",
|
|
||||||
"onboarding.tips.verification": "<strong>Oeddech chi'n gwybod?</strong> Gallwch wirio'ch cyfrif trwy roi dolen i'ch proffil Mastodon ar eich gwefan eich hun ac ychwanegu'r wefan at eich proffil. Nid oes angen ffioedd na dogfennau!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Mae'r cadarnhad cyfrinair yn fwy nag uchafswm hyd y cyfrinair",
|
"password_confirmation.exceeds_maxlength": "Mae'r cadarnhad cyfrinair yn fwy nag uchafswm hyd y cyfrinair",
|
||||||
"password_confirmation.mismatching": "Nid yw'r cadarnhad cyfrinair yn cyfateb",
|
"password_confirmation.mismatching": "Nid yw'r cadarnhad cyfrinair yn cyfateb",
|
||||||
"picture_in_picture.restore": "Rhowch ef yn ôl",
|
"picture_in_picture.restore": "Rhowch ef yn ôl",
|
||||||
|
@ -162,6 +162,7 @@
|
|||||||
"column_header.pin": "Fastgør",
|
"column_header.pin": "Fastgør",
|
||||||
"column_header.show_settings": "Vis indstillinger",
|
"column_header.show_settings": "Vis indstillinger",
|
||||||
"column_header.unpin": "Løsgør",
|
"column_header.unpin": "Løsgør",
|
||||||
|
"column_search.cancel": "Afbryd",
|
||||||
"column_subheading.settings": "Indstillinger",
|
"column_subheading.settings": "Indstillinger",
|
||||||
"community.column_settings.local_only": "Kun lokalt",
|
"community.column_settings.local_only": "Kun lokalt",
|
||||||
"community.column_settings.media_only": "Kun medier",
|
"community.column_settings.media_only": "Kun medier",
|
||||||
@ -648,44 +649,21 @@
|
|||||||
"notifications_permission_banner.enable": "Aktivér computernotifikationer",
|
"notifications_permission_banner.enable": "Aktivér computernotifikationer",
|
||||||
"notifications_permission_banner.how_to_control": "Aktivér computernotifikationer for at få besked, når Mastodon ikke er åben. Når de er aktiveret, kan man via knappen {icon} ovenfor præcist styre, hvilke typer af interaktioner, som genererer computernotifikationer.",
|
"notifications_permission_banner.how_to_control": "Aktivér computernotifikationer for at få besked, når Mastodon ikke er åben. Når de er aktiveret, kan man via knappen {icon} ovenfor præcist styre, hvilke typer af interaktioner, som genererer computernotifikationer.",
|
||||||
"notifications_permission_banner.title": "Gå aldrig glip af noget",
|
"notifications_permission_banner.title": "Gå aldrig glip af noget",
|
||||||
"onboarding.action.back": "Gå tilbage",
|
"onboarding.follows.back": "Retur",
|
||||||
"onboarding.actions.back": "Gå tilbage",
|
"onboarding.follows.done": "Færdig",
|
||||||
"onboarding.actions.go_to_explore": "Se, hvad som trender",
|
|
||||||
"onboarding.actions.go_to_home": "Gå til hjemme-feed'et",
|
|
||||||
"onboarding.compose.template": "Hej #Mastodon!",
|
|
||||||
"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.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.search": "Søg",
|
||||||
"onboarding.follows.title": "Populært på Mastodon",
|
"onboarding.follows.title": "Følg folk for at komme i gang",
|
||||||
"onboarding.profile.discoverable": "Gør min profil synlig",
|
"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.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": "Visningsnavn",
|
||||||
"onboarding.profile.display_name_hint": "Fulde navn eller dit sjove navn…",
|
"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": "Bio",
|
||||||
"onboarding.profile.note_hint": "Man kan @omtale andre personer eller #hashtags…",
|
"onboarding.profile.note_hint": "Man kan @omtale andre personer eller #hashtags…",
|
||||||
"onboarding.profile.save_and_continue": "Gem og fortsæt",
|
"onboarding.profile.save_and_continue": "Gem og fortsæt",
|
||||||
"onboarding.profile.title": "Profilopsætning",
|
"onboarding.profile.title": "Profilopsætning",
|
||||||
"onboarding.profile.upload_avatar": "Upload profilbillede",
|
"onboarding.profile.upload_avatar": "Upload profilbillede",
|
||||||
"onboarding.profile.upload_header": "Upload profiloverskrift",
|
"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:",
|
|
||||||
"onboarding.share.title": "Del profilen",
|
|
||||||
"onboarding.start.lead": "Den nye Mastodon konto er klar til brug. Sådan kan man få mest muligt ud af den:",
|
|
||||||
"onboarding.start.skip": "Vil springe længere frem?",
|
|
||||||
"onboarding.start.title": "Du klarede det!",
|
|
||||||
"onboarding.steps.follow_people.body": "Man kurerer sit eget feed. Lad os fylde det med interessante personer.",
|
|
||||||
"onboarding.steps.follow_people.title": "Følg {count, plural, one {en person} other {# personer}}",
|
|
||||||
"onboarding.steps.publish_status.body": "Sig hej til verden med tekst, billeder, videoer eller afstemninger {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Skriv dit første indlæg",
|
|
||||||
"onboarding.steps.setup_profile.body": "Andre er mere tilbøjelige til at interagere, hvis man har udfyldt sin profil.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Tilpas profilen",
|
|
||||||
"onboarding.steps.share_profile.body": "Lad vennerne vide, hvordan de finder dig på Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Del profilen",
|
|
||||||
"onboarding.tips.2fa": "<strong>Vidste du?</strong> Man kan sikre sin konto ved at opsætte tofaktorgodkendelse i kontoindstillingerne. Det virker med enhver valgt TOTP-app, intet telefonnummer nødvendigt!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Vidste du?</strong> Da Mastodon er decentraliseret, vil nogle af de profiler, man støder på, være hostet på andre servere end ens egen. Alligevel kan man interagere med dem problemfrit! Deres servernavn udgør anden halvdel af deres brugernavn!",
|
|
||||||
"onboarding.tips.migration": "<strong>Vidste du?</strong> Synes man ikke, at {domain} er et godt servervalg fremadrettet, kan man flytte til en anden Mastodon-server uden at miste sine følgere. Man kan endda hoste sin egen server!",
|
|
||||||
"onboarding.tips.verification": "<strong>Vidste du det?</strong> Man kan bekræfte sin konto ved at placere sit Mastodon-profillink på sin egen websted og føje webstedet til sin profil. Ingen gebyrer eller dokumenter påkrævet!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Adgangskodebekræftelse overstiger maks. adgangskodelængde",
|
"password_confirmation.exceeds_maxlength": "Adgangskodebekræftelse overstiger maks. adgangskodelængde",
|
||||||
"password_confirmation.mismatching": "Adgangskodebekræftelse matcher ikke",
|
"password_confirmation.mismatching": "Adgangskodebekræftelse matcher ikke",
|
||||||
"picture_in_picture.restore": "Indsæt det igen",
|
"picture_in_picture.restore": "Indsæt det igen",
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
"account.block_domain": "{domain} sperren",
|
"account.block_domain": "{domain} sperren",
|
||||||
"account.block_short": "Blockieren",
|
"account.block_short": "Blockieren",
|
||||||
"account.blocked": "Blockiert",
|
"account.blocked": "Blockiert",
|
||||||
"account.cancel_follow_request": "Folgeanfrage zurückziehen",
|
"account.cancel_follow_request": "Follower-Anfrage zurückziehen",
|
||||||
"account.copy": "Link zum Profil kopieren",
|
"account.copy": "Link zum Profil kopieren",
|
||||||
"account.direct": "@{name} privat erwähnen",
|
"account.direct": "@{name} privat erwähnen",
|
||||||
"account.disable_notifications": "Höre auf mich zu benachrichtigen wenn @{name} etwas postet",
|
"account.disable_notifications": "Höre auf mich zu benachrichtigen wenn @{name} etwas postet",
|
||||||
@ -89,9 +89,9 @@
|
|||||||
"announcement.announcement": "Ankündigung",
|
"announcement.announcement": "Ankündigung",
|
||||||
"annual_report.summary.archetype.booster": "Trendjäger*in",
|
"annual_report.summary.archetype.booster": "Trendjäger*in",
|
||||||
"annual_report.summary.archetype.lurker": "Beobachter*in",
|
"annual_report.summary.archetype.lurker": "Beobachter*in",
|
||||||
"annual_report.summary.archetype.oracle": "Orakel",
|
"annual_report.summary.archetype.oracle": "Universaltalent",
|
||||||
"annual_report.summary.archetype.pollster": "Meinungsforscher*in",
|
"annual_report.summary.archetype.pollster": "Meinungsforscher*in",
|
||||||
"annual_report.summary.archetype.replier": "Geselliger Schmetterling",
|
"annual_report.summary.archetype.replier": "Sozialer Schmetterling",
|
||||||
"annual_report.summary.followers.followers": "Follower",
|
"annual_report.summary.followers.followers": "Follower",
|
||||||
"annual_report.summary.followers.total": "{count} insgesamt",
|
"annual_report.summary.followers.total": "{count} insgesamt",
|
||||||
"annual_report.summary.here_it_is": "Dein Jahresrückblick für {year}:",
|
"annual_report.summary.here_it_is": "Dein Jahresrückblick für {year}:",
|
||||||
@ -113,7 +113,7 @@
|
|||||||
"block_modal.show_more": "Mehr anzeigen",
|
"block_modal.show_more": "Mehr anzeigen",
|
||||||
"block_modal.they_cant_mention": "Das Profil wird dich nicht erwähnen oder dir folgen können.",
|
"block_modal.they_cant_mention": "Das Profil wird dich nicht erwähnen oder dir folgen können.",
|
||||||
"block_modal.they_cant_see_posts": "Deine Beiträge können nicht mehr angesehen werden und du wirst deren Beiträge nicht mehr sehen.",
|
"block_modal.they_cant_see_posts": "Deine Beiträge können nicht mehr angesehen werden und du wirst deren Beiträge nicht mehr sehen.",
|
||||||
"block_modal.they_will_know": "Es wird erkennbar sein, dass dieses Profil blockiert wurde.",
|
"block_modal.they_will_know": "Das Profil wird erkennen können, dass du es blockiert hast.",
|
||||||
"block_modal.title": "Profil blockieren?",
|
"block_modal.title": "Profil blockieren?",
|
||||||
"block_modal.you_wont_see_mentions": "Du wirst keine Beiträge sehen, die dieses Profil erwähnen.",
|
"block_modal.you_wont_see_mentions": "Du wirst keine Beiträge sehen, die dieses Profil erwähnen.",
|
||||||
"boost_modal.combo": "Mit {combo} erscheint dieses Fenster beim nächsten Mal nicht mehr",
|
"boost_modal.combo": "Mit {combo} erscheint dieses Fenster beim nächsten Mal nicht mehr",
|
||||||
@ -162,6 +162,7 @@
|
|||||||
"column_header.pin": "Anheften",
|
"column_header.pin": "Anheften",
|
||||||
"column_header.show_settings": "Einstellungen anzeigen",
|
"column_header.show_settings": "Einstellungen anzeigen",
|
||||||
"column_header.unpin": "Lösen",
|
"column_header.unpin": "Lösen",
|
||||||
|
"column_search.cancel": "Abbrechen",
|
||||||
"column_subheading.settings": "Einstellungen",
|
"column_subheading.settings": "Einstellungen",
|
||||||
"community.column_settings.local_only": "Nur lokal",
|
"community.column_settings.local_only": "Nur lokal",
|
||||||
"community.column_settings.media_only": "Nur Beiträge mit Medien",
|
"community.column_settings.media_only": "Nur Beiträge mit Medien",
|
||||||
@ -179,7 +180,7 @@
|
|||||||
"compose_form.placeholder": "Was gibt’s Neues?",
|
"compose_form.placeholder": "Was gibt’s Neues?",
|
||||||
"compose_form.poll.duration": "Umfragedauer",
|
"compose_form.poll.duration": "Umfragedauer",
|
||||||
"compose_form.poll.multiple": "Mehrfachauswahl",
|
"compose_form.poll.multiple": "Mehrfachauswahl",
|
||||||
"compose_form.poll.option_placeholder": "Option {number}",
|
"compose_form.poll.option_placeholder": "{number}. Auswahl",
|
||||||
"compose_form.poll.single": "Einfachauswahl",
|
"compose_form.poll.single": "Einfachauswahl",
|
||||||
"compose_form.poll.switch_to_multiple": "Mehrfachauswahl erlauben",
|
"compose_form.poll.switch_to_multiple": "Mehrfachauswahl erlauben",
|
||||||
"compose_form.poll.switch_to_single": "Nur Einfachauswahl erlauben",
|
"compose_form.poll.switch_to_single": "Nur Einfachauswahl erlauben",
|
||||||
@ -255,7 +256,7 @@
|
|||||||
"domain_pill.their_server": "Deren digitale Heimat. Hier „leben“ alle Beiträge von diesem Profil.",
|
"domain_pill.their_server": "Deren digitale Heimat. Hier „leben“ alle Beiträge von diesem Profil.",
|
||||||
"domain_pill.their_username": "Deren eindeutigen Identität auf dem betreffenden Server. Es ist möglich, Profile mit dem gleichen Profilnamen auf verschiedenen Servern zu finden.",
|
"domain_pill.their_username": "Deren eindeutigen Identität auf dem betreffenden Server. Es ist möglich, Profile mit dem gleichen Profilnamen auf verschiedenen Servern zu finden.",
|
||||||
"domain_pill.username": "Profilname",
|
"domain_pill.username": "Profilname",
|
||||||
"domain_pill.whats_in_a_handle": "Was ist Teil der Adresse?",
|
"domain_pill.whats_in_a_handle": "Woraus besteht eine Adresse?",
|
||||||
"domain_pill.who_they_are": "Adressen teilen mit, wer jemand ist und wo sich jemand aufhält. Daher kannst du mit Leuten im gesamten Social Web interagieren, wenn es eine durch <button>ActivityPub angetriebene Plattform</button> ist.",
|
"domain_pill.who_they_are": "Adressen teilen mit, wer jemand ist und wo sich jemand aufhält. Daher kannst du mit Leuten im gesamten Social Web interagieren, wenn es eine durch <button>ActivityPub angetriebene Plattform</button> ist.",
|
||||||
"domain_pill.who_you_are": "Deine Adresse teilt mit, wer du bist und wo du dich aufhältst. Daher können andere Leute im gesamten Social Web mit dir interagieren, wenn es eine durch <button>ActivityPub angetriebene Plattform</button> ist.",
|
"domain_pill.who_you_are": "Deine Adresse teilt mit, wer du bist und wo du dich aufhältst. Daher können andere Leute im gesamten Social Web mit dir interagieren, wenn es eine durch <button>ActivityPub angetriebene Plattform</button> ist.",
|
||||||
"domain_pill.your_handle": "Deine Adresse:",
|
"domain_pill.your_handle": "Deine Adresse:",
|
||||||
@ -330,9 +331,9 @@
|
|||||||
"filter_warning.matches_filter": "Übereinstimmend mit dem Filter „<span>{title}</span>“",
|
"filter_warning.matches_filter": "Übereinstimmend mit dem Filter „<span>{title}</span>“",
|
||||||
"filtered_notifications_banner.pending_requests": "Von {count, plural, =0 {keinem, den} one {einer Person, die} other {# Personen, die}} du möglicherweise kennst",
|
"filtered_notifications_banner.pending_requests": "Von {count, plural, =0 {keinem, den} one {einer Person, die} other {# Personen, die}} du möglicherweise kennst",
|
||||||
"filtered_notifications_banner.title": "Gefilterte Benachrichtigungen",
|
"filtered_notifications_banner.title": "Gefilterte Benachrichtigungen",
|
||||||
"firehose.all": "Alles",
|
"firehose.all": "Alle Server",
|
||||||
"firehose.local": "Dieser Server",
|
"firehose.local": "Dieser Server",
|
||||||
"firehose.remote": "Andere Server",
|
"firehose.remote": "Externe Server",
|
||||||
"follow_request.authorize": "Genehmigen",
|
"follow_request.authorize": "Genehmigen",
|
||||||
"follow_request.reject": "Ablehnen",
|
"follow_request.reject": "Ablehnen",
|
||||||
"follow_requests.unlocked_explanation": "Auch wenn dein Konto öffentlich bzw. nicht geschützt ist, haben die Moderator*innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.",
|
"follow_requests.unlocked_explanation": "Auch wenn dein Konto öffentlich bzw. nicht geschützt ist, haben die Moderator*innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.",
|
||||||
@ -492,7 +493,7 @@
|
|||||||
"lists.replies_policy.none": "Niemanden",
|
"lists.replies_policy.none": "Niemanden",
|
||||||
"lists.save": "Speichern",
|
"lists.save": "Speichern",
|
||||||
"lists.search_placeholder": "Nach Profilen suchen, denen du folgst",
|
"lists.search_placeholder": "Nach Profilen suchen, denen du folgst",
|
||||||
"lists.show_replies_to": "Antworten von Listenmitgliedern anzeigen für …",
|
"lists.show_replies_to": "Antworten von Listenmitgliedern einbeziehen für …",
|
||||||
"load_pending": "{count, plural, one {# neuer Beitrag} other {# neue Beiträge}}",
|
"load_pending": "{count, plural, one {# neuer Beitrag} other {# neue Beiträge}}",
|
||||||
"loading_indicator.label": "Wird geladen …",
|
"loading_indicator.label": "Wird geladen …",
|
||||||
"media_gallery.hide": "Ausblenden",
|
"media_gallery.hide": "Ausblenden",
|
||||||
@ -541,7 +542,7 @@
|
|||||||
"notification.admin.report_statuses_other": "{name} meldete {target}",
|
"notification.admin.report_statuses_other": "{name} meldete {target}",
|
||||||
"notification.admin.sign_up": "{name} registrierte sich",
|
"notification.admin.sign_up": "{name} registrierte sich",
|
||||||
"notification.admin.sign_up.name_and_others": "{name} und {count, plural, one {# weiteres Profil} other {# weitere Profile}} registrierten sich",
|
"notification.admin.sign_up.name_and_others": "{name} und {count, plural, one {# weiteres Profil} other {# weitere Profile}} registrierten sich",
|
||||||
"notification.annual_report.message": "Dein {year} #Wrapstodon erwartet dich! Lass deine Highlights und unvergesslichen Momente auf Mastodon erneut aufleben!",
|
"notification.annual_report.message": "Dein #Wrapstodon für {year} erwartet dich! Lass deine Highlights und unvergesslichen Momente auf Mastodon erneut aufleben!",
|
||||||
"notification.annual_report.view": "#Wrapstodon ansehen",
|
"notification.annual_report.view": "#Wrapstodon ansehen",
|
||||||
"notification.favourite": "{name} favorisierte deinen Beitrag",
|
"notification.favourite": "{name} favorisierte deinen Beitrag",
|
||||||
"notification.favourite.name_and_others_with_link": "{name} und <a>{count, plural, one {# weiteres Profil} other {# weitere Profile}}</a> favorisierten deinen Beitrag",
|
"notification.favourite.name_and_others_with_link": "{name} und <a>{count, plural, one {# weiteres Profil} other {# weitere Profile}}</a> favorisierten deinen Beitrag",
|
||||||
@ -649,44 +650,21 @@
|
|||||||
"notifications_permission_banner.enable": "Aktiviere Desktop-Benachrichtigungen",
|
"notifications_permission_banner.enable": "Aktiviere Desktop-Benachrichtigungen",
|
||||||
"notifications_permission_banner.how_to_control": "Um Benachrichtigungen zu erhalten, wenn Mastodon nicht geöffnet ist, aktiviere die Desktop-Benachrichtigungen. Du kannst genau bestimmen, welche Arten von Interaktionen Desktop-Benachrichtigungen über die {icon} -Taste erzeugen, sobald diese aktiviert sind.",
|
"notifications_permission_banner.how_to_control": "Um Benachrichtigungen zu erhalten, wenn Mastodon nicht geöffnet ist, aktiviere die Desktop-Benachrichtigungen. Du kannst genau bestimmen, welche Arten von Interaktionen Desktop-Benachrichtigungen über die {icon} -Taste erzeugen, sobald diese aktiviert sind.",
|
||||||
"notifications_permission_banner.title": "Nichts verpassen",
|
"notifications_permission_banner.title": "Nichts verpassen",
|
||||||
"onboarding.action.back": "Bring mich zurück",
|
"onboarding.follows.back": "Zurück",
|
||||||
"onboarding.actions.back": "Bring mich zurück",
|
"onboarding.follows.done": "Fertig",
|
||||||
"onboarding.actions.go_to_explore": "Zeig mir die Trends",
|
|
||||||
"onboarding.actions.go_to_home": "Bring mich zu meiner Startseite",
|
|
||||||
"onboarding.compose.template": "Hallo #Mastodon!",
|
|
||||||
"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.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.search": "Suchen",
|
||||||
"onboarding.follows.title": "Personalisiere deine Startseite",
|
"onboarding.follows.title": "Folge Profilen, um loszulegen",
|
||||||
"onboarding.profile.discoverable": "Mein Profil darf entdeckt werden",
|
"onboarding.profile.discoverable": "Mein Profil darf entdeckt werden",
|
||||||
"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.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": "Anzeigename",
|
||||||
"onboarding.profile.display_name_hint": "Dein richtiger Name oder dein Fantasiename …",
|
"onboarding.profile.display_name_hint": "Dein richtiger Name oder dein Fantasiename …",
|
||||||
"onboarding.profile.lead": "Du kannst dein Profil später in den Einstellungen vervollständigen. Dort stehen weitere Anpassungsmöglichkeiten zur Verfügung.",
|
|
||||||
"onboarding.profile.note": "Über mich",
|
"onboarding.profile.note": "Über mich",
|
||||||
"onboarding.profile.note_hint": "Du kannst andere @Profile erwähnen oder #Hashtags verwenden …",
|
"onboarding.profile.note_hint": "Du kannst andere @Profile erwähnen oder #Hashtags verwenden …",
|
||||||
"onboarding.profile.save_and_continue": "Speichern und fortfahren",
|
"onboarding.profile.save_and_continue": "Speichern und fortfahren",
|
||||||
"onboarding.profile.title": "Profil einrichten",
|
"onboarding.profile.title": "Profil einrichten",
|
||||||
"onboarding.profile.upload_avatar": "Profilbild hochladen",
|
"onboarding.profile.upload_avatar": "Profilbild hochladen",
|
||||||
"onboarding.profile.upload_header": "Titelbild 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:",
|
|
||||||
"onboarding.share.title": "Teile dein Profil",
|
|
||||||
"onboarding.start.lead": "Du bist nun ein Teil von Mastodon – eine einzigartige, dezentralisierte Social-Media-Plattform, bei der du und kein Algorithmus deine eigene Erfahrung gestaltest. Fangen wir an, diese neue soziale Dimension zu erkunden:",
|
|
||||||
"onboarding.start.skip": "Du benötigst keine Hilfe für den Einstieg?",
|
|
||||||
"onboarding.start.title": "Du hast es geschafft!",
|
|
||||||
"onboarding.steps.follow_people.body": "Interessanten Profilen zu folgen ist das, was Mastodon ausmacht.",
|
|
||||||
"onboarding.steps.follow_people.title": "Personalisiere deine Startseite",
|
|
||||||
"onboarding.steps.publish_status.body": "Begrüße die Welt mit Text, Fotos, Videos oder Umfragen. {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Erstelle deinen ersten Beitrag",
|
|
||||||
"onboarding.steps.setup_profile.body": "Mit einem vollständigen Profil interagieren andere eher mit dir.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Personalisiere dein Profil",
|
|
||||||
"onboarding.steps.share_profile.body": "Lass deine Freund*innen wissen, wie sie dich auf Mastodon finden können.",
|
|
||||||
"onboarding.steps.share_profile.title": "Teile dein Mastodon-Profil",
|
|
||||||
"onboarding.tips.2fa": "<strong>Wusstest du schon?</strong> Du kannst die Sicherheit deines Kontos erhöhen, indem du die Zwei-Faktor-Authentisierung in deinen Kontoeinstellungen aktivierst. Dafür ist keine Telefonnummer notwendig und es funktioniert jede beliebige TOTP-App!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Wusstest du schon?</strong> Da Mastodon dezentralisiert ist, werden einige Profile, denen du begegnest, auf anderen Servern als deinem bereitgestellt. Und trotzdem kannst du uneingeschränkt mit ihnen interagieren! Der Servername befindet sich in der zweiten Hälfte ihres Profilnamens!",
|
|
||||||
"onboarding.tips.migration": "<strong>Wusstest du schon?</strong> Wenn du das Gefühl hast, dass {domain} in Zukunft nicht die richtige Serverwahl für dich ist, kannst du auf einen anderen Mastodon-Server umziehen, ohne deine Follower zu verlieren. Du kannst sogar deinen eigenen Server betreiben!",
|
|
||||||
"onboarding.tips.verification": "<strong>Wusstest du schon?</strong> Du kannst dein Konto verifizieren, indem du auf deiner Website auf dein Mastodon-Profil verlinkst und den Link deiner Website zu deinem Profil hinzufügst. Völlig kostenlos und ohne Dokumente einsenden zu müssen!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Passwortbestätigung überschreitet die maximal erlaubte Zeichenanzahl",
|
"password_confirmation.exceeds_maxlength": "Passwortbestätigung überschreitet die maximal erlaubte Zeichenanzahl",
|
||||||
"password_confirmation.mismatching": "Passwortbestätigung stimmt nicht überein",
|
"password_confirmation.mismatching": "Passwortbestätigung stimmt nicht überein",
|
||||||
"picture_in_picture.restore": "Zurücksetzen",
|
"picture_in_picture.restore": "Zurücksetzen",
|
||||||
|
@ -624,44 +624,17 @@
|
|||||||
"notifications_permission_banner.enable": "Ενεργοποίηση ειδοποιήσεων επιφάνειας εργασίας",
|
"notifications_permission_banner.enable": "Ενεργοποίηση ειδοποιήσεων επιφάνειας εργασίας",
|
||||||
"notifications_permission_banner.how_to_control": "Για να λαμβάνεις ειδοποιήσεις όταν το Mastodon δεν είναι ανοιχτό, ενεργοποίησε τις ειδοποιήσεις επιφάνειας εργασίας. Μπορείς να ελέγξεις με ακρίβεια ποιοι τύποι αλληλεπιδράσεων δημιουργούν ειδοποιήσεις επιφάνειας εργασίας μέσω του κουμπιού {icon} μόλις ενεργοποιηθούν.",
|
"notifications_permission_banner.how_to_control": "Για να λαμβάνεις ειδοποιήσεις όταν το Mastodon δεν είναι ανοιχτό, ενεργοποίησε τις ειδοποιήσεις επιφάνειας εργασίας. Μπορείς να ελέγξεις με ακρίβεια ποιοι τύποι αλληλεπιδράσεων δημιουργούν ειδοποιήσεις επιφάνειας εργασίας μέσω του κουμπιού {icon} μόλις ενεργοποιηθούν.",
|
||||||
"notifications_permission_banner.title": "Μη χάσεις στιγμή",
|
"notifications_permission_banner.title": "Μη χάσεις στιγμή",
|
||||||
"onboarding.action.back": "Επιστροφή",
|
|
||||||
"onboarding.actions.back": "Επιστροφή",
|
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Πηγαίνετε στην αρχική σας ροή",
|
|
||||||
"onboarding.compose.template": "Γειά σου #Mastodon!",
|
|
||||||
"onboarding.follows.empty": "Δυστυχώς, δεν μπορούν να εμφανιστούν αποτελέσματα αυτή τη στιγμή. Μπορείς να προσπαθήσεις να χρησιμοποιήσεις την αναζήτηση ή να περιηγηθείς στη σελίδα εξερεύνησης για να βρεις άτομα να ακολουθήσεις ή να δοκιμάσεις ξανά αργότερα.",
|
"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": "Δημοφιλή στο Mastodon",
|
|
||||||
"onboarding.profile.discoverable": "Κάνε το προφίλ μου ανακαλύψιμο",
|
"onboarding.profile.discoverable": "Κάνε το προφίλ μου ανακαλύψιμο",
|
||||||
"onboarding.profile.discoverable_hint": "Όταν επιλέγεις την δυνατότητα ανακάλυψης στο Mastodon, οι αναρτήσεις σου μπορεί να εμφανιστούν στα αποτελέσματα αναζήτησης και τις τάσεις, και το προφίλ σου μπορεί να προτείνεται σε άτομα με παρόμοια ενδιαφέροντα με εσένα.",
|
"onboarding.profile.discoverable_hint": "Όταν επιλέγεις την δυνατότητα ανακάλυψης στο Mastodon, οι αναρτήσεις σου μπορεί να εμφανιστούν στα αποτελέσματα αναζήτησης και τις τάσεις, και το προφίλ σου μπορεί να προτείνεται σε άτομα με παρόμοια ενδιαφέροντα με εσένα.",
|
||||||
"onboarding.profile.display_name": "Εμφανιζόμενο όνομα",
|
"onboarding.profile.display_name": "Εμφανιζόμενο όνομα",
|
||||||
"onboarding.profile.display_name_hint": "Το πλήρες ή το διασκεδαστικό σου όνομα…",
|
"onboarding.profile.display_name_hint": "Το πλήρες ή το διασκεδαστικό σου όνομα…",
|
||||||
"onboarding.profile.lead": "Μπορείς πάντα να το ολοκληρώσεις αργότερα στις ρυθμίσεις, όπου είναι διαθέσιμες ακόμα περισσότερες επιλογές προσαρμογής.",
|
|
||||||
"onboarding.profile.note": "Βιογραφικό",
|
"onboarding.profile.note": "Βιογραφικό",
|
||||||
"onboarding.profile.note_hint": "Μπορείτε να @αναφέρετε άλλα άτομα ή #hashtags…",
|
"onboarding.profile.note_hint": "Μπορείτε να @αναφέρετε άλλα άτομα ή #hashtags…",
|
||||||
"onboarding.profile.save_and_continue": "Αποθήκευση και συνέχεια",
|
"onboarding.profile.save_and_continue": "Αποθήκευση και συνέχεια",
|
||||||
"onboarding.profile.title": "Ρύθμιση προφίλ",
|
"onboarding.profile.title": "Ρύθμιση προφίλ",
|
||||||
"onboarding.profile.upload_avatar": "Μεταφόρτωση εικόνας προφίλ",
|
"onboarding.profile.upload_avatar": "Μεταφόρτωση εικόνας προφίλ",
|
||||||
"onboarding.profile.upload_header": "Μεταφόρτωση κεφαλίδας προφίλ",
|
"onboarding.profile.upload_header": "Μεταφόρτωση κεφαλίδας προφίλ",
|
||||||
"onboarding.share.lead": "Let people know how they can find you on Mastodon!\nΕνημερώστε άλλα άτομα πώς μπορούν να σας βρουν στο Mastodon!",
|
|
||||||
"onboarding.share.message": "Με λένε {username} στο #Mastodon! Έλα να με ακολουθήσεις στο {url}",
|
|
||||||
"onboarding.share.next_steps": "Πιθανά επόμενα βήματα:",
|
|
||||||
"onboarding.share.title": "Κοινοποίηση του προφίλ σου",
|
|
||||||
"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.",
|
|
||||||
"onboarding.steps.publish_status.title": "Κάντε την πρώτη σας δημοσίευση",
|
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"onboarding.tips.2fa": "<strong>Το ήξερες;</strong> Μπορείς να ασφαλίσεις το λογαριασμό σου ρυθμίζοντας ταυτότητα δύο παραγόντων στις ρυθμίσεις του λογαριασμού σου. Λειτουργεί με οποιαδήποτε εφαρμογή TOTP της επιλογής σας, δεν απαιτείται αριθμός τηλεφώνου!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Το ήξερες;</strong> Από τη στιγμή που το Mastodon είναι αποκεντρωμένο, κάποια προφίλ που συναντάς θα φιλοξενούνται σε διακομιστές διαφορετικούς από τον δικό σου. Και παρόλα αυτά μπορείς να αλληλεπιδράσεις μαζί τους απρόσκοπτα! Ο διακομιστής τους είναι στο δεύτερο μισό του ονόματος χρήστη!",
|
|
||||||
"onboarding.tips.migration": "<strong>Το ήξερες;</strong> Αν αισθάνεσαι ότι το {domain} δεν είναι η κατάλληλη επιλογή διακομιστή για σένα στο μέλλον, μπορείς να μετακινηθείς σε άλλο διακομιστή Mastodon χωρίς να χάσεις τους ακόλουθούς σου. Μπορείς να κάνεις ακόμα και τον δικό σου διακομιστή!",
|
|
||||||
"onboarding.tips.verification": "<strong>Το ήξερες;</strong> Μπορείς να επαληθεύσεις τον λογαριασμό σου βάζοντας έναν σύνδεσμο του προφίλ σου στο Mastodon στην ιστοσελίδα σου και να προσθέσεις την ιστοσελίδα στο προφίλ σου. Χωρίς έξοδα ή έγγραφα!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Η επιβεβαίωση κωδικού πρόσβασης υπερβαίνει το μέγιστο μήκος κωδικού πρόσβασης",
|
"password_confirmation.exceeds_maxlength": "Η επιβεβαίωση κωδικού πρόσβασης υπερβαίνει το μέγιστο μήκος κωδικού πρόσβασης",
|
||||||
"password_confirmation.mismatching": "Η επιβεβαίωση του κωδικού πρόσβασης δε συμπίπτει",
|
"password_confirmation.mismatching": "Η επιβεβαίωση του κωδικού πρόσβασης δε συμπίπτει",
|
||||||
"picture_in_picture.restore": "Βάλε το πίσω",
|
"picture_in_picture.restore": "Βάλε το πίσω",
|
||||||
|
@ -140,13 +140,16 @@
|
|||||||
"column.blocks": "Blocked users",
|
"column.blocks": "Blocked users",
|
||||||
"column.bookmarks": "Bookmarks",
|
"column.bookmarks": "Bookmarks",
|
||||||
"column.community": "Local timeline",
|
"column.community": "Local timeline",
|
||||||
|
"column.create_list": "Create list",
|
||||||
"column.direct": "Private mentions",
|
"column.direct": "Private mentions",
|
||||||
"column.directory": "Browse profiles",
|
"column.directory": "Browse profiles",
|
||||||
"column.domain_blocks": "Blocked domains",
|
"column.domain_blocks": "Blocked domains",
|
||||||
|
"column.edit_list": "Edit list",
|
||||||
"column.favourites": "Favourites",
|
"column.favourites": "Favourites",
|
||||||
"column.firehose": "Live feeds",
|
"column.firehose": "Live feeds",
|
||||||
"column.follow_requests": "Follow requests",
|
"column.follow_requests": "Follow requests",
|
||||||
"column.home": "Home",
|
"column.home": "Home",
|
||||||
|
"column.list_members": "Manage list members",
|
||||||
"column.lists": "Lists",
|
"column.lists": "Lists",
|
||||||
"column.mutes": "Muted users",
|
"column.mutes": "Muted users",
|
||||||
"column.notifications": "Notifications",
|
"column.notifications": "Notifications",
|
||||||
@ -159,6 +162,7 @@
|
|||||||
"column_header.pin": "Pin",
|
"column_header.pin": "Pin",
|
||||||
"column_header.show_settings": "Show settings",
|
"column_header.show_settings": "Show settings",
|
||||||
"column_header.unpin": "Unpin",
|
"column_header.unpin": "Unpin",
|
||||||
|
"column_search.cancel": "Cancel",
|
||||||
"column_subheading.settings": "Settings",
|
"column_subheading.settings": "Settings",
|
||||||
"community.column_settings.local_only": "Local only",
|
"community.column_settings.local_only": "Local only",
|
||||||
"community.column_settings.media_only": "Media Only",
|
"community.column_settings.media_only": "Media Only",
|
||||||
@ -464,11 +468,32 @@
|
|||||||
"link_preview.author": "By {name}",
|
"link_preview.author": "By {name}",
|
||||||
"link_preview.more_from_author": "More from {name}",
|
"link_preview.more_from_author": "More from {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} post} other {{counter} posts}}",
|
"link_preview.shares": "{count, plural, one {{counter} post} other {{counter} posts}}",
|
||||||
|
"lists.add_member": "Add",
|
||||||
|
"lists.add_to_list": "Add to list",
|
||||||
|
"lists.add_to_lists": "Add {name} to lists",
|
||||||
|
"lists.create": "Create",
|
||||||
|
"lists.create_a_list_to_organize": "Create a new list to organise your Home feed",
|
||||||
|
"lists.create_list": "Create list",
|
||||||
"lists.delete": "Delete list",
|
"lists.delete": "Delete list",
|
||||||
|
"lists.done": "Done",
|
||||||
"lists.edit": "Edit list",
|
"lists.edit": "Edit list",
|
||||||
|
"lists.exclusive": "Hide members in Home",
|
||||||
|
"lists.exclusive_hint": "If someone is on this list, hide them in your Home feed to avoid seeing their posts twice.",
|
||||||
|
"lists.find_users_to_add": "Find users to add",
|
||||||
|
"lists.list_members": "List members",
|
||||||
|
"lists.list_members_count": "{count, plural, one {# member} other {# members}}",
|
||||||
|
"lists.list_name": "List name",
|
||||||
|
"lists.new_list_name": "New list name",
|
||||||
|
"lists.no_lists_yet": "No lists yet.",
|
||||||
|
"lists.no_members_yet": "No members yet.",
|
||||||
|
"lists.no_results_found": "No results found.",
|
||||||
|
"lists.remove_member": "Remove",
|
||||||
"lists.replies_policy.followed": "Any followed user",
|
"lists.replies_policy.followed": "Any followed user",
|
||||||
"lists.replies_policy.list": "Members of the list",
|
"lists.replies_policy.list": "Members of the list",
|
||||||
"lists.replies_policy.none": "No one",
|
"lists.replies_policy.none": "No one",
|
||||||
|
"lists.save": "Save",
|
||||||
|
"lists.search_placeholder": "Search people you follow",
|
||||||
|
"lists.show_replies_to": "Include replies from list members to",
|
||||||
"load_pending": "{count, plural, one {# new item} other {# new items}}",
|
"load_pending": "{count, plural, one {# new item} other {# new items}}",
|
||||||
"loading_indicator.label": "Loading…",
|
"loading_indicator.label": "Loading…",
|
||||||
"media_gallery.hide": "Hide",
|
"media_gallery.hide": "Hide",
|
||||||
@ -518,6 +543,7 @@
|
|||||||
"notification.admin.sign_up": "{name} signed up",
|
"notification.admin.sign_up": "{name} signed up",
|
||||||
"notification.admin.sign_up.name_and_others": "{name} and {count, plural, one {# other} other {# others}} signed up",
|
"notification.admin.sign_up.name_and_others": "{name} and {count, plural, one {# other} other {# others}} signed up",
|
||||||
"notification.annual_report.message": "Your {year} #Wrapstodon awaits! Unveil your year's highlights and memorable moments on Mastodon!",
|
"notification.annual_report.message": "Your {year} #Wrapstodon awaits! Unveil your year's highlights and memorable moments on Mastodon!",
|
||||||
|
"notification.annual_report.view": "View #Wrapstodon",
|
||||||
"notification.favourite": "{name} favourited your post",
|
"notification.favourite": "{name} favourited your post",
|
||||||
"notification.favourite.name_and_others_with_link": "{name} and <a>{count, plural, one {# other} other {# others}}</a> favourited your post",
|
"notification.favourite.name_and_others_with_link": "{name} and <a>{count, plural, one {# other} other {# others}}</a> favourited your post",
|
||||||
"notification.follow": "{name} followed you",
|
"notification.follow": "{name} followed you",
|
||||||
@ -624,44 +650,21 @@
|
|||||||
"notifications_permission_banner.enable": "Enable desktop notifications",
|
"notifications_permission_banner.enable": "Enable desktop notifications",
|
||||||
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
|
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
|
||||||
"notifications_permission_banner.title": "Never miss a thing",
|
"notifications_permission_banner.title": "Never miss a thing",
|
||||||
"onboarding.action.back": "Take me back",
|
"onboarding.follows.back": "Back",
|
||||||
"onboarding.actions.back": "Take me back",
|
"onboarding.follows.done": "Done",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Take me to my home feed",
|
|
||||||
"onboarding.compose.template": "Hello #Mastodon!",
|
|
||||||
"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.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.search": "Search",
|
||||||
"onboarding.follows.title": "Personalize your home feed",
|
"onboarding.follows.title": "Follow people to get started",
|
||||||
"onboarding.profile.discoverable": "Make my profile discoverable",
|
"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.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": "Display name",
|
||||||
"onboarding.profile.display_name_hint": "Your full name or your fun 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": "Bio",
|
||||||
"onboarding.profile.note_hint": "You can @mention other people or #hashtags…",
|
"onboarding.profile.note_hint": "You can @mention other people or #hashtags…",
|
||||||
"onboarding.profile.save_and_continue": "Save and continue",
|
"onboarding.profile.save_and_continue": "Save and continue",
|
||||||
"onboarding.profile.title": "Profile setup",
|
"onboarding.profile.title": "Profile setup",
|
||||||
"onboarding.profile.upload_avatar": "Upload profile picture",
|
"onboarding.profile.upload_avatar": "Upload profile picture",
|
||||||
"onboarding.profile.upload_header": "Upload profile header",
|
"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:",
|
|
||||||
"onboarding.share.title": "Share your profile",
|
|
||||||
"onboarding.start.lead": "You're now part of Mastodon, a unique, decentralized social media platform where you—not an algorithm—curate your own experience. Let's get you started on this new social frontier:",
|
|
||||||
"onboarding.start.skip": "Don't need help getting started?",
|
|
||||||
"onboarding.start.title": "You've made it!",
|
|
||||||
"onboarding.steps.follow_people.body": "Following interesting people is what Mastodon is all about.",
|
|
||||||
"onboarding.steps.follow_people.title": "Personalize your home feed",
|
|
||||||
"onboarding.steps.publish_status.body": "Say hello to the world with text, photos, videos, or polls {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Make your first post",
|
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customise your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your Mastodon profile",
|
|
||||||
"onboarding.tips.2fa": "<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!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Did you know?</strong> Since Mastodon is decentralised, 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!",
|
|
||||||
"onboarding.tips.migration": "<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!",
|
|
||||||
"onboarding.tips.verification": "<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!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
|
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
|
||||||
"password_confirmation.mismatching": "Password confirmation does not match",
|
"password_confirmation.mismatching": "Password confirmation does not match",
|
||||||
"picture_in_picture.restore": "Put it back",
|
"picture_in_picture.restore": "Put it back",
|
||||||
|
@ -129,7 +129,7 @@
|
|||||||
"bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?",
|
"bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?",
|
||||||
"bundle_column_error.routing.title": "404",
|
"bundle_column_error.routing.title": "404",
|
||||||
"bundle_modal_error.close": "Close",
|
"bundle_modal_error.close": "Close",
|
||||||
"bundle_modal_error.message": "Something went wrong while loading this component.",
|
"bundle_modal_error.message": "Something went wrong while loading this screen.",
|
||||||
"bundle_modal_error.retry": "Try again",
|
"bundle_modal_error.retry": "Try again",
|
||||||
"closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.",
|
"closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.",
|
||||||
"closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.",
|
"closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.",
|
||||||
@ -162,6 +162,7 @@
|
|||||||
"column_header.pin": "Pin",
|
"column_header.pin": "Pin",
|
||||||
"column_header.show_settings": "Show settings",
|
"column_header.show_settings": "Show settings",
|
||||||
"column_header.unpin": "Unpin",
|
"column_header.unpin": "Unpin",
|
||||||
|
"column_search.cancel": "Cancel",
|
||||||
"column_subheading.settings": "Settings",
|
"column_subheading.settings": "Settings",
|
||||||
"community.column_settings.local_only": "Local only",
|
"community.column_settings.local_only": "Local only",
|
||||||
"community.column_settings.media_only": "Media Only",
|
"community.column_settings.media_only": "Media Only",
|
||||||
@ -235,10 +236,10 @@
|
|||||||
"disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
|
"disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
|
||||||
"dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
|
"dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
|
||||||
"dismissable_banner.dismiss": "Dismiss",
|
"dismissable_banner.dismiss": "Dismiss",
|
||||||
"dismissable_banner.explore_links": "These are news stories being shared the most on the social web today. Newer news stories posted by more different people are ranked higher.",
|
"dismissable_banner.explore_links": "These news stories are being shared the most on the fediverse today. Newer news stories posted by more different people are ranked higher.",
|
||||||
"dismissable_banner.explore_statuses": "These are posts from across the social web that are gaining traction today. Newer posts with more boosts and favorites are ranked higher.",
|
"dismissable_banner.explore_statuses": "These posts from across the fediverse are gaining traction today. Newer posts with more boosts and favorites are ranked higher.",
|
||||||
"dismissable_banner.explore_tags": "These are hashtags that are gaining traction on the social web today. Hashtags that are used by more different people are ranked higher.",
|
"dismissable_banner.explore_tags": "These hashtags are gaining traction on the fediverse today. Hashtags that are used by more different people are ranked higher.",
|
||||||
"dismissable_banner.public_timeline": "These are the most recent public posts from people on the social web that people on {domain} follow.",
|
"dismissable_banner.public_timeline": "These are the most recent public posts from people on the fediverse that people on {domain} follow.",
|
||||||
"domain_block_modal.block": "Block server",
|
"domain_block_modal.block": "Block server",
|
||||||
"domain_block_modal.block_account_instead": "Block @{name} instead",
|
"domain_block_modal.block_account_instead": "Block @{name} instead",
|
||||||
"domain_block_modal.they_can_interact_with_old_posts": "People from this server can interact with your old posts.",
|
"domain_block_modal.they_can_interact_with_old_posts": "People from this server can interact with your old posts.",
|
||||||
@ -362,6 +363,7 @@
|
|||||||
"footer.status": "Status",
|
"footer.status": "Status",
|
||||||
"generic.saved": "Saved",
|
"generic.saved": "Saved",
|
||||||
"getting_started.heading": "Getting started",
|
"getting_started.heading": "Getting started",
|
||||||
|
"hashtag.admin_moderation": "Open moderation interface for #{name}",
|
||||||
"hashtag.column_header.tag_mode.all": "and {additional}",
|
"hashtag.column_header.tag_mode.all": "and {additional}",
|
||||||
"hashtag.column_header.tag_mode.any": "or {additional}",
|
"hashtag.column_header.tag_mode.any": "or {additional}",
|
||||||
"hashtag.column_header.tag_mode.none": "without {additional}",
|
"hashtag.column_header.tag_mode.none": "without {additional}",
|
||||||
@ -649,44 +651,21 @@
|
|||||||
"notifications_permission_banner.enable": "Enable desktop notifications",
|
"notifications_permission_banner.enable": "Enable desktop notifications",
|
||||||
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
|
"notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
|
||||||
"notifications_permission_banner.title": "Never miss a thing",
|
"notifications_permission_banner.title": "Never miss a thing",
|
||||||
"onboarding.action.back": "Take me back",
|
"onboarding.follows.back": "Back",
|
||||||
"onboarding.actions.back": "Take me back",
|
"onboarding.follows.done": "Done",
|
||||||
"onboarding.actions.go_to_explore": "Take me to trending",
|
|
||||||
"onboarding.actions.go_to_home": "Take me to my home feed",
|
|
||||||
"onboarding.compose.template": "Hello #Mastodon!",
|
|
||||||
"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.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.search": "Search",
|
||||||
"onboarding.follows.title": "Personalize your home feed",
|
"onboarding.follows.title": "Follow people to get started",
|
||||||
"onboarding.profile.discoverable": "Make my profile discoverable",
|
"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.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": "Display name",
|
||||||
"onboarding.profile.display_name_hint": "Your full name or your fun 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": "Bio",
|
||||||
"onboarding.profile.note_hint": "You can @mention other people or #hashtags…",
|
"onboarding.profile.note_hint": "You can @mention other people or #hashtags…",
|
||||||
"onboarding.profile.save_and_continue": "Save and continue",
|
"onboarding.profile.save_and_continue": "Save and continue",
|
||||||
"onboarding.profile.title": "Profile setup",
|
"onboarding.profile.title": "Profile setup",
|
||||||
"onboarding.profile.upload_avatar": "Upload profile picture",
|
"onboarding.profile.upload_avatar": "Upload profile picture",
|
||||||
"onboarding.profile.upload_header": "Upload profile header",
|
"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:",
|
|
||||||
"onboarding.share.title": "Share your profile",
|
|
||||||
"onboarding.start.lead": "You're now part of Mastodon, a unique, decentralized social media platform where you—not an algorithm—curate your own experience. Let's get you started on this new social frontier:",
|
|
||||||
"onboarding.start.skip": "Don't need help getting started?",
|
|
||||||
"onboarding.start.title": "You've made it!",
|
|
||||||
"onboarding.steps.follow_people.body": "Following interesting people is what Mastodon is all about.",
|
|
||||||
"onboarding.steps.follow_people.title": "Personalize your home feed",
|
|
||||||
"onboarding.steps.publish_status.body": "Say hello to the world with text, photos, videos, or polls {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Make your first post",
|
|
||||||
"onboarding.steps.setup_profile.body": "Boost your interactions by having a comprehensive profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Personalize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your Mastodon profile",
|
|
||||||
"onboarding.tips.2fa": "<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!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Did you know?</strong> Since Mastodon is decentralized, some profiles you come across will be hosted on servers other than yours. And yet you can interact with them seamlessly! Their server is in the second half of their username!",
|
|
||||||
"onboarding.tips.migration": "<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!",
|
|
||||||
"onboarding.tips.verification": "<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!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
|
"password_confirmation.exceeds_maxlength": "Password confirmation exceeds the maximum password length",
|
||||||
"password_confirmation.mismatching": "Password confirmation does not match",
|
"password_confirmation.mismatching": "Password confirmation does not match",
|
||||||
"picture_in_picture.restore": "Put it back",
|
"picture_in_picture.restore": "Put it back",
|
||||||
|
@ -91,6 +91,7 @@
|
|||||||
"annual_report.summary.followers.followers": "sekvantoj",
|
"annual_report.summary.followers.followers": "sekvantoj",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "afiŝo kun la plej multaj respondoj",
|
"annual_report.summary.highlighted_post.by_replies": "afiŝo kun la plej multaj respondoj",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "plej uzita apo",
|
"annual_report.summary.most_used_app.most_used_app": "plej uzita apo",
|
||||||
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "plej uzata kradvorto",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Nenio",
|
"annual_report.summary.most_used_hashtag.none": "Nenio",
|
||||||
"annual_report.summary.new_posts.new_posts": "novaj afiŝoj",
|
"annual_report.summary.new_posts.new_posts": "novaj afiŝoj",
|
||||||
"annual_report.summary.thanks": "Dankon pro esti parto de Mastodon!",
|
"annual_report.summary.thanks": "Dankon pro esti parto de Mastodon!",
|
||||||
@ -128,9 +129,11 @@
|
|||||||
"column.blocks": "Blokitaj uzantoj",
|
"column.blocks": "Blokitaj uzantoj",
|
||||||
"column.bookmarks": "Legosignoj",
|
"column.bookmarks": "Legosignoj",
|
||||||
"column.community": "Loka templinio",
|
"column.community": "Loka templinio",
|
||||||
|
"column.create_list": "Krei liston",
|
||||||
"column.direct": "Privataj mencioj",
|
"column.direct": "Privataj mencioj",
|
||||||
"column.directory": "Foliumi la profilojn",
|
"column.directory": "Foliumi la profilojn",
|
||||||
"column.domain_blocks": "Blokitaj domajnoj",
|
"column.domain_blocks": "Blokitaj domajnoj",
|
||||||
|
"column.edit_list": "Redakti liston",
|
||||||
"column.favourites": "Stelumoj",
|
"column.favourites": "Stelumoj",
|
||||||
"column.firehose": "Rektaj fluoj",
|
"column.firehose": "Rektaj fluoj",
|
||||||
"column.follow_requests": "Petoj de sekvado",
|
"column.follow_requests": "Petoj de sekvado",
|
||||||
@ -147,6 +150,7 @@
|
|||||||
"column_header.pin": "Fiksi",
|
"column_header.pin": "Fiksi",
|
||||||
"column_header.show_settings": "Montri la agordojn",
|
"column_header.show_settings": "Montri la agordojn",
|
||||||
"column_header.unpin": "Malfiksi",
|
"column_header.unpin": "Malfiksi",
|
||||||
|
"column_search.cancel": "Nuligi",
|
||||||
"column_subheading.settings": "Agordoj",
|
"column_subheading.settings": "Agordoj",
|
||||||
"community.column_settings.local_only": "Nur loka",
|
"community.column_settings.local_only": "Nur loka",
|
||||||
"community.column_settings.media_only": "Nur plurmedio",
|
"community.column_settings.media_only": "Nur plurmedio",
|
||||||
@ -452,11 +456,25 @@
|
|||||||
"link_preview.author": "De {name}",
|
"link_preview.author": "De {name}",
|
||||||
"link_preview.more_from_author": "Pli de {name}",
|
"link_preview.more_from_author": "Pli de {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} afiŝo} other {{counter} afiŝoj}}",
|
"link_preview.shares": "{count, plural, one {{counter} afiŝo} other {{counter} afiŝoj}}",
|
||||||
|
"lists.add_member": "Aldoni",
|
||||||
|
"lists.add_to_list": "Aldoni al la listo",
|
||||||
|
"lists.add_to_lists": "Aldoni {name} al la listo",
|
||||||
|
"lists.create": "Krei",
|
||||||
|
"lists.create_list": "Krei liston",
|
||||||
"lists.delete": "Forigi la liston",
|
"lists.delete": "Forigi la liston",
|
||||||
|
"lists.done": "Farita",
|
||||||
"lists.edit": "Redakti la liston",
|
"lists.edit": "Redakti la liston",
|
||||||
|
"lists.list_members": "Listoj de membroj",
|
||||||
|
"lists.list_name": "Nomo de la listo",
|
||||||
|
"lists.new_list_name": "Nomo de nova listo",
|
||||||
|
"lists.no_lists_yet": "Ankoraŭ ne estas listoj.",
|
||||||
|
"lists.no_members_yet": "Ankoraŭ neniuj membroj.",
|
||||||
|
"lists.no_results_found": "Neniuj rezultoj trovitaj.",
|
||||||
|
"lists.remove_member": "Forigi",
|
||||||
"lists.replies_policy.followed": "Iu sekvanta uzanto",
|
"lists.replies_policy.followed": "Iu sekvanta uzanto",
|
||||||
"lists.replies_policy.list": "Membroj de la listo",
|
"lists.replies_policy.list": "Membroj de la listo",
|
||||||
"lists.replies_policy.none": "Neniu",
|
"lists.replies_policy.none": "Neniu",
|
||||||
|
"lists.save": "Konservi",
|
||||||
"load_pending": "{count,plural, one {# nova elemento} other {# novaj elementoj}}",
|
"load_pending": "{count,plural, one {# nova elemento} other {# novaj elementoj}}",
|
||||||
"loading_indicator.label": "Ŝargado…",
|
"loading_indicator.label": "Ŝargado…",
|
||||||
"media_gallery.hide": "Kaŝi",
|
"media_gallery.hide": "Kaŝi",
|
||||||
@ -612,44 +630,20 @@
|
|||||||
"notifications_permission_banner.enable": "Ŝalti retumilajn sciigojn",
|
"notifications_permission_banner.enable": "Ŝalti retumilajn sciigojn",
|
||||||
"notifications_permission_banner.how_to_control": "Por ricevi sciigojn kiam Mastodon ne estas malfermita, ebligu labortablajn sciigojn. Vi povas regi precize kiuj specoj de interagoj generas labortablajn sciigojn per la supra butono {icon} post kiam ili estas ebligitaj.",
|
"notifications_permission_banner.how_to_control": "Por ricevi sciigojn kiam Mastodon ne estas malfermita, ebligu labortablajn sciigojn. Vi povas regi precize kiuj specoj de interagoj generas labortablajn sciigojn per la supra butono {icon} post kiam ili estas ebligitaj.",
|
||||||
"notifications_permission_banner.title": "Neniam preterlasas iun ajn",
|
"notifications_permission_banner.title": "Neniam preterlasas iun ajn",
|
||||||
"onboarding.action.back": "Prenu min reen",
|
"onboarding.follows.back": "Reen",
|
||||||
"onboarding.actions.back": "Prenu min reen",
|
"onboarding.follows.done": "Farita",
|
||||||
"onboarding.actions.go_to_explore": "Konduku min al tendenco",
|
|
||||||
"onboarding.actions.go_to_home": "Konduku min al mia hejma fluo",
|
|
||||||
"onboarding.compose.template": "Saluton #Mastodon!",
|
|
||||||
"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.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": "Via hejma fluo estas la ĉefa maniero sperti Mastodon. Ju pli da homoj vi sekvas, des pli aktiva kaj interesa ĝi estos. Por komenci, jen kelkaj sugestoj:",
|
"onboarding.follows.search": "Serĉi",
|
||||||
"onboarding.follows.title": "Agordi vian hejman fluon",
|
|
||||||
"onboarding.profile.discoverable": "Trovebligi mian profilon",
|
"onboarding.profile.discoverable": "Trovebligi mian profilon",
|
||||||
"onboarding.profile.discoverable_hint": "Kiam vi aliĝi al trovebleco ĉe Mastodon, viaj afiŝoj eble aperos en serĉaj rezultoj kaj populariĝoj, kaj via profilo eble estas sugestota al personoj kun similaj intereseoj al vi.",
|
"onboarding.profile.discoverable_hint": "Kiam vi aliĝi al trovebleco ĉe Mastodon, viaj afiŝoj eble aperos en serĉaj rezultoj kaj populariĝoj, kaj via profilo eble estas sugestota al personoj kun similaj intereseoj al vi.",
|
||||||
"onboarding.profile.display_name": "Publika nomo",
|
"onboarding.profile.display_name": "Publika nomo",
|
||||||
"onboarding.profile.display_name_hint": "Via plena nomo aŭ via kromnomo…",
|
"onboarding.profile.display_name_hint": "Via plena nomo aŭ via kromnomo…",
|
||||||
"onboarding.profile.lead": "Vi ĉiam povas plenigi ĉi tion poste en la agordoj, kie eĉ pli da personecigagordoj estas disponeblaj.",
|
|
||||||
"onboarding.profile.note": "Sinprezento",
|
"onboarding.profile.note": "Sinprezento",
|
||||||
"onboarding.profile.note_hint": "Vi povas @mencii aliajn homojn aŭ #kradvortojn…",
|
"onboarding.profile.note_hint": "Vi povas @mencii aliajn homojn aŭ #kradvortojn…",
|
||||||
"onboarding.profile.save_and_continue": "Konservi kaj daŭrigi",
|
"onboarding.profile.save_and_continue": "Konservi kaj daŭrigi",
|
||||||
"onboarding.profile.title": "Profila fikso",
|
"onboarding.profile.title": "Profila fikso",
|
||||||
"onboarding.profile.upload_avatar": "Alŝuti profilbildon",
|
"onboarding.profile.upload_avatar": "Alŝuti profilbildon",
|
||||||
"onboarding.profile.upload_header": "Alŝuti profilkapbildon",
|
"onboarding.profile.upload_header": "Alŝuti profilkapbildon",
|
||||||
"onboarding.share.lead": "Sciigi personojn pri kiel ili povas trovi vin ĉe Mastodon!",
|
|
||||||
"onboarding.share.message": "Mi estas {username} en #Mastodon! Sekvu min ĉe {url}",
|
|
||||||
"onboarding.share.next_steps": "Eblaj malantauaj paŝoj:",
|
|
||||||
"onboarding.share.title": "Disvastigi vian profilon",
|
|
||||||
"onboarding.start.lead": "Vi nun estas parto de Mastodon, unika, malcentralizita socia amaskomunikilara platformo, kie vi—ne algoritmo—zorgas vian propran sperton. Ni komencu vin sur ĉi tiu nova socia limo:",
|
|
||||||
"onboarding.start.skip": "Ĉu vi ne bezonas helpon por komenci?",
|
|
||||||
"onboarding.start.title": "Vi atingas ĝin!",
|
|
||||||
"onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
|
|
||||||
"onboarding.steps.follow_people.title": "Agordu vian hejman fluon",
|
|
||||||
"onboarding.steps.publish_status.body": "Salutu la mondon per teksto, fotoj, filmetoj aŭ balotenketoj {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Fari vian unuan afiŝon",
|
|
||||||
"onboarding.steps.setup_profile.body": "Diskonigu viajn interagojn havante ampleksan profilon.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Agordu vian profilon",
|
|
||||||
"onboarding.steps.share_profile.body": "Sciigu viajn amikojn kiel trovi vin sur Mastodon",
|
|
||||||
"onboarding.steps.share_profile.title": "Kunhavigu vian Mastodon-profilon",
|
|
||||||
"onboarding.tips.2fa": "<strong>Ĉu vi scias?</strong> Vi povas sekurigi vian konton per efektivigi dufaktora autentigo en via kontoagordoj.",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Ĉu vi scias?</strong> Ĉar Mastodon estas sencentra, kelkaj profiloj kiujn vi trovi estas gastigitaj ĉe aliaj serviloj kiuj ne estas via.",
|
|
||||||
"onboarding.tips.migration": "<strong>Ĉu vi scias?</strong> Se vi sentas ke {domain} ne estas bona servilelekto por vi en la estonteco, vi povas translokiĝi al alia servilo de Mastodon sen malgajni viajn sekvantojn.",
|
|
||||||
"onboarding.tips.verification": "<strong>Ĉu vi sciis?</strong> Vi povas kontroli vian konton metante ligilon al via Mastodon-profilo en via propra retejo kaj aldonante la retejon al via profilo. Neniuj kotizoj aŭ dokumentoj necesaj!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Pasvorto-konfirmo superas la maksimuman pasvortan longon",
|
"password_confirmation.exceeds_maxlength": "Pasvorto-konfirmo superas la maksimuman pasvortan longon",
|
||||||
"password_confirmation.mismatching": "Pasvorto konfirmo ne kongruas",
|
"password_confirmation.mismatching": "Pasvorto konfirmo ne kongruas",
|
||||||
"picture_in_picture.restore": "Remetu ĝin",
|
"picture_in_picture.restore": "Remetu ĝin",
|
||||||
|
@ -140,13 +140,16 @@
|
|||||||
"column.blocks": "Usuarios bloqueados",
|
"column.blocks": "Usuarios bloqueados",
|
||||||
"column.bookmarks": "Marcadores",
|
"column.bookmarks": "Marcadores",
|
||||||
"column.community": "Línea temporal local",
|
"column.community": "Línea temporal local",
|
||||||
|
"column.create_list": "Crear lista",
|
||||||
"column.direct": "Menciones privadas",
|
"column.direct": "Menciones privadas",
|
||||||
"column.directory": "Explorar perfiles",
|
"column.directory": "Explorar perfiles",
|
||||||
"column.domain_blocks": "Dominios bloqueados",
|
"column.domain_blocks": "Dominios bloqueados",
|
||||||
|
"column.edit_list": "Editar lista",
|
||||||
"column.favourites": "Favoritos",
|
"column.favourites": "Favoritos",
|
||||||
"column.firehose": "Líneas temporales en vivo",
|
"column.firehose": "Líneas temporales en vivo",
|
||||||
"column.follow_requests": "Solicitudes de seguimiento",
|
"column.follow_requests": "Solicitudes de seguimiento",
|
||||||
"column.home": "Principal",
|
"column.home": "Principal",
|
||||||
|
"column.list_members": "Administrar miembros de la lista",
|
||||||
"column.lists": "Listas",
|
"column.lists": "Listas",
|
||||||
"column.mutes": "Usuarios silenciados",
|
"column.mutes": "Usuarios silenciados",
|
||||||
"column.notifications": "Notificaciones",
|
"column.notifications": "Notificaciones",
|
||||||
@ -159,6 +162,7 @@
|
|||||||
"column_header.pin": "Fijar",
|
"column_header.pin": "Fijar",
|
||||||
"column_header.show_settings": "Mostrar configuración",
|
"column_header.show_settings": "Mostrar configuración",
|
||||||
"column_header.unpin": "Dejar de fijar",
|
"column_header.unpin": "Dejar de fijar",
|
||||||
|
"column_search.cancel": "Cancelar",
|
||||||
"column_subheading.settings": "Configuración",
|
"column_subheading.settings": "Configuración",
|
||||||
"community.column_settings.local_only": "Sólo local",
|
"community.column_settings.local_only": "Sólo local",
|
||||||
"community.column_settings.media_only": "Sólo medios",
|
"community.column_settings.media_only": "Sólo medios",
|
||||||
@ -464,11 +468,32 @@
|
|||||||
"link_preview.author": "Por {name}",
|
"link_preview.author": "Por {name}",
|
||||||
"link_preview.more_from_author": "Más de {name}",
|
"link_preview.more_from_author": "Más de {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} mensaje} other {{counter} mensajes}}",
|
"link_preview.shares": "{count, plural, one {{counter} mensaje} other {{counter} mensajes}}",
|
||||||
|
"lists.add_member": "Añadir",
|
||||||
|
"lists.add_to_list": "Añadir a la lista",
|
||||||
|
"lists.add_to_lists": "Añadir {name} a las listas",
|
||||||
|
"lists.create": "Crear",
|
||||||
|
"lists.create_a_list_to_organize": "Crea una nueva lista para organizar tu página de inicio",
|
||||||
|
"lists.create_list": "Crear una lista",
|
||||||
"lists.delete": "Eliminar lista",
|
"lists.delete": "Eliminar lista",
|
||||||
|
"lists.done": "Hecho",
|
||||||
"lists.edit": "Editar lista",
|
"lists.edit": "Editar lista",
|
||||||
|
"lists.exclusive": "Ocultar miembros en Inicio",
|
||||||
|
"lists.exclusive_hint": "Si alguien está en esta lista, escóndelo en tu página de inicio para evitar ver sus publicaciones dos veces.",
|
||||||
|
"lists.find_users_to_add": "Buscar usuarios para añadir",
|
||||||
|
"lists.list_members": "Miembros de la lista",
|
||||||
|
"lists.list_members_count": "{count, plural,one {# miembro} other {# miembros}}",
|
||||||
|
"lists.list_name": "Nombre de la lista",
|
||||||
|
"lists.new_list_name": "Nombre de la nueva lista",
|
||||||
|
"lists.no_lists_yet": "Aún no hay listas.",
|
||||||
|
"lists.no_members_yet": "Aún no hay miembros.",
|
||||||
|
"lists.no_results_found": "No se encontraron resultados.",
|
||||||
|
"lists.remove_member": "Eliminar",
|
||||||
"lists.replies_policy.followed": "Cualquier cuenta seguida",
|
"lists.replies_policy.followed": "Cualquier cuenta seguida",
|
||||||
"lists.replies_policy.list": "Miembros de la lista",
|
"lists.replies_policy.list": "Miembros de la lista",
|
||||||
"lists.replies_policy.none": "Nadie",
|
"lists.replies_policy.none": "Nadie",
|
||||||
|
"lists.save": "Guardar",
|
||||||
|
"lists.search_placeholder": "Buscar gente a la que sigues",
|
||||||
|
"lists.show_replies_to": "Incluir las respuestas de los miembros de la lista a",
|
||||||
"load_pending": "{count, plural, one {# elemento nuevo} other {# elementos nuevos}}",
|
"load_pending": "{count, plural, one {# elemento nuevo} other {# elementos nuevos}}",
|
||||||
"loading_indicator.label": "Cargando…",
|
"loading_indicator.label": "Cargando…",
|
||||||
"media_gallery.hide": "Ocultar",
|
"media_gallery.hide": "Ocultar",
|
||||||
@ -625,44 +650,21 @@
|
|||||||
"notifications_permission_banner.enable": "Habilitar notificaciones de escritorio",
|
"notifications_permission_banner.enable": "Habilitar notificaciones de escritorio",
|
||||||
"notifications_permission_banner.how_to_control": "Para recibir notificaciones cuando Mastodon no está abierto, habilitá las notificaciones de escritorio. Podés controlar con precisión qué tipos de interacciones generan notificaciones de escritorio a través del botón {icon} de arriba, una vez que estén habilitadas.",
|
"notifications_permission_banner.how_to_control": "Para recibir notificaciones cuando Mastodon no está abierto, habilitá las notificaciones de escritorio. Podés controlar con precisión qué tipos de interacciones generan notificaciones de escritorio a través del botón {icon} de arriba, una vez que estén habilitadas.",
|
||||||
"notifications_permission_banner.title": "No te pierdas nada",
|
"notifications_permission_banner.title": "No te pierdas nada",
|
||||||
"onboarding.action.back": "Llevame de regreso",
|
"onboarding.follows.back": "Atrás",
|
||||||
"onboarding.actions.back": "Llevame de regreso",
|
"onboarding.follows.done": "Hecho",
|
||||||
"onboarding.actions.go_to_explore": "Llevame a las tendencias",
|
|
||||||
"onboarding.actions.go_to_home": "Llevame a mi línea temporal principal",
|
|
||||||
"onboarding.compose.template": "¡Hola, #Mastodon!",
|
|
||||||
"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.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.search": "Buscar",
|
||||||
"onboarding.follows.title": "Personalizá tu línea de tiempo principal",
|
"onboarding.follows.title": "Sigue personas para comenzar",
|
||||||
"onboarding.profile.discoverable": "Hacer que mi perfil sea detectable",
|
"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.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": "Nombre para mostrar",
|
||||||
"onboarding.profile.display_name_hint": "Tu nombre completo o tu pseudónimo…",
|
"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": "Biografía",
|
||||||
"onboarding.profile.note_hint": "Podés @mencionar otras cuentas o usar #etiquetas…",
|
"onboarding.profile.note_hint": "Podés @mencionar otras cuentas o usar #etiquetas…",
|
||||||
"onboarding.profile.save_and_continue": "Guardar y continuar",
|
"onboarding.profile.save_and_continue": "Guardar y continuar",
|
||||||
"onboarding.profile.title": "Configuración del perfil",
|
"onboarding.profile.title": "Configuración del perfil",
|
||||||
"onboarding.profile.upload_avatar": "Subir avatar",
|
"onboarding.profile.upload_avatar": "Subir avatar",
|
||||||
"onboarding.profile.upload_header": "Subir cabecera",
|
"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:",
|
|
||||||
"onboarding.share.title": "Compartí tu perfil",
|
|
||||||
"onboarding.start.lead": "Ahora sos parte de Mastodon, una plataforma única y descentralizada de redes sociales donde vos —no un algoritmo— personalizás tu propia experiencia. Vamos a introducirte en esta nueva frontera social:",
|
|
||||||
"onboarding.start.skip": "¿No necesitás ayuda para empezar?",
|
|
||||||
"onboarding.start.title": "¡Listo!",
|
|
||||||
"onboarding.steps.follow_people.body": "Seguir cuentas interesantes es de lo que trata Mastodon.",
|
|
||||||
"onboarding.steps.follow_people.title": "Personalizá tu línea de tiempo principal",
|
|
||||||
"onboarding.steps.publish_status.body": "Decili hola al mundo con textos, fotos, videos o encuestas {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Escribí tu primer mensaje",
|
|
||||||
"onboarding.steps.setup_profile.body": "Aumentá tus interacciones teniendo un perfil completo.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Personalizá tu perfil",
|
|
||||||
"onboarding.steps.share_profile.body": "¡Hacé que tus amistades sepan cómo encontrarte en Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Compartí tu perfil de Mastodon",
|
|
||||||
"onboarding.tips.2fa": "<strong>¿Lo sabías?</strong> Podés proteger su cuenta configurando la autenticación de dos factores en la configuración de tu cuenta. Funciona con cualquier aplicación TOTP de tu elección, ¡sin necesidad de número de teléfono!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>¿Lo sabías?</strong> Como Mastodon es una red social descentralizada, algunos perfiles que encuentres serán alojados en servidores diferentes del tuyo. ¡Y sin embargo podés interactuar con ellos! ¡El nombre de su servidor está en la segunda mitad de sus nombres de usuario!",
|
|
||||||
"onboarding.tips.migration": "<strong>¿Lo sabías?</strong> Si creés que {domain} no es una gran elección de servidor para vos en el futuro, podés mudarte a otro servidor de Mastodon sin perder a tus seguidores. ¡Incluso podés alojar tu propio servidor!",
|
|
||||||
"onboarding.tips.verification": "<strong>¿Lo sabías?</strong> Podés verificar tu cuenta poniendo el enlace de tu perfil de Mastodon en tu propio sitio web y agregando la dirección web de tu sitio en tu perfil de Mastodon. ¡No hay necesidad de comisiones ni documentación!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "La confirmación de contraseña excede la longitud máxima de la contraseña",
|
"password_confirmation.exceeds_maxlength": "La confirmación de contraseña excede la longitud máxima de la contraseña",
|
||||||
"password_confirmation.mismatching": "La confirmación de contraseña no coincide",
|
"password_confirmation.mismatching": "La confirmación de contraseña no coincide",
|
||||||
"picture_in_picture.restore": "Restaurar",
|
"picture_in_picture.restore": "Restaurar",
|
||||||
|
@ -99,8 +99,8 @@
|
|||||||
"annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada",
|
"annual_report.summary.highlighted_post.by_reblogs": "publicación más impulsada",
|
||||||
"annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas",
|
"annual_report.summary.highlighted_post.by_replies": "publicación con más respuestas",
|
||||||
"annual_report.summary.highlighted_post.possessive": "de {name}",
|
"annual_report.summary.highlighted_post.possessive": "de {name}",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "aplicación más usada",
|
"annual_report.summary.most_used_app.most_used_app": "aplicación más utilizada",
|
||||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más usada",
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "etiqueta más utilizada",
|
||||||
"annual_report.summary.most_used_hashtag.none": "Ninguna",
|
"annual_report.summary.most_used_hashtag.none": "Ninguna",
|
||||||
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones",
|
"annual_report.summary.new_posts.new_posts": "nuevas publicaciones",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Eso te pone en el top</topLabel><percentage></percentage><bottomLabel>de usuarios de Mastodon.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Eso te pone en el top</topLabel><percentage></percentage><bottomLabel>de usuarios de Mastodon.</bottomLabel>",
|
||||||
@ -140,13 +140,16 @@
|
|||||||
"column.blocks": "Usuarios bloqueados",
|
"column.blocks": "Usuarios bloqueados",
|
||||||
"column.bookmarks": "Marcadores",
|
"column.bookmarks": "Marcadores",
|
||||||
"column.community": "Línea de tiempo local",
|
"column.community": "Línea de tiempo local",
|
||||||
|
"column.create_list": "Crear lista",
|
||||||
"column.direct": "Menciones privadas",
|
"column.direct": "Menciones privadas",
|
||||||
"column.directory": "Buscar perfiles",
|
"column.directory": "Buscar perfiles",
|
||||||
"column.domain_blocks": "Dominios ocultados",
|
"column.domain_blocks": "Dominios ocultados",
|
||||||
|
"column.edit_list": "Editar lista",
|
||||||
"column.favourites": "Favoritos",
|
"column.favourites": "Favoritos",
|
||||||
"column.firehose": "Cronologías",
|
"column.firehose": "Cronologías",
|
||||||
"column.follow_requests": "Solicitudes de seguimiento",
|
"column.follow_requests": "Solicitudes de seguimiento",
|
||||||
"column.home": "Inicio",
|
"column.home": "Inicio",
|
||||||
|
"column.list_members": "Administrar miembros de la lista",
|
||||||
"column.lists": "Listas",
|
"column.lists": "Listas",
|
||||||
"column.mutes": "Usuarios silenciados",
|
"column.mutes": "Usuarios silenciados",
|
||||||
"column.notifications": "Notificaciones",
|
"column.notifications": "Notificaciones",
|
||||||
@ -159,6 +162,7 @@
|
|||||||
"column_header.pin": "Fijar",
|
"column_header.pin": "Fijar",
|
||||||
"column_header.show_settings": "Mostrar ajustes",
|
"column_header.show_settings": "Mostrar ajustes",
|
||||||
"column_header.unpin": "Desfijar",
|
"column_header.unpin": "Desfijar",
|
||||||
|
"column_search.cancel": "Cancelar",
|
||||||
"column_subheading.settings": "Ajustes",
|
"column_subheading.settings": "Ajustes",
|
||||||
"community.column_settings.local_only": "Solo local",
|
"community.column_settings.local_only": "Solo local",
|
||||||
"community.column_settings.media_only": "Solo media",
|
"community.column_settings.media_only": "Solo media",
|
||||||
@ -464,11 +468,32 @@
|
|||||||
"link_preview.author": "Por {name}",
|
"link_preview.author": "Por {name}",
|
||||||
"link_preview.more_from_author": "Más de {name}",
|
"link_preview.more_from_author": "Más de {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}}",
|
"link_preview.shares": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}}",
|
||||||
|
"lists.add_member": "Agregar",
|
||||||
|
"lists.add_to_list": "Agregar a lista",
|
||||||
|
"lists.add_to_lists": "Agregar {name} a listas",
|
||||||
|
"lists.create": "Crear",
|
||||||
|
"lists.create_a_list_to_organize": "Crea una nueva lista para organizar tu página de inicio",
|
||||||
|
"lists.create_list": "Crear lista",
|
||||||
"lists.delete": "Borrar lista",
|
"lists.delete": "Borrar lista",
|
||||||
|
"lists.done": "Hecho",
|
||||||
"lists.edit": "Editar lista",
|
"lists.edit": "Editar lista",
|
||||||
|
"lists.exclusive": "Ocultar miembros en Inicio",
|
||||||
|
"lists.exclusive_hint": "Si alguien está en esta lista, escóndelo en tu página de inicio para evitar ver sus publicaciones dos veces.",
|
||||||
|
"lists.find_users_to_add": "Buscar usuarios para agregar",
|
||||||
|
"lists.list_members": "Miembros de la lista",
|
||||||
|
"lists.list_members_count": "{count, plural,one {# miembro} other {# miembros}}",
|
||||||
|
"lists.list_name": "Nombre de la lista",
|
||||||
|
"lists.new_list_name": "Nombre de la nueva lista",
|
||||||
|
"lists.no_lists_yet": "No hay listas todavía.",
|
||||||
|
"lists.no_members_yet": "No hay miembros todavía.",
|
||||||
|
"lists.no_results_found": "No se han encontrado resultados.",
|
||||||
|
"lists.remove_member": "Eliminar",
|
||||||
"lists.replies_policy.followed": "Cualquier usuario seguido",
|
"lists.replies_policy.followed": "Cualquier usuario seguido",
|
||||||
"lists.replies_policy.list": "Miembros de la lista",
|
"lists.replies_policy.list": "Miembros de la lista",
|
||||||
"lists.replies_policy.none": "Nadie",
|
"lists.replies_policy.none": "Nadie",
|
||||||
|
"lists.save": "Guardar",
|
||||||
|
"lists.search_placeholder": "Buscar gente a la que sigues",
|
||||||
|
"lists.show_replies_to": "Incluir las respuestas de los miembros de la lista a",
|
||||||
"load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}",
|
"load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}",
|
||||||
"loading_indicator.label": "Cargando…",
|
"loading_indicator.label": "Cargando…",
|
||||||
"media_gallery.hide": "Ocultar",
|
"media_gallery.hide": "Ocultar",
|
||||||
@ -625,44 +650,21 @@
|
|||||||
"notifications_permission_banner.enable": "Habilitar notificaciones de escritorio",
|
"notifications_permission_banner.enable": "Habilitar notificaciones de escritorio",
|
||||||
"notifications_permission_banner.how_to_control": "Para recibir notificaciones cuando Mastodon no esté abierto, habilite las notificaciones de escritorio. Puedes controlar con precisión qué tipos de interacciones generan notificaciones de escritorio a través del botón {icon} de arriba una vez que estén habilitadas.",
|
"notifications_permission_banner.how_to_control": "Para recibir notificaciones cuando Mastodon no esté abierto, habilite las notificaciones de escritorio. Puedes controlar con precisión qué tipos de interacciones generan notificaciones de escritorio a través del botón {icon} de arriba una vez que estén habilitadas.",
|
||||||
"notifications_permission_banner.title": "Nunca te pierdas nada",
|
"notifications_permission_banner.title": "Nunca te pierdas nada",
|
||||||
"onboarding.action.back": "Llévame atrás",
|
"onboarding.follows.back": "Volver",
|
||||||
"onboarding.actions.back": "Llévame atrás",
|
"onboarding.follows.done": "Hecho",
|
||||||
"onboarding.actions.go_to_explore": "Ver qué es tendencia",
|
|
||||||
"onboarding.actions.go_to_home": "Ir al inicio",
|
|
||||||
"onboarding.compose.template": "¡Hola #Mastodon!",
|
|
||||||
"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.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.search": "Buscar",
|
||||||
"onboarding.follows.title": "Popular en Mastodon",
|
"onboarding.follows.title": "Sigue personas para comenzar",
|
||||||
"onboarding.profile.discoverable": "Make my profile discoverable",
|
"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.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": "Nombre a mostrar",
|
||||||
"onboarding.profile.display_name_hint": "Tu nombre completo o tu apodo…",
|
"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": "Biografía",
|
||||||
"onboarding.profile.note_hint": "Puedes @mencionar a otras personas o #etiquetas…",
|
"onboarding.profile.note_hint": "Puedes @mencionar a otras personas o #etiquetas…",
|
||||||
"onboarding.profile.save_and_continue": "Guardar y continuar",
|
"onboarding.profile.save_and_continue": "Guardar y continuar",
|
||||||
"onboarding.profile.title": "Configuración del perfil",
|
"onboarding.profile.title": "Configuración del perfil",
|
||||||
"onboarding.profile.upload_avatar": "Subir foto de perfil",
|
"onboarding.profile.upload_avatar": "Subir foto de perfil",
|
||||||
"onboarding.profile.upload_header": "Subir foto de cabecera",
|
"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:",
|
|
||||||
"onboarding.share.title": "Comparte tu perfil",
|
|
||||||
"onboarding.start.lead": "Tu nueva cuenta de Mastodon está lista. Así es como puedes sacarle el máximo provecho:",
|
|
||||||
"onboarding.start.skip": "¿Quieres saltarte todos los pasos?",
|
|
||||||
"onboarding.start.title": "¡Lo has logrado!",
|
|
||||||
"onboarding.steps.follow_people.body": "Tienes que personalizar tu inicio. Vamos a llenarlo de gente interesante.",
|
|
||||||
"onboarding.steps.follow_people.title": "Sigue a {count, plural, one {una persona} other {# personas}}",
|
|
||||||
"onboarding.steps.publish_status.body": "Dile hola al mundo.",
|
|
||||||
"onboarding.steps.publish_status.title": "Escribe tu primera publicación",
|
|
||||||
"onboarding.steps.setup_profile.body": "Si rellenas tu perfil tendrás más posibilidades de que otros interactúen contigo.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Personaliza tu perfil",
|
|
||||||
"onboarding.steps.share_profile.body": "Dile a tus amigos cómo encontrarte en Mastodon",
|
|
||||||
"onboarding.steps.share_profile.title": "Comparte tu perfil",
|
|
||||||
"onboarding.tips.2fa": "<strong>¿Sabías que?</strong> Puedes proteger tu cuenta configurando la autenticación de dos factores en los ajustes de su cuenta. Funciona con cualquier aplicación TOTP que elijas, ¡sin necesidad de número de teléfono!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>¿Sabías que?</strong> Como Mastodon es descentralizado, algunos perfiles que encuentras están alojados en servidores distintos del tuyo. Y sin embargo, ¡puedes interactuar con ellos! ¡Su servidor corresponde a la segunda mitad de su nombre de usuario!",
|
|
||||||
"onboarding.tips.migration": "<strong>¿Sabías que?</strong> Si sientes que {domain} no es una gran elección de servidor para ti en el futuro, puedes moverte a otro servidor de Mastodon sin perder a tus seguidores. ¡Incluso puedes alojar tu propio servidor!",
|
|
||||||
"onboarding.tips.verification": "<strong>¿Sabías que?</strong> Puedes verificar tu cuenta poniendo un enlace a tu perfil de Mastodon en su propio sitio web y añadiendo el sitio web a su perfil. ¡Sin necesidad de comisiones ni documentos!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "La contraseña de confirmación excede la longitud máxima de la contraseña",
|
"password_confirmation.exceeds_maxlength": "La contraseña de confirmación excede la longitud máxima de la contraseña",
|
||||||
"password_confirmation.mismatching": "La contraseña de confirmación no coincide",
|
"password_confirmation.mismatching": "La contraseña de confirmación no coincide",
|
||||||
"picture_in_picture.restore": "Restaurar",
|
"picture_in_picture.restore": "Restaurar",
|
||||||
|
@ -140,13 +140,16 @@
|
|||||||
"column.blocks": "Usuarios bloqueados",
|
"column.blocks": "Usuarios bloqueados",
|
||||||
"column.bookmarks": "Marcadores",
|
"column.bookmarks": "Marcadores",
|
||||||
"column.community": "Cronología local",
|
"column.community": "Cronología local",
|
||||||
|
"column.create_list": "Crear lista",
|
||||||
"column.direct": "Menciones privadas",
|
"column.direct": "Menciones privadas",
|
||||||
"column.directory": "Buscar perfiles",
|
"column.directory": "Buscar perfiles",
|
||||||
"column.domain_blocks": "Dominios bloqueados",
|
"column.domain_blocks": "Dominios bloqueados",
|
||||||
|
"column.edit_list": "Editar lista",
|
||||||
"column.favourites": "Favoritos",
|
"column.favourites": "Favoritos",
|
||||||
"column.firehose": "Cronologías",
|
"column.firehose": "Cronologías",
|
||||||
"column.follow_requests": "Solicitudes de seguimiento",
|
"column.follow_requests": "Solicitudes de seguimiento",
|
||||||
"column.home": "Inicio",
|
"column.home": "Inicio",
|
||||||
|
"column.list_members": "Administrar miembros de la lista",
|
||||||
"column.lists": "Listas",
|
"column.lists": "Listas",
|
||||||
"column.mutes": "Usuarios silenciados",
|
"column.mutes": "Usuarios silenciados",
|
||||||
"column.notifications": "Notificaciones",
|
"column.notifications": "Notificaciones",
|
||||||
@ -159,6 +162,7 @@
|
|||||||
"column_header.pin": "Fijar",
|
"column_header.pin": "Fijar",
|
||||||
"column_header.show_settings": "Mostrar ajustes",
|
"column_header.show_settings": "Mostrar ajustes",
|
||||||
"column_header.unpin": "Dejar de fijar",
|
"column_header.unpin": "Dejar de fijar",
|
||||||
|
"column_search.cancel": "Cancelar",
|
||||||
"column_subheading.settings": "Ajustes",
|
"column_subheading.settings": "Ajustes",
|
||||||
"community.column_settings.local_only": "Solo local",
|
"community.column_settings.local_only": "Solo local",
|
||||||
"community.column_settings.media_only": "Solo multimedia",
|
"community.column_settings.media_only": "Solo multimedia",
|
||||||
@ -401,7 +405,7 @@
|
|||||||
"ignore_notifications_modal.not_following_title": "¿Ignorar notificaciones de personas a las que no sigues?",
|
"ignore_notifications_modal.not_following_title": "¿Ignorar notificaciones de personas a las que no sigues?",
|
||||||
"ignore_notifications_modal.private_mentions_title": "¿Ignorar notificaciones de menciones privadas no solicitadas?",
|
"ignore_notifications_modal.private_mentions_title": "¿Ignorar notificaciones de menciones privadas no solicitadas?",
|
||||||
"interaction_modal.description.favourite": "Con una cuenta en Mastodon, puedes marcar como favorita esta publicación para que el autor sepa que te gusta, y guardala para más adelante.",
|
"interaction_modal.description.favourite": "Con una cuenta en Mastodon, puedes marcar como favorita esta publicación para que el autor sepa que te gusta, y guardala para más adelante.",
|
||||||
"interaction_modal.description.follow": "Con una cuenta en Mastodon, puedes seguir {name} para recibir sus publicaciones en tu línea temporal de inicio.",
|
"interaction_modal.description.follow": "Con una cuenta en Mastodon, puedes seguir {name} para recibir sus publicaciones en tu página de inicio.",
|
||||||
"interaction_modal.description.reblog": "Con una cuenta en Mastodon, puedes impulsar esta publicación para compartirla con tus propios seguidores.",
|
"interaction_modal.description.reblog": "Con una cuenta en Mastodon, puedes impulsar esta publicación para compartirla con tus propios seguidores.",
|
||||||
"interaction_modal.description.reply": "Con una cuenta en Mastodon, puedes responder a esta publicación.",
|
"interaction_modal.description.reply": "Con una cuenta en Mastodon, puedes responder a esta publicación.",
|
||||||
"interaction_modal.description.vote": "Con una cuenta en Mastodon, puedes votar en esta encuesta.",
|
"interaction_modal.description.vote": "Con una cuenta en Mastodon, puedes votar en esta encuesta.",
|
||||||
@ -464,11 +468,32 @@
|
|||||||
"link_preview.author": "Por {name}",
|
"link_preview.author": "Por {name}",
|
||||||
"link_preview.more_from_author": "Más de {name}",
|
"link_preview.more_from_author": "Más de {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}}",
|
"link_preview.shares": "{count, plural, one {{counter} publicación} other {{counter} publicaciones}}",
|
||||||
|
"lists.add_member": "Añadir",
|
||||||
|
"lists.add_to_list": "Añadir a la lista",
|
||||||
|
"lists.add_to_lists": "Añadir {name} a las listas",
|
||||||
|
"lists.create": "Crear",
|
||||||
|
"lists.create_a_list_to_organize": "Crea una nueva lista para organizar tu página de inicio",
|
||||||
|
"lists.create_list": "Crear una lista",
|
||||||
"lists.delete": "Borrar lista",
|
"lists.delete": "Borrar lista",
|
||||||
|
"lists.done": "Hecho",
|
||||||
"lists.edit": "Editar lista",
|
"lists.edit": "Editar lista",
|
||||||
|
"lists.exclusive": "Ocultar miembros en Inicio",
|
||||||
|
"lists.exclusive_hint": "Si alguien está en esta lista, escóndelo en tu página de inicio para evitar ver sus publicaciones dos veces.",
|
||||||
|
"lists.find_users_to_add": "Buscar usuarios para añadir",
|
||||||
|
"lists.list_members": "Miembros de la lista",
|
||||||
|
"lists.list_members_count": "{count, plural,one {# miembro} other {# miembros}}",
|
||||||
|
"lists.list_name": "Nombre de la lista",
|
||||||
|
"lists.new_list_name": "Nombre de la nueva lista",
|
||||||
|
"lists.no_lists_yet": "Aún no hay listas.",
|
||||||
|
"lists.no_members_yet": "Aún no hay miembros.",
|
||||||
|
"lists.no_results_found": "No se encontraron resultados.",
|
||||||
|
"lists.remove_member": "Eliminar",
|
||||||
"lists.replies_policy.followed": "Cualquier usuario seguido",
|
"lists.replies_policy.followed": "Cualquier usuario seguido",
|
||||||
"lists.replies_policy.list": "Miembros de la lista",
|
"lists.replies_policy.list": "Miembros de la lista",
|
||||||
"lists.replies_policy.none": "Nadie",
|
"lists.replies_policy.none": "Nadie",
|
||||||
|
"lists.save": "Guardar",
|
||||||
|
"lists.search_placeholder": "Buscar gente a la que sigues",
|
||||||
|
"lists.show_replies_to": "Incluir las respuestas de los miembros de la lista a",
|
||||||
"load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}",
|
"load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}",
|
||||||
"loading_indicator.label": "Cargando…",
|
"loading_indicator.label": "Cargando…",
|
||||||
"media_gallery.hide": "Ocultar",
|
"media_gallery.hide": "Ocultar",
|
||||||
@ -625,44 +650,21 @@
|
|||||||
"notifications_permission_banner.enable": "Habilitar notificaciones de escritorio",
|
"notifications_permission_banner.enable": "Habilitar notificaciones de escritorio",
|
||||||
"notifications_permission_banner.how_to_control": "Para recibir notificaciones cuando Mastodon no esté abierto, habilite las notificaciones de escritorio. Puedes controlar con precisión qué tipos de interacciones generan notificaciones de escritorio a través del botón {icon} de arriba una vez que estén habilitadas.",
|
"notifications_permission_banner.how_to_control": "Para recibir notificaciones cuando Mastodon no esté abierto, habilite las notificaciones de escritorio. Puedes controlar con precisión qué tipos de interacciones generan notificaciones de escritorio a través del botón {icon} de arriba una vez que estén habilitadas.",
|
||||||
"notifications_permission_banner.title": "Nunca te pierdas nada",
|
"notifications_permission_banner.title": "Nunca te pierdas nada",
|
||||||
"onboarding.action.back": "Llévame atrás",
|
"onboarding.follows.back": "Atrás",
|
||||||
"onboarding.actions.back": "Llévame atrás",
|
"onboarding.follows.done": "Hecho",
|
||||||
"onboarding.actions.go_to_explore": "Llévame a tendencias",
|
|
||||||
"onboarding.actions.go_to_home": "Ir a mi inicio",
|
|
||||||
"onboarding.compose.template": "¡Hola #Mastodon!",
|
|
||||||
"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.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.search": "Buscar",
|
||||||
"onboarding.follows.title": "Personaliza tu línea de inicio",
|
"onboarding.follows.title": "Sigue personas para comenzar",
|
||||||
"onboarding.profile.discoverable": "Hacer que mi perfil aparezca en búsquedas",
|
"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.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": "Nombre para mostrar",
|
||||||
"onboarding.profile.display_name_hint": "Tu nombre completo o tu apodo…",
|
"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": "Biografía",
|
||||||
"onboarding.profile.note_hint": "Puedes @mencionar a otras personas o #etiquetas…",
|
"onboarding.profile.note_hint": "Puedes @mencionar a otras personas o #etiquetas…",
|
||||||
"onboarding.profile.save_and_continue": "Guardar y continuar",
|
"onboarding.profile.save_and_continue": "Guardar y continuar",
|
||||||
"onboarding.profile.title": "Configuración del perfil",
|
"onboarding.profile.title": "Configuración del perfil",
|
||||||
"onboarding.profile.upload_avatar": "Subir foto de perfil",
|
"onboarding.profile.upload_avatar": "Subir foto de perfil",
|
||||||
"onboarding.profile.upload_header": "Subir encabezado 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:",
|
|
||||||
"onboarding.share.title": "Comparte tu perfil",
|
|
||||||
"onboarding.start.lead": "Ahora eres parte de Mastodon, una plataforma única y descentralizada de redes sociales donde tú —no un algoritmo— personalizarás tu propia experiencia. Vamos a introducirte en esta nueva frontera social:",
|
|
||||||
"onboarding.start.skip": "¿No necesitas ayuda para empezar?",
|
|
||||||
"onboarding.start.title": "¡Lo has logrado!",
|
|
||||||
"onboarding.steps.follow_people.body": "Seguir personas interesante es de lo que trata Mastodon.",
|
|
||||||
"onboarding.steps.follow_people.title": "Personaliza tu línea de inicio",
|
|
||||||
"onboarding.steps.publish_status.body": "Di hola al mundo con texto, fotos, vídeos o encuestas {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Escribe tu primera publicación",
|
|
||||||
"onboarding.steps.setup_profile.body": "Aumenta tus interacciones con un perfil completo.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Personaliza tu perfil",
|
|
||||||
"onboarding.steps.share_profile.body": "¡Dile a tus amigos cómo encontrarte en Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Comparte tu perfil de Mastodon",
|
|
||||||
"onboarding.tips.2fa": "<strong>¿Sabías?</strong> Puedes proteger tu cuenta configurando la autenticación de dos factores en la configuración de tu cuenta. Funciona con cualquier aplicación TOTP de tu elección, ¡no necesitas número de teléfono!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>¿Sabías que?</strong> Como Mastodon es descentralizado, algunos perfiles que encuentras están alojados en servidores distintos del tuyo. Y sin embargo, ¡puedes interactuar con ellos! ¡Su servidor corresponde a la segunda mitad de su nombre de usuario!",
|
|
||||||
"onboarding.tips.migration": "<strong>¿Sabías?</strong> Si en el futuro piensas que {domain} no es el servidor adecuado para ti, puedes moverte a otro servidor de Mastodon sin perder a tus seguidores. ¡Incluso puedes alojar tu propio servidor!",
|
|
||||||
"onboarding.tips.verification": "<strong>¿Sabías?</strong> Puedes verificar tu cuenta poniendo un enlace a tu perfil de Mastodon en tu propio sitio web y añadiendo el sitio web a tu perfil. ¡No se necesitan comisiones ni documentos!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "La contraseña de confirmación excede la longitud máxima de la contraseña",
|
"password_confirmation.exceeds_maxlength": "La contraseña de confirmación excede la longitud máxima de la contraseña",
|
||||||
"password_confirmation.mismatching": "La contraseña de confirmación no coincide",
|
"password_confirmation.mismatching": "La contraseña de confirmación no coincide",
|
||||||
"picture_in_picture.restore": "Restaurar",
|
"picture_in_picture.restore": "Restaurar",
|
||||||
@ -691,7 +693,7 @@
|
|||||||
"recommended": "Recomendado",
|
"recommended": "Recomendado",
|
||||||
"refresh": "Actualizar",
|
"refresh": "Actualizar",
|
||||||
"regeneration_indicator.label": "Cargando…",
|
"regeneration_indicator.label": "Cargando…",
|
||||||
"regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!",
|
"regeneration_indicator.sublabel": "¡Tu página de inicio se está preparando!",
|
||||||
"relative_time.days": "{number} d",
|
"relative_time.days": "{number} d",
|
||||||
"relative_time.full.days": "hace {number, plural, one {# día} other {# días}}",
|
"relative_time.full.days": "hace {number, plural, one {# día} other {# días}}",
|
||||||
"relative_time.full.hours": "hace {number, plural, one {# hora} other {# horas}}",
|
"relative_time.full.hours": "hace {number, plural, one {# hora} other {# horas}}",
|
||||||
@ -745,7 +747,7 @@
|
|||||||
"report.thanks.title": "¿No quieres esto?",
|
"report.thanks.title": "¿No quieres esto?",
|
||||||
"report.thanks.title_actionable": "Gracias por informar, estudiaremos esto.",
|
"report.thanks.title_actionable": "Gracias por informar, estudiaremos esto.",
|
||||||
"report.unfollow": "Dejar de seguir a @{name}",
|
"report.unfollow": "Dejar de seguir a @{name}",
|
||||||
"report.unfollow_explanation": "Estás siguiendo esta cuenta. Para no ver sus publicaciones en tu muro de inicio, deja de seguirla.",
|
"report.unfollow_explanation": "Estás siguiendo esta cuenta. Para dejar de ver sus publicaciones en tu página de inicio, deja de seguirla.",
|
||||||
"report_notification.attached_statuses": "{count, plural, one {{count} publicación} other {{count} publicaciones}} adjunta(s)",
|
"report_notification.attached_statuses": "{count, plural, one {{count} publicación} other {{count} publicaciones}} adjunta(s)",
|
||||||
"report_notification.categories.legal": "Legal",
|
"report_notification.categories.legal": "Legal",
|
||||||
"report_notification.categories.legal_sentence": "contenido ilegal",
|
"report_notification.categories.legal_sentence": "contenido ilegal",
|
||||||
|
@ -604,44 +604,17 @@
|
|||||||
"notifications_permission_banner.enable": "Luba töölaua märguanded",
|
"notifications_permission_banner.enable": "Luba töölaua märguanded",
|
||||||
"notifications_permission_banner.how_to_control": "Et saada teateid, ajal mil Mastodon pole avatud, luba töölauamärguanded. Saad täpselt määrata, mis tüüpi tegevused tekitavad märguandeid, kasutates peale teadaannete sisse lülitamist üleval olevat nuppu {icon}.",
|
"notifications_permission_banner.how_to_control": "Et saada teateid, ajal mil Mastodon pole avatud, luba töölauamärguanded. Saad täpselt määrata, mis tüüpi tegevused tekitavad märguandeid, kasutates peale teadaannete sisse lülitamist üleval olevat nuppu {icon}.",
|
||||||
"notifications_permission_banner.title": "Ära jää millestki ilma",
|
"notifications_permission_banner.title": "Ära jää millestki ilma",
|
||||||
"onboarding.action.back": "Võta mind tagasi",
|
|
||||||
"onboarding.actions.back": "Võta mind tagasi",
|
|
||||||
"onboarding.actions.go_to_explore": "Vaata, mis on trendikas",
|
|
||||||
"onboarding.actions.go_to_home": "Mine oma koduvoogu",
|
|
||||||
"onboarding.compose.template": "Tere, #Mastodon!",
|
|
||||||
"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.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": "Isikupärasta oma koduvoogu",
|
|
||||||
"onboarding.profile.discoverable": "Muuda mu profiil avastatavaks",
|
"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.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": "Näidatav nimi",
|
||||||
"onboarding.profile.display_name_hint": "Su täisnimi või naljanimi…",
|
"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": "Elulugu",
|
||||||
"onboarding.profile.note_hint": "Saad @mainida teisi kasutajaid või #sildistada…",
|
"onboarding.profile.note_hint": "Saad @mainida teisi kasutajaid või #sildistada…",
|
||||||
"onboarding.profile.save_and_continue": "Salvesta ja jätka",
|
"onboarding.profile.save_and_continue": "Salvesta ja jätka",
|
||||||
"onboarding.profile.title": "Profiili seadistamine",
|
"onboarding.profile.title": "Profiili seadistamine",
|
||||||
"onboarding.profile.upload_avatar": "Laadi üles profiilipilt",
|
"onboarding.profile.upload_avatar": "Laadi üles profiilipilt",
|
||||||
"onboarding.profile.upload_header": "Laadi üles profiili päis",
|
"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:",
|
|
||||||
"onboarding.share.title": "Jaga oma profiili",
|
|
||||||
"onboarding.start.lead": "Su uus Mastodoni konto on valmis kasutamiseks. Siin info, kuidas sellest maksimum võtta:",
|
|
||||||
"onboarding.start.skip": "Soovid kohe edasi hüpata?",
|
|
||||||
"onboarding.start.title": "Said valmis!",
|
|
||||||
"onboarding.steps.follow_people.body": "Haldad oma koduvoogu. Täida see huvitavate inimestega.",
|
|
||||||
"onboarding.steps.follow_people.title": "Isikupärasta oma koduvoogu",
|
|
||||||
"onboarding.steps.publish_status.body": "Ütle maailmale tere.",
|
|
||||||
"onboarding.steps.publish_status.title": "Tee oma esimene postitus",
|
|
||||||
"onboarding.steps.setup_profile.body": "Täidetud profiili korral suhtlevad teised sinuga tõenäolisemalt.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Isikupärasta oma profiili",
|
|
||||||
"onboarding.steps.share_profile.body": "Anna sõpradele teada, kuidas sind Mastodonist leida!",
|
|
||||||
"onboarding.steps.share_profile.title": "Jaga oma profiili",
|
|
||||||
"onboarding.tips.2fa": "<strong>Kas sa teadsid?</strong> Saad oma kontot muuta turvalisemaks valides konto seadetes kaheastmelise autoriseerimise. See töötab mistahes sinu valitud TOTP-äpiga, telefoninumbrit pole vaja!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Kas teadsid?</strong> Kuna Mastodon on detsentraliseeritud, kohtad profiile, mis paiknevad teises serveris kui sinu oma. Kuid ikka saad sa nendega ladusalt suhelda! Nende server on nende kasutajanime teises pooles!",
|
|
||||||
"onboarding.tips.migration": "<strong>Kas sa teadsid?</strong> Kui tunned, et {domain} ei ole tuleviku jaoks hea serveri valik, saad kolida teise Mastodoni serverisse, ilma oma jälgijaid kaotamata. Saad isegi käivitada oma serveri!",
|
|
||||||
"onboarding.tips.verification": "<strong>Kas sa teadsid?</strong> Saad verifitseerida oma Mastodoni konto pannes oma veebilehele tagasilingi Mastodoni profiilile ja lisades profiilile lingi oma veebilehele. Dokumente ega raha pole vaja!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Salasõnakinnitus on pikem kui salasõna maksimumpikkus",
|
"password_confirmation.exceeds_maxlength": "Salasõnakinnitus on pikem kui salasõna maksimumpikkus",
|
||||||
"password_confirmation.mismatching": "Salasõnakinnitus ei sobi kokku",
|
"password_confirmation.mismatching": "Salasõnakinnitus ei sobi kokku",
|
||||||
"picture_in_picture.restore": "Pane tagasi",
|
"picture_in_picture.restore": "Pane tagasi",
|
||||||
|
@ -588,44 +588,17 @@
|
|||||||
"notifications_permission_banner.enable": "Gaitu mahaigaineko jakinarazpenak",
|
"notifications_permission_banner.enable": "Gaitu mahaigaineko jakinarazpenak",
|
||||||
"notifications_permission_banner.how_to_control": "Mastodon irekita ez dagoenean jakinarazpenak jasotzeko, gaitu mahaigaineko jakinarazpenak. Mahaigaineko jakinarazpenak ze elkarrekintzak eragingo dituzten zehazki kontrolatu dezakezu goiko {icon} botoia erabiliz, gaituta daudenean.",
|
"notifications_permission_banner.how_to_control": "Mastodon irekita ez dagoenean jakinarazpenak jasotzeko, gaitu mahaigaineko jakinarazpenak. Mahaigaineko jakinarazpenak ze elkarrekintzak eragingo dituzten zehazki kontrolatu dezakezu goiko {icon} botoia erabiliz, gaituta daudenean.",
|
||||||
"notifications_permission_banner.title": "Ez galdu ezer inoiz",
|
"notifications_permission_banner.title": "Ez galdu ezer inoiz",
|
||||||
"onboarding.action.back": "Egin atzera",
|
|
||||||
"onboarding.actions.back": "Egin atzera",
|
|
||||||
"onboarding.actions.go_to_explore": "Ikusi zer dagoen pil-pilean",
|
|
||||||
"onboarding.actions.go_to_home": "Joan hasierara",
|
|
||||||
"onboarding.compose.template": "Kaixo #Mastodon!",
|
|
||||||
"onboarding.follows.empty": "Zoritxarrez, ezin da emaitzik erakutsi orain. Bilaketa erabil dezakezu edo Arakatu orrian jendea bilatu jarraitzeko, edo saiatu geroago.",
|
"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": "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.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": "Bistaratzeko izena",
|
||||||
"onboarding.profile.display_name_hint": "Zure izena edo ezizena…",
|
"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": "Biografia",
|
||||||
"onboarding.profile.note_hint": "Beste pertsona batzuk @aipa ditzakezu edo #traolak erabili…",
|
"onboarding.profile.note_hint": "Beste pertsona batzuk @aipa ditzakezu edo #traolak erabili…",
|
||||||
"onboarding.profile.save_and_continue": "Gorde eta jarraitu",
|
"onboarding.profile.save_and_continue": "Gorde eta jarraitu",
|
||||||
"onboarding.profile.title": "Profilaren konfigurazioa",
|
"onboarding.profile.title": "Profilaren konfigurazioa",
|
||||||
"onboarding.profile.upload_avatar": "Igo profilaren irudia",
|
"onboarding.profile.upload_avatar": "Igo profilaren irudia",
|
||||||
"onboarding.profile.upload_header": "Igo profilaren goiburua",
|
"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:",
|
|
||||||
"onboarding.share.title": "Partekatu zure profila",
|
|
||||||
"onboarding.start.lead": "Mastodon-en parte zara orain, bakarra eta deszentralizatua den sare sozialaren plataforma, non zuk, eta ez algoritmo batek, zeure esperientzia pertsonaliza dezakezun. Igaro ezazu muga soziala:",
|
|
||||||
"onboarding.start.skip": "Urrats guztiak saltatu nahi dituzu?",
|
|
||||||
"onboarding.start.title": "Lortu duzu!",
|
|
||||||
"onboarding.steps.follow_people.body": "Zure jarioa zuk pertsonalizatzen duzu. Bete dezagun jende interesgarriaz.",
|
|
||||||
"onboarding.steps.follow_people.title": "Jarraitu {count, plural, one {pertsona bat} other {# pertsona}}",
|
|
||||||
"onboarding.steps.publish_status.body": "Agurtu munduari.",
|
|
||||||
"onboarding.steps.publish_status.title": "Sortu zure lehen bidalketa",
|
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"onboarding.tips.2fa": "<strong>Bazenekien?</strong> Zure kontua babes dezakezu, bi faktoreko autentifikazioa zure kontuko ezarpenetan ezarriaz. Edozein TOTP aplikaziorekin dabil, ez da telefono-zenbakirik behar!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Badakizu?</strong> Mastodon deszentralizatua denez, beste zerbitzarietako profilak topatuko dituzu. Eta, hala ere, arazorik gabe jardun dezakezu haiekin! Haien zerbitzaria erabiltzaile-izenaren bigarren erdian dago!",
|
|
||||||
"onboarding.tips.migration": "<strong>Bazenekien?</strong> Uste baduzu {domain} ez dela aukera on bat zuretzako etorkizunari begira, beste Mastodon zerbitzari batera alda zaitezke, zure jarraitzaileak galdu gabe. Zure zerbitzaria propioa ere ostata dezakezu!",
|
|
||||||
"onboarding.tips.verification": "<strong>Bazenekien?</strong> Zure kontua egiazta dezakezu zure webgunean zure Mastodon-go profilaren esteka jarriz, eta profilean webgunea gehituz. Ordainketa edo dokumenturik gabe!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Pasahitzaren berrespenak pasahitzaren gehienezko luzera gainditzen du",
|
"password_confirmation.exceeds_maxlength": "Pasahitzaren berrespenak pasahitzaren gehienezko luzera gainditzen du",
|
||||||
"password_confirmation.mismatching": "Pasahitzaren berrespena ez dator bat",
|
"password_confirmation.mismatching": "Pasahitzaren berrespena ez dator bat",
|
||||||
"picture_in_picture.restore": "Leheneratu",
|
"picture_in_picture.restore": "Leheneratu",
|
||||||
|
@ -87,6 +87,7 @@
|
|||||||
"alert.unexpected.title": "ای وای!",
|
"alert.unexpected.title": "ای وای!",
|
||||||
"alt_text_badge.title": "متن جایگزین",
|
"alt_text_badge.title": "متن جایگزین",
|
||||||
"announcement.announcement": "اعلامیه",
|
"announcement.announcement": "اعلامیه",
|
||||||
|
"annual_report.summary.followers.followers": "دنبال کننده",
|
||||||
"attachments_list.unprocessed": "(پردازش نشده)",
|
"attachments_list.unprocessed": "(پردازش نشده)",
|
||||||
"audio.hide": "نهفتن صدا",
|
"audio.hide": "نهفتن صدا",
|
||||||
"block_modal.remote_users_caveat": "ما از کارساز {domain} خواهیم خواست که به تصمیم شما احترام بگذارد. با این حال، تضمینی برای رعایت آن وجود ندارد زیرا برخی کارسازها ممکن است بلوکها را بهطور متفاوتی مدیریت کنند. فرستههای عمومی ممکن است همچنان برای کاربران که وارد نشده قابل مشاهده باشند.",
|
"block_modal.remote_users_caveat": "ما از کارساز {domain} خواهیم خواست که به تصمیم شما احترام بگذارد. با این حال، تضمینی برای رعایت آن وجود ندارد زیرا برخی کارسازها ممکن است بلوکها را بهطور متفاوتی مدیریت کنند. فرستههای عمومی ممکن است همچنان برای کاربران که وارد نشده قابل مشاهده باشند.",
|
||||||
@ -140,6 +141,7 @@
|
|||||||
"column_header.pin": "سنجاق کردن",
|
"column_header.pin": "سنجاق کردن",
|
||||||
"column_header.show_settings": "نمایش تنظیمات",
|
"column_header.show_settings": "نمایش تنظیمات",
|
||||||
"column_header.unpin": "برداشتن سنجاق",
|
"column_header.unpin": "برداشتن سنجاق",
|
||||||
|
"column_search.cancel": "لغو",
|
||||||
"column_subheading.settings": "تنظیمات",
|
"column_subheading.settings": "تنظیمات",
|
||||||
"community.column_settings.local_only": "فقط محلی",
|
"community.column_settings.local_only": "فقط محلی",
|
||||||
"community.column_settings.media_only": "فقط رسانه",
|
"community.column_settings.media_only": "فقط رسانه",
|
||||||
@ -438,9 +440,11 @@
|
|||||||
"link_preview.shares": "{count, plural, one {{counter} فرسته} other {{counter} فرسته}}",
|
"link_preview.shares": "{count, plural, one {{counter} فرسته} other {{counter} فرسته}}",
|
||||||
"lists.delete": "حذف سیاهه",
|
"lists.delete": "حذف سیاهه",
|
||||||
"lists.edit": "ویرایش سیاهه",
|
"lists.edit": "ویرایش سیاهه",
|
||||||
|
"lists.remove_member": "حذف",
|
||||||
"lists.replies_policy.followed": "هر کاربر پیگرفته",
|
"lists.replies_policy.followed": "هر کاربر پیگرفته",
|
||||||
"lists.replies_policy.list": "اعضای سیاهه",
|
"lists.replies_policy.list": "اعضای سیاهه",
|
||||||
"lists.replies_policy.none": "هیچ کدام",
|
"lists.replies_policy.none": "هیچ کدام",
|
||||||
|
"lists.save": "ذخیره",
|
||||||
"load_pending": "{count, plural, one {# مورد جدید} other {# مورد جدید}}",
|
"load_pending": "{count, plural, one {# مورد جدید} other {# مورد جدید}}",
|
||||||
"loading_indicator.label": "در حال بارگذاری…",
|
"loading_indicator.label": "در حال بارگذاری…",
|
||||||
"media_gallery.hide": "نهفتن",
|
"media_gallery.hide": "نهفتن",
|
||||||
@ -584,44 +588,21 @@
|
|||||||
"notifications_permission_banner.enable": "به کار انداختن آگاهیهای میزکار",
|
"notifications_permission_banner.enable": "به کار انداختن آگاهیهای میزکار",
|
||||||
"notifications_permission_banner.how_to_control": "برای دریافت آگاهیها هنگام باز نبودن ماستودون، آگاهیهای میزکار را به کار بیندازید. پس از به کار افتادنشان میتوانید گونههای دقیق برهمکنشهایی که آگاهیهای میزکار تولید میکنند را از {icon} بالا واپایید.",
|
"notifications_permission_banner.how_to_control": "برای دریافت آگاهیها هنگام باز نبودن ماستودون، آگاهیهای میزکار را به کار بیندازید. پس از به کار افتادنشان میتوانید گونههای دقیق برهمکنشهایی که آگاهیهای میزکار تولید میکنند را از {icon} بالا واپایید.",
|
||||||
"notifications_permission_banner.title": "هرگز چیزی را از دست ندهید",
|
"notifications_permission_banner.title": "هرگز چیزی را از دست ندهید",
|
||||||
"onboarding.action.back": "برم گردان",
|
"onboarding.follows.back": "بازگشت",
|
||||||
"onboarding.actions.back": "برم گردان",
|
"onboarding.follows.done": "انجام شد",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
|
||||||
"onboarding.compose.template": "سلام #ماستودون!",
|
|
||||||
"onboarding.follows.empty": "متأسفانه هماکنون نتیجهای قابل نمایش نیست. میتوانید استفاده از جستوجو یا مرور صفحهٔ کاوش را برای یافتن افرادی برای پیگیری آزموده یا دوباره تلاش کنید.",
|
"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.search": "جستوجو",
|
||||||
"onboarding.follows.title": "Popular on Mastodon",
|
"onboarding.follows.title": "پی گرفتن افرادی برای آغاز",
|
||||||
"onboarding.profile.discoverable": "نمایه خود را قابل نمایش کنید",
|
"onboarding.profile.discoverable": "نمایه خود را قابل نمایش کنید",
|
||||||
"onboarding.profile.discoverable_hint": "خواستهاید روی ماستودون کشف شوید. ممکن است فرستههایتان در نتیحهٔ جستوجوها و فرستههای داغ ظاهر شده و نمایهتان به افرادی با علایق مشابهتان پیشنهاد شود.",
|
"onboarding.profile.discoverable_hint": "خواستهاید روی ماستودون کشف شوید. ممکن است فرستههایتان در نتیحهٔ جستوجوها و فرستههای داغ ظاهر شده و نمایهتان به افرادی با علایق مشابهتان پیشنهاد شود.",
|
||||||
"onboarding.profile.display_name": "نام نمایشی",
|
"onboarding.profile.display_name": "نام نمایشی",
|
||||||
"onboarding.profile.display_name_hint": "نام کامل یا نام باحالتان…",
|
"onboarding.profile.display_name_hint": "نام کامل یا نام باحالتان…",
|
||||||
"onboarding.profile.lead": "همواره میتوانید این مورد را در تنظیمات که گزینههای شخصی سازی بیشتری نیز دارد کامل کنید.",
|
|
||||||
"onboarding.profile.note": "درباره شما",
|
"onboarding.profile.note": "درباره شما",
|
||||||
"onboarding.profile.note_hint": "میتوانید افراد دیگر را @نامبردن یا #برچسب بزنید…",
|
"onboarding.profile.note_hint": "میتوانید افراد دیگر را @نامبردن یا #برچسب بزنید…",
|
||||||
"onboarding.profile.save_and_continue": "ذخیره کن و ادامه بده",
|
"onboarding.profile.save_and_continue": "ذخیره کن و ادامه بده",
|
||||||
"onboarding.profile.title": "تنظیم نمایه",
|
"onboarding.profile.title": "تنظیم نمایه",
|
||||||
"onboarding.profile.upload_avatar": "بازگذاری تصویر نمایه",
|
"onboarding.profile.upload_avatar": "بازگذاری تصویر نمایه",
|
||||||
"onboarding.profile.upload_header": "بارگذاری تصویر سردر نمایه",
|
"onboarding.profile.upload_header": "بارگذاری تصویر سردر نمایه",
|
||||||
"onboarding.share.lead": "بگذارید افراد بدانند چگونه میتوانند در ماستادون بیابندتان!",
|
|
||||||
"onboarding.share.message": "من {username} روی #ماستودون هستم! مرا در {url} پیبگیرید",
|
|
||||||
"onboarding.share.next_steps": "گامهای ممکن بعدی:",
|
|
||||||
"onboarding.share.title": "همرسانی نمایهتان",
|
|
||||||
"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": "انجامش دادید!",
|
|
||||||
"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": "نخستین فرستهتان را بنویسید",
|
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"onboarding.tips.2fa": "<strong>آیا میدانستید؟</strong> میتوانید با پریایی هویتسنجی دو عاملی در تنظیمات حساب، حسابتان را ایمن کنید؟ این قابلیت با هر نرمافزار TOTP دلخواه کار کرده و نیازی به شماره تلفن ندارد!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>آیا میدانستید؟</strong> از آنجا که ماستودون نامتمرکز است، برخی نمایهها که به آنها برمیخورید روی کارسازهایی متفاوت از شما میزبانی میشوند و باز هم میتوانید بدون مشکل با آنها تعامل داشته باشید! کارسازشان در نیمه دوم نام کاربریشان است!",
|
|
||||||
"onboarding.tips.migration": "<strong>آیا میدانستید؟</strong> اگر احساس میکنید {domain} انتخاب کارساز خوبی برای آیندهتان نیست، میتوانید بدون از دست دادن پیگیرهایتان به کارساز ماستودون دیگری مهاجرت کنید. حتا میتوانید کارساز خودتان را میزبانی کنید!",
|
|
||||||
"onboarding.tips.verification": "<strong>آیا میدانستید؟</strong> میتوانید حسابتان را با گذاشتن پیوندی به نمایهٔ ماستودونتان روی پایگاه وب خود و افزودن پایگاه وبتان به نمایهتان تأیید کنید. بدون نیاز به هیچ کارمزد یا سندی!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "تأییدیه گذرواژه از حداکثر طول گذرواژه بیشتر است",
|
"password_confirmation.exceeds_maxlength": "تأییدیه گذرواژه از حداکثر طول گذرواژه بیشتر است",
|
||||||
"password_confirmation.mismatching": "تایید گذرواژه با گذرواژه مطابقت ندارد",
|
"password_confirmation.mismatching": "تایید گذرواژه با گذرواژه مطابقت ندارد",
|
||||||
"picture_in_picture.restore": "برگرداندن",
|
"picture_in_picture.restore": "برگرداندن",
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
"about.powered_by": "Hajautetun sosiaalisen median tarjoaa {mastodon}",
|
"about.powered_by": "Hajautetun sosiaalisen median tarjoaa {mastodon}",
|
||||||
"about.rules": "Palvelimen säännöt",
|
"about.rules": "Palvelimen säännöt",
|
||||||
"account.account_note_header": "Henkilökohtainen muistiinpano",
|
"account.account_note_header": "Henkilökohtainen muistiinpano",
|
||||||
"account.add_or_remove_from_list": "Lisää tai poista listoilta",
|
"account.add_or_remove_from_list": "Lisää tai poista listoista",
|
||||||
"account.badges.bot": "Botti",
|
"account.badges.bot": "Botti",
|
||||||
"account.badges.group": "Ryhmä",
|
"account.badges.group": "Ryhmä",
|
||||||
"account.block": "Estä @{name}",
|
"account.block": "Estä @{name}",
|
||||||
@ -161,6 +161,7 @@
|
|||||||
"column_header.pin": "Kiinnitä",
|
"column_header.pin": "Kiinnitä",
|
||||||
"column_header.show_settings": "Näytä asetukset",
|
"column_header.show_settings": "Näytä asetukset",
|
||||||
"column_header.unpin": "Irrota",
|
"column_header.unpin": "Irrota",
|
||||||
|
"column_search.cancel": "Peruuta",
|
||||||
"column_subheading.settings": "Asetukset",
|
"column_subheading.settings": "Asetukset",
|
||||||
"community.column_settings.local_only": "Vain paikalliset",
|
"community.column_settings.local_only": "Vain paikalliset",
|
||||||
"community.column_settings.media_only": "Vain media",
|
"community.column_settings.media_only": "Vain media",
|
||||||
@ -293,7 +294,7 @@
|
|||||||
"empty_column.followed_tags": "Et seuraa vielä yhtäkään aihetunnistetta. Kun alat seurata, ne tulevat tähän näkyviin.",
|
"empty_column.followed_tags": "Et seuraa vielä yhtäkään aihetunnistetta. Kun alat seurata, ne tulevat tähän näkyviin.",
|
||||||
"empty_column.hashtag": "Tällä aihetunnisteella ei löydy vielä sisältöä.",
|
"empty_column.hashtag": "Tällä aihetunnisteella ei löydy vielä sisältöä.",
|
||||||
"empty_column.home": "Kotiaikajanasi on tyhjä! Seuraa useampia käyttäjiä, niin näet enemmän sisältöä.",
|
"empty_column.home": "Kotiaikajanasi on tyhjä! Seuraa useampia käyttäjiä, niin näet enemmän sisältöä.",
|
||||||
"empty_column.list": "Tällä listalla ei ole vielä mitään. Kun tämän listan jäsenet lähettävät uusia julkaisuja, ne näkyvät tässä.",
|
"empty_column.list": "Tässä listassa ei ole vielä mitään. Kun tämän listan jäsenet lähettävät uusia julkaisuja, ne näkyvät tässä.",
|
||||||
"empty_column.mutes": "Et ole mykistänyt vielä yhtään käyttäjää.",
|
"empty_column.mutes": "Et ole mykistänyt vielä yhtään käyttäjää.",
|
||||||
"empty_column.notification_requests": "Olet ajan tasalla! Täällä ei ole mitään uutta kerrottavaa. Kun saat uusia ilmoituksia, ne näkyvät täällä asetustesi mukaisesti.",
|
"empty_column.notification_requests": "Olet ajan tasalla! Täällä ei ole mitään uutta kerrottavaa. Kun saat uusia ilmoituksia, ne näkyvät täällä asetustesi mukaisesti.",
|
||||||
"empty_column.notifications": "Sinulla ei ole vielä ilmoituksia. Kun muut ovat vuorovaikutuksessa kanssasi, näet sen täällä.",
|
"empty_column.notifications": "Sinulla ei ole vielä ilmoituksia. Kun muut ovat vuorovaikutuksessa kanssasi, näet sen täällä.",
|
||||||
@ -467,8 +468,8 @@
|
|||||||
"link_preview.more_from_author": "Lisää tekijältä {name}",
|
"link_preview.more_from_author": "Lisää tekijältä {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} julkaisu} other {{counter} julkaisua}}",
|
"link_preview.shares": "{count, plural, one {{counter} julkaisu} other {{counter} julkaisua}}",
|
||||||
"lists.add_member": "Lisää",
|
"lists.add_member": "Lisää",
|
||||||
"lists.add_to_list": "Lisää listalle",
|
"lists.add_to_list": "Lisää listaan",
|
||||||
"lists.add_to_lists": "Lisää {name} listalle",
|
"lists.add_to_lists": "Lisää {name} listaan",
|
||||||
"lists.create": "Luo",
|
"lists.create": "Luo",
|
||||||
"lists.create_a_list_to_organize": "Luo uusi lista kotisyötteesi järjestämiseksi",
|
"lists.create_a_list_to_organize": "Luo uusi lista kotisyötteesi järjestämiseksi",
|
||||||
"lists.create_list": "Luo lista",
|
"lists.create_list": "Luo lista",
|
||||||
@ -476,7 +477,7 @@
|
|||||||
"lists.done": "Valmis",
|
"lists.done": "Valmis",
|
||||||
"lists.edit": "Muokkaa listaa",
|
"lists.edit": "Muokkaa listaa",
|
||||||
"lists.exclusive": "Piilota jäsenet kotisyötteestä",
|
"lists.exclusive": "Piilota jäsenet kotisyötteestä",
|
||||||
"lists.exclusive_hint": "Jos joku on tällä listalla, piilota hänet kotisyötteestäsi, jotta et näe hänen julkaisujaan kahteen kertaan.",
|
"lists.exclusive_hint": "Jos joku on tässä listassa, piilota hänet kotisyötteestäsi, jotta et näe hänen julkaisujaan kahteen kertaan.",
|
||||||
"lists.find_users_to_add": "Etsi lisättäviä käyttäjiä",
|
"lists.find_users_to_add": "Etsi lisättäviä käyttäjiä",
|
||||||
"lists.list_members": "Listan jäsenet",
|
"lists.list_members": "Listan jäsenet",
|
||||||
"lists.list_members_count": "{count, plural, one {# jäsen} other {# jäsentä}}",
|
"lists.list_members_count": "{count, plural, one {# jäsen} other {# jäsentä}}",
|
||||||
@ -648,44 +649,21 @@
|
|||||||
"notifications_permission_banner.enable": "Ota työpöytäilmoitukset käyttöön",
|
"notifications_permission_banner.enable": "Ota työpöytäilmoitukset käyttöön",
|
||||||
"notifications_permission_banner.how_to_control": "Saadaksesi ilmoituksia, kun Mastodon ei ole auki, ota työpöytäilmoitukset käyttöön. Voit hallita tarkasti, mistä saat työpöytäilmoituksia kun ilmoitukset on otettu käyttöön yllä olevan {icon}-painikkeen kautta.",
|
"notifications_permission_banner.how_to_control": "Saadaksesi ilmoituksia, kun Mastodon ei ole auki, ota työpöytäilmoitukset käyttöön. Voit hallita tarkasti, mistä saat työpöytäilmoituksia kun ilmoitukset on otettu käyttöön yllä olevan {icon}-painikkeen kautta.",
|
||||||
"notifications_permission_banner.title": "Älä anna minkään mennä ohi",
|
"notifications_permission_banner.title": "Älä anna minkään mennä ohi",
|
||||||
"onboarding.action.back": "Palaa takaisin",
|
"onboarding.follows.back": "Takaisin",
|
||||||
"onboarding.actions.back": "Palaa takaisin",
|
"onboarding.follows.done": "Valmis",
|
||||||
"onboarding.actions.go_to_explore": "Siirry suosittujen aiheiden syötteeseen",
|
|
||||||
"onboarding.actions.go_to_home": "Siirry kotisyötteeseeni",
|
|
||||||
"onboarding.compose.template": "Tervehdys #Mastodon!",
|
|
||||||
"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.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 milloin tahansa myös lopettaa niiden seuraamisen:",
|
"onboarding.follows.search": "Haku",
|
||||||
"onboarding.follows.title": "Mukauta kotisyötettäsi",
|
"onboarding.follows.title": "Aloita seuraamalla käyttäjiä",
|
||||||
"onboarding.profile.discoverable": "Aseta profiilini löydettäväksi",
|
"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. Lisäksi profiiliasi voidaan ehdottaa käyttäjille, jotka ovat kiinnostuneita kanssasi samoista aiheista.",
|
"onboarding.profile.discoverable_hint": "Kun olet määrittänyt itsesi löydettäväksi Mastodonista, julkaisusi voivat näkyä hakutuloksissa ja suosituissa kohteissa. Lisäksi profiiliasi voidaan ehdottaa käyttäjille, jotka ovat kiinnostuneita kanssasi samoista aiheista.",
|
||||||
"onboarding.profile.display_name": "Näyttönimi",
|
"onboarding.profile.display_name": "Näyttönimi",
|
||||||
"onboarding.profile.display_name_hint": "Koko nimesi tai lempinimesi…",
|
"onboarding.profile.display_name_hint": "Koko nimesi tai lempinimesi…",
|
||||||
"onboarding.profile.lead": "Voit viimeistellä tämän milloin tahansa asetuksista. Sieltä löydät myös lisää mukautusvaihtoehtoja.",
|
|
||||||
"onboarding.profile.note": "Elämäkerta",
|
"onboarding.profile.note": "Elämäkerta",
|
||||||
"onboarding.profile.note_hint": "Voit @mainita muita käyttäjiä tai #aihetunnisteita…",
|
"onboarding.profile.note_hint": "Voit @mainita muita käyttäjiä tai #aihetunnisteita…",
|
||||||
"onboarding.profile.save_and_continue": "Tallenna ja jatka",
|
"onboarding.profile.save_and_continue": "Tallenna ja jatka",
|
||||||
"onboarding.profile.title": "Profiilin määritys",
|
"onboarding.profile.title": "Profiilin määritys",
|
||||||
"onboarding.profile.upload_avatar": "Lähetä profiilikuva",
|
"onboarding.profile.upload_avatar": "Lähetä profiilikuva",
|
||||||
"onboarding.profile.upload_header": "Lähetä profiilin otsakekuva",
|
"onboarding.profile.upload_header": "Lähetä 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:",
|
|
||||||
"onboarding.share.title": "Jaa profiilisi",
|
|
||||||
"onboarding.start.lead": "Uusi Mastodon-tilisi on nyt valmiina käyttöön. Kyseessä on ainutlaatuinen, hajautettu sosiaalisen median alusta, jolla sinä itse – algoritmin sijaan – määrität käyttökokemuksesi. Näin hyödyt Mastodonista eniten:",
|
|
||||||
"onboarding.start.skip": "Haluatko hypätä suoraan eteenpäin ilman alkuunpääsyohjeistuksia?",
|
|
||||||
"onboarding.start.title": "Olet tehnyt sen!",
|
|
||||||
"onboarding.steps.follow_people.body": "Mastodonissa on kyse kiinnostavien käyttäjien seuraamisesta.",
|
|
||||||
"onboarding.steps.follow_people.title": "Mukauta kotisyötettäsi",
|
|
||||||
"onboarding.steps.publish_status.body": "Tervehdi maailmaa sanoin, kuvin tai äänestyksin {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Laadi ensimmäinen julkaisusi",
|
|
||||||
"onboarding.steps.setup_profile.body": "Täydentämällä profiilisi tietoja tehostat vuorovaikutteisuutta.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Mukauta profiiliasi",
|
|
||||||
"onboarding.steps.share_profile.body": "Kerro kavereillesi, kuinka sinut löytää Mastodonista",
|
|
||||||
"onboarding.steps.share_profile.title": "Jaa Mastodon-profiilisi",
|
|
||||||
"onboarding.tips.2fa": "<strong>Tiesitkö?</strong> Voit suojata tilisi ottamalla kaksivaiheisen todennuksen käyttöön tilisi asetuksista. Se toimii millä tahansa TOTP-sovelluksella, eikä sen käyttö edellytä puhelinnumeron luovuttamista!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Tiesitkö?</strong> Koska Mastodon on hajautettu, osa kohtaamistasi profiileista sijaitsee muilla kuin sinun palvelimellasi. Voit silti viestiä saumattomasti heidän kanssaan! Heidän palvelimensa mainitaan käyttäjätunnuksen jälkiosassa!",
|
|
||||||
"onboarding.tips.migration": "<strong>Tiesitkö?</strong> Jos koet, ettei {domain} ole jatkossa itsellesi hyvä palvelinvalinta, voit siirtyä toiselle Mastodon-palvelimelle menettämättä seuraajiasi. Voit jopa isännöidä omaa palvelintasi!",
|
|
||||||
"onboarding.tips.verification": "<strong>Tiesitkö?</strong> Voit vahvistaa tilisi lisäämällä omalle verkkosivustollesi linkin Mastodon-profiiliisi ja lisäämällä sitten verkkosivustosi osoitteen Mastodon-profiilisi lisäkenttään. Tämä ei maksa mitään, eikä sinun tarvitse lähetellä asiakirjoja!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Salasanan vahvistus ylittää salasanan enimmäispituuden",
|
"password_confirmation.exceeds_maxlength": "Salasanan vahvistus ylittää salasanan enimmäispituuden",
|
||||||
"password_confirmation.mismatching": "Salasanan vahvistus ei täsmää",
|
"password_confirmation.mismatching": "Salasanan vahvistus ei täsmää",
|
||||||
"picture_in_picture.restore": "Laita se takaisin",
|
"picture_in_picture.restore": "Laita se takaisin",
|
||||||
|
@ -278,11 +278,8 @@
|
|||||||
"notifications.policy.accept_hint": "Ipakita sa mga abiso",
|
"notifications.policy.accept_hint": "Ipakita sa mga abiso",
|
||||||
"notifications.policy.filter_not_followers_title": "Mga taong hindi ka susundan",
|
"notifications.policy.filter_not_followers_title": "Mga taong hindi ka susundan",
|
||||||
"notifications.policy.filter_not_following_title": "Mga taong hindi mo sinusundan",
|
"notifications.policy.filter_not_following_title": "Mga taong hindi mo sinusundan",
|
||||||
"onboarding.action.back": "Ibalik mo ako",
|
|
||||||
"onboarding.actions.back": "Ibalik mo ako",
|
|
||||||
"onboarding.profile.note_hint": "Maaari mong @bangitin ang ibang mga tao o mga #hashtag…",
|
"onboarding.profile.note_hint": "Maaari mong @bangitin ang ibang mga tao o mga #hashtag…",
|
||||||
"onboarding.profile.save_and_continue": "Iimbak at magpatuloy",
|
"onboarding.profile.save_and_continue": "Iimbak at magpatuloy",
|
||||||
"onboarding.share.next_steps": "Mga posibleng susunod na hakbang:",
|
|
||||||
"picture_in_picture.restore": "Ilagay ito pabalik",
|
"picture_in_picture.restore": "Ilagay ito pabalik",
|
||||||
"poll.closed": "Sarado",
|
"poll.closed": "Sarado",
|
||||||
"poll.reveal": "Ipakita ang mga resulta",
|
"poll.reveal": "Ipakita ang mga resulta",
|
||||||
|
@ -140,13 +140,16 @@
|
|||||||
"column.blocks": "Bannaðir brúkarar",
|
"column.blocks": "Bannaðir brúkarar",
|
||||||
"column.bookmarks": "Bókamerki",
|
"column.bookmarks": "Bókamerki",
|
||||||
"column.community": "Lokal tíðarlinja",
|
"column.community": "Lokal tíðarlinja",
|
||||||
|
"column.create_list": "Ger lista",
|
||||||
"column.direct": "Privatar umrøður",
|
"column.direct": "Privatar umrøður",
|
||||||
"column.directory": "Blaða gjøgnum vangar",
|
"column.directory": "Blaða gjøgnum vangar",
|
||||||
"column.domain_blocks": "Bannað økisnøvn",
|
"column.domain_blocks": "Bannað økisnøvn",
|
||||||
|
"column.edit_list": "Broyt lista",
|
||||||
"column.favourites": "Dámdir postar",
|
"column.favourites": "Dámdir postar",
|
||||||
"column.firehose": "Beinleiðis rásir",
|
"column.firehose": "Beinleiðis rásir",
|
||||||
"column.follow_requests": "Umbønir at fylgja",
|
"column.follow_requests": "Umbønir at fylgja",
|
||||||
"column.home": "Heim",
|
"column.home": "Heim",
|
||||||
|
"column.list_members": "Rætta limalista",
|
||||||
"column.lists": "Listar",
|
"column.lists": "Listar",
|
||||||
"column.mutes": "Sløktir brúkarar",
|
"column.mutes": "Sløktir brúkarar",
|
||||||
"column.notifications": "Fráboðanir",
|
"column.notifications": "Fráboðanir",
|
||||||
@ -159,6 +162,7 @@
|
|||||||
"column_header.pin": "Fest",
|
"column_header.pin": "Fest",
|
||||||
"column_header.show_settings": "Vís stillingar",
|
"column_header.show_settings": "Vís stillingar",
|
||||||
"column_header.unpin": "Loys",
|
"column_header.unpin": "Loys",
|
||||||
|
"column_search.cancel": "Angra",
|
||||||
"column_subheading.settings": "Stillingar",
|
"column_subheading.settings": "Stillingar",
|
||||||
"community.column_settings.local_only": "Einans lokalt",
|
"community.column_settings.local_only": "Einans lokalt",
|
||||||
"community.column_settings.media_only": "Einans miðlar",
|
"community.column_settings.media_only": "Einans miðlar",
|
||||||
@ -464,11 +468,32 @@
|
|||||||
"link_preview.author": "Av {name}",
|
"link_preview.author": "Av {name}",
|
||||||
"link_preview.more_from_author": "Meira frá {name}",
|
"link_preview.more_from_author": "Meira frá {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} postur} other {{counter} postar}}",
|
"link_preview.shares": "{count, plural, one {{counter} postur} other {{counter} postar}}",
|
||||||
|
"lists.add_member": "Legg afturat",
|
||||||
|
"lists.add_to_list": "Legg afturat lista",
|
||||||
|
"lists.add_to_lists": "Legg {name} afturat lista",
|
||||||
|
"lists.create": "Ger",
|
||||||
|
"lists.create_a_list_to_organize": "Ger ein nýggjan lista til heimarásina hjá tær",
|
||||||
|
"lists.create_list": "Ger lista",
|
||||||
"lists.delete": "Strika lista",
|
"lists.delete": "Strika lista",
|
||||||
|
"lists.done": "Liðugt",
|
||||||
"lists.edit": "Broyt lista",
|
"lists.edit": "Broyt lista",
|
||||||
|
"lists.exclusive": "Fjal limir á heimarás",
|
||||||
|
"lists.exclusive_hint": "Um onkur er á hesum listanum, so skulu tey fjalast á heimarásini, so tú sleppir undan at síggja postar teirra tvær ferðir.",
|
||||||
|
"lists.find_users_to_add": "Finn brúkarar at leggja afturat",
|
||||||
|
"lists.list_members": "Lista limir",
|
||||||
|
"lists.list_members_count": "{count, plural, one {# limur} other {# limir}}",
|
||||||
|
"lists.list_name": "Listanavn",
|
||||||
|
"lists.new_list_name": "Nýtt listanavn",
|
||||||
|
"lists.no_lists_yet": "Ongir listar enn.",
|
||||||
|
"lists.no_members_yet": "Eingir limir enn.",
|
||||||
|
"lists.no_results_found": "Eingi úrslit funnin.",
|
||||||
|
"lists.remove_member": "Burturbein",
|
||||||
"lists.replies_policy.followed": "Øllum fylgdum brúkarum",
|
"lists.replies_policy.followed": "Øllum fylgdum brúkarum",
|
||||||
"lists.replies_policy.list": "Listalimunum",
|
"lists.replies_policy.list": "Listalimunum",
|
||||||
"lists.replies_policy.none": "Eingin",
|
"lists.replies_policy.none": "Eingin",
|
||||||
|
"lists.save": "Goym",
|
||||||
|
"lists.search_placeholder": "Leita eftir fólki, sum tú fylgir",
|
||||||
|
"lists.show_replies_to": "Írokna svar frá limum á listanum til",
|
||||||
"load_pending": "{count, plural, one {# nýtt evni} other {# nýggj evni}}",
|
"load_pending": "{count, plural, one {# nýtt evni} other {# nýggj evni}}",
|
||||||
"loading_indicator.label": "Innlesur…",
|
"loading_indicator.label": "Innlesur…",
|
||||||
"media_gallery.hide": "Fjal",
|
"media_gallery.hide": "Fjal",
|
||||||
@ -625,44 +650,21 @@
|
|||||||
"notifications_permission_banner.enable": "Ger skriviborðsfráboðanir virknar",
|
"notifications_permission_banner.enable": "Ger skriviborðsfráboðanir virknar",
|
||||||
"notifications_permission_banner.how_to_control": "Ger skriviborðsfráboðanir virknar fyri at móttaka fráboðanir, tá Mastodon ikki er opið. Tá tær eru gjørdar virknar, kanst tú stýra, hvørji sløg av samvirkni geva skriviborðsfráboðanir. Hetta umvegis {icon} knøttin omanfyri.",
|
"notifications_permission_banner.how_to_control": "Ger skriviborðsfráboðanir virknar fyri at móttaka fráboðanir, tá Mastodon ikki er opið. Tá tær eru gjørdar virknar, kanst tú stýra, hvørji sløg av samvirkni geva skriviborðsfráboðanir. Hetta umvegis {icon} knøttin omanfyri.",
|
||||||
"notifications_permission_banner.title": "Miss einki",
|
"notifications_permission_banner.title": "Miss einki",
|
||||||
"onboarding.action.back": "Tak meg aftur",
|
"onboarding.follows.back": "Aftur",
|
||||||
"onboarding.actions.back": "Tak meg aftur",
|
"onboarding.follows.done": "Liðugt",
|
||||||
"onboarding.actions.go_to_explore": "Sí rákið",
|
|
||||||
"onboarding.actions.go_to_home": "Far til heimarásina",
|
|
||||||
"onboarding.compose.template": "Hey #Mastodon!",
|
|
||||||
"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.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.search": "Leita",
|
||||||
"onboarding.follows.title": "Vælumtókt á Mastodon",
|
"onboarding.follows.title": "Fylg fólki fyri at koma í gongd",
|
||||||
"onboarding.profile.discoverable": "Ger tað møguligt hjá øðrum at finna vangan hjá mær",
|
"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.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.profile.display_name": "Navn, sum skal vísast",
|
"onboarding.profile.display_name": "Navn, sum skal vísast",
|
||||||
"onboarding.profile.display_name_hint": "Títt fulla navn ella títt stuttliga navn…",
|
"onboarding.profile.display_name_hint": "Títt fulla navn ella títt stuttliga navn…",
|
||||||
"onboarding.profile.lead": "Tú kanst altíð gera hetta liðugt seinni í stillingunum, har enn fleiri tillagingarmøguleikar eru tøkir.",
|
|
||||||
"onboarding.profile.note": "Ævilýsing",
|
"onboarding.profile.note": "Ævilýsing",
|
||||||
"onboarding.profile.note_hint": "Tú kanst @umrøða onnur fólk ella #frámerki…",
|
"onboarding.profile.note_hint": "Tú kanst @umrøða onnur fólk ella #frámerki…",
|
||||||
"onboarding.profile.save_and_continue": "Goym og halt fram",
|
"onboarding.profile.save_and_continue": "Goym og halt fram",
|
||||||
"onboarding.profile.title": "Vangauppsetan",
|
"onboarding.profile.title": "Vangauppsetan",
|
||||||
"onboarding.profile.upload_avatar": "Legg vangamynd upp",
|
"onboarding.profile.upload_avatar": "Legg vangamynd upp",
|
||||||
"onboarding.profile.upload_header": "Legg vangahøvd upp",
|
"onboarding.profile.upload_header": "Legg vangahøvd upp",
|
||||||
"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:",
|
|
||||||
"onboarding.share.title": "Deil tín vanga",
|
|
||||||
"onboarding.start.lead": "Tín nýggja Mastodon konta er klár. Her er ymiskt fyri at fáa sum mest burturúr:",
|
|
||||||
"onboarding.start.skip": "Hevur tú hug at leypa hetta um?",
|
|
||||||
"onboarding.start.title": "Tú kláraði tað!",
|
|
||||||
"onboarding.steps.follow_people.body": "Tú snikkar sjálv/ur tína rás til. Latum okkum fylla hana við áhugaverdum fólki.",
|
|
||||||
"onboarding.steps.follow_people.title": "Fylg {count, plural, one {einum persóni} other {# persónum}}",
|
|
||||||
"onboarding.steps.publish_status.body": "Sig hey við verðina.",
|
|
||||||
"onboarding.steps.publish_status.title": "Ger tín fyrsta post",
|
|
||||||
"onboarding.steps.setup_profile.body": "Líkindini eru størri fyri, at onnur samvirka við tær, um tú hevur ein útfyltan vanga.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Snikka vangan hjá tær til",
|
|
||||||
"onboarding.steps.share_profile.body": "Lat vinir tínar vita, hvussu tey kunnu finna teg á Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Deil vangan hjá tær",
|
|
||||||
"onboarding.tips.2fa": "<strong>Visti tú?</strong> Tú kanst tryggja kontu tína við at seta upp váttan í tveimum stigum í kontustillingunum hjá tær. Tað riggar við øllum TOTP appum; einki telefonnummar er neyðugt!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Visti tú?</strong> Av tí at Mastodon er miðspjatt, so eru summir vangar, sum tú kemur framat, hýstir á øðrum ambætarum. Og hóast hetta kanst tú samvirka við teir uttan nakað roks! Ambætarin er í seinna parti av brúkaranavninum hjá teimum!",
|
|
||||||
"onboarding.tips.migration": "<strong>Visti tú?</strong> Heldur tú at {domain} ikki er eitt gott ambætaraval fyri teg í framtíðini, so kanst tú flyta til ein annan Mastodon ambætara uttan at missa fylgjararnar hjá tær. Tú kanst enntá hýsa tínum egna ambætara!",
|
|
||||||
"onboarding.tips.verification": "<strong>Visti tú?</strong> Tú kanst vátta tína kontu við at leggja eitt leinki til tín Mastodon vanga á tína heimasíðu og leggja heimasíðuna á vangan hjá tær. Einki gjald og eingi skjøl neyðug!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Loyniorðsváttanin er longri enn mest loyvda loyniorðslongd",
|
"password_confirmation.exceeds_maxlength": "Loyniorðsváttanin er longri enn mest loyvda loyniorðslongd",
|
||||||
"password_confirmation.mismatching": "Loyniorðsváttanin passar ikki til",
|
"password_confirmation.mismatching": "Loyniorðsváttanin passar ikki til",
|
||||||
"picture_in_picture.restore": "Legg hana aftur",
|
"picture_in_picture.restore": "Legg hana aftur",
|
||||||
|
@ -87,9 +87,22 @@
|
|||||||
"alert.unexpected.title": "Oups!",
|
"alert.unexpected.title": "Oups!",
|
||||||
"alt_text_badge.title": "Texte Alt",
|
"alt_text_badge.title": "Texte Alt",
|
||||||
"announcement.announcement": "Annonce",
|
"announcement.announcement": "Annonce",
|
||||||
|
"annual_report.summary.archetype.lurker": "Le faucheur",
|
||||||
"annual_report.summary.archetype.oracle": "L’oracle",
|
"annual_report.summary.archetype.oracle": "L’oracle",
|
||||||
|
"annual_report.summary.followers.followers": "abonné·e·s",
|
||||||
|
"annual_report.summary.followers.total": "{count} au total",
|
||||||
"annual_report.summary.here_it_is": "Voici votre récap de {year} :",
|
"annual_report.summary.here_it_is": "Voici votre récap de {year} :",
|
||||||
|
"annual_report.summary.highlighted_post.by_favourites": "post le plus aimé",
|
||||||
|
"annual_report.summary.highlighted_post.by_reblogs": "post le plus boosté",
|
||||||
|
"annual_report.summary.highlighted_post.by_replies": "post avec le plus de réponses",
|
||||||
|
"annual_report.summary.highlighted_post.possessive": "{name}'s",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "appli la plus utilisée",
|
"annual_report.summary.most_used_app.most_used_app": "appli la plus utilisée",
|
||||||
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag le plus utilisé",
|
||||||
|
"annual_report.summary.most_used_hashtag.none": "Aucun",
|
||||||
|
"annual_report.summary.new_posts.new_posts": "nouveaux posts",
|
||||||
|
"annual_report.summary.percentile.text": "<topLabel>Cela vous place dans le top</topLabel><percentage></percentage><bottomLabel>des utilisateurs de Mastodon.</bottomLabel>",
|
||||||
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Nous ne le dirons pas à Bernie.",
|
||||||
|
"annual_report.summary.thanks": "Merci de faire partie de Mastodon!",
|
||||||
"attachments_list.unprocessed": "(non traité)",
|
"attachments_list.unprocessed": "(non traité)",
|
||||||
"audio.hide": "Masquer l'audio",
|
"audio.hide": "Masquer l'audio",
|
||||||
"block_modal.remote_users_caveat": "Nous allons demander au serveur {domain} de respecter votre décision. Cependant, ce respect n'est pas garanti, car certains serveurs peuvent gérer différemment les blocages. Les messages publics peuvent rester visibles par les utilisateur·rice·s non connecté·e·s.",
|
"block_modal.remote_users_caveat": "Nous allons demander au serveur {domain} de respecter votre décision. Cependant, ce respect n'est pas garanti, car certains serveurs peuvent gérer différemment les blocages. Les messages publics peuvent rester visibles par les utilisateur·rice·s non connecté·e·s.",
|
||||||
@ -124,13 +137,16 @@
|
|||||||
"column.blocks": "Comptes bloqués",
|
"column.blocks": "Comptes bloqués",
|
||||||
"column.bookmarks": "Signets",
|
"column.bookmarks": "Signets",
|
||||||
"column.community": "Fil local",
|
"column.community": "Fil local",
|
||||||
|
"column.create_list": "Créer une liste",
|
||||||
"column.direct": "Mention privée",
|
"column.direct": "Mention privée",
|
||||||
"column.directory": "Parcourir les profils",
|
"column.directory": "Parcourir les profils",
|
||||||
"column.domain_blocks": "Domaines bloqués",
|
"column.domain_blocks": "Domaines bloqués",
|
||||||
|
"column.edit_list": "Modifier la liste",
|
||||||
"column.favourites": "Favoris",
|
"column.favourites": "Favoris",
|
||||||
"column.firehose": "Flux en direct",
|
"column.firehose": "Flux en direct",
|
||||||
"column.follow_requests": "Demande d'abonnement",
|
"column.follow_requests": "Demande d'abonnement",
|
||||||
"column.home": "Accueil",
|
"column.home": "Accueil",
|
||||||
|
"column.list_members": "Gérer les membres de la liste",
|
||||||
"column.lists": "Listes",
|
"column.lists": "Listes",
|
||||||
"column.mutes": "Comptes masqués",
|
"column.mutes": "Comptes masqués",
|
||||||
"column.notifications": "Notifications",
|
"column.notifications": "Notifications",
|
||||||
@ -143,6 +159,7 @@
|
|||||||
"column_header.pin": "Épingler",
|
"column_header.pin": "Épingler",
|
||||||
"column_header.show_settings": "Afficher les paramètres",
|
"column_header.show_settings": "Afficher les paramètres",
|
||||||
"column_header.unpin": "Désépingler",
|
"column_header.unpin": "Désépingler",
|
||||||
|
"column_search.cancel": "Annuler",
|
||||||
"column_subheading.settings": "Paramètres",
|
"column_subheading.settings": "Paramètres",
|
||||||
"community.column_settings.local_only": "Local seulement",
|
"community.column_settings.local_only": "Local seulement",
|
||||||
"community.column_settings.media_only": "Média seulement",
|
"community.column_settings.media_only": "Média seulement",
|
||||||
@ -200,6 +217,7 @@
|
|||||||
"confirmations.unfollow.title": "Se désabonner de l'utilisateur·rice ?",
|
"confirmations.unfollow.title": "Se désabonner de l'utilisateur·rice ?",
|
||||||
"content_warning.hide": "Masquer le message",
|
"content_warning.hide": "Masquer le message",
|
||||||
"content_warning.show": "Afficher quand même",
|
"content_warning.show": "Afficher quand même",
|
||||||
|
"content_warning.show_more": "Déplier",
|
||||||
"conversation.delete": "Supprimer cette conversation",
|
"conversation.delete": "Supprimer cette conversation",
|
||||||
"conversation.mark_as_read": "Marquer comme lu",
|
"conversation.mark_as_read": "Marquer comme lu",
|
||||||
"conversation.open": "Afficher cette conversation",
|
"conversation.open": "Afficher cette conversation",
|
||||||
@ -307,6 +325,7 @@
|
|||||||
"filter_modal.select_filter.subtitle": "Utilisez une catégorie existante ou en créer une nouvelle",
|
"filter_modal.select_filter.subtitle": "Utilisez une catégorie existante ou en créer une nouvelle",
|
||||||
"filter_modal.select_filter.title": "Filtrer cette publication",
|
"filter_modal.select_filter.title": "Filtrer cette publication",
|
||||||
"filter_modal.title.status": "Filtrer une publication",
|
"filter_modal.title.status": "Filtrer une publication",
|
||||||
|
"filter_warning.matches_filter": "Correspond au filtre « <span>{title}</span> »",
|
||||||
"filtered_notifications_banner.pending_requests": "De la part {count, plural, =0 {d’aucune personne} one {d'une personne} other {de # personnes}} que vous pourriez connaître",
|
"filtered_notifications_banner.pending_requests": "De la part {count, plural, =0 {d’aucune personne} one {d'une personne} other {de # personnes}} que vous pourriez connaître",
|
||||||
"filtered_notifications_banner.title": "Notifications filtrées",
|
"filtered_notifications_banner.title": "Notifications filtrées",
|
||||||
"firehose.all": "Tout",
|
"firehose.all": "Tout",
|
||||||
@ -386,6 +405,7 @@
|
|||||||
"interaction_modal.description.follow": "Avec un compte Mastodon, vous pouvez suivre {name} et recevoir leurs publications dans votre fil d'accueil.",
|
"interaction_modal.description.follow": "Avec un compte Mastodon, vous pouvez suivre {name} et recevoir leurs publications dans votre fil d'accueil.",
|
||||||
"interaction_modal.description.reblog": "Avec un compte Mastodon, vous pouvez booster cette publication pour la partager avec vos propres abonné·e·s.",
|
"interaction_modal.description.reblog": "Avec un compte Mastodon, vous pouvez booster cette publication pour la partager avec vos propres abonné·e·s.",
|
||||||
"interaction_modal.description.reply": "Avec un compte sur Mastodon, vous pouvez répondre à cette publication.",
|
"interaction_modal.description.reply": "Avec un compte sur Mastodon, vous pouvez répondre à cette publication.",
|
||||||
|
"interaction_modal.description.vote": "Avec un compte sur Mastodon, vous pouvez répondre à cette question.",
|
||||||
"interaction_modal.login.action": "Aller à mon serveur",
|
"interaction_modal.login.action": "Aller à mon serveur",
|
||||||
"interaction_modal.login.prompt": "Domaine de votre serveur, ex. mastodon.social",
|
"interaction_modal.login.prompt": "Domaine de votre serveur, ex. mastodon.social",
|
||||||
"interaction_modal.no_account_yet": "Pas sur Mastodon ?",
|
"interaction_modal.no_account_yet": "Pas sur Mastodon ?",
|
||||||
@ -397,6 +417,7 @@
|
|||||||
"interaction_modal.title.follow": "Suivre {name}",
|
"interaction_modal.title.follow": "Suivre {name}",
|
||||||
"interaction_modal.title.reblog": "Booster la publication de {name}",
|
"interaction_modal.title.reblog": "Booster la publication de {name}",
|
||||||
"interaction_modal.title.reply": "Répondre à la publication de {name}",
|
"interaction_modal.title.reply": "Répondre à la publication de {name}",
|
||||||
|
"interaction_modal.title.vote": "Voter pour le sondage de {name}",
|
||||||
"intervals.full.days": "{number, plural, one {# jour} other {# jours}}",
|
"intervals.full.days": "{number, plural, one {# jour} other {# jours}}",
|
||||||
"intervals.full.hours": "{number, plural, one {# heure} other {# heures}}",
|
"intervals.full.hours": "{number, plural, one {# heure} other {# heures}}",
|
||||||
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
|
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
|
||||||
@ -444,11 +465,30 @@
|
|||||||
"link_preview.author": "Par {name}",
|
"link_preview.author": "Par {name}",
|
||||||
"link_preview.more_from_author": "Plus via {name}",
|
"link_preview.more_from_author": "Plus via {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} message} other {{counter} messages}}",
|
"link_preview.shares": "{count, plural, one {{counter} message} other {{counter} messages}}",
|
||||||
|
"lists.add_member": "Ajouter",
|
||||||
|
"lists.add_to_list": "Ajouter à la liste",
|
||||||
|
"lists.add_to_lists": "Ajouter {name} aux listes",
|
||||||
|
"lists.create": "Créer",
|
||||||
|
"lists.create_a_list_to_organize": "Créer une nouvelle liste pour organiser votre Page d'accueil",
|
||||||
|
"lists.create_list": "Créer une liste",
|
||||||
"lists.delete": "Supprimer la liste",
|
"lists.delete": "Supprimer la liste",
|
||||||
|
"lists.done": "Terminé",
|
||||||
"lists.edit": "Modifier la liste",
|
"lists.edit": "Modifier la liste",
|
||||||
|
"lists.exclusive": "Cacher les membres de la page d'accueil",
|
||||||
|
"lists.exclusive_hint": "Si quelqu'un est dans cette liste, les cacher dans votre fil pour éviter de voir leurs messages deux fois.",
|
||||||
|
"lists.find_users_to_add": "Trouver des utilisateurs à ajouter",
|
||||||
|
"lists.list_members": "Lister les membres",
|
||||||
|
"lists.list_name": "Nom de la liste",
|
||||||
|
"lists.new_list_name": "Nom de la nouvelle liste",
|
||||||
|
"lists.no_lists_yet": "Aucune liste pour l'instant.",
|
||||||
|
"lists.no_members_yet": "Aucun membre pour l'instant.",
|
||||||
|
"lists.no_results_found": "Aucun résultat.",
|
||||||
|
"lists.remove_member": "Supprimer",
|
||||||
"lists.replies_policy.followed": "N'importe quel compte suivi",
|
"lists.replies_policy.followed": "N'importe quel compte suivi",
|
||||||
"lists.replies_policy.list": "Membres de la liste",
|
"lists.replies_policy.list": "Membres de la liste",
|
||||||
"lists.replies_policy.none": "Personne",
|
"lists.replies_policy.none": "Personne",
|
||||||
|
"lists.save": "Enregistrer",
|
||||||
|
"lists.search_placeholder": "Rechercher parmi les gens que vous suivez",
|
||||||
"load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}",
|
"load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}",
|
||||||
"loading_indicator.label": "Chargement…",
|
"loading_indicator.label": "Chargement…",
|
||||||
"media_gallery.hide": "Masquer",
|
"media_gallery.hide": "Masquer",
|
||||||
@ -497,6 +537,7 @@
|
|||||||
"notification.admin.report_statuses_other": "{name} a signalé {target}",
|
"notification.admin.report_statuses_other": "{name} a signalé {target}",
|
||||||
"notification.admin.sign_up": "{name} s'est inscrit·e",
|
"notification.admin.sign_up": "{name} s'est inscrit·e",
|
||||||
"notification.admin.sign_up.name_and_others": "{name} et {count, plural, one {# autre} other {# autres}} se sont inscrit",
|
"notification.admin.sign_up.name_and_others": "{name} et {count, plural, one {# autre} other {# autres}} se sont inscrit",
|
||||||
|
"notification.annual_report.view": "Voir #Wrapstodon",
|
||||||
"notification.favourite": "{name} a ajouté votre publication à ses favoris",
|
"notification.favourite": "{name} a ajouté votre publication à ses favoris",
|
||||||
"notification.favourite.name_and_others_with_link": "{name} et <a>{count, plural, one {# autre} other {# autres}}</a> ont mis votre message en favori",
|
"notification.favourite.name_and_others_with_link": "{name} et <a>{count, plural, one {# autre} other {# autres}}</a> ont mis votre message en favori",
|
||||||
"notification.follow": "{name} vous suit",
|
"notification.follow": "{name} vous suit",
|
||||||
@ -603,44 +644,20 @@
|
|||||||
"notifications_permission_banner.enable": "Activer les notifications de bureau",
|
"notifications_permission_banner.enable": "Activer les notifications de bureau",
|
||||||
"notifications_permission_banner.how_to_control": "Pour recevoir des notifications lorsque Mastodon n’est pas ouvert, activez les notifications de bureau. Vous pouvez contrôler précisément quels types d’interactions génèrent des notifications de bureau via le bouton {icon} ci-dessus une fois qu’elles sont activées.",
|
"notifications_permission_banner.how_to_control": "Pour recevoir des notifications lorsque Mastodon n’est pas ouvert, activez les notifications de bureau. Vous pouvez contrôler précisément quels types d’interactions génèrent des notifications de bureau via le bouton {icon} ci-dessus une fois qu’elles sont activées.",
|
||||||
"notifications_permission_banner.title": "Ne rien rater",
|
"notifications_permission_banner.title": "Ne rien rater",
|
||||||
"onboarding.action.back": "Revenir en arrière",
|
"onboarding.follows.back": "Retour",
|
||||||
"onboarding.actions.back": "Revenir en arrière",
|
"onboarding.follows.done": "Terminé",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
|
||||||
"onboarding.compose.template": "Bonjour #Mastodon!",
|
|
||||||
"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.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.search": "Recherche",
|
||||||
"onboarding.follows.title": "Popular on Mastodon",
|
|
||||||
"onboarding.profile.discoverable": "Rendre mon profil découvrable",
|
"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.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": "Nom affiché",
|
||||||
"onboarding.profile.display_name_hint": "Votre nom complet ou votre nom rigolo…",
|
"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": "Biographie",
|
||||||
"onboarding.profile.note_hint": "Vous pouvez @mentionner d'autres personnes ou #hashtags…",
|
"onboarding.profile.note_hint": "Vous pouvez @mentionner d'autres personnes ou #hashtags…",
|
||||||
"onboarding.profile.save_and_continue": "Enregistrer et continuer",
|
"onboarding.profile.save_and_continue": "Enregistrer et continuer",
|
||||||
"onboarding.profile.title": "Configuration du profil",
|
"onboarding.profile.title": "Configuration du profil",
|
||||||
"onboarding.profile.upload_avatar": "Importer une photo de profil",
|
"onboarding.profile.upload_avatar": "Importer une photo de profil",
|
||||||
"onboarding.profile.upload_header": "Importer un entête 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:",
|
|
||||||
"onboarding.share.title": "Partager votre profil",
|
|
||||||
"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": "Vous avez réussi!",
|
|
||||||
"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": "Écrivez votre première publication",
|
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"onboarding.tips.2fa": "<strong>Le saviez-vous ?</strong> Vous pouvez sécuriser votre compte en configurant l'authentification à deux facteurs dans les paramètres de votre compte. Ça marche avec n'importe quelle application TOTP de votre choix, aucun numéro de téléphone nécessaire!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Le saviez-vous ?</strong> Puisque Mastodon est décentralisé, certains profils que vous rencontrez seront hébergés sur des serveurs autres que les vôtres. Et vous pouvez toujours interagir avec ceux-là de façon transparente! Leur serveur est dans la seconde moitié de leur nom d'utilisateur!",
|
|
||||||
"onboarding.tips.migration": "<strong>Le saviez-vous ?</strong> Si vous avez l'impression que {domain} n'est pas un bon choix de serveur pour vous dans le futur, vous pouvez déménager vers un autre serveur Mastodon sans perdre vos abonnés. Vous pouvez même héberger votre propre serveur!",
|
|
||||||
"onboarding.tips.verification": "<strong>Le saviez-vous ?</strong> Vous pouvez vérifier votre compte en mettant un lien vers votre profil Mastodon sur votre propre site web et en ajoutant le site à votre profil. Sans frais ou documents!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "La confirmation du mot de passe dépasse la longueur maximale du mot de passe",
|
"password_confirmation.exceeds_maxlength": "La confirmation du mot de passe dépasse la longueur maximale du mot de passe",
|
||||||
"password_confirmation.mismatching": "Les deux mots de passe ne correspondent pas",
|
"password_confirmation.mismatching": "Les deux mots de passe ne correspondent pas",
|
||||||
"picture_in_picture.restore": "Remettre en place",
|
"picture_in_picture.restore": "Remettre en place",
|
||||||
@ -848,6 +865,7 @@
|
|||||||
"upload_form.description": "Décrire pour les malvoyants",
|
"upload_form.description": "Décrire pour les malvoyants",
|
||||||
"upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.",
|
"upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.",
|
||||||
"upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.",
|
"upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.",
|
||||||
|
"upload_form.drag_and_drop.on_drag_end": "La pièce jointe du média {item} a été déplacée.",
|
||||||
"upload_form.drag_and_drop.on_drag_over": "La pièce jointe du média {item} a été déplacée.",
|
"upload_form.drag_and_drop.on_drag_over": "La pièce jointe du média {item} a été déplacée.",
|
||||||
"upload_form.edit": "Modifier",
|
"upload_form.edit": "Modifier",
|
||||||
"upload_form.thumbnail": "Changer la vignette",
|
"upload_form.thumbnail": "Changer la vignette",
|
||||||
|
@ -87,9 +87,22 @@
|
|||||||
"alert.unexpected.title": "Oups !",
|
"alert.unexpected.title": "Oups !",
|
||||||
"alt_text_badge.title": "Texte Alt",
|
"alt_text_badge.title": "Texte Alt",
|
||||||
"announcement.announcement": "Annonce",
|
"announcement.announcement": "Annonce",
|
||||||
|
"annual_report.summary.archetype.lurker": "Le faucheur",
|
||||||
"annual_report.summary.archetype.oracle": "L’oracle",
|
"annual_report.summary.archetype.oracle": "L’oracle",
|
||||||
|
"annual_report.summary.followers.followers": "abonné·e·s",
|
||||||
|
"annual_report.summary.followers.total": "{count} au total",
|
||||||
"annual_report.summary.here_it_is": "Voici votre récap de {year} :",
|
"annual_report.summary.here_it_is": "Voici votre récap de {year} :",
|
||||||
|
"annual_report.summary.highlighted_post.by_favourites": "post le plus aimé",
|
||||||
|
"annual_report.summary.highlighted_post.by_reblogs": "post le plus boosté",
|
||||||
|
"annual_report.summary.highlighted_post.by_replies": "post avec le plus de réponses",
|
||||||
|
"annual_report.summary.highlighted_post.possessive": "{name}'s",
|
||||||
"annual_report.summary.most_used_app.most_used_app": "appli la plus utilisée",
|
"annual_report.summary.most_used_app.most_used_app": "appli la plus utilisée",
|
||||||
|
"annual_report.summary.most_used_hashtag.most_used_hashtag": "hashtag le plus utilisé",
|
||||||
|
"annual_report.summary.most_used_hashtag.none": "Aucun",
|
||||||
|
"annual_report.summary.new_posts.new_posts": "nouveaux posts",
|
||||||
|
"annual_report.summary.percentile.text": "<topLabel>Cela vous place dans le top</topLabel><percentage></percentage><bottomLabel>des utilisateurs de Mastodon.</bottomLabel>",
|
||||||
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Nous ne le dirons pas à Bernie.",
|
||||||
|
"annual_report.summary.thanks": "Merci de faire partie de Mastodon!",
|
||||||
"attachments_list.unprocessed": "(non traité)",
|
"attachments_list.unprocessed": "(non traité)",
|
||||||
"audio.hide": "Masquer l'audio",
|
"audio.hide": "Masquer l'audio",
|
||||||
"block_modal.remote_users_caveat": "Nous allons demander au serveur {domain} de respecter votre décision. Cependant, ce respect n'est pas garanti, car certains serveurs peuvent gérer différemment les blocages. Les messages publics peuvent rester visibles par les utilisateur·rice·s non connecté·e·s.",
|
"block_modal.remote_users_caveat": "Nous allons demander au serveur {domain} de respecter votre décision. Cependant, ce respect n'est pas garanti, car certains serveurs peuvent gérer différemment les blocages. Les messages publics peuvent rester visibles par les utilisateur·rice·s non connecté·e·s.",
|
||||||
@ -124,13 +137,16 @@
|
|||||||
"column.blocks": "Utilisateurs bloqués",
|
"column.blocks": "Utilisateurs bloqués",
|
||||||
"column.bookmarks": "Marque-pages",
|
"column.bookmarks": "Marque-pages",
|
||||||
"column.community": "Fil public local",
|
"column.community": "Fil public local",
|
||||||
|
"column.create_list": "Créer une liste",
|
||||||
"column.direct": "Mentions privées",
|
"column.direct": "Mentions privées",
|
||||||
"column.directory": "Parcourir les profils",
|
"column.directory": "Parcourir les profils",
|
||||||
"column.domain_blocks": "Domaines bloqués",
|
"column.domain_blocks": "Domaines bloqués",
|
||||||
|
"column.edit_list": "Modifier la liste",
|
||||||
"column.favourites": "Favoris",
|
"column.favourites": "Favoris",
|
||||||
"column.firehose": "Flux en direct",
|
"column.firehose": "Flux en direct",
|
||||||
"column.follow_requests": "Demandes d'abonnement",
|
"column.follow_requests": "Demandes d'abonnement",
|
||||||
"column.home": "Accueil",
|
"column.home": "Accueil",
|
||||||
|
"column.list_members": "Gérer les membres de la liste",
|
||||||
"column.lists": "Listes",
|
"column.lists": "Listes",
|
||||||
"column.mutes": "Comptes masqués",
|
"column.mutes": "Comptes masqués",
|
||||||
"column.notifications": "Notifications",
|
"column.notifications": "Notifications",
|
||||||
@ -143,6 +159,7 @@
|
|||||||
"column_header.pin": "Épingler",
|
"column_header.pin": "Épingler",
|
||||||
"column_header.show_settings": "Afficher les paramètres",
|
"column_header.show_settings": "Afficher les paramètres",
|
||||||
"column_header.unpin": "Désépingler",
|
"column_header.unpin": "Désépingler",
|
||||||
|
"column_search.cancel": "Annuler",
|
||||||
"column_subheading.settings": "Paramètres",
|
"column_subheading.settings": "Paramètres",
|
||||||
"community.column_settings.local_only": "Local seulement",
|
"community.column_settings.local_only": "Local seulement",
|
||||||
"community.column_settings.media_only": "Média uniquement",
|
"community.column_settings.media_only": "Média uniquement",
|
||||||
@ -200,6 +217,7 @@
|
|||||||
"confirmations.unfollow.title": "Se désabonner de l'utilisateur·rice ?",
|
"confirmations.unfollow.title": "Se désabonner de l'utilisateur·rice ?",
|
||||||
"content_warning.hide": "Masquer le message",
|
"content_warning.hide": "Masquer le message",
|
||||||
"content_warning.show": "Afficher quand même",
|
"content_warning.show": "Afficher quand même",
|
||||||
|
"content_warning.show_more": "Déplier",
|
||||||
"conversation.delete": "Supprimer la conversation",
|
"conversation.delete": "Supprimer la conversation",
|
||||||
"conversation.mark_as_read": "Marquer comme lu",
|
"conversation.mark_as_read": "Marquer comme lu",
|
||||||
"conversation.open": "Afficher la conversation",
|
"conversation.open": "Afficher la conversation",
|
||||||
@ -307,6 +325,7 @@
|
|||||||
"filter_modal.select_filter.subtitle": "Utilisez une catégorie existante ou créez-en une nouvelle",
|
"filter_modal.select_filter.subtitle": "Utilisez une catégorie existante ou créez-en une nouvelle",
|
||||||
"filter_modal.select_filter.title": "Filtrer ce message",
|
"filter_modal.select_filter.title": "Filtrer ce message",
|
||||||
"filter_modal.title.status": "Filtrer un message",
|
"filter_modal.title.status": "Filtrer un message",
|
||||||
|
"filter_warning.matches_filter": "Correspond au filtre « <span>{title}</span> »",
|
||||||
"filtered_notifications_banner.pending_requests": "De la part {count, plural, =0 {d’aucune personne} one {d'une personne} other {de # personnes}} que vous pourriez connaître",
|
"filtered_notifications_banner.pending_requests": "De la part {count, plural, =0 {d’aucune personne} one {d'une personne} other {de # personnes}} que vous pourriez connaître",
|
||||||
"filtered_notifications_banner.title": "Notifications filtrées",
|
"filtered_notifications_banner.title": "Notifications filtrées",
|
||||||
"firehose.all": "Tout",
|
"firehose.all": "Tout",
|
||||||
@ -386,6 +405,7 @@
|
|||||||
"interaction_modal.description.follow": "Avec un compte Mastodon, vous pouvez suivre {name} et recevoir leurs posts dans votre fil d'actualité.",
|
"interaction_modal.description.follow": "Avec un compte Mastodon, vous pouvez suivre {name} et recevoir leurs posts dans votre fil d'actualité.",
|
||||||
"interaction_modal.description.reblog": "Avec un compte sur Mastodon, vous pouvez partager ce message pour le faire découvrir à vos propres abonné⋅e⋅s.",
|
"interaction_modal.description.reblog": "Avec un compte sur Mastodon, vous pouvez partager ce message pour le faire découvrir à vos propres abonné⋅e⋅s.",
|
||||||
"interaction_modal.description.reply": "Avec un compte sur Mastodon, vous pouvez répondre à ce message.",
|
"interaction_modal.description.reply": "Avec un compte sur Mastodon, vous pouvez répondre à ce message.",
|
||||||
|
"interaction_modal.description.vote": "Avec un compte sur Mastodon, vous pouvez répondre à cette question.",
|
||||||
"interaction_modal.login.action": "Aller à mon serveur",
|
"interaction_modal.login.action": "Aller à mon serveur",
|
||||||
"interaction_modal.login.prompt": "Domaine de votre serveur, ex. mastodon.social",
|
"interaction_modal.login.prompt": "Domaine de votre serveur, ex. mastodon.social",
|
||||||
"interaction_modal.no_account_yet": "Pas sur Mastodon ?",
|
"interaction_modal.no_account_yet": "Pas sur Mastodon ?",
|
||||||
@ -397,6 +417,7 @@
|
|||||||
"interaction_modal.title.follow": "Suivre {name}",
|
"interaction_modal.title.follow": "Suivre {name}",
|
||||||
"interaction_modal.title.reblog": "Partager le message de {name}",
|
"interaction_modal.title.reblog": "Partager le message de {name}",
|
||||||
"interaction_modal.title.reply": "Répondre au message de {name}",
|
"interaction_modal.title.reply": "Répondre au message de {name}",
|
||||||
|
"interaction_modal.title.vote": "Voter pour le sondage de {name}",
|
||||||
"intervals.full.days": "{number, plural, one {# jour} other {# jours}}",
|
"intervals.full.days": "{number, plural, one {# jour} other {# jours}}",
|
||||||
"intervals.full.hours": "{number, plural, one {# heure} other {# heures}}",
|
"intervals.full.hours": "{number, plural, one {# heure} other {# heures}}",
|
||||||
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
|
"intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
|
||||||
@ -444,11 +465,30 @@
|
|||||||
"link_preview.author": "Par {name}",
|
"link_preview.author": "Par {name}",
|
||||||
"link_preview.more_from_author": "Plus via {name}",
|
"link_preview.more_from_author": "Plus via {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} message} other {{counter} messages}}",
|
"link_preview.shares": "{count, plural, one {{counter} message} other {{counter} messages}}",
|
||||||
|
"lists.add_member": "Ajouter",
|
||||||
|
"lists.add_to_list": "Ajouter à la liste",
|
||||||
|
"lists.add_to_lists": "Ajouter {name} aux listes",
|
||||||
|
"lists.create": "Créer",
|
||||||
|
"lists.create_a_list_to_organize": "Créer une nouvelle liste pour organiser votre Page d'accueil",
|
||||||
|
"lists.create_list": "Créer une liste",
|
||||||
"lists.delete": "Supprimer la liste",
|
"lists.delete": "Supprimer la liste",
|
||||||
|
"lists.done": "Terminé",
|
||||||
"lists.edit": "Modifier la liste",
|
"lists.edit": "Modifier la liste",
|
||||||
|
"lists.exclusive": "Cacher les membres de la page d'accueil",
|
||||||
|
"lists.exclusive_hint": "Si quelqu'un est dans cette liste, les cacher dans votre fil pour éviter de voir leurs messages deux fois.",
|
||||||
|
"lists.find_users_to_add": "Trouver des utilisateurs à ajouter",
|
||||||
|
"lists.list_members": "Lister les membres",
|
||||||
|
"lists.list_name": "Nom de la liste",
|
||||||
|
"lists.new_list_name": "Nom de la nouvelle liste",
|
||||||
|
"lists.no_lists_yet": "Aucune liste pour l'instant.",
|
||||||
|
"lists.no_members_yet": "Aucun membre pour l'instant.",
|
||||||
|
"lists.no_results_found": "Aucun résultat.",
|
||||||
|
"lists.remove_member": "Supprimer",
|
||||||
"lists.replies_policy.followed": "N'importe quel compte suivi",
|
"lists.replies_policy.followed": "N'importe quel compte suivi",
|
||||||
"lists.replies_policy.list": "Membres de la liste",
|
"lists.replies_policy.list": "Membres de la liste",
|
||||||
"lists.replies_policy.none": "Personne",
|
"lists.replies_policy.none": "Personne",
|
||||||
|
"lists.save": "Enregistrer",
|
||||||
|
"lists.search_placeholder": "Rechercher parmi les gens que vous suivez",
|
||||||
"load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}",
|
"load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}",
|
||||||
"loading_indicator.label": "Chargement…",
|
"loading_indicator.label": "Chargement…",
|
||||||
"media_gallery.hide": "Masquer",
|
"media_gallery.hide": "Masquer",
|
||||||
@ -497,6 +537,7 @@
|
|||||||
"notification.admin.report_statuses_other": "{name} a signalé {target}",
|
"notification.admin.report_statuses_other": "{name} a signalé {target}",
|
||||||
"notification.admin.sign_up": "{name} s'est inscrit",
|
"notification.admin.sign_up": "{name} s'est inscrit",
|
||||||
"notification.admin.sign_up.name_and_others": "{name} et {count, plural, one {# autre} other {# autres}} se sont inscrit",
|
"notification.admin.sign_up.name_and_others": "{name} et {count, plural, one {# autre} other {# autres}} se sont inscrit",
|
||||||
|
"notification.annual_report.view": "Voir #Wrapstodon",
|
||||||
"notification.favourite": "{name} a ajouté votre message à ses favoris",
|
"notification.favourite": "{name} a ajouté votre message à ses favoris",
|
||||||
"notification.favourite.name_and_others_with_link": "{name} et <a>{count, plural, one {# autre} other {# autres}}</a> ont mis votre message en favori",
|
"notification.favourite.name_and_others_with_link": "{name} et <a>{count, plural, one {# autre} other {# autres}}</a> ont mis votre message en favori",
|
||||||
"notification.follow": "{name} vous suit",
|
"notification.follow": "{name} vous suit",
|
||||||
@ -603,44 +644,20 @@
|
|||||||
"notifications_permission_banner.enable": "Activer les notifications de bureau",
|
"notifications_permission_banner.enable": "Activer les notifications de bureau",
|
||||||
"notifications_permission_banner.how_to_control": "Pour recevoir des notifications lorsque Mastodon n’est pas ouvert, activez les notifications du bureau. Vous pouvez contrôler précisément quels types d’interactions génèrent des notifications de bureau via le bouton {icon} ci-dessus une fois qu’elles sont activées.",
|
"notifications_permission_banner.how_to_control": "Pour recevoir des notifications lorsque Mastodon n’est pas ouvert, activez les notifications du bureau. Vous pouvez contrôler précisément quels types d’interactions génèrent des notifications de bureau via le bouton {icon} ci-dessus une fois qu’elles sont activées.",
|
||||||
"notifications_permission_banner.title": "Toujours au courant",
|
"notifications_permission_banner.title": "Toujours au courant",
|
||||||
"onboarding.action.back": "Revenir en arrière",
|
"onboarding.follows.back": "Retour",
|
||||||
"onboarding.actions.back": "Revenir en arrière",
|
"onboarding.follows.done": "Terminé",
|
||||||
"onboarding.actions.go_to_explore": "Aller aux tendances",
|
|
||||||
"onboarding.actions.go_to_home": "Allers vers mon flux principal",
|
|
||||||
"onboarding.compose.template": "Bonjour #Mastodon !",
|
|
||||||
"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.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": "Votre flux principal est le principal moyen de découvrir Mastodon. Plus vous suivez de personnes, plus il sera actif et intéressant. Pour commencer, voici quelques suggestions :",
|
"onboarding.follows.search": "Recherche",
|
||||||
"onboarding.follows.title": "Personnaliser votre flux principal",
|
|
||||||
"onboarding.profile.discoverable": "Rendre mon profil découvrable",
|
"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.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": "Nom affiché",
|
||||||
"onboarding.profile.display_name_hint": "Votre nom complet ou votre nom rigolo…",
|
"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": "Biographie",
|
||||||
"onboarding.profile.note_hint": "Vous pouvez @mentionner d'autres personnes ou #hashtags…",
|
"onboarding.profile.note_hint": "Vous pouvez @mentionner d'autres personnes ou #hashtags…",
|
||||||
"onboarding.profile.save_and_continue": "Enregistrer et continuer",
|
"onboarding.profile.save_and_continue": "Enregistrer et continuer",
|
||||||
"onboarding.profile.title": "Configuration du profil",
|
"onboarding.profile.title": "Configuration du profil",
|
||||||
"onboarding.profile.upload_avatar": "Importer une photo de profil",
|
"onboarding.profile.upload_avatar": "Importer une photo de profil",
|
||||||
"onboarding.profile.upload_header": "Importer un entête 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 :",
|
|
||||||
"onboarding.share.title": "Partager votre profil",
|
|
||||||
"onboarding.start.lead": "Vous faites désormais partie de Mastodon, une plateforme de médias sociaux unique et décentralisée où c'est vous, et non un algorithme, qui créez votre propre expérience. Nous allons vous aider à vous lancer dans cette nouvelle frontière sociale :",
|
|
||||||
"onboarding.start.skip": "Vous n’avez donc pas besoin d’aide pour commencer ?",
|
|
||||||
"onboarding.start.title": "Vous avez réussi !",
|
|
||||||
"onboarding.steps.follow_people.body": "Suivre des personnes intéressantes, c'est la raison d'être de Mastodon.",
|
|
||||||
"onboarding.steps.follow_people.title": "Personnaliser votre flux principal",
|
|
||||||
"onboarding.steps.publish_status.body": "Dites bonjour au monde avec du texte, des photos, des vidéos ou des sondages {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Rédigez votre premier message",
|
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Personnaliser votre profil",
|
|
||||||
"onboarding.steps.share_profile.body": "Faites savoir à vos ami·e·s comment vous trouver sur Mastodon",
|
|
||||||
"onboarding.steps.share_profile.title": "Partagez votre profil Mastodon",
|
|
||||||
"onboarding.tips.2fa": "<strong>Le saviez-vous ?</strong> Vous pouvez sécuriser votre compte en configurant l'authentification à deux facteurs dans les paramètres de votre compte. Il fonctionne avec n'importe quelle application TOTP de votre choix, sans numéro de téléphone nécessaire !",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Le saviez-vous ?</strong> Puisque Mastodon est décentralisé, certains profils que vous rencontrez seront hébergés sur des serveurs autres que les vôtres. Et pourtant, vous pouvez interagir avec eux ! Leur serveur est dans la seconde moitié de leur nom d'utilisateur !",
|
|
||||||
"onboarding.tips.migration": "<strong>Le saviez-vous ?</strong> Si vous avez l'impression que {domain} n'est pas un bon choix de serveur pour vous dans le futur, vous pouvez vous déplacer sur un autre serveur Mastodon sans perdre vos abonnés. Vous pouvez même héberger votre propre serveur!",
|
|
||||||
"onboarding.tips.verification": "<strong>Le saviez-vous ?</strong> Vous pouvez vérifier votre compte en mettant un lien vers votre profil Mastodon sur votre propre site web et en ajoutant le site à votre profil. Pas de frais ou de documents nécessaires !",
|
|
||||||
"password_confirmation.exceeds_maxlength": "La confirmation du mot de passe dépasse la longueur du mot de passe",
|
"password_confirmation.exceeds_maxlength": "La confirmation du mot de passe dépasse la longueur du mot de passe",
|
||||||
"password_confirmation.mismatching": "Les deux mots de passe ne correspondent pas",
|
"password_confirmation.mismatching": "Les deux mots de passe ne correspondent pas",
|
||||||
"picture_in_picture.restore": "Remettre en place",
|
"picture_in_picture.restore": "Remettre en place",
|
||||||
@ -848,6 +865,7 @@
|
|||||||
"upload_form.description": "Décrire pour les malvoyant·e·s",
|
"upload_form.description": "Décrire pour les malvoyant·e·s",
|
||||||
"upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.",
|
"upload_form.drag_and_drop.instructions": "Pour choisir un média joint, appuyez sur la touche espace ou entrée. Tout en faisant glisser, utilisez les touches fléchées pour déplacer le fichier média dans une direction donnée. Appuyez à nouveau sur la touche espace ou entrée pour déposer le fichier média dans sa nouvelle position, ou appuyez sur la touche Echap pour annuler.",
|
||||||
"upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.",
|
"upload_form.drag_and_drop.on_drag_cancel": "Le glissement a été annulé. La pièce jointe {item} n'a pas été ajoutée.",
|
||||||
|
"upload_form.drag_and_drop.on_drag_end": "La pièce jointe du média {item} a été déplacée.",
|
||||||
"upload_form.drag_and_drop.on_drag_over": "La pièce jointe du média {item} a été déplacée.",
|
"upload_form.drag_and_drop.on_drag_over": "La pièce jointe du média {item} a été déplacée.",
|
||||||
"upload_form.edit": "Modifier",
|
"upload_form.edit": "Modifier",
|
||||||
"upload_form.thumbnail": "Changer la vignette",
|
"upload_form.thumbnail": "Changer la vignette",
|
||||||
|
@ -604,44 +604,17 @@
|
|||||||
"notifications_permission_banner.enable": "Desktopmeldingen ynskeakelje",
|
"notifications_permission_banner.enable": "Desktopmeldingen ynskeakelje",
|
||||||
"notifications_permission_banner.how_to_control": "Om meldingen te ûntfangen wannear’t Mastodon net iepen stiet. Jo kinne krekt bepale hokker soarte fan ynteraksjes wol of gjin desktopmeldingen jouwe fia de boppesteande {icon} knop.",
|
"notifications_permission_banner.how_to_control": "Om meldingen te ûntfangen wannear’t Mastodon net iepen stiet. Jo kinne krekt bepale hokker soarte fan ynteraksjes wol of gjin desktopmeldingen jouwe fia de boppesteande {icon} knop.",
|
||||||
"notifications_permission_banner.title": "Mis neat",
|
"notifications_permission_banner.title": "Mis neat",
|
||||||
"onboarding.action.back": "Bring my tebek",
|
|
||||||
"onboarding.actions.back": "Bring my tebek",
|
|
||||||
"onboarding.actions.go_to_explore": "De aktuele trends besjen",
|
|
||||||
"onboarding.actions.go_to_home": "Gean nei jo startside",
|
|
||||||
"onboarding.compose.template": "Hallo #Mastodon!",
|
|
||||||
"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.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": "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.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": "Werjeftenamme",
|
||||||
"onboarding.profile.display_name_hint": "Jo folsleine namme of in aardige bynamme…",
|
"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": "Biografy",
|
||||||
"onboarding.profile.note_hint": "Jo kinne oare minsken @fermelde of #hashtags brûke…",
|
"onboarding.profile.note_hint": "Jo kinne oare minsken @fermelde of #hashtags brûke…",
|
||||||
"onboarding.profile.save_and_continue": "Bewarje en trochgean",
|
"onboarding.profile.save_and_continue": "Bewarje en trochgean",
|
||||||
"onboarding.profile.title": "Profyl ynstelle",
|
"onboarding.profile.title": "Profyl ynstelle",
|
||||||
"onboarding.profile.upload_avatar": "Profylfoto oplade",
|
"onboarding.profile.upload_avatar": "Profylfoto oplade",
|
||||||
"onboarding.profile.upload_header": "Omslachfoto foar profyl 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:",
|
|
||||||
"onboarding.share.title": "Jo profyl diele",
|
|
||||||
"onboarding.start.lead": "Jo nije Mastodon-account stiet klear. Sa helje jo der it beste út:",
|
|
||||||
"onboarding.start.skip": "Wolle jo daliks trochgean?",
|
|
||||||
"onboarding.start.title": "It is jo slagge!",
|
|
||||||
"onboarding.steps.follow_people.body": "Jo beheare jo eigen nijsstream. Litte wy it folje mei ynteressante minsken.",
|
|
||||||
"onboarding.steps.follow_people.title": "Folgje {count, plural, one {ien persoan} other {# minsken}}",
|
|
||||||
"onboarding.steps.publish_status.body": "Sis hallo tsjin de wrâld.",
|
|
||||||
"onboarding.steps.publish_status.title": "Meitsje jo earste berjocht",
|
|
||||||
"onboarding.steps.setup_profile.body": "Oaren sille earder mei jo yn kontakt komme as jo wat oer josels fertelle.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Pas jo profyl oan",
|
|
||||||
"onboarding.steps.share_profile.body": "Lit jo freonen witte hoe’t jo te finen binne op Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Jo profyl diele",
|
|
||||||
"onboarding.tips.2fa": "<strong>Wisten jo dit al?</strong> Jo kinne de befeiliging fan jo account ferheegje troch twa-staps-autentikaasje yn te stellen yn jo accountynstellingen. Derfoar is gjin telefoannûmer nedich en it funksjonearret mei elke TOTP-app!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Witte jo?</strong> Mastodon desintralisearre is en guon profilen dy’t jo tsjinkomme, stean op oare servers as dy fan jo. En dochs kinne jo sûnder problemen mei harren kommunisearje! Harren server stiet yn de twadde helte fan harren brûkersnamme!",
|
|
||||||
"onboarding.tips.migration": "<strong>Wisten jo dit al?</strong> Wannear’t jo it gefoel hawwe, dat {domain} yn de takomst net de krekte serverkar foar jo is, kinne jo nei elk oare Mastodon-Server wikselje, sûnder jo folgers te ferliezen. Jo kinne sels jo eigen server hoste!",
|
|
||||||
"onboarding.tips.verification": "<strong>Wisten jo dit al?</strong> Jo kinne jo account ferifiearje, troch op jo website in keppeling te pleatsen nei jo Mastodon-profyl en de website oan jo profyl ta te foegjen. Gjin kosten of dokuminten nedich!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Wachtwurdbefêstiging giet oer de maksimale wachtwurdlingte",
|
"password_confirmation.exceeds_maxlength": "Wachtwurdbefêstiging giet oer de maksimale wachtwurdlingte",
|
||||||
"password_confirmation.mismatching": "Wachtwurdbefêstiging komt net oerien",
|
"password_confirmation.mismatching": "Wachtwurdbefêstiging komt net oerien",
|
||||||
"picture_in_picture.restore": "Tebeksette",
|
"picture_in_picture.restore": "Tebeksette",
|
||||||
|
@ -625,44 +625,17 @@
|
|||||||
"notifications_permission_banner.enable": "Ceadaigh fógraí ar an deasc",
|
"notifications_permission_banner.enable": "Ceadaigh fógraí ar an deasc",
|
||||||
"notifications_permission_banner.how_to_control": "Chun fógraí a fháil nuair nach bhfuil Mastodon oscailte, cumasaigh fógraí deisce. Is féidir leat a rialú go beacht cé na cineálacha idirghníomhaíochtaí a ghineann fógraí deisce tríd an gcnaipe {icon} thuas nuair a bhíonn siad cumasaithe.",
|
"notifications_permission_banner.how_to_control": "Chun fógraí a fháil nuair nach bhfuil Mastodon oscailte, cumasaigh fógraí deisce. Is féidir leat a rialú go beacht cé na cineálacha idirghníomhaíochtaí a ghineann fógraí deisce tríd an gcnaipe {icon} thuas nuair a bhíonn siad cumasaithe.",
|
||||||
"notifications_permission_banner.title": "Ná caill aon rud go deo",
|
"notifications_permission_banner.title": "Ná caill aon rud go deo",
|
||||||
"onboarding.action.back": "Tóg ar ais mé",
|
|
||||||
"onboarding.actions.back": "Tóg ar ais mé",
|
|
||||||
"onboarding.actions.go_to_explore": "Tóg mé chun trending",
|
|
||||||
"onboarding.actions.go_to_home": "Tóg go dtí mo bheathú baile mé",
|
|
||||||
"onboarding.compose.template": "Dia duit #Mastodon!",
|
|
||||||
"onboarding.follows.empty": "Ar an drochuair, ní féidir aon torthaí a thaispeáint faoi láthair. Is féidir leat triail a bhaint as cuardach nó brabhsáil ar an leathanach taiscéalaíochta chun teacht ar dhaoine le leanúint, nó bain triail eile as níos déanaí.",
|
"onboarding.follows.empty": "Ar an drochuair, ní féidir aon torthaí a thaispeáint faoi láthair. Is féidir leat triail a bhaint as cuardach nó brabhsáil ar an leathanach taiscéalaíochta chun teacht ar dhaoine le leanúint, nó bain triail eile as níos déanaí.",
|
||||||
"onboarding.follows.lead": "Is é do bheathú baile an príomhbhealach chun taithí a fháil ar Mastodon. Dá mhéad daoine a leanann tú, is ea is gníomhaí agus is suimiúla a bheidh sé. Chun tú a chur ar bun, seo roinnt moltaí:",
|
|
||||||
"onboarding.follows.title": "Cuir do chuid fotha baile in oiriúint duit féin",
|
|
||||||
"onboarding.profile.discoverable": "Déan mo phróifíl a fháil amach",
|
"onboarding.profile.discoverable": "Déan mo phróifíl a fháil amach",
|
||||||
"onboarding.profile.discoverable_hint": "Nuair a roghnaíonn tú infhionnachtana ar Mastodon, d’fhéadfadh do phoist a bheith le feiceáil i dtorthaí cuardaigh agus treochtaí, agus d’fhéadfaí do phróifíl a mholadh do dhaoine a bhfuil na leasanna céanna acu leat.",
|
"onboarding.profile.discoverable_hint": "Nuair a roghnaíonn tú infhionnachtana ar Mastodon, d’fhéadfadh do phoist a bheith le feiceáil i dtorthaí cuardaigh agus treochtaí, agus d’fhéadfaí do phróifíl a mholadh do dhaoine a bhfuil na leasanna céanna acu leat.",
|
||||||
"onboarding.profile.display_name": "Ainm taispeána",
|
"onboarding.profile.display_name": "Ainm taispeána",
|
||||||
"onboarding.profile.display_name_hint": "D’ainm iomlán nó d’ainm spraíúil…",
|
"onboarding.profile.display_name_hint": "D’ainm iomlán nó d’ainm spraíúil…",
|
||||||
"onboarding.profile.lead": "Is féidir leat é seo a chomhlánú i gcónaí níos déanaí sna socruithe, áit a bhfuil níos mó roghanna saincheaptha ar fáil.",
|
|
||||||
"onboarding.profile.note": "Bith",
|
"onboarding.profile.note": "Bith",
|
||||||
"onboarding.profile.note_hint": "Is féidir leat @ daoine eile a lua nó #hashtags…",
|
"onboarding.profile.note_hint": "Is féidir leat @ daoine eile a lua nó #hashtags…",
|
||||||
"onboarding.profile.save_and_continue": "Sábháil agus lean ar aghaidh",
|
"onboarding.profile.save_and_continue": "Sábháil agus lean ar aghaidh",
|
||||||
"onboarding.profile.title": "Socrú próifíle",
|
"onboarding.profile.title": "Socrú próifíle",
|
||||||
"onboarding.profile.upload_avatar": "Íosluchtaigh pictiúr próifíl",
|
"onboarding.profile.upload_avatar": "Íosluchtaigh pictiúr próifíl",
|
||||||
"onboarding.profile.upload_header": "Íoslódáil an ceanntásca próifíl",
|
"onboarding.profile.upload_header": "Íoslódáil an ceanntásca próifíl",
|
||||||
"onboarding.share.lead": "Cuir in iúl do dhaoine conas is féidir leo tú a aimsiú ar Mastodon!",
|
|
||||||
"onboarding.share.message": "Is {username} mé ar #Mastodon! Tar lean mé ag {url}",
|
|
||||||
"onboarding.share.next_steps": "Na chéad chéimeanna eile is féidir:",
|
|
||||||
"onboarding.share.title": "Roinn do phróifíl",
|
|
||||||
"onboarding.start.lead": "Tá tú mar chuid de Mastodon anois, ardán meán sóisialta díláraithe uathúil ina ndéanann tú - ní algartam - do thaithí féin a choimeád. Cuirimis tús leat ar an teorainn shóisialta nua seo:",
|
|
||||||
"onboarding.start.skip": "Nach bhfuil cabhair uait le tosú?",
|
|
||||||
"onboarding.start.title": "Tá sé déanta agat!",
|
|
||||||
"onboarding.steps.follow_people.body": "Is éard atá i gceist le daoine suimiúla a leanúint ná Mastodon.",
|
|
||||||
"onboarding.steps.follow_people.title": "Cuir do chuid fotha baile in oiriúint duit féin",
|
|
||||||
"onboarding.steps.publish_status.body": "Abair heileo leis an domhan le téacs, grianghraif, físeáin nó pobalbhreith {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Déan do chéad phostáil",
|
|
||||||
"onboarding.steps.setup_profile.body": "Cuir le d'idirghníomhaíochtaí trí phróifíl chuimsitheach a bheith agat.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Déan do phróifíl a phearsantú",
|
|
||||||
"onboarding.steps.share_profile.body": "Cuir in iúl do do chairde conas tú a aimsiú ar Mastodon",
|
|
||||||
"onboarding.steps.share_profile.title": "Roinn do phróifíl Mastodon",
|
|
||||||
"onboarding.tips.2fa": "<strong>An raibh a fhios agat?</strong> Is féidir leat do chuntas a dhéanamh slán trí fhíordheimhniú dhá fhachtóir a shocrú i socruithe do chuntais. Oibríonn sé le haon aip TOTP de do rogha féin, níl aon uimhir theileafóin riachtanach!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>An raibh a fhios agat?</strong> Ós rud é go bhfuil Mastodon díláraithe, déanfar roinnt próifílí a dtagann tú trasna orthu a óstáil ar fhreastalaithe seachas do fhreastalaithe. Agus fós is féidir leat idirghníomhú leo gan uaim! Tá an freastalaí acu sa dara leath dá n-ainm úsáideora!",
|
|
||||||
"onboarding.tips.migration": "<strong>An raibh a fhios agat?</strong> Más dóigh leat nach rogha freastalaí iontach é {domain} amach anseo, is féidir leat bogadh go freastalaí Mastodon eile gan do leantóirí a chailliúint. Is féidir leat do fhreastalaí féin a óstáil fiú!",
|
|
||||||
"onboarding.tips.verification": "<strong>An raibh a fhios agat?</strong> Is féidir leat do chuntas a fhíorú trí nasc a chur le do phróifíl Mastodon ar do shuíomh Gréasáin féin agus an suíomh Gréasáin a chur le do phróifíl. Níl aon táillí nó doiciméid riachtanach!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Sáraíonn dearbhú pasfhocail uasfhad an phasfhocail",
|
"password_confirmation.exceeds_maxlength": "Sáraíonn dearbhú pasfhocail uasfhad an phasfhocail",
|
||||||
"password_confirmation.mismatching": "Ní hionann dearbhú pasfhocail",
|
"password_confirmation.mismatching": "Ní hionann dearbhú pasfhocail",
|
||||||
"picture_in_picture.restore": "Cuir é ar ais",
|
"picture_in_picture.restore": "Cuir é ar ais",
|
||||||
|
@ -625,44 +625,17 @@
|
|||||||
"notifications_permission_banner.enable": "Cuir brathan deasga an comas",
|
"notifications_permission_banner.enable": "Cuir brathan deasga an comas",
|
||||||
"notifications_permission_banner.how_to_control": "Airson brathan fhaighinn nuair nach eil Mastodon fosgailte, cuir na brathan deasga an comas. Tha an smachd agad fhèin air dè na seòrsaichean de chonaltradh a ghineas brathan deasga leis a’ phutan {icon} gu h-àrd nuair a bhios iad air an cur an comas.",
|
"notifications_permission_banner.how_to_control": "Airson brathan fhaighinn nuair nach eil Mastodon fosgailte, cuir na brathan deasga an comas. Tha an smachd agad fhèin air dè na seòrsaichean de chonaltradh a ghineas brathan deasga leis a’ phutan {icon} gu h-àrd nuair a bhios iad air an cur an comas.",
|
||||||
"notifications_permission_banner.title": "Na caill dad gu bràth tuilleadh",
|
"notifications_permission_banner.title": "Na caill dad gu bràth tuilleadh",
|
||||||
"onboarding.action.back": "Air ais leam",
|
|
||||||
"onboarding.actions.back": "Air ais leam",
|
|
||||||
"onboarding.actions.go_to_explore": "Thoir dha na treandaichean mi",
|
|
||||||
"onboarding.actions.go_to_home": "Thoir dhachaigh mi",
|
|
||||||
"onboarding.compose.template": "Shin thu, a #Mhastodon!",
|
|
||||||
"onboarding.follows.empty": "Gu mì-fhortanach, chan urrainn dhuinn toradh a shealltainn an-dràsta. Feuch gleus an luirg no duilleag an rùrachaidh airson daoine ri leantainn a lorg no feuch ris a-rithist an ceann tamaill.",
|
"onboarding.follows.empty": "Gu mì-fhortanach, chan urrainn dhuinn toradh a shealltainn an-dràsta. Feuch gleus an luirg no duilleag an rùrachaidh airson daoine ri leantainn a lorg no feuch ris a-rithist an ceann tamaill.",
|
||||||
"onboarding.follows.lead": "’S e do prìomh-doras do Mhastodon a th’ ann san dachaigh. Mar as motha an t-uiread de dhaoine a leanas tu ’s ann nas beòthaile inntinniche a bhios i. Seo moladh no dhà dhut airson tòiseachadh:",
|
|
||||||
"onboarding.follows.title": "Cuir dreach pearsanta air do dhachaigh",
|
|
||||||
"onboarding.profile.discoverable": "Bu mhath leam gun gabh a’ phròifil agam a rùrachadh",
|
"onboarding.profile.discoverable": "Bu mhath leam gun gabh a’ phròifil agam a rùrachadh",
|
||||||
"onboarding.profile.discoverable_hint": "Ma chuir thu romhad gun gabh a’ phròifil agad a rùrachadh air Mastodon, faodaidh na postaichean agad nochdadh ann an toraidhean luirg agus treandaichean agus dh’fhaoidte gun dèid a’ phròifil agad a mholadh dhan fheadhainn aig a bheil ùidhean coltach ri d’ ùidhean-sa.",
|
"onboarding.profile.discoverable_hint": "Ma chuir thu romhad gun gabh a’ phròifil agad a rùrachadh air Mastodon, faodaidh na postaichean agad nochdadh ann an toraidhean luirg agus treandaichean agus dh’fhaoidte gun dèid a’ phròifil agad a mholadh dhan fheadhainn aig a bheil ùidhean coltach ri d’ ùidhean-sa.",
|
||||||
"onboarding.profile.display_name": "Ainm-taisbeanaidh",
|
"onboarding.profile.display_name": "Ainm-taisbeanaidh",
|
||||||
"onboarding.profile.display_name_hint": "D’ ainm slàn no spòrsail…",
|
"onboarding.profile.display_name_hint": "D’ ainm slàn no spòrsail…",
|
||||||
"onboarding.profile.lead": "’S urrainn dhut seo a choileanadh uair sam bith eile sna roghainnean far am bi roghainnean gnàthachaidh eile ri làimh dhut cuideachd.",
|
|
||||||
"onboarding.profile.note": "Cunntas-beatha",
|
"onboarding.profile.note": "Cunntas-beatha",
|
||||||
"onboarding.profile.note_hint": "’S urrainn dhut @iomradh a thoirt air càch no air #tagaicheanHais…",
|
"onboarding.profile.note_hint": "’S urrainn dhut @iomradh a thoirt air càch no air #tagaicheanHais…",
|
||||||
"onboarding.profile.save_and_continue": "Sàbhail ’s lean air adhart",
|
"onboarding.profile.save_and_continue": "Sàbhail ’s lean air adhart",
|
||||||
"onboarding.profile.title": "Suidheachadh na pròifile",
|
"onboarding.profile.title": "Suidheachadh na pròifile",
|
||||||
"onboarding.profile.upload_avatar": "Luchdaich suas dealbh na pròifil",
|
"onboarding.profile.upload_avatar": "Luchdaich suas dealbh na pròifil",
|
||||||
"onboarding.profile.upload_header": "Luchdaich suas bann-cinn na pròifil",
|
"onboarding.profile.upload_header": "Luchdaich suas bann-cinn na pròifil",
|
||||||
"onboarding.share.lead": "Innis do dhaoine mar a gheibh iad grèim ort air Mastodon!",
|
|
||||||
"onboarding.share.message": "Is mise {username} air #Mastodon! Thig ’gam leantainn air {url}",
|
|
||||||
"onboarding.share.next_steps": "Ceuman eile as urrainn dhut gabhail:",
|
|
||||||
"onboarding.share.title": "Co-roinn a’ phròifil agad",
|
|
||||||
"onboarding.start.lead": "Tha thu ’nad bhall de Mhastodon a-nis, seo ùrlar mheadhanan sòisealta sònraichte sgaoilte far am bi na chì thu an urra riut fhèin seach an urra ri algairim. Seo dhut toiseach-tòiseachaidh air an àrainneachd ùr:",
|
|
||||||
"onboarding.start.skip": "Nach eil thu feumach air taic airson tòiseachadh?",
|
|
||||||
"onboarding.start.title": "Rinn thu a’ chùis air!",
|
|
||||||
"onboarding.steps.follow_people.body": "Tha leantainn dhaoine inntinneach air cridhe Mhastodon.",
|
|
||||||
"onboarding.steps.follow_people.title": "Cuir dreach pearsanta air do dhachaigh",
|
|
||||||
"onboarding.steps.publish_status.body": "Cuir an aithne air an t-saoghal le teacsa, dealbhan, videothan no cunntasan-bheachd {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Dèan a’ chiad phost agad",
|
|
||||||
"onboarding.steps.setup_profile.body": "Brosnaich an conaltradh a gheibh thu le pròifil shlàn.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Gnàthaich a’ phròifil agad",
|
|
||||||
"onboarding.steps.share_profile.body": "Leig fios dha do charaidean mar a gheibh iad lorg ort air Mastodon",
|
|
||||||
"onboarding.steps.share_profile.title": "Co-roinn a’ phròifil Mastodon agad",
|
|
||||||
"onboarding.tips.2fa": "<strong>An robh fios agad?</strong> ’S urrainn dhut an cunntas agad a dhìon is tu a’ suidheachadh dearbhadh dà-cheumnach ann an roghainnean a’ chunntais agad. Obraichidh e le aplacaid dearbhaidh dhà-cheumnaich sam bith a thogras tu gun fheum air àireamh fòn!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>An robh fios agad?</strong> On a tha Mastodon sgaoilte, tachraidh tu air pròifilean a tha ’gan òstadh air frithealaichean eile. ’S urrainn dhut bruidhinn riutha gun chnap-starra co-dhiù! ’S e ainm an fhrithealaiche a tha san dàrna leth dhen ainm-chleachdaiche aca!",
|
|
||||||
"onboarding.tips.migration": "<strong>An robh fios agad?</strong> Ma thig an latha nach eil thu toilichte le {domain} mar an fhrithealaiche agad tuilleadh, ’s urrainn dhut imrich gu frithealaiche Mastodon eile gun a bhith a’ call an luchd-leantainn agad. ’S urrainn dhut fiù frithealaiche agad fhèin òstadh!",
|
|
||||||
"onboarding.tips.verification": "<strong>An robh fios agad?</strong> ’S urrainn dhut an cunntas agad a dhearbhadh. Cuir ceangal ris a’ phròifil Mastodon air an làrach-lìn agad fhèin agus cuir an làrach-lìn ris a’ phròifil agad an uairsin. Cha bhi feum air pàigheadh no sgrìobhainnean!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Tha dearbhadh an fhacail-fhaire nas fhaide na tha ceadaichte do dh’faclan-faire",
|
"password_confirmation.exceeds_maxlength": "Tha dearbhadh an fhacail-fhaire nas fhaide na tha ceadaichte do dh’faclan-faire",
|
||||||
"password_confirmation.mismatching": "Chan eil an dearbhadh co-ionnan ris an fhacal-fhaire",
|
"password_confirmation.mismatching": "Chan eil an dearbhadh co-ionnan ris an fhacal-fhaire",
|
||||||
"picture_in_picture.restore": "Thoir air ais e",
|
"picture_in_picture.restore": "Thoir air ais e",
|
||||||
|
@ -87,10 +87,10 @@
|
|||||||
"alert.unexpected.title": "Vaites!",
|
"alert.unexpected.title": "Vaites!",
|
||||||
"alt_text_badge.title": "Texto Alt",
|
"alt_text_badge.title": "Texto Alt",
|
||||||
"announcement.announcement": "Anuncio",
|
"announcement.announcement": "Anuncio",
|
||||||
"annual_report.summary.archetype.booster": "A axencia de noticias",
|
"annual_report.summary.archetype.booster": "O Telexornal",
|
||||||
"annual_report.summary.archetype.lurker": "Volleur",
|
"annual_report.summary.archetype.lurker": "Volleur",
|
||||||
"annual_report.summary.archetype.oracle": "Sabichón/e",
|
"annual_report.summary.archetype.oracle": "Sabichón",
|
||||||
"annual_report.summary.archetype.pollster": "O INE",
|
"annual_report.summary.archetype.pollster": "I.G.E.",
|
||||||
"annual_report.summary.archetype.replier": "Lareteire",
|
"annual_report.summary.archetype.replier": "Lareteire",
|
||||||
"annual_report.summary.followers.followers": "seguidoras",
|
"annual_report.summary.followers.followers": "seguidoras",
|
||||||
"annual_report.summary.followers.total": "{count} en total",
|
"annual_report.summary.followers.total": "{count} en total",
|
||||||
@ -104,6 +104,7 @@
|
|||||||
"annual_report.summary.most_used_hashtag.none": "Nada",
|
"annual_report.summary.most_used_hashtag.none": "Nada",
|
||||||
"annual_report.summary.new_posts.new_posts": "novas publicacións",
|
"annual_report.summary.new_posts.new_posts": "novas publicacións",
|
||||||
"annual_report.summary.percentile.text": "<topLabel>Sitúante no top</topLabel><percentage></percentage><bottomLabel> das usuarias de Mastodon.</bottomLabel>",
|
"annual_report.summary.percentile.text": "<topLabel>Sitúante no top</topLabel><percentage></percentage><bottomLabel> das usuarias de Mastodon.</bottomLabel>",
|
||||||
|
"annual_report.summary.percentile.we_wont_tell_bernie": "Moito tes que contarnos!",
|
||||||
"annual_report.summary.thanks": "Grazas por ser parte de Mastodon!",
|
"annual_report.summary.thanks": "Grazas por ser parte de Mastodon!",
|
||||||
"attachments_list.unprocessed": "(sen procesar)",
|
"attachments_list.unprocessed": "(sen procesar)",
|
||||||
"audio.hide": "Agochar audio",
|
"audio.hide": "Agochar audio",
|
||||||
@ -139,13 +140,16 @@
|
|||||||
"column.blocks": "Usuarias bloqueadas",
|
"column.blocks": "Usuarias bloqueadas",
|
||||||
"column.bookmarks": "Marcadores",
|
"column.bookmarks": "Marcadores",
|
||||||
"column.community": "Cronoloxía local",
|
"column.community": "Cronoloxía local",
|
||||||
|
"column.create_list": "Crear lista",
|
||||||
"column.direct": "Mencións privadas",
|
"column.direct": "Mencións privadas",
|
||||||
"column.directory": "Procurar perfís",
|
"column.directory": "Procurar perfís",
|
||||||
"column.domain_blocks": "Dominios agochados",
|
"column.domain_blocks": "Dominios agochados",
|
||||||
|
"column.edit_list": "Editar lista",
|
||||||
"column.favourites": "Favoritas",
|
"column.favourites": "Favoritas",
|
||||||
"column.firehose": "O que acontece",
|
"column.firehose": "O que acontece",
|
||||||
"column.follow_requests": "Peticións de seguimento",
|
"column.follow_requests": "Peticións de seguimento",
|
||||||
"column.home": "Inicio",
|
"column.home": "Inicio",
|
||||||
|
"column.list_members": "Xestionar membros da lista",
|
||||||
"column.lists": "Listaxes",
|
"column.lists": "Listaxes",
|
||||||
"column.mutes": "Usuarias acaladas",
|
"column.mutes": "Usuarias acaladas",
|
||||||
"column.notifications": "Notificacións",
|
"column.notifications": "Notificacións",
|
||||||
@ -158,6 +162,7 @@
|
|||||||
"column_header.pin": "Fixar",
|
"column_header.pin": "Fixar",
|
||||||
"column_header.show_settings": "Amosar axustes",
|
"column_header.show_settings": "Amosar axustes",
|
||||||
"column_header.unpin": "Desapegar",
|
"column_header.unpin": "Desapegar",
|
||||||
|
"column_search.cancel": "Cancelar",
|
||||||
"column_subheading.settings": "Axustes",
|
"column_subheading.settings": "Axustes",
|
||||||
"community.column_settings.local_only": "Só local",
|
"community.column_settings.local_only": "Só local",
|
||||||
"community.column_settings.media_only": "Só multimedia",
|
"community.column_settings.media_only": "Só multimedia",
|
||||||
@ -463,11 +468,32 @@
|
|||||||
"link_preview.author": "Por {name}",
|
"link_preview.author": "Por {name}",
|
||||||
"link_preview.more_from_author": "Máis de {name}",
|
"link_preview.more_from_author": "Máis de {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} publicación} other {{counter} publicacións}}",
|
"link_preview.shares": "{count, plural, one {{counter} publicación} other {{counter} publicacións}}",
|
||||||
|
"lists.add_member": "Engadir",
|
||||||
|
"lists.add_to_list": "Engadir á lista",
|
||||||
|
"lists.add_to_lists": "Engadir {name} ás listas",
|
||||||
|
"lists.create": "Crear",
|
||||||
|
"lists.create_a_list_to_organize": "Crear unha nova lista para organizar o teu Inicio",
|
||||||
|
"lists.create_list": "Crear lista",
|
||||||
"lists.delete": "Eliminar listaxe",
|
"lists.delete": "Eliminar listaxe",
|
||||||
|
"lists.done": "Feito",
|
||||||
"lists.edit": "Editar listaxe",
|
"lists.edit": "Editar listaxe",
|
||||||
|
"lists.exclusive": "Ocultar membros no Inicio",
|
||||||
|
"lists.exclusive_hint": "Se alguén está nesta lista non aparerá na cronoloxía de Inicio para evitar duplicidades das publicacións.",
|
||||||
|
"lists.find_users_to_add": "Buscar persoas que engadir",
|
||||||
|
"lists.list_members": "Membros da lista",
|
||||||
|
"lists.list_members_count": "{count, plural, one {# membro} other {# membros}}",
|
||||||
|
"lists.list_name": "Nome da lista",
|
||||||
|
"lists.new_list_name": "Novo nome da lista",
|
||||||
|
"lists.no_lists_yet": "Aínda non hai listas.",
|
||||||
|
"lists.no_members_yet": "Aínda non hai membros.",
|
||||||
|
"lists.no_results_found": "Non se atoparon resultados.",
|
||||||
|
"lists.remove_member": "Retirar",
|
||||||
"lists.replies_policy.followed": "Calquera usuaria que siga",
|
"lists.replies_policy.followed": "Calquera usuaria que siga",
|
||||||
"lists.replies_policy.list": "Membros da lista",
|
"lists.replies_policy.list": "Membros da lista",
|
||||||
"lists.replies_policy.none": "Ninguén",
|
"lists.replies_policy.none": "Ninguén",
|
||||||
|
"lists.save": "Gardar",
|
||||||
|
"lists.search_placeholder": "Buscar persoas que segues",
|
||||||
|
"lists.show_replies_to": "Incluír respostas dos membros das listas a",
|
||||||
"load_pending": "{count, plural, one {# novo elemento} other {# novos elementos}}",
|
"load_pending": "{count, plural, one {# novo elemento} other {# novos elementos}}",
|
||||||
"loading_indicator.label": "Estase a cargar…",
|
"loading_indicator.label": "Estase a cargar…",
|
||||||
"media_gallery.hide": "Agochar",
|
"media_gallery.hide": "Agochar",
|
||||||
@ -624,44 +650,21 @@
|
|||||||
"notifications_permission_banner.enable": "Activar notificacións de escritorio",
|
"notifications_permission_banner.enable": "Activar notificacións de escritorio",
|
||||||
"notifications_permission_banner.how_to_control": "Activa as notificacións de escritorio para recibir notificacións mentras Mastodon non está aberto. Podes controlar de xeito preciso o tipo de interaccións que crean as notificacións de escritorio a través da {icon} superior unha vez están activadas.",
|
"notifications_permission_banner.how_to_control": "Activa as notificacións de escritorio para recibir notificacións mentras Mastodon non está aberto. Podes controlar de xeito preciso o tipo de interaccións que crean as notificacións de escritorio a través da {icon} superior unha vez están activadas.",
|
||||||
"notifications_permission_banner.title": "Non perder nada",
|
"notifications_permission_banner.title": "Non perder nada",
|
||||||
"onboarding.action.back": "Lévame de volta",
|
"onboarding.follows.back": "Volver",
|
||||||
"onboarding.actions.back": "Lévame de volta",
|
"onboarding.follows.done": "Feito",
|
||||||
"onboarding.actions.go_to_explore": "Mira do que se está a falar",
|
|
||||||
"onboarding.actions.go_to_home": "Vai á cronoloxía de inicio",
|
|
||||||
"onboarding.compose.template": "Ola #Mastodon!",
|
|
||||||
"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.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": "A cronoloxía de Inicio é o principal xeito de desfrutar Mastodon. Cantas máis persoas sigas mais interesante e activa será. Para comezar, aquí tes algunhas suxestións:",
|
"onboarding.follows.search": "Buscar",
|
||||||
"onboarding.follows.title": "Personaliza a cronoloxía de inicio",
|
"onboarding.follows.title": "Comeza seguindo algunhas persoas",
|
||||||
"onboarding.profile.discoverable": "Que o meu perfil se poida atopar",
|
"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.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": "Nome público",
|
||||||
"onboarding.profile.display_name_hint": "O teu nome completo ou un nome divertido…",
|
"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": "Acerca de ti",
|
||||||
"onboarding.profile.note_hint": "Podes @mencionar a outras persoas ou usar #cancelos…",
|
"onboarding.profile.note_hint": "Podes @mencionar a outras persoas ou usar #cancelos…",
|
||||||
"onboarding.profile.save_and_continue": "Gardar e continuar",
|
"onboarding.profile.save_and_continue": "Gardar e continuar",
|
||||||
"onboarding.profile.title": "Configuración do perfil",
|
"onboarding.profile.title": "Configuración do perfil",
|
||||||
"onboarding.profile.upload_avatar": "Subir imaxe do perfil",
|
"onboarding.profile.upload_avatar": "Subir imaxe do perfil",
|
||||||
"onboarding.profile.upload_header": "Subir cabeceira para o 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:",
|
|
||||||
"onboarding.share.title": "Comparte o teu perfil",
|
|
||||||
"onboarding.start.lead": "Xa formas parte de Mastodon, unha plataforma de relacións sociais descentralizada, única, onde ti —e non un algoritmo— elixes o que les. Axudámosche cos primeiros pasos:",
|
|
||||||
"onboarding.start.skip": "Queres omitir todo isto?",
|
|
||||||
"onboarding.start.title": "Pois xa está!",
|
|
||||||
"onboarding.steps.follow_people.body": "Mastodon consiste en seguir a persoas interesantes.",
|
|
||||||
"onboarding.steps.follow_people.title": "Personaliza a túa cronoloxía",
|
|
||||||
"onboarding.steps.publish_status.body": "Exprésate con texto, fotos, vídeos ou enquisas {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Escribe a túa primeira publicación",
|
|
||||||
"onboarding.steps.setup_profile.body": "Ao engadir información ao teu perfil é máis probable que teñas máis interaccións.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Personaliza o perfil",
|
|
||||||
"onboarding.steps.share_profile.body": "Dille ás amizades como poden atoparte en Mastodon.",
|
|
||||||
"onboarding.steps.share_profile.title": "Comparte o teu perfil en Mastodon",
|
|
||||||
"onboarding.tips.2fa": "<strong>Sabes que?</strong> Podes protexer a túa conta configurando un segundo factor de autenticación nos axustes. Funciona con calquera app TOTP, non precisas un número de teléfono!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Sabes que?</strong> Como Mastodon é descentralizado, algúns perfís que atopes estarán en servidores diferentes ao teu. Pero podes interactuar igualmente con eles! O seu servidor é o que ven despois da @ no seu identificador!",
|
|
||||||
"onboarding.tips.migration": "<strong>Sabes que?</strong> Se cres que {domain} non é o servidor axeitado para ti, podes mover a conta a outro servidor Mastodon sen perder as túas seguidoras. Incluso podes hospedar o teu propio servidor!",
|
|
||||||
"onboarding.tips.verification": "<strong>Sabes que?</strong> Podes verificar a túa conta poñendo unha ligazón ao teu perfil en Mastodon no teu sitio web e engadindo esa web ao teu perfil. Non hai que pagar nada nin presentar documentos!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "A lonxitude do contrasinal de confirmación excede o máximo permitido",
|
"password_confirmation.exceeds_maxlength": "A lonxitude do contrasinal de confirmación excede o máximo permitido",
|
||||||
"password_confirmation.mismatching": "O contrasinal de confirmación non concorda",
|
"password_confirmation.mismatching": "O contrasinal de confirmación non concorda",
|
||||||
"picture_in_picture.restore": "Devolver",
|
"picture_in_picture.restore": "Devolver",
|
||||||
|
@ -162,6 +162,7 @@
|
|||||||
"column_header.pin": "הצמדה",
|
"column_header.pin": "הצמדה",
|
||||||
"column_header.show_settings": "הצגת העדפות",
|
"column_header.show_settings": "הצגת העדפות",
|
||||||
"column_header.unpin": "שחרור הצמדה",
|
"column_header.unpin": "שחרור הצמדה",
|
||||||
|
"column_search.cancel": "ביטול",
|
||||||
"column_subheading.settings": "הגדרות",
|
"column_subheading.settings": "הגדרות",
|
||||||
"community.column_settings.local_only": "מקומי בלבד",
|
"community.column_settings.local_only": "מקומי בלבד",
|
||||||
"community.column_settings.media_only": "מדיה בלבד",
|
"community.column_settings.media_only": "מדיה בלבד",
|
||||||
@ -649,44 +650,21 @@
|
|||||||
"notifications_permission_banner.enable": "לאפשר נוטיפיקציות מסך",
|
"notifications_permission_banner.enable": "לאפשר נוטיפיקציות מסך",
|
||||||
"notifications_permission_banner.how_to_control": "כדי לקבל התראות גם כאשר מסטודון סגור יש לאפשר התראות מסך. ניתן לשלוט בדיוק איזה סוג של אינטראקציות יביא להתראות מסך דרך כפתור ה- {icon} מרגע שהן מאופשרות.",
|
"notifications_permission_banner.how_to_control": "כדי לקבל התראות גם כאשר מסטודון סגור יש לאפשר התראות מסך. ניתן לשלוט בדיוק איזה סוג של אינטראקציות יביא להתראות מסך דרך כפתור ה- {icon} מרגע שהן מאופשרות.",
|
||||||
"notifications_permission_banner.title": "לעולם אל תחמיץ דבר",
|
"notifications_permission_banner.title": "לעולם אל תחמיץ דבר",
|
||||||
"onboarding.action.back": "חזרה",
|
"onboarding.follows.back": "בחזרה",
|
||||||
"onboarding.actions.back": "חזרה",
|
"onboarding.follows.done": "בוצע",
|
||||||
"onboarding.actions.go_to_explore": "הצגת מגמות",
|
|
||||||
"onboarding.actions.go_to_home": "מעבר לזרם הודעות הנעקבים",
|
|
||||||
"onboarding.compose.template": "שלום #מסטודון!",
|
|
||||||
"onboarding.follows.empty": "למצער, תוצאות לחיפושך אינן בנמצא. ניתן להשתמש בחיפוש או בדף החקירות לשם מציאת אנשים ולעקבם. אפשר גם לנסות שוב אחר כך.",
|
"onboarding.follows.empty": "למצער, תוצאות לחיפושך אינן בנמצא. ניתן להשתמש בחיפוש או בדף החקירות לשם מציאת אנשים ולעקבם. אפשר גם לנסות שוב אחר כך.",
|
||||||
"onboarding.follows.lead": "אתם אוצרים את הזרם הבייתי שלכם. ככל שתעקבו אחרי יותר אנשים, הוא יהיה עשיר ופעיל יותר. הנה כמה פרופילים להתחיל בהם - תמיד ניתן להפסיק מעקב אחריהם בהמשך!",
|
"onboarding.follows.search": "חיפוש",
|
||||||
"onboarding.follows.title": "פופולארי על מסטודון",
|
"onboarding.follows.title": "כדי להתחיל, יש לעקוב אחרי אנשים",
|
||||||
"onboarding.profile.discoverable": "כלול את הפרופיל שלי בעמודת התגליות",
|
"onboarding.profile.discoverable": "כלול את הפרופיל שלי בעמודת התגליות",
|
||||||
"onboarding.profile.discoverable_hint": "כשתבחרו להכלל ב\"תגליות\" על מסטודון, ההודעות שלכם עשויות להופיע בתוצאות חיפוש ועמודות \"נושאים חמים\", והפרופיל יוצע לאחרים עם תחומי עניין משותפים לכם.",
|
"onboarding.profile.discoverable_hint": "כשתבחרו להכלל ב\"תגליות\" על מסטודון, ההודעות שלכם עשויות להופיע בתוצאות חיפוש ועמודות \"נושאים חמים\", והפרופיל יוצע לאחרים עם תחומי עניין משותפים לכם.",
|
||||||
"onboarding.profile.display_name": "שם להצגה",
|
"onboarding.profile.display_name": "שם להצגה",
|
||||||
"onboarding.profile.display_name_hint": "שמך המלא או כינוי הכיף שלך…",
|
"onboarding.profile.display_name_hint": "שמך המלא או כינוי הכיף שלך…",
|
||||||
"onboarding.profile.lead": "תמיד ניתן להשלים זאת אחר כך בהגדרות, שם יש אפילו עוד אפשרויות להתאמה אישית.",
|
|
||||||
"onboarding.profile.note": "אודות",
|
"onboarding.profile.note": "אודות",
|
||||||
"onboarding.profile.note_hint": "ניתן @לאזכר משתמשים אחרים או #תגיות…",
|
"onboarding.profile.note_hint": "ניתן @לאזכר משתמשים אחרים או #תגיות…",
|
||||||
"onboarding.profile.save_and_continue": "לשמור ולהמשיך",
|
"onboarding.profile.save_and_continue": "לשמור ולהמשיך",
|
||||||
"onboarding.profile.title": "הגדרת פרופיל",
|
"onboarding.profile.title": "הגדרת פרופיל",
|
||||||
"onboarding.profile.upload_avatar": "העלאת תמונת פרופיל",
|
"onboarding.profile.upload_avatar": "העלאת תמונת פרופיל",
|
||||||
"onboarding.profile.upload_header": "העלאת כותרת פרופיל",
|
"onboarding.profile.upload_header": "העלאת כותרת פרופיל",
|
||||||
"onboarding.share.lead": "כדאי להודיע לחברים היכן למצוא אותך במסטודון!",
|
|
||||||
"onboarding.share.message": "אני {username} ברשת #מסטודון! בואו לעקוב אחרי בכתובת {url}",
|
|
||||||
"onboarding.share.next_steps": "לאיפה להמשיך מכאן:",
|
|
||||||
"onboarding.share.title": "לשתף פרופיל",
|
|
||||||
"onboarding.start.lead": "חשבונך החדש במסטודון מוכן. הנה דרכים להפיק ממנו את המירב:",
|
|
||||||
"onboarding.start.skip": "לדלג הלאה?",
|
|
||||||
"onboarding.start.title": "הצלחת!",
|
|
||||||
"onboarding.steps.follow_people.body": "זרם הבית שלכם יאצר על ידיכם. בואו נמלא אותו באנשים מעניינים.",
|
|
||||||
"onboarding.steps.follow_people.title": "להוסיף למעקב {count, plural,one {חשבון אחד}other {# חשבונות}}",
|
|
||||||
"onboarding.steps.publish_status.body": "ברכו לשלום את העולם.",
|
|
||||||
"onboarding.steps.publish_status.title": "כתבו את הפוסט הראשון שלכם",
|
|
||||||
"onboarding.steps.setup_profile.body": "כדאי להשלים את הפרופיל כדי לעודד אחרים ליצירת קשר.",
|
|
||||||
"onboarding.steps.setup_profile.title": "התאמה אישית של הפרופיל",
|
|
||||||
"onboarding.steps.share_profile.body": "ספרו לחברים איך למצוא אתכם במסטודון!",
|
|
||||||
"onboarding.steps.share_profile.title": "לשתף פרופיל",
|
|
||||||
"onboarding.tips.2fa": "<strong>הידעת?</strong> ניתן לאבטח את החשבון ע\"י הקמת אימות דו-שלבי במסך מאפייני החשבון. השיטה תעבוד עם כל יישומון תואם TOTP על המכשיר שלך, ללא צורך במספר טלפון!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>הידעת?</strong> כיוון שמסטודון פועל ברשת מבוזרת, חלק מהפרופילים שתתקלו בהם פועלים משרתים אחרים משרת הבית שלכם. ניתן להיות איתם בקשר בצורה זהה לכל חשבון אחר! שם השרת שלהם הוא החלק השני של שם המשתמש שלהם!",
|
|
||||||
"onboarding.tips.migration": "<strong>הידעת?</strong> אם תחליטו כי {domain} איננו שרת שמתאים לכם בעתיד, ניתן לעבור לשרת אחר מבלי לאבד עוקבים. תוכלו אפילו להקים שרת משלכן!",
|
|
||||||
"onboarding.tips.verification": "<strong>הידעת?</strong> ניתן לאשרר את החשבון ע\"י קישור הפרופיל אל האתר שלכם ומהאתר חזרה לפרופיל. לא נדרשים תשלומים ומסמכים!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "הסיסמה בשדה אימות הסיסמה ארוכה מאורך הסיסמה המירבי",
|
"password_confirmation.exceeds_maxlength": "הסיסמה בשדה אימות הסיסמה ארוכה מאורך הסיסמה המירבי",
|
||||||
"password_confirmation.mismatching": "אימות סיסמה אינו תואם לסיסמה",
|
"password_confirmation.mismatching": "אימות סיסמה אינו תואם לסיסמה",
|
||||||
"picture_in_picture.restore": "החזירי למקומו",
|
"picture_in_picture.restore": "החזירי למקומו",
|
||||||
|
@ -403,30 +403,9 @@
|
|||||||
"notifications.filter.polls": "चुनाव परिणाम",
|
"notifications.filter.polls": "चुनाव परिणाम",
|
||||||
"notifications.grant_permission": "अनुमति दें",
|
"notifications.grant_permission": "अनुमति दें",
|
||||||
"notifications.group": "{count} सूचनाएँ",
|
"notifications.group": "{count} सूचनाएँ",
|
||||||
"onboarding.action.back": "मुझे वापस ले जाओ",
|
|
||||||
"onboarding.actions.back": "मुझे वापस ले जाओ",
|
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
|
||||||
"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": "अपना प्रोफाइल खोजने योग्य बनाएं",
|
||||||
"onboarding.profile.discoverable_hint": "जब आप मॅस्टोडॉन पर डिस्कवरेबिलिटी चुनते हैं तो आपके पोस्ट ट्रेंडिंग और सर्च में दिख सकते हैं और आपका प्रोफाइल आपके ही जैसे अकाउंट्स को सुझाया जा सकता है।",
|
"onboarding.profile.discoverable_hint": "जब आप मॅस्टोडॉन पर डिस्कवरेबिलिटी चुनते हैं तो आपके पोस्ट ट्रेंडिंग और सर्च में दिख सकते हैं और आपका प्रोफाइल आपके ही जैसे अकाउंट्स को सुझाया जा सकता है।",
|
||||||
"onboarding.profile.display_name": "प्रदर्शित नाम",
|
"onboarding.profile.display_name": "प्रदर्शित नाम",
|
||||||
"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:",
|
|
||||||
"onboarding.start.skip": "Want to skip right ahead?",
|
|
||||||
"onboarding.start.title": "आपने कर लिया!",
|
|
||||||
"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": "अपनी पहली पोस्ट बनाएं",
|
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"onboarding.tips.2fa": "<strong>क्या आप जानते है?</strong> आप अपना खाता दो-कदमवाले प्रमाणीकरण से अपने खाते की सेटिंग से सुरक्षित कर सकते हे!",
|
|
||||||
"poll.closed": "बंद कर दिया",
|
"poll.closed": "बंद कर दिया",
|
||||||
"poll.refresh": "रीफ्रेश करें",
|
"poll.refresh": "रीफ्रेश करें",
|
||||||
"poll.vote": "वोट",
|
"poll.vote": "वोट",
|
||||||
|
@ -349,21 +349,7 @@
|
|||||||
"notifications.grant_permission": "Odobri dopuštenje.",
|
"notifications.grant_permission": "Odobri dopuštenje.",
|
||||||
"notifications.group": "{count} obavijesti",
|
"notifications.group": "{count} obavijesti",
|
||||||
"notifications.mark_as_read": "Označi sve obavijesti kao pročitane",
|
"notifications.mark_as_read": "Označi sve obavijesti kao pročitane",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
|
||||||
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
|
|
||||||
"onboarding.follows.title": "Popular on Mastodon",
|
|
||||||
"onboarding.profile.upload_avatar": "Učitaj sliku profila",
|
"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.",
|
|
||||||
"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": "Napiši svoj prvi post",
|
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"poll.closed": "Završeno",
|
"poll.closed": "Završeno",
|
||||||
"poll.refresh": "Osvježi",
|
"poll.refresh": "Osvježi",
|
||||||
"poll.reveal": "Vidi rezultate",
|
"poll.reveal": "Vidi rezultate",
|
||||||
|
@ -140,13 +140,16 @@
|
|||||||
"column.blocks": "Letiltott felhasználók",
|
"column.blocks": "Letiltott felhasználók",
|
||||||
"column.bookmarks": "Könyvjelzők",
|
"column.bookmarks": "Könyvjelzők",
|
||||||
"column.community": "Helyi idővonal",
|
"column.community": "Helyi idővonal",
|
||||||
|
"column.create_list": "Lista létrehozása",
|
||||||
"column.direct": "Személyes említések",
|
"column.direct": "Személyes említések",
|
||||||
"column.directory": "Profilok böngészése",
|
"column.directory": "Profilok böngészése",
|
||||||
"column.domain_blocks": "Letiltott domainek",
|
"column.domain_blocks": "Letiltott domainek",
|
||||||
|
"column.edit_list": "Lista módosítása",
|
||||||
"column.favourites": "Kedvencek",
|
"column.favourites": "Kedvencek",
|
||||||
"column.firehose": "Hírfolyamok",
|
"column.firehose": "Hírfolyamok",
|
||||||
"column.follow_requests": "Követési kérések",
|
"column.follow_requests": "Követési kérések",
|
||||||
"column.home": "Kezdőlap",
|
"column.home": "Kezdőlap",
|
||||||
|
"column.list_members": "Listatagok kezelése",
|
||||||
"column.lists": "Listák",
|
"column.lists": "Listák",
|
||||||
"column.mutes": "Némított felhasználók",
|
"column.mutes": "Némított felhasználók",
|
||||||
"column.notifications": "Értesítések",
|
"column.notifications": "Értesítések",
|
||||||
@ -159,6 +162,7 @@
|
|||||||
"column_header.pin": "Kitűzés",
|
"column_header.pin": "Kitűzés",
|
||||||
"column_header.show_settings": "Beállítások megjelenítése",
|
"column_header.show_settings": "Beállítások megjelenítése",
|
||||||
"column_header.unpin": "Kitűzés eltávolítása",
|
"column_header.unpin": "Kitűzés eltávolítása",
|
||||||
|
"column_search.cancel": "Mégse",
|
||||||
"column_subheading.settings": "Beállítások",
|
"column_subheading.settings": "Beállítások",
|
||||||
"community.column_settings.local_only": "Csak helyi",
|
"community.column_settings.local_only": "Csak helyi",
|
||||||
"community.column_settings.media_only": "Csak média",
|
"community.column_settings.media_only": "Csak média",
|
||||||
@ -464,11 +468,32 @@
|
|||||||
"link_preview.author": "{name} szerint",
|
"link_preview.author": "{name} szerint",
|
||||||
"link_preview.more_from_author": "Több tőle: {name}",
|
"link_preview.more_from_author": "Több tőle: {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} bejegyzés} other {{counter} bejegyzés}}",
|
"link_preview.shares": "{count, plural, one {{counter} bejegyzés} other {{counter} bejegyzés}}",
|
||||||
|
"lists.add_member": "Hozzáadás",
|
||||||
|
"lists.add_to_list": "Hozzáadás a listához",
|
||||||
|
"lists.add_to_lists": "{name} hozzáadása a listához",
|
||||||
|
"lists.create": "Létrehozás",
|
||||||
|
"lists.create_a_list_to_organize": "Új lista létrehozása a kezdőlapod szervezéséhez",
|
||||||
|
"lists.create_list": "Lista létrehozása",
|
||||||
"lists.delete": "Lista törlése",
|
"lists.delete": "Lista törlése",
|
||||||
|
"lists.done": "Kész",
|
||||||
"lists.edit": "Lista szerkesztése",
|
"lists.edit": "Lista szerkesztése",
|
||||||
|
"lists.exclusive": "Tagok elrejtése a kezdőlapon",
|
||||||
|
"lists.exclusive_hint": "Ha valaki szerepel ezen a listán, el lesz rejtve a kezdőlapod hírfolyamán, hogy ne lásd kétszer a bejegyzéseit.",
|
||||||
|
"lists.find_users_to_add": "Hozzáadandó felhasználók keresése",
|
||||||
|
"lists.list_members": "Tagok listázása",
|
||||||
|
"lists.list_members_count": "{count, plural, one {# tag} other {# tag}}",
|
||||||
|
"lists.list_name": "Lista neve",
|
||||||
|
"lists.new_list_name": "Új lista neve",
|
||||||
|
"lists.no_lists_yet": "Nincsenek még listák.",
|
||||||
|
"lists.no_members_yet": "Nincsenek még tagok.",
|
||||||
|
"lists.no_results_found": "Nincs találat.",
|
||||||
|
"lists.remove_member": "Eltávolítás",
|
||||||
"lists.replies_policy.followed": "Bármely követett felhasználó",
|
"lists.replies_policy.followed": "Bármely követett felhasználó",
|
||||||
"lists.replies_policy.list": "A lista tagjai",
|
"lists.replies_policy.list": "A lista tagjai",
|
||||||
"lists.replies_policy.none": "Senki",
|
"lists.replies_policy.none": "Senki",
|
||||||
|
"lists.save": "Mentés",
|
||||||
|
"lists.search_placeholder": "Keresés a követett személyek között",
|
||||||
|
"lists.show_replies_to": "Listatagok válaszainak hozzávétele",
|
||||||
"load_pending": "{count, plural, one {# új elem} other {# új elem}}",
|
"load_pending": "{count, plural, one {# új elem} other {# új elem}}",
|
||||||
"loading_indicator.label": "Betöltés…",
|
"loading_indicator.label": "Betöltés…",
|
||||||
"media_gallery.hide": "Elrejtés",
|
"media_gallery.hide": "Elrejtés",
|
||||||
@ -625,44 +650,21 @@
|
|||||||
"notifications_permission_banner.enable": "Asztali értesítések engedélyezése",
|
"notifications_permission_banner.enable": "Asztali értesítések engedélyezése",
|
||||||
"notifications_permission_banner.how_to_control": "Ahhoz, hogy értesítéseket kapj akkor, amikor a Mastodon nincs megnyitva, engedélyezd az asztali értesítéseket. Pontosan be tudod állítani, hogy milyen interakciókról értesülj a fenti {icon} gombon keresztül, ha egyszer már engedélyezted őket.",
|
"notifications_permission_banner.how_to_control": "Ahhoz, hogy értesítéseket kapj akkor, amikor a Mastodon nincs megnyitva, engedélyezd az asztali értesítéseket. Pontosan be tudod állítani, hogy milyen interakciókról értesülj a fenti {icon} gombon keresztül, ha egyszer már engedélyezted őket.",
|
||||||
"notifications_permission_banner.title": "Soha ne mulassz el semmit",
|
"notifications_permission_banner.title": "Soha ne mulassz el semmit",
|
||||||
"onboarding.action.back": "Vissza",
|
"onboarding.follows.back": "Vissza",
|
||||||
"onboarding.actions.back": "Vissza",
|
"onboarding.follows.done": "Kész",
|
||||||
"onboarding.actions.go_to_explore": "Felkapottak megtekintése",
|
|
||||||
"onboarding.actions.go_to_home": "Ugrás a saját hírfolyamra",
|
|
||||||
"onboarding.compose.template": "Üdvözlet, #Mastodon!",
|
|
||||||
"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.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 kezdőlapod a Mastodon használatának elsődleges módja. Minél több embert követsz, annál aktívabbak és érdekesebbek lesznek a dolgok. Az induláshoz itt van néhány javaslat:",
|
"onboarding.follows.search": "Keresés",
|
||||||
"onboarding.follows.title": "Szabd személyre a kezdőlapodat",
|
"onboarding.follows.title": "A kezdéshez kezdj el embereket követni",
|
||||||
"onboarding.profile.discoverable": "Saját profil beállítása felfedezhetőként",
|
"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.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": "Megjelenített név",
|
||||||
"onboarding.profile.display_name_hint": "Teljes neved vagy vicces neved…",
|
"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": "Bemutatkozás",
|
||||||
"onboarding.profile.note_hint": "Megemlíthetsz @másokat vagy #hashtag-eket…",
|
"onboarding.profile.note_hint": "Megemlíthetsz @másokat vagy #hashtag-eket…",
|
||||||
"onboarding.profile.save_and_continue": "Mentés és folytatás",
|
"onboarding.profile.save_and_continue": "Mentés és folytatás",
|
||||||
"onboarding.profile.title": "Profilbeállítás",
|
"onboarding.profile.title": "Profilbeállítás",
|
||||||
"onboarding.profile.upload_avatar": "Profilkép feltöltése",
|
"onboarding.profile.upload_avatar": "Profilkép feltöltése",
|
||||||
"onboarding.profile.upload_header": "Profil fejléc 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:",
|
|
||||||
"onboarding.share.title": "Profil megosztása",
|
|
||||||
"onboarding.start.lead": "Az új Mastodon-fiók használatra kész. Így hozhatod ki belőle a legtöbbet:",
|
|
||||||
"onboarding.start.skip": "Nincs szükséged segítségre a kezdéshez?",
|
|
||||||
"onboarding.start.title": "Ez sikerült!",
|
|
||||||
"onboarding.steps.follow_people.body": "A Mastodon az érdekes emberek követéséről szól.",
|
|
||||||
"onboarding.steps.follow_people.title": "Szabd személyre a kezdőlapodat",
|
|
||||||
"onboarding.steps.publish_status.body": "Köszöntsd a világot szöveggel, fotókkal, videókkal vagy szavazásokkal {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Az első bejegyzés létrehozása",
|
|
||||||
"onboarding.steps.setup_profile.body": "Növeld az interakciók számát a profilod részletesebb kitöltésével.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Szabd személyre a profilodat",
|
|
||||||
"onboarding.steps.share_profile.body": "Tudasd az ismerőseiddel, hogyan találhatnak meg a Mastodonon",
|
|
||||||
"onboarding.steps.share_profile.title": "Oszd meg a Mastodon profilodat",
|
|
||||||
"onboarding.tips.2fa": "<strong>Tudtad?</strong> A fiókod biztonságossá teheted, ha a fiók beállításaiban beállítod a kétlépcsős hitelesítést. Bármilyen választott TOTP alkalmazással működik, nincs szükség telefonszámra!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Tudtad?</strong> Mivel a Mastodon decentralizált, egyes profilok, amelyekkel találkozol, más kiszolgálókon lesznek tárolva. És mégis zökkenőmentesen kommunikálhatsz velük! A kiszolgáló a felhasználónevük második felében található!",
|
|
||||||
"onboarding.tips.migration": "<strong>Tudtad?</strong> Ha úgy érzed, hogy a {domain} már nem jó kiszolgáló a számodra, átköltözhetsz egy másik Mastodon kiszolgálóra anélkül, hogy elveszítenéd a követőidet. Akár saját kiszolgálót is üzemeltethetsz!",
|
|
||||||
"onboarding.tips.verification": "<strong>Tudtad?</strong> Fiókodat ellenőrizheted, ha raksz egy hivatkozást a Mastodon-profilodra a saját webhelyeden és hozzáadod ezt a webhelyet a profilodhoz. Nincs szükség díjfizetésre vagy dokumentumra!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "A jelszó megerősítése hosszabb a legnagyobb megengedett jelszóhossznál",
|
"password_confirmation.exceeds_maxlength": "A jelszó megerősítése hosszabb a legnagyobb megengedett jelszóhossznál",
|
||||||
"password_confirmation.mismatching": "A jelszómegerősítés nem egyezik",
|
"password_confirmation.mismatching": "A jelszómegerősítés nem egyezik",
|
||||||
"picture_in_picture.restore": "Visszahelyezés",
|
"picture_in_picture.restore": "Visszahelyezés",
|
||||||
@ -691,7 +693,7 @@
|
|||||||
"recommended": "Ajánlott",
|
"recommended": "Ajánlott",
|
||||||
"refresh": "Frissítés",
|
"refresh": "Frissítés",
|
||||||
"regeneration_indicator.label": "Betöltés…",
|
"regeneration_indicator.label": "Betöltés…",
|
||||||
"regeneration_indicator.sublabel": "A saját idővonalad épp készül!",
|
"regeneration_indicator.sublabel": "A kezdőlapod hírfolyama épp készül!",
|
||||||
"relative_time.days": "{number}n",
|
"relative_time.days": "{number}n",
|
||||||
"relative_time.full.days": "{number, plural, one {# napja} other {# napja}}",
|
"relative_time.full.days": "{number, plural, one {# napja} other {# napja}}",
|
||||||
"relative_time.full.hours": "{number, plural, one {# órája} other {# órája}}",
|
"relative_time.full.hours": "{number, plural, one {# órája} other {# órája}}",
|
||||||
@ -745,7 +747,7 @@
|
|||||||
"report.thanks.title": "Nem akarod ezt látni?",
|
"report.thanks.title": "Nem akarod ezt látni?",
|
||||||
"report.thanks.title_actionable": "Köszönjük, hogy jelentetted, megnézzük.",
|
"report.thanks.title_actionable": "Köszönjük, hogy jelentetted, megnézzük.",
|
||||||
"report.unfollow": "@{name} követésének leállítása",
|
"report.unfollow": "@{name} követésének leállítása",
|
||||||
"report.unfollow_explanation": "Követed ezt a fiókot. Hogy ne lásd a bejegyzéseit a saját idővonaladon, szüntesd meg a követését.",
|
"report.unfollow_explanation": "Követed ezt a fiókot. Hogy ne lásd a bejegyzéseit a kezdőlapi hírfolyamban, szüntesd meg a követését.",
|
||||||
"report_notification.attached_statuses": "{count} bejegyzés mellékelve",
|
"report_notification.attached_statuses": "{count} bejegyzés mellékelve",
|
||||||
"report_notification.categories.legal": "Jogi",
|
"report_notification.categories.legal": "Jogi",
|
||||||
"report_notification.categories.legal_sentence": "illegális tartalom",
|
"report_notification.categories.legal_sentence": "illegális tartalom",
|
||||||
@ -849,7 +851,7 @@
|
|||||||
"subscribed_languages.lead": "A változtatás után csak a kiválasztott nyelvű bejegyzések fognak megjelenni a kezdőlapon és az idővonalakon. Ha egy sincs kiválasztva, akkor minden nyelven megjelennek a bejegyzések.",
|
"subscribed_languages.lead": "A változtatás után csak a kiválasztott nyelvű bejegyzések fognak megjelenni a kezdőlapon és az idővonalakon. Ha egy sincs kiválasztva, akkor minden nyelven megjelennek a bejegyzések.",
|
||||||
"subscribed_languages.save": "Változások mentése",
|
"subscribed_languages.save": "Változások mentése",
|
||||||
"subscribed_languages.target": "Feliratkozott nyelvek módosítása {target} esetében",
|
"subscribed_languages.target": "Feliratkozott nyelvek módosítása {target} esetében",
|
||||||
"tabs_bar.home": "Kezdőoldal",
|
"tabs_bar.home": "Kezdőlap",
|
||||||
"tabs_bar.notifications": "Értesítések",
|
"tabs_bar.notifications": "Értesítések",
|
||||||
"time_remaining.days": "{number, plural, one {# nap} other {# nap}} van hátra",
|
"time_remaining.days": "{number, plural, one {# nap} other {# nap}} van hátra",
|
||||||
"time_remaining.hours": "{number, plural, one {# óra} other {# óra}} van hátra",
|
"time_remaining.hours": "{number, plural, one {# óra} other {# óra}} van hátra",
|
||||||
|
@ -342,22 +342,6 @@
|
|||||||
"notifications_permission_banner.enable": "Միացնել դիտարկչից ծանուցումները",
|
"notifications_permission_banner.enable": "Միացնել դիտարկչից ծանուցումները",
|
||||||
"notifications_permission_banner.how_to_control": "Ծանուցումներ ստանալու համար, երբ Մաստոդոնը բաց չէ՝ ակտիւացրու աշխատատիրոյթի ծանուցումները։ Դու կարող ես ճշգրտօրէն վերահսկել թէ ինչպիսի փոխգործակցութիւններ առաջանան աշխատատիրոյթի ծանուցումներից՝ {icon}ի կոճակով՝ այն ակտիւացնելուց յետոյ։",
|
"notifications_permission_banner.how_to_control": "Ծանուցումներ ստանալու համար, երբ Մաստոդոնը բաց չէ՝ ակտիւացրու աշխատատիրոյթի ծանուցումները։ Դու կարող ես ճշգրտօրէն վերահսկել թէ ինչպիսի փոխգործակցութիւններ առաջանան աշխատատիրոյթի ծանուցումներից՝ {icon}ի կոճակով՝ այն ակտիւացնելուց յետոյ։",
|
||||||
"notifications_permission_banner.title": "Ոչինչ բաց մի թող",
|
"notifications_permission_banner.title": "Ոչինչ բաց մի թող",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
|
||||||
"onboarding.compose.template": "Բարեւ #Mastodon!",
|
|
||||||
"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.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": "Դու արեցի՜ր դա",
|
|
||||||
"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": "Ստեղծիր առաջին գրառումդ",
|
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"picture_in_picture.restore": "Յետ բերել",
|
"picture_in_picture.restore": "Յետ բերել",
|
||||||
"poll.closed": "Փակ",
|
"poll.closed": "Փակ",
|
||||||
"poll.refresh": "Թարմացնել",
|
"poll.refresh": "Թարմացնել",
|
||||||
|
@ -159,6 +159,7 @@
|
|||||||
"column_header.pin": "Fixar",
|
"column_header.pin": "Fixar",
|
||||||
"column_header.show_settings": "Monstrar le parametros",
|
"column_header.show_settings": "Monstrar le parametros",
|
||||||
"column_header.unpin": "Disfixar",
|
"column_header.unpin": "Disfixar",
|
||||||
|
"column_search.cancel": "Cancellar",
|
||||||
"column_subheading.settings": "Parametros",
|
"column_subheading.settings": "Parametros",
|
||||||
"community.column_settings.local_only": "Solmente local",
|
"community.column_settings.local_only": "Solmente local",
|
||||||
"community.column_settings.media_only": "Solmente multimedia",
|
"community.column_settings.media_only": "Solmente multimedia",
|
||||||
@ -625,44 +626,18 @@
|
|||||||
"notifications_permission_banner.enable": "Activar notificationes de scriptorio",
|
"notifications_permission_banner.enable": "Activar notificationes de scriptorio",
|
||||||
"notifications_permission_banner.how_to_control": "Pro reciper notificationes quando Mastodon non es aperte, activa le notificationes de scriptorio. Post lor activation, es possibile controlar precisemente qual typos de interaction genera notificationes de scriptorio per medio del button {icon} hic supra.",
|
"notifications_permission_banner.how_to_control": "Pro reciper notificationes quando Mastodon non es aperte, activa le notificationes de scriptorio. Post lor activation, es possibile controlar precisemente qual typos de interaction genera notificationes de scriptorio per medio del button {icon} hic supra.",
|
||||||
"notifications_permission_banner.title": "Non mancar jammais a un cosa",
|
"notifications_permission_banner.title": "Non mancar jammais a un cosa",
|
||||||
"onboarding.action.back": "Porta me retro",
|
|
||||||
"onboarding.actions.back": "Porta me retro",
|
|
||||||
"onboarding.actions.go_to_explore": "Porta me al tendentias",
|
|
||||||
"onboarding.actions.go_to_home": "Porta me a mi fluxo de initio",
|
|
||||||
"onboarding.compose.template": "Salute #Mastodon!",
|
|
||||||
"onboarding.follows.empty": "Regrettabilemente, non es possibile monstrar resultatos al momento. Tu pote tentar usar le recerca o percurrer le pagina de exploration pro cercar personas a sequer, o tentar lo de novo plus tarde.",
|
"onboarding.follows.empty": "Regrettabilemente, non es possibile monstrar resultatos al momento. Tu pote tentar usar le recerca o percurrer le pagina de exploration pro cercar personas a sequer, o tentar lo de novo plus tarde.",
|
||||||
"onboarding.follows.lead": "Le fluxo de initio es le maniera principal de discoperir Mastodon. Quanto plus personas tu seque, tanto plus active e interessante illo essera. Pro comenciar, ecce alcun suggestiones:",
|
"onboarding.follows.title": "Seque personas pro comenciar",
|
||||||
"onboarding.follows.title": "Personalisar tu fluxo de initio",
|
|
||||||
"onboarding.profile.discoverable": "Render mi profilo discoperibile",
|
"onboarding.profile.discoverable": "Render mi profilo discoperibile",
|
||||||
"onboarding.profile.discoverable_hint": "Quando tu opta pro devenir discoperibile sur Mastodon, tu messages pote apparer in resultatos de recerca e in tendentias, e tu profilo pote esser suggerite al personas con interesses simile al tues.",
|
"onboarding.profile.discoverable_hint": "Quando tu opta pro devenir discoperibile sur Mastodon, tu messages pote apparer in resultatos de recerca e in tendentias, e tu profilo pote esser suggerite al personas con interesses simile al tues.",
|
||||||
"onboarding.profile.display_name": "Nomine a monstrar",
|
"onboarding.profile.display_name": "Nomine a monstrar",
|
||||||
"onboarding.profile.display_name_hint": "Tu nomine complete o tu supernomine…",
|
"onboarding.profile.display_name_hint": "Tu nomine complete o tu supernomine…",
|
||||||
"onboarding.profile.lead": "Tu pote sempre completar isto plus tarde in le parametros, ubi se trova mesmo plus optiones de personalisation.",
|
|
||||||
"onboarding.profile.note": "Bio",
|
"onboarding.profile.note": "Bio",
|
||||||
"onboarding.profile.note_hint": "Tu pote @mentionar altere personas o #hashtags…",
|
"onboarding.profile.note_hint": "Tu pote @mentionar altere personas o #hashtags…",
|
||||||
"onboarding.profile.save_and_continue": "Salvar e continuar",
|
"onboarding.profile.save_and_continue": "Salvar e continuar",
|
||||||
"onboarding.profile.title": "Configuration del profilo",
|
"onboarding.profile.title": "Configuration del profilo",
|
||||||
"onboarding.profile.upload_avatar": "Incargar imagine de profilo",
|
"onboarding.profile.upload_avatar": "Incargar imagine de profilo",
|
||||||
"onboarding.profile.upload_header": "Actualisar capite de profilo",
|
"onboarding.profile.upload_header": "Actualisar capite de profilo",
|
||||||
"onboarding.share.lead": "Face saper al gente como illes pote trovar te sur Mastodon!",
|
|
||||||
"onboarding.share.message": "Io es {username} sur Mastodon! Veni sequer me a {url}",
|
|
||||||
"onboarding.share.next_steps": "Sequente passos possibile:",
|
|
||||||
"onboarding.share.title": "Compartir tu profilo",
|
|
||||||
"onboarding.start.lead": "Tu face ora parte de Mastodon, un platteforma de medios social unic e decentralisate ubi es tu, e non un algorithmo, qui crea tu proprie experientia. Nos va adjutar te a lancear te in iste nove frontiera social:",
|
|
||||||
"onboarding.start.skip": "Non require adjuta a comenciar?",
|
|
||||||
"onboarding.start.title": "Tu ha arrivate!",
|
|
||||||
"onboarding.steps.follow_people.body": "Sequer personas interessante es le ration de esser de Mastodon.",
|
|
||||||
"onboarding.steps.follow_people.title": "Personalisar tu fluxo de initio",
|
|
||||||
"onboarding.steps.publish_status.body": "Saluta le mundo con texto, photos, videos o sondages {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Face tu prime message",
|
|
||||||
"onboarding.steps.setup_profile.body": "Impulsa tu interactiones con un profilo comprehensive.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Personalisa tu profilo",
|
|
||||||
"onboarding.steps.share_profile.body": "Face saper a tu amicos como trovar te sur Mastodon",
|
|
||||||
"onboarding.steps.share_profile.title": "Compartir tu profilo de Mastodon",
|
|
||||||
"onboarding.tips.2fa": "<strong>Lo sapeva tu?</strong> Tu pote securisar tu conto configurante le authentication bifactorial in le parametros de tu conto. Isto functiona con le application TOTP de tu preferentia, sin necessitate de un numero de telephono!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Lo sapeva tu?</strong> Perque Mastodon es decentralisate, le profilos que tu incontra pote esser hospitate sur servitores altere que le tue. Nonobstante, tu pote interager con illos sin problema! Lor servitor se trova in le secunde medietate de lor nomine de usator!",
|
|
||||||
"onboarding.tips.migration": "<strong>Lo sapeva tu?</strong> Si tu pensa que {domain} non es un bon servitor pro te in le futuro, tu pote cambiar a un altere servitor Mastodon sin perder tu sequitores. Tu pote mesmo hospitar tu proprie servitor!",
|
|
||||||
"onboarding.tips.verification": "<strong>Lo sapeva tu?</strong> Pro verificar tu conto, insere un ligamine a tu profilo Mastodon sur tu proprie sito web e adde le sito web a tu profilo. Nulle moneta o documentos necessari!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Le confirmation del contrasigno excede le longitude maxime del contrasigno",
|
"password_confirmation.exceeds_maxlength": "Le confirmation del contrasigno excede le longitude maxime del contrasigno",
|
||||||
"password_confirmation.mismatching": "Le confirmation del contrasigno non corresponde",
|
"password_confirmation.mismatching": "Le confirmation del contrasigno non corresponde",
|
||||||
"picture_in_picture.restore": "Restaurar",
|
"picture_in_picture.restore": "Restaurar",
|
||||||
|
@ -464,23 +464,6 @@
|
|||||||
"notifications_permission_banner.enable": "Aktifkan notifikasi desktop",
|
"notifications_permission_banner.enable": "Aktifkan notifikasi desktop",
|
||||||
"notifications_permission_banner.how_to_control": "Untuk menerima notifikasi saat Mastodon terbuka, aktifkan notifikasi desktop. Anda dapat mengendalikan tipe interaksi mana yang ditampilkan notifikasi desktop melalui tombol {icon} di atas saat sudah aktif.",
|
"notifications_permission_banner.how_to_control": "Untuk menerima notifikasi saat Mastodon terbuka, aktifkan notifikasi desktop. Anda dapat mengendalikan tipe interaksi mana yang ditampilkan notifikasi desktop melalui tombol {icon} di atas saat sudah aktif.",
|
||||||
"notifications_permission_banner.title": "Jangan lewatkan apa pun",
|
"notifications_permission_banner.title": "Jangan lewatkan apa pun",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
|
||||||
"onboarding.compose.template": "Halo #Mastodon!",
|
|
||||||
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
|
|
||||||
"onboarding.follows.title": "Popular on Mastodon",
|
|
||||||
"onboarding.share.title": "Berbagi profil Anda",
|
|
||||||
"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": "Kau berhasil!",
|
|
||||||
"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": "Tulis posting pertama anda",
|
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"picture_in_picture.restore": "Taruh kembali",
|
"picture_in_picture.restore": "Taruh kembali",
|
||||||
"poll.closed": "Ditutup",
|
"poll.closed": "Ditutup",
|
||||||
"poll.refresh": "Segarkan",
|
"poll.refresh": "Segarkan",
|
||||||
|
@ -512,44 +512,17 @@
|
|||||||
"notifications_permission_banner.enable": "Activisar notificationes sur li computator",
|
"notifications_permission_banner.enable": "Activisar notificationes sur li computator",
|
||||||
"notifications_permission_banner.how_to_control": "Por reciver notificationes quande Mastodon ne es apert, activisa notificationes sur li computator. Tu posse decider precisimen quel species de interactiones genera notificationes per li buton {icon} in-supra quande ili es activisat.",
|
"notifications_permission_banner.how_to_control": "Por reciver notificationes quande Mastodon ne es apert, activisa notificationes sur li computator. Tu posse decider precisimen quel species de interactiones genera notificationes per li buton {icon} in-supra quande ili es activisat.",
|
||||||
"notifications_permission_banner.title": "Nequande preterlassa quocunc",
|
"notifications_permission_banner.title": "Nequande preterlassa quocunc",
|
||||||
"onboarding.action.back": "Retroear",
|
|
||||||
"onboarding.actions.back": "Retroear",
|
|
||||||
"onboarding.actions.go_to_explore": "Ear a vider lu populari",
|
|
||||||
"onboarding.actions.go_to_home": "Ear al hemal témpor-linea",
|
|
||||||
"onboarding.compose.template": "Salute #Mastodon!",
|
|
||||||
"onboarding.follows.empty": "Ínfortunatmen, null resultates posse esser monstrat actualmen. Tu posse provar serchar o usar li \"Explorar\" págine por trovar gente por sequer, o prova denov plu tard.",
|
"onboarding.follows.empty": "Ínfortunatmen, null resultates posse esser monstrat actualmen. Tu posse provar serchar o usar li \"Explorar\" págine por trovar gente por sequer, o prova denov plu tard.",
|
||||||
"onboarding.follows.lead": "Tui hemal témpor-linea es li primari maniere de experir Mastodon. Plu persones quem tu seque, plu activ e interessant it va esser. Por auxiliar te comensar, vi quelc suggestiones:",
|
|
||||||
"onboarding.follows.title": "Personalisar tui hemal témpor-linea",
|
|
||||||
"onboarding.profile.discoverable": "Fa mi profil decovribil",
|
"onboarding.profile.discoverable": "Fa mi profil decovribil",
|
||||||
"onboarding.profile.discoverable_hint": "Quande tu opta esser decovribil in Mastodon, tui postas posse aparir in resultates de sercha e tendenties, e tui profil posse esser suggestet a persones con interesses simil a tui.",
|
"onboarding.profile.discoverable_hint": "Quande tu opta esser decovribil in Mastodon, tui postas posse aparir in resultates de sercha e tendenties, e tui profil posse esser suggestet a persones con interesses simil a tui.",
|
||||||
"onboarding.profile.display_name": "Nómine a monstrar",
|
"onboarding.profile.display_name": "Nómine a monstrar",
|
||||||
"onboarding.profile.display_name_hint": "Tui complet nómine o tui amusant nómine…",
|
"onboarding.profile.display_name_hint": "Tui complet nómine o tui amusant nómine…",
|
||||||
"onboarding.profile.lead": "Tu sempre posse completar ti-ci plu tard in li parametres, u mem plu optiones de customisation es disponibil.",
|
|
||||||
"onboarding.profile.note": "Biografie",
|
"onboarding.profile.note": "Biografie",
|
||||||
"onboarding.profile.note_hint": "Tu posse @mentionar altri persones o #hashtags…",
|
"onboarding.profile.note_hint": "Tu posse @mentionar altri persones o #hashtags…",
|
||||||
"onboarding.profile.save_and_continue": "Conservar e avansar",
|
"onboarding.profile.save_and_continue": "Conservar e avansar",
|
||||||
"onboarding.profile.title": "Popular tu profil",
|
"onboarding.profile.title": "Popular tu profil",
|
||||||
"onboarding.profile.upload_avatar": "Cargar profil-portrete",
|
"onboarding.profile.upload_avatar": "Cargar profil-portrete",
|
||||||
"onboarding.profile.upload_header": "Cargar cap-image",
|
"onboarding.profile.upload_header": "Cargar cap-image",
|
||||||
"onboarding.share.lead": "Di gente qualmen ili posse trovar te che Mastodon!",
|
|
||||||
"onboarding.share.message": "Yo es {username} che #Mastodon! Veni e seque me a {url}",
|
|
||||||
"onboarding.share.next_steps": "Possibil sequent passus:",
|
|
||||||
"onboarding.share.title": "Partir tui profil",
|
|
||||||
"onboarding.start.lead": "Tu es ja un parte de Mastodon, un unic, decentralisat platform de medie social in quel tu—ne un algoritme—selectiona tui propri experientie. Lass nos departer sur un nov frontiera social:",
|
|
||||||
"onboarding.start.skip": "Auxilie por comensar ne besonat?",
|
|
||||||
"onboarding.start.title": "Tu ha successat!",
|
|
||||||
"onboarding.steps.follow_people.body": "Sequer interessant gente es to quo importa in Mastodon.",
|
|
||||||
"onboarding.steps.follow_people.title": "Personalisar tui hemal témpor-linea",
|
|
||||||
"onboarding.steps.publish_status.body": "Saluta li munde con text, images, videos o balotationes {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "Crear tui unesim posta",
|
|
||||||
"onboarding.steps.setup_profile.body": "Ascresce tui interactiones per haver un profil detalliat.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Personalisar tui profil",
|
|
||||||
"onboarding.steps.share_profile.body": "Di tui amics qualmen trovar te che Mastodon",
|
|
||||||
"onboarding.steps.share_profile.title": "Partir tui profil Mastodon",
|
|
||||||
"onboarding.tips.2fa": "<strong>Savet tu?</strong> Tu posse securisar tui conto per activisar 2-factor autentication in tui parametres de conto. Ti functiona con quelcunc aplication TOTP quel tu selecte, null númere de telefon besonat!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Savet tu?</strong> Pro que Mastodon es decentralisat, quelc profiles queles tu trova va esser logiat che servitores altri quam tui. Totvez tu posse interacter con les sin grates! Lor servitores es in li duesim demí de lor usator-nómines!",
|
|
||||||
"onboarding.tips.migration": "<strong>Savet tu?</strong> Si tu senti que {domain} ne es un bonissim servitor por te futurimen, tu posse mover te a un altri Mastodon-servitor sin perdir tui sequitores. Tu posse mem etablisser tui propri servitor!",
|
|
||||||
"onboarding.tips.verification": "<strong>Savet tu?</strong> Tu posse verificar tui conto per metter un ligament a tui Mastodon-profil in tui propri websitu e adjunter li websitu a tui profil. Null payament o documentes besonat!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Confirmation de passa-parol transpassa li maxim longore de passa-paroles",
|
"password_confirmation.exceeds_maxlength": "Confirmation de passa-parol transpassa li maxim longore de passa-paroles",
|
||||||
"password_confirmation.mismatching": "Confirmation de passa-parol ne egala",
|
"password_confirmation.mismatching": "Confirmation de passa-parol ne egala",
|
||||||
"picture_in_picture.restore": "Restaurar",
|
"picture_in_picture.restore": "Restaurar",
|
||||||
|
@ -119,19 +119,6 @@
|
|||||||
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
|
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
|
||||||
"notification.reblog": "{name} boosted your status",
|
"notification.reblog": "{name} boosted your status",
|
||||||
"notifications.column_settings.status": "Edemede ọhụrụ:",
|
"notifications.column_settings.status": "Edemede ọhụrụ:",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
|
||||||
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
|
|
||||||
"onboarding.follows.title": "Popular on Mastodon",
|
|
||||||
"onboarding.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.",
|
|
||||||
"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.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Kekọrịta profaịlụ Mastọdọnụ gị",
|
|
||||||
"privacy.change": "Adjust status privacy",
|
"privacy.change": "Adjust status privacy",
|
||||||
"relative_time.full.just_now": "kịta",
|
"relative_time.full.just_now": "kịta",
|
||||||
"relative_time.just_now": "kịta",
|
"relative_time.just_now": "kịta",
|
||||||
|
@ -596,44 +596,17 @@
|
|||||||
"notifications_permission_banner.enable": "Aktivigez desktopavizi",
|
"notifications_permission_banner.enable": "Aktivigez desktopavizi",
|
||||||
"notifications_permission_banner.how_to_control": "Por ganar avizi kande Mastodon ne esas apertita, aktivigez dekstopavizi. Vu povas precize regularar quale interakti facas deskstopavizi tra la supera {icon} butono pos oli aktivigesis.",
|
"notifications_permission_banner.how_to_control": "Por ganar avizi kande Mastodon ne esas apertita, aktivigez dekstopavizi. Vu povas precize regularar quale interakti facas deskstopavizi tra la supera {icon} butono pos oli aktivigesis.",
|
||||||
"notifications_permission_banner.title": "Irga kozo ne pasas vu",
|
"notifications_permission_banner.title": "Irga kozo ne pasas vu",
|
||||||
"onboarding.action.back": "Retroirez",
|
|
||||||
"onboarding.actions.back": "Retroirez",
|
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
|
||||||
"onboarding.compose.template": "Saluto #Mastodon!",
|
|
||||||
"onboarding.follows.empty": "Regretinde, nula rezultajo povas montresar nune. Vu povas esforcar serchar, o irar al explorala pagino por trovar personi sequinda, o esforcar itere pose.",
|
"onboarding.follows.empty": "Regretinde, nula rezultajo povas montresar nune. Vu povas esforcar serchar, o irar al explorala pagino por trovar personi sequinda, o esforcar itere pose.",
|
||||||
"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": "Trovebligez mea profilo",
|
"onboarding.profile.discoverable": "Trovebligez mea profilo",
|
||||||
"onboarding.profile.discoverable_hint": "Se vu selektas deskovrebleso che Mastodon, vua posti povas aparar en sercho-rezultaji e populari, e vua profilo forsan sugestesos a personi kun interesi simila a vua.",
|
"onboarding.profile.discoverable_hint": "Se vu selektas deskovrebleso che Mastodon, vua posti povas aparar en sercho-rezultaji e populari, e vua profilo forsan sugestesos a personi kun interesi simila a vua.",
|
||||||
"onboarding.profile.display_name": "Publika nomo",
|
"onboarding.profile.display_name": "Publika nomo",
|
||||||
"onboarding.profile.display_name_hint": "Vua tota nomo o vua gaya nomo…",
|
"onboarding.profile.display_name_hint": "Vua tota nomo o vua gaya nomo…",
|
||||||
"onboarding.profile.lead": "Vu sempre povas kompletigar co plu tarde en la opcioni, ube mem plua personalizanta opcioni es disponebla.",
|
|
||||||
"onboarding.profile.note": "Biografio",
|
"onboarding.profile.note": "Biografio",
|
||||||
"onboarding.profile.note_hint": "Vu povas @mencionar altra personi o #hashtagi…",
|
"onboarding.profile.note_hint": "Vu povas @mencionar altra personi o #hashtagi…",
|
||||||
"onboarding.profile.save_and_continue": "Preservez e avancez",
|
"onboarding.profile.save_and_continue": "Preservez e avancez",
|
||||||
"onboarding.profile.title": "Kompletigez la profilo",
|
"onboarding.profile.title": "Kompletigez la profilo",
|
||||||
"onboarding.profile.upload_avatar": "Kargez profiloportreto",
|
"onboarding.profile.upload_avatar": "Kargez profiloportreto",
|
||||||
"onboarding.profile.upload_header": "Kargez profilokapimajo",
|
"onboarding.profile.upload_header": "Kargez profilokapimajo",
|
||||||
"onboarding.share.lead": "Savigez personi quale ili povas trovar vu che Mastodon!",
|
|
||||||
"onboarding.share.message": "Me esas {username} che #Mastodon! Venez e sequez me ye {url}",
|
|
||||||
"onboarding.share.next_steps": "Kozi quin vu darfas volar facar sequante:",
|
|
||||||
"onboarding.share.title": "Partigez vua profilo",
|
|
||||||
"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": "Vu facis lo!",
|
|
||||||
"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": "Facar vua unesma posto",
|
|
||||||
"onboarding.steps.setup_profile.body": "Vu interagos plue kun profilo detalizita.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
|
||||||
"onboarding.tips.2fa": "<strong>Ka vu savas?</strong> Vu povas sekurigar vua konto per pozar 2-faktora verifiko en preferaji de vua konto. Telefonilnombro ne bezonesis!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Ka vu savas?</strong> Vu povas interagar kun profili sur altra servili senrupte!",
|
|
||||||
"onboarding.tips.migration": "<strong>Ka vu savas?</strong> Se vu sentas ke {domain} ne esas apta por vu en la futuro, vu povas transferar a altra servilo di Mastodon sen malganar vua sequanti!",
|
|
||||||
"onboarding.tips.verification": "<strong>Ka vu savas?</strong> Vu povas verifikar vua konto per pozi ligilo a vua profilo di Mastodon sur vua sua retsituo e adjuntar la retsituo a vua profilo. Senpage!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "La konfirmo dil pasvorto superesas la limito pri longeso di pasvorti",
|
"password_confirmation.exceeds_maxlength": "La konfirmo dil pasvorto superesas la limito pri longeso di pasvorti",
|
||||||
"password_confirmation.mismatching": "La konfirmo dil pasvorto ne egalesas",
|
"password_confirmation.mismatching": "La konfirmo dil pasvorto ne egalesas",
|
||||||
"picture_in_picture.restore": "Retropozez",
|
"picture_in_picture.restore": "Retropozez",
|
||||||
|
@ -162,6 +162,7 @@
|
|||||||
"column_header.pin": "Festa",
|
"column_header.pin": "Festa",
|
||||||
"column_header.show_settings": "Birta stillingar",
|
"column_header.show_settings": "Birta stillingar",
|
||||||
"column_header.unpin": "Losa",
|
"column_header.unpin": "Losa",
|
||||||
|
"column_search.cancel": "Hætta við",
|
||||||
"column_subheading.settings": "Stillingar",
|
"column_subheading.settings": "Stillingar",
|
||||||
"community.column_settings.local_only": "Einungis staðvært",
|
"community.column_settings.local_only": "Einungis staðvært",
|
||||||
"community.column_settings.media_only": "Einungis myndskrár",
|
"community.column_settings.media_only": "Einungis myndskrár",
|
||||||
@ -649,44 +650,21 @@
|
|||||||
"notifications_permission_banner.enable": "Virkja tilkynningar á skjáborði",
|
"notifications_permission_banner.enable": "Virkja tilkynningar á skjáborði",
|
||||||
"notifications_permission_banner.how_to_control": "Til að taka á móti tilkynningum þegar Mastodon er ekki opið, skaltu virkja tilkynningar á skjáborði. Þegar þær eru orðnar virkar geturðu stýrt nákvæmlega hverskonar atvik framleiða tilkynningar með því að nota {icon}-hnappinn hér fyrir ofan.",
|
"notifications_permission_banner.how_to_control": "Til að taka á móti tilkynningum þegar Mastodon er ekki opið, skaltu virkja tilkynningar á skjáborði. Þegar þær eru orðnar virkar geturðu stýrt nákvæmlega hverskonar atvik framleiða tilkynningar með því að nota {icon}-hnappinn hér fyrir ofan.",
|
||||||
"notifications_permission_banner.title": "Aldrei missa af neinu",
|
"notifications_permission_banner.title": "Aldrei missa af neinu",
|
||||||
"onboarding.action.back": "Til baka",
|
"onboarding.follows.back": "Til baka",
|
||||||
"onboarding.actions.back": "Til baka",
|
"onboarding.follows.done": "Lokið",
|
||||||
"onboarding.actions.go_to_explore": "Sjáðu hvað er í umræðunni",
|
|
||||||
"onboarding.actions.go_to_home": "Fara á heimastreymið þitt",
|
|
||||||
"onboarding.compose.template": "Halló #Mastodon!",
|
|
||||||
"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.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.search": "Leita",
|
||||||
"onboarding.follows.title": "Vinsælt á Mastodon",
|
"onboarding.follows.title": "Þú ættir að fylgjast með fólki til að komast í gang",
|
||||||
"onboarding.profile.discoverable": "Gera notandasniðið mitt uppgötvanlegt",
|
"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.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": "Birtingarnafn",
|
||||||
"onboarding.profile.display_name_hint": "Fullt nafn þitt eða eitthvað til gamans…",
|
"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": "Æviágrip",
|
||||||
"onboarding.profile.note_hint": "Þú getur @minnst á annað fólk eða #myllumerki…",
|
"onboarding.profile.note_hint": "Þú getur @minnst á annað fólk eða #myllumerki…",
|
||||||
"onboarding.profile.save_and_continue": "Vista og halda áfram",
|
"onboarding.profile.save_and_continue": "Vista og halda áfram",
|
||||||
"onboarding.profile.title": "Uppsetning notandasniðs",
|
"onboarding.profile.title": "Uppsetning notandasniðs",
|
||||||
"onboarding.profile.upload_avatar": "Sendu inn auðkennismynd",
|
"onboarding.profile.upload_avatar": "Sendu inn auðkennismynd",
|
||||||
"onboarding.profile.upload_header": "Sendu inn bakgrunnsmynd í haus notandasniðs",
|
"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:",
|
|
||||||
"onboarding.share.title": "Deildu notandasniðinu þínu",
|
|
||||||
"onboarding.start.lead": "Nýi Mastodon-aðgangurinn þinn er tilbúinn. Hér sérðu hvernig þú nærð mestu út úr honum:",
|
|
||||||
"onboarding.start.skip": "Viltu sleppa þessu og halda beint áfram?",
|
|
||||||
"onboarding.start.title": "Þú hafðir það!",
|
|
||||||
"onboarding.steps.follow_people.body": "Þú ræktar heimastreymið þitt. Fyllum það með áhugaverðu fólki.",
|
|
||||||
"onboarding.steps.follow_people.title": "Fylgjast með {count, plural, one {einum aðila} other {# aðilum}}",
|
|
||||||
"onboarding.steps.publish_status.body": "Heilsaðu heiminum.",
|
|
||||||
"onboarding.steps.publish_status.title": "Gerðu fyrstu færsluna þína",
|
|
||||||
"onboarding.steps.setup_profile.body": "Annað fólk er líklegra til að eiga samskipti við þig ef þý setur einhverjar áhugaverðar upplýsingar í notandasniðið þitt.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Sérsníddu notandasniðið þitt",
|
|
||||||
"onboarding.steps.share_profile.body": "Láttu vini þína vita hvernig þeir geta fundið þig á Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Deildu notandasniðinu þínu",
|
|
||||||
"onboarding.tips.2fa": "<strong>Vissir þú?</strong> Þú getur gert aðganginn þinn öruggari með því að setja upp tveggja-þátta auðkenningu í stillingum aðgangsins þíns. Þetta virkar með hvaða TOTP-forriti sem er, án þess að nokkuð símanúmer sé nauðsynlegt!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Vissir þú?</strong> Þar sem Mastodon er þreifhýst kerfi, er næstum óhjákvæmilegt að sumt fólk sem þú rekst á sé hýst á öðrum netþjónum en þeim sem þú ert á. Samt geturðu átt hnökralaus samskipti við þetta fólk! Nafnið á netþjóninum þeirra er síðari hluti notandanafnsins!",
|
|
||||||
"onboarding.tips.migration": "<strong>Vissir þú?</strong> Ef þér finns eins og {domain} sé ekki endilega það sem henti þér í framtíðinni, þá geturðu flutt þig á annan Mastodon-netþjón án þess að missa fylgjendurna þína. Þú getur meira að segja hýst þinn eigin netþjón!",
|
|
||||||
"onboarding.tips.verification": "<strong>Vissir þú?</strong> Þú getur sannvottað aðganginn þinn með því að setja tengil á Mastodon-notandasniðið þitt inn á vefsvæðið þitt og síðan setja tengil á vefsvæðið þitt í notandasniðið þitt. Engin gjöld eða pappírsflóð!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "Staðfesting lykilorðs; fer fram úr hámarkslengd",
|
"password_confirmation.exceeds_maxlength": "Staðfesting lykilorðs; fer fram úr hámarkslengd",
|
||||||
"password_confirmation.mismatching": "Staðfesting lykilorðs; samsvara ekki",
|
"password_confirmation.mismatching": "Staðfesting lykilorðs; samsvara ekki",
|
||||||
"picture_in_picture.restore": "Setja til baka",
|
"picture_in_picture.restore": "Setja til baka",
|
||||||
|
@ -87,8 +87,11 @@
|
|||||||
"alert.unexpected.title": "Oops!",
|
"alert.unexpected.title": "Oops!",
|
||||||
"alt_text_badge.title": "Testo alternativo",
|
"alt_text_badge.title": "Testo alternativo",
|
||||||
"announcement.announcement": "Annuncio",
|
"announcement.announcement": "Annuncio",
|
||||||
|
"annual_report.summary.archetype.booster": "Cacciatore/trice di tendenze",
|
||||||
|
"annual_report.summary.archetype.lurker": "L'osservatore/trice",
|
||||||
"annual_report.summary.archetype.oracle": "L'oracolo",
|
"annual_report.summary.archetype.oracle": "L'oracolo",
|
||||||
"annual_report.summary.archetype.pollster": "Sondaggista",
|
"annual_report.summary.archetype.pollster": "Sondaggista",
|
||||||
|
"annual_report.summary.archetype.replier": "Utente socievole",
|
||||||
"annual_report.summary.followers.followers": "seguaci",
|
"annual_report.summary.followers.followers": "seguaci",
|
||||||
"annual_report.summary.followers.total": "{count} in totale",
|
"annual_report.summary.followers.total": "{count} in totale",
|
||||||
"annual_report.summary.here_it_is": "Ecco il tuo {year} in sintesi:",
|
"annual_report.summary.here_it_is": "Ecco il tuo {year} in sintesi:",
|
||||||
@ -137,13 +140,16 @@
|
|||||||
"column.blocks": "Utenti bloccati",
|
"column.blocks": "Utenti bloccati",
|
||||||
"column.bookmarks": "Segnalibri",
|
"column.bookmarks": "Segnalibri",
|
||||||
"column.community": "Cronologia locale",
|
"column.community": "Cronologia locale",
|
||||||
|
"column.create_list": "Crea lista",
|
||||||
"column.direct": "Menzioni private",
|
"column.direct": "Menzioni private",
|
||||||
"column.directory": "Sfoglia profili",
|
"column.directory": "Sfoglia profili",
|
||||||
"column.domain_blocks": "Domini bloccati",
|
"column.domain_blocks": "Domini bloccati",
|
||||||
|
"column.edit_list": "Modifica lista",
|
||||||
"column.favourites": "Preferiti",
|
"column.favourites": "Preferiti",
|
||||||
"column.firehose": "Feed dal vivo",
|
"column.firehose": "Feed dal vivo",
|
||||||
"column.follow_requests": "Richieste di seguirti",
|
"column.follow_requests": "Richieste di seguirti",
|
||||||
"column.home": "Home",
|
"column.home": "Home",
|
||||||
|
"column.list_members": "Gestisci i membri della lista",
|
||||||
"column.lists": "Liste",
|
"column.lists": "Liste",
|
||||||
"column.mutes": "Utenti silenziati",
|
"column.mutes": "Utenti silenziati",
|
||||||
"column.notifications": "Notifiche",
|
"column.notifications": "Notifiche",
|
||||||
@ -156,6 +162,7 @@
|
|||||||
"column_header.pin": "Fissa",
|
"column_header.pin": "Fissa",
|
||||||
"column_header.show_settings": "Mostra le impostazioni",
|
"column_header.show_settings": "Mostra le impostazioni",
|
||||||
"column_header.unpin": "Non fissare",
|
"column_header.unpin": "Non fissare",
|
||||||
|
"column_search.cancel": "Annulla",
|
||||||
"column_subheading.settings": "Impostazioni",
|
"column_subheading.settings": "Impostazioni",
|
||||||
"community.column_settings.local_only": "Solo Locale",
|
"community.column_settings.local_only": "Solo Locale",
|
||||||
"community.column_settings.media_only": "Solo Media",
|
"community.column_settings.media_only": "Solo Media",
|
||||||
@ -461,11 +468,32 @@
|
|||||||
"link_preview.author": "Di {name}",
|
"link_preview.author": "Di {name}",
|
||||||
"link_preview.more_from_author": "Altro da {name}",
|
"link_preview.more_from_author": "Altro da {name}",
|
||||||
"link_preview.shares": "{count, plural, one {{counter} post} other {{counter} post}}",
|
"link_preview.shares": "{count, plural, one {{counter} post} other {{counter} post}}",
|
||||||
|
"lists.add_member": "Aggiungi",
|
||||||
|
"lists.add_to_list": "Aggiungi alla lista",
|
||||||
|
"lists.add_to_lists": "Aggiungi {name} alle liste",
|
||||||
|
"lists.create": "Crea",
|
||||||
|
"lists.create_a_list_to_organize": "Crea una nuova lista per organizzare il tuo feed Home",
|
||||||
|
"lists.create_list": "Crea lista",
|
||||||
"lists.delete": "Elimina elenco",
|
"lists.delete": "Elimina elenco",
|
||||||
|
"lists.done": "Fatto",
|
||||||
"lists.edit": "Modifica elenco",
|
"lists.edit": "Modifica elenco",
|
||||||
|
"lists.exclusive": "Nascondi i membri in Home",
|
||||||
|
"lists.exclusive_hint": "Se qualcuno è presente in questa lista, nascondilo nel tuo feed Home per evitare di vedere i suoi post due volte.",
|
||||||
|
"lists.find_users_to_add": "Trova utenti da aggiungere",
|
||||||
|
"lists.list_members": "Membri della lista",
|
||||||
|
"lists.list_members_count": "{count, plural, one {# membro} other {# membri}}",
|
||||||
|
"lists.list_name": "Nome della lista",
|
||||||
|
"lists.new_list_name": "Nuovo nome della lista",
|
||||||
|
"lists.no_lists_yet": "Non ci sono ancora liste.",
|
||||||
|
"lists.no_members_yet": "Non ci sono ancora membri.",
|
||||||
|
"lists.no_results_found": "Nessun risultato trovato.",
|
||||||
|
"lists.remove_member": "Rimuovi",
|
||||||
"lists.replies_policy.followed": "Qualsiasi utente seguito",
|
"lists.replies_policy.followed": "Qualsiasi utente seguito",
|
||||||
"lists.replies_policy.list": "Membri dell'elenco",
|
"lists.replies_policy.list": "Membri dell'elenco",
|
||||||
"lists.replies_policy.none": "Nessuno",
|
"lists.replies_policy.none": "Nessuno",
|
||||||
|
"lists.save": "Salva",
|
||||||
|
"lists.search_placeholder": "Cerca le persone che segui",
|
||||||
|
"lists.show_replies_to": "Includi le risposte dei membri della lista a",
|
||||||
"load_pending": "{count, plural, one {# nuovo oggetto} other {# nuovi oggetti}}",
|
"load_pending": "{count, plural, one {# nuovo oggetto} other {# nuovi oggetti}}",
|
||||||
"loading_indicator.label": "Caricamento…",
|
"loading_indicator.label": "Caricamento…",
|
||||||
"media_gallery.hide": "Nascondi",
|
"media_gallery.hide": "Nascondi",
|
||||||
@ -622,44 +650,21 @@
|
|||||||
"notifications_permission_banner.enable": "Abilita le notifiche desktop",
|
"notifications_permission_banner.enable": "Abilita le notifiche desktop",
|
||||||
"notifications_permission_banner.how_to_control": "Per ricevere le notifiche quando Mastodon non è aperto, abilita le notifiche desktop. Puoi controllare precisamente quali tipi di interazioni generano le notifiche destkop, tramite il pulsante {icon} sopra, una volta abilitate.",
|
"notifications_permission_banner.how_to_control": "Per ricevere le notifiche quando Mastodon non è aperto, abilita le notifiche desktop. Puoi controllare precisamente quali tipi di interazioni generano le notifiche destkop, tramite il pulsante {icon} sopra, una volta abilitate.",
|
||||||
"notifications_permission_banner.title": "Non perderti mai nulla",
|
"notifications_permission_banner.title": "Non perderti mai nulla",
|
||||||
"onboarding.action.back": "Torna indietro",
|
"onboarding.follows.back": "Indietro",
|
||||||
"onboarding.actions.back": "Torna indietro",
|
"onboarding.follows.done": "Fatto",
|
||||||
"onboarding.actions.go_to_explore": "Guarda le tendenze",
|
|
||||||
"onboarding.actions.go_to_home": "Vai alla cronologia della tua home",
|
|
||||||
"onboarding.compose.template": "Ciao #Mastodon!",
|
|
||||||
"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.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.search": "Cerca",
|
||||||
"onboarding.follows.title": "Popolare su Mastodon",
|
"onboarding.follows.title": "Segui le persone per iniziare",
|
||||||
"onboarding.profile.discoverable": "Rendi il mio profilo rilevabile",
|
"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.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": "Nome da visualizzare",
|
||||||
"onboarding.profile.display_name_hint": "Il tuo nome completo o il tuo nome divertente…",
|
"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": "Biografia",
|
||||||
"onboarding.profile.note_hint": "Puoi @menzionare altre persone o #hashtags…",
|
"onboarding.profile.note_hint": "Puoi @menzionare altre persone o #hashtags…",
|
||||||
"onboarding.profile.save_and_continue": "Salva e continua",
|
"onboarding.profile.save_and_continue": "Salva e continua",
|
||||||
"onboarding.profile.title": "Configurazione del profilo",
|
"onboarding.profile.title": "Configurazione del profilo",
|
||||||
"onboarding.profile.upload_avatar": "Carica l'immagine del profilo",
|
"onboarding.profile.upload_avatar": "Carica l'immagine del profilo",
|
||||||
"onboarding.profile.upload_header": "Carica l'intestazione 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:",
|
|
||||||
"onboarding.share.title": "Condividi il tuo profilo",
|
|
||||||
"onboarding.start.lead": "Il tuo nuovo account Mastodon è pronto. Ecco come puoi sfruttarlo al meglio:",
|
|
||||||
"onboarding.start.skip": "Vuoi saltare tutto questo?",
|
|
||||||
"onboarding.start.title": "Ce l'hai fatta!",
|
|
||||||
"onboarding.steps.follow_people.body": "Gestisci la tua cronologia. Riempila di persone interessanti.",
|
|
||||||
"onboarding.steps.follow_people.title": "Segui {count, plural, one {una persona} other {# persone}}",
|
|
||||||
"onboarding.steps.publish_status.body": "Dì ciao al mondo.",
|
|
||||||
"onboarding.steps.publish_status.title": "Scrivi il tuo primo post",
|
|
||||||
"onboarding.steps.setup_profile.body": "Gli altri hanno maggiori probabilità di interagire con te se completi il tuo profilo.",
|
|
||||||
"onboarding.steps.setup_profile.title": "Personalizza il tuo profilo",
|
|
||||||
"onboarding.steps.share_profile.body": "Fai sapere ai tuoi amici come trovarti su Mastodon!",
|
|
||||||
"onboarding.steps.share_profile.title": "Condividi il tuo profilo",
|
|
||||||
"onboarding.tips.2fa": "<strong>Lo sapevi?</strong> Puoi proteggere il tuo account impostando l'autenticazione a due fattori nelle impostazioni del tuo account. Funziona con qualsiasi app TOTP di tua scelta, nessun numero di telefono necessario!",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Lo sapevi?</strong> Dal momento che Mastodon è decentralizzato, alcuni profili che incontrerai sono ospitati su server diversi dal tuo. Ma puoi interagire con loro senza problemi! Il loro server è nella seconda metà del loro nome utente!",
|
|
||||||
"onboarding.tips.migration": "<strong>Lo sapevi?</strong> Se ritieni che {domain} non sia un'ottima scelta di server per te in futuro, puoi spostarti su un altro server Mastodon senza perdere i tuoi seguaci. Puoi persino ospitare il tuo server!",
|
|
||||||
"onboarding.tips.verification": "<strong>Lo sapevi?</strong> Puoi verificare il tuo account inserendo un collegamento al tuo profilo Mastodon sul tuo sito web e aggiungendo il sito web al tuo profilo. Nessuna spesa o documento necessario!",
|
|
||||||
"password_confirmation.exceeds_maxlength": "La conferma della password supera la lunghezza massima della password",
|
"password_confirmation.exceeds_maxlength": "La conferma della password supera la lunghezza massima della password",
|
||||||
"password_confirmation.mismatching": "Le password non corrispondono",
|
"password_confirmation.mismatching": "Le password non corrispondono",
|
||||||
"picture_in_picture.restore": "Ripristinala",
|
"picture_in_picture.restore": "Ripristinala",
|
||||||
|
@ -624,44 +624,17 @@
|
|||||||
"notifications_permission_banner.enable": "デスクトップ通知を有効にする",
|
"notifications_permission_banner.enable": "デスクトップ通知を有効にする",
|
||||||
"notifications_permission_banner.how_to_control": "Mastodonを閉じている間でも通知を受信するにはデスクトップ通知を有効にしてください。有効にすると上の {icon} ボタンから通知の内容を細かくカスタマイズできます。",
|
"notifications_permission_banner.how_to_control": "Mastodonを閉じている間でも通知を受信するにはデスクトップ通知を有効にしてください。有効にすると上の {icon} ボタンから通知の内容を細かくカスタマイズできます。",
|
||||||
"notifications_permission_banner.title": "お見逃しなく",
|
"notifications_permission_banner.title": "お見逃しなく",
|
||||||
"onboarding.action.back": "チュートリアルに戻る",
|
|
||||||
"onboarding.actions.back": "チュートリアルに戻る",
|
|
||||||
"onboarding.actions.go_to_explore": "話題をさがす",
|
|
||||||
"onboarding.actions.go_to_home": "タイムラインに移動",
|
|
||||||
"onboarding.compose.template": "#Mastodon はじめました",
|
|
||||||
"onboarding.follows.empty": "表示できる結果はありません。検索やエクスプローラーを使ったり、ほかのアカウントをフォローしたり、後でもう一度試しください。",
|
"onboarding.follows.empty": "表示できる結果はありません。検索やエクスプローラーを使ったり、ほかのアカウントをフォローしたり、後でもう一度試しください。",
|
||||||
"onboarding.follows.lead": "ホームタイムラインはMastodonの軸足となる場所です。たくさんのユーザーをフォローすることで、ホームタイムラインはよりにぎやかでおもしろいものになります。手はじめに、おすすめのアカウントから何人かフォローしてみましょう:",
|
|
||||||
"onboarding.follows.title": "ホームタイムラインを埋める",
|
|
||||||
"onboarding.profile.discoverable": "自分のプロフィールが見つけられるようにする",
|
"onboarding.profile.discoverable": "自分のプロフィールが見つけられるようにする",
|
||||||
"onboarding.profile.discoverable_hint": "Mastodonの「見つける」機能にオプトインすると、あなたの投稿が検索結果やトレンドに表示されることがあります。また、あなたに似た関心を持つ人にプロフィールがおすすめされることがあります。",
|
"onboarding.profile.discoverable_hint": "Mastodonの「見つける」機能にオプトインすると、あなたの投稿が検索結果やトレンドに表示されることがあります。また、あなたに似た関心を持つ人にプロフィールがおすすめされることがあります。",
|
||||||
"onboarding.profile.display_name": "表示名",
|
"onboarding.profile.display_name": "表示名",
|
||||||
"onboarding.profile.display_name_hint": "フルネーム、あるいは面白い名前など",
|
"onboarding.profile.display_name_hint": "フルネーム、あるいは面白い名前など",
|
||||||
"onboarding.profile.lead": "あとでいつでも修正できますし、設定画面にはこれ以外のカスタマイズ項目もあります。",
|
|
||||||
"onboarding.profile.note": "自己紹介",
|
"onboarding.profile.note": "自己紹介",
|
||||||
"onboarding.profile.note_hint": "ほかのユーザーへのメンション (@mention) や、 #ハッシュタグ が使用できます",
|
"onboarding.profile.note_hint": "ほかのユーザーへのメンション (@mention) や、 #ハッシュタグ が使用できます",
|
||||||
"onboarding.profile.save_and_continue": "保存して続ける",
|
"onboarding.profile.save_and_continue": "保存して続ける",
|
||||||
"onboarding.profile.title": "プロフィールの設定",
|
"onboarding.profile.title": "プロフィールの設定",
|
||||||
"onboarding.profile.upload_avatar": "プロフィール画像をアップロード",
|
"onboarding.profile.upload_avatar": "プロフィール画像をアップロード",
|
||||||
"onboarding.profile.upload_header": "プロフィールのヘッダー画像をアップロード",
|
"onboarding.profile.upload_header": "プロフィールのヘッダー画像をアップロード",
|
||||||
"onboarding.share.lead": "新しいMastodonのアカウントをみんなに紹介しましょう。",
|
|
||||||
"onboarding.share.message": "「{username}」で #Mastodon はじめました! {url}",
|
|
||||||
"onboarding.share.next_steps": "次のステップに進む:",
|
|
||||||
"onboarding.share.title": "プロフィールをシェアする",
|
|
||||||
"onboarding.start.lead": "Mastodonへようこそ。Mastodonは非中央集権型SNSのひとつで、ユーザーそれぞれの考えかたを尊重するプラットフォームです。ユーザーはどんな「好き」も自由に追いかけることができます。次のステップに進んで、新天地でのつながりをみつけましょう:",
|
|
||||||
"onboarding.start.skip": "チュートリアルをスキップする:",
|
|
||||||
"onboarding.start.title": "はじめに",
|
|
||||||
"onboarding.steps.follow_people.body": "ユーザーをフォローしてみましょう。これがMastodonを楽しむ基本です。",
|
|
||||||
"onboarding.steps.follow_people.title": "ホームタイムラインを埋める",
|
|
||||||
"onboarding.steps.publish_status.body": "試しになにか書いてみましょう。写真、ビデオ、アンケートなど、なんでも大丈夫です {emoji}",
|
|
||||||
"onboarding.steps.publish_status.title": "はじめての投稿",
|
|
||||||
"onboarding.steps.setup_profile.body": "ほかのユーザーが親しみやすいように、プロフィールを整えましょう。",
|
|
||||||
"onboarding.steps.setup_profile.title": "プロフィールを完成させる",
|
|
||||||
"onboarding.steps.share_profile.body": "Mastodonのアカウントをほかの人に紹介しましょう。",
|
|
||||||
"onboarding.steps.share_profile.title": "プロフィールをシェアする",
|
|
||||||
"onboarding.tips.2fa": "<strong>ワンポイント</strong> アカウント設定から2要素認証を有効にして、アカウントのセキュリティを強化しておきましょう。認証には任意のワンタイムパスワード(TOTP)アプリを利用でき、電話番号は不要です。",
|
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>ワンポイント</strong> Mastodon はたくさんのサーバーがつながりあってできている非中央集権型のSNSです。いくつかのアカウントはこことは別のサーバーに所属していることがありますが、サーバーの違いを意識しなくても同じようにフォローすることができます。サーバーが異なる場合は、ユーザー名の後半にサーバー名が表示されます。",
|
|
||||||
"onboarding.tips.migration": "<strong>ワンポイント</strong> もしも {domain} の雰囲気が合わないと感じたときは、ほかのMastodonサーバーにフォロワーを引き継いだまま引っ越しできます。また、自分で独自のサーバーを開設することも可能です。",
|
|
||||||
"onboarding.tips.verification": "<strong>ワンポイント</strong> webサイトを持っている場合は、webサイトにMastodonアカウントへのリンクを掲載し、さらにアカウントのプロフィール側にもwebサイトへのリンクを追加することで、アカウントが自分のものであることを証明できます。課金や書類の提出は必要ありません。",
|
|
||||||
"password_confirmation.exceeds_maxlength": "パスワードの最大文字数を超えています",
|
"password_confirmation.exceeds_maxlength": "パスワードの最大文字数を超えています",
|
||||||
"password_confirmation.mismatching": "入力済みのパスワードと一致しません",
|
"password_confirmation.mismatching": "入力済みのパスワードと一致しません",
|
||||||
"picture_in_picture.restore": "元に戻す",
|
"picture_in_picture.restore": "元に戻す",
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user