Merge pull request #2213 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
This commit is contained in:
commit
61f3e0e95e
227 changed files with 1108 additions and 1226 deletions
|
@ -26,7 +26,6 @@ services:
|
||||||
ports:
|
ports:
|
||||||
- '127.0.0.1:3000:3000'
|
- '127.0.0.1:3000:3000'
|
||||||
- '127.0.0.1:4000:4000'
|
- '127.0.0.1:4000:4000'
|
||||||
- '127.0.0.1:80:3000'
|
|
||||||
networks:
|
networks:
|
||||||
- external_network
|
- external_network
|
||||||
- internal_network
|
- internal_network
|
||||||
|
|
12
.eslintrc.js
12
.eslintrc.js
|
@ -7,6 +7,7 @@ module.exports = {
|
||||||
'plugin:jsx-a11y/recommended',
|
'plugin:jsx-a11y/recommended',
|
||||||
'plugin:import/recommended',
|
'plugin:import/recommended',
|
||||||
'plugin:promise/recommended',
|
'plugin:promise/recommended',
|
||||||
|
'plugin:jsdoc/recommended',
|
||||||
],
|
],
|
||||||
|
|
||||||
env: {
|
env: {
|
||||||
|
@ -238,6 +239,14 @@ module.exports = {
|
||||||
'formatjs/no-useless-message': 'error',
|
'formatjs/no-useless-message': 'error',
|
||||||
'formatjs/prefer-formatted-message': 'error',
|
'formatjs/prefer-formatted-message': 'error',
|
||||||
'formatjs/prefer-pound-in-plural': 'error',
|
'formatjs/prefer-pound-in-plural': 'error',
|
||||||
|
|
||||||
|
'jsdoc/check-types': 'off',
|
||||||
|
'jsdoc/no-undefined-types': 'off',
|
||||||
|
'jsdoc/require-jsdoc': 'off',
|
||||||
|
'jsdoc/require-param-description': 'off',
|
||||||
|
'jsdoc/require-property-description': 'off',
|
||||||
|
'jsdoc/require-returns-description': 'off',
|
||||||
|
'jsdoc/require-returns': 'off',
|
||||||
},
|
},
|
||||||
|
|
||||||
overrides: [
|
overrides: [
|
||||||
|
@ -270,10 +279,13 @@ module.exports = {
|
||||||
'plugin:import/recommended',
|
'plugin:import/recommended',
|
||||||
'plugin:import/typescript',
|
'plugin:import/typescript',
|
||||||
'plugin:promise/recommended',
|
'plugin:promise/recommended',
|
||||||
|
'plugin:jsdoc/recommended',
|
||||||
],
|
],
|
||||||
|
|
||||||
rules: {
|
rules: {
|
||||||
'@typescript-eslint/no-explicit-any': 'off',
|
'@typescript-eslint/no-explicit-any': 'off',
|
||||||
|
|
||||||
|
'jsdoc/require-jsdoc': 'off',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -428,10 +428,6 @@ RSpec/AnyInstance:
|
||||||
- 'spec/workers/activitypub/delivery_worker_spec.rb'
|
- 'spec/workers/activitypub/delivery_worker_spec.rb'
|
||||||
- 'spec/workers/web/push_notification_worker_spec.rb'
|
- 'spec/workers/web/push_notification_worker_spec.rb'
|
||||||
|
|
||||||
RSpec/BeforeAfterAll:
|
|
||||||
Exclude:
|
|
||||||
- 'spec/requests/localization_spec.rb'
|
|
||||||
|
|
||||||
# Configuration parameters: Prefixes, AllowedPatterns.
|
# Configuration parameters: Prefixes, AllowedPatterns.
|
||||||
# Prefixes: when, with, without
|
# Prefixes: when, with, without
|
||||||
RSpec/ContextWording:
|
RSpec/ContextWording:
|
||||||
|
@ -861,7 +857,6 @@ RSpec/PendingWithoutReason:
|
||||||
Exclude:
|
Exclude:
|
||||||
- 'spec/controllers/statuses_controller_spec.rb'
|
- 'spec/controllers/statuses_controller_spec.rb'
|
||||||
- 'spec/models/account_spec.rb'
|
- 'spec/models/account_spec.rb'
|
||||||
- 'spec/models/user_spec.rb'
|
|
||||||
|
|
||||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
# This cop supports unsafe autocorrection (--autocorrect-all).
|
||||||
# Configuration parameters: Strict, EnforcedStyle, AllowedExplicitMatchers.
|
# Configuration parameters: Strict, EnforcedStyle, AllowedExplicitMatchers.
|
||||||
|
@ -1153,32 +1148,6 @@ RSpec/VerifiedDoubles:
|
||||||
- 'spec/workers/feed_insert_worker_spec.rb'
|
- 'spec/workers/feed_insert_worker_spec.rb'
|
||||||
- 'spec/workers/regeneration_worker_spec.rb'
|
- 'spec/workers/regeneration_worker_spec.rb'
|
||||||
|
|
||||||
# This cop supports safe autocorrection (--autocorrect).
|
|
||||||
# Configuration parameters: ExpectedOrder, Include.
|
|
||||||
# ExpectedOrder: index, show, new, edit, create, update, destroy
|
|
||||||
# Include: app/controllers/**/*.rb
|
|
||||||
Rails/ActionOrder:
|
|
||||||
Exclude:
|
|
||||||
- 'app/controllers/admin/announcements_controller.rb'
|
|
||||||
- 'app/controllers/admin/roles_controller.rb'
|
|
||||||
- 'app/controllers/admin/rules_controller.rb'
|
|
||||||
- 'app/controllers/admin/warning_presets_controller.rb'
|
|
||||||
- 'app/controllers/admin/webhooks_controller.rb'
|
|
||||||
- 'app/controllers/api/v1/admin/domain_allows_controller.rb'
|
|
||||||
- 'app/controllers/api/v1/admin/domain_blocks_controller.rb'
|
|
||||||
- 'app/controllers/api/v1/admin/email_domain_blocks_controller.rb'
|
|
||||||
- 'app/controllers/api/v1/admin/ip_blocks_controller.rb'
|
|
||||||
- 'app/controllers/api/v1/filters_controller.rb'
|
|
||||||
- 'app/controllers/api/v1/media_controller.rb'
|
|
||||||
- 'app/controllers/api/v1/push/subscriptions_controller.rb'
|
|
||||||
- 'app/controllers/api/v2/filters/keywords_controller.rb'
|
|
||||||
- 'app/controllers/api/v2/filters/statuses_controller.rb'
|
|
||||||
- 'app/controllers/api/v2/filters_controller.rb'
|
|
||||||
- 'app/controllers/auth/registrations_controller.rb'
|
|
||||||
- 'app/controllers/filters_controller.rb'
|
|
||||||
- 'app/controllers/settings/applications_controller.rb'
|
|
||||||
- 'app/controllers/settings/two_factor_authentication/webauthn_credentials_controller.rb'
|
|
||||||
|
|
||||||
# This cop supports safe autocorrection (--autocorrect).
|
# This cop supports safe autocorrection (--autocorrect).
|
||||||
# Configuration parameters: Include.
|
# Configuration parameters: Include.
|
||||||
# Include: app/models/**/*.rb
|
# Include: app/models/**/*.rb
|
||||||
|
@ -1234,22 +1203,6 @@ Rails/BulkChangeTable:
|
||||||
- 'db/migrate/20220303000827_add_ordered_media_attachment_ids_to_status_edits.rb'
|
- 'db/migrate/20220303000827_add_ordered_media_attachment_ids_to_status_edits.rb'
|
||||||
- 'db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb'
|
- 'db/migrate/20220824164433_add_human_identifier_to_admin_action_logs.rb'
|
||||||
|
|
||||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
||||||
Rails/CompactBlank:
|
|
||||||
Exclude:
|
|
||||||
- 'app/helpers/application_helper.rb'
|
|
||||||
- 'app/helpers/statuses_helper.rb'
|
|
||||||
- 'app/models/concerns/attachmentable.rb'
|
|
||||||
- 'app/models/poll.rb'
|
|
||||||
- 'app/services/import_service.rb'
|
|
||||||
- 'config/initializers/paperclip.rb'
|
|
||||||
|
|
||||||
# This cop supports safe autocorrection (--autocorrect).
|
|
||||||
Rails/ContentTag:
|
|
||||||
Exclude:
|
|
||||||
- 'app/helpers/application_helper.rb'
|
|
||||||
- 'app/helpers/branding_helper.rb'
|
|
||||||
|
|
||||||
# Configuration parameters: Include.
|
# Configuration parameters: Include.
|
||||||
# Include: db/migrate/*.rb
|
# Include: db/migrate/*.rb
|
||||||
Rails/CreateTableWithTimestamps:
|
Rails/CreateTableWithTimestamps:
|
||||||
|
@ -1373,39 +1326,11 @@ Rails/HasManyOrHasOneDependent:
|
||||||
- 'app/models/user.rb'
|
- 'app/models/user.rb'
|
||||||
- 'app/models/web/push_subscription.rb'
|
- 'app/models/web/push_subscription.rb'
|
||||||
|
|
||||||
# This cop supports safe autocorrection (--autocorrect).
|
|
||||||
# Configuration parameters: Include.
|
|
||||||
# Include: spec/**/*, test/**/*
|
|
||||||
Rails/HttpPositionalArguments:
|
|
||||||
Exclude:
|
|
||||||
- 'spec/config/initializers/rack_attack_spec.rb'
|
|
||||||
|
|
||||||
# Configuration parameters: Include.
|
|
||||||
# Include: spec/**/*.rb, test/**/*.rb
|
|
||||||
Rails/I18nLocaleAssignment:
|
|
||||||
Exclude:
|
|
||||||
- 'spec/controllers/auth/registrations_controller_spec.rb'
|
|
||||||
- 'spec/helpers/application_helper_spec.rb'
|
|
||||||
- 'spec/requests/localization_spec.rb'
|
|
||||||
|
|
||||||
Rails/I18nLocaleTexts:
|
Rails/I18nLocaleTexts:
|
||||||
Exclude:
|
Exclude:
|
||||||
- 'lib/tasks/mastodon.rake'
|
- 'lib/tasks/mastodon.rake'
|
||||||
- 'spec/helpers/flashes_helper_spec.rb'
|
- 'spec/helpers/flashes_helper_spec.rb'
|
||||||
|
|
||||||
# Configuration parameters: IgnoreScopes, Include.
|
|
||||||
# Include: app/models/**/*.rb
|
|
||||||
Rails/InverseOf:
|
|
||||||
Exclude:
|
|
||||||
- 'app/models/appeal.rb'
|
|
||||||
- 'app/models/concerns/account_interactions.rb'
|
|
||||||
- 'app/models/custom_emoji.rb'
|
|
||||||
- 'app/models/domain_block.rb'
|
|
||||||
- 'app/models/follow_recommendation.rb'
|
|
||||||
- 'app/models/instance.rb'
|
|
||||||
- 'app/models/notification.rb'
|
|
||||||
- 'app/models/status.rb'
|
|
||||||
|
|
||||||
# Configuration parameters: Include.
|
# Configuration parameters: Include.
|
||||||
# Include: app/controllers/**/*.rb, app/mailers/**/*.rb
|
# Include: app/controllers/**/*.rb, app/mailers/**/*.rb
|
||||||
Rails/LexicallyScopedActionFilter:
|
Rails/LexicallyScopedActionFilter:
|
||||||
|
@ -1433,23 +1358,10 @@ Rails/NegateInclude:
|
||||||
- 'app/workers/web/push_notification_worker.rb'
|
- 'app/workers/web/push_notification_worker.rb'
|
||||||
- 'lib/paperclip/color_extractor.rb'
|
- 'lib/paperclip/color_extractor.rb'
|
||||||
|
|
||||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
||||||
# Configuration parameters: Include.
|
|
||||||
# Include: app/**/*.rb, config/**/*.rb, db/**/*.rb, lib/**/*.rb
|
|
||||||
Rails/Output:
|
|
||||||
Exclude:
|
|
||||||
- 'lib/mastodon/ip_blocks_cli.rb'
|
|
||||||
|
|
||||||
Rails/OutputSafety:
|
Rails/OutputSafety:
|
||||||
Exclude:
|
Exclude:
|
||||||
- 'config/initializers/simple_form.rb'
|
- 'config/initializers/simple_form.rb'
|
||||||
|
|
||||||
# This cop supports safe autocorrection (--autocorrect).
|
|
||||||
# Configuration parameters: NotNilAndNotEmpty, NotBlank, UnlessBlank.
|
|
||||||
Rails/Present:
|
|
||||||
Exclude:
|
|
||||||
- 'config/initializers/content_security_policy.rb'
|
|
||||||
|
|
||||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
# This cop supports unsafe autocorrection (--autocorrect-all).
|
||||||
# Configuration parameters: Include.
|
# Configuration parameters: Include.
|
||||||
# Include: **/Rakefile, **/*.rake
|
# Include: **/Rakefile, **/*.rake
|
||||||
|
@ -1533,15 +1445,6 @@ Rails/SkipsModelValidations:
|
||||||
- 'spec/services/follow_service_spec.rb'
|
- 'spec/services/follow_service_spec.rb'
|
||||||
- 'spec/services/update_account_service_spec.rb'
|
- 'spec/services/update_account_service_spec.rb'
|
||||||
|
|
||||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
|
||||||
Rails/SquishedSQLHeredocs:
|
|
||||||
Exclude:
|
|
||||||
- 'db/migrate/20170920024819_status_ids_to_timestamp_ids.rb'
|
|
||||||
- 'db/migrate/20180608213548_reject_following_blocked_users.rb'
|
|
||||||
- 'db/post_migrate/20190519130537_remove_boosts_widening_audience.rb'
|
|
||||||
- 'lib/mastodon/snowflake.rb'
|
|
||||||
- 'lib/tasks/tests.rake'
|
|
||||||
|
|
||||||
Rails/TransactionExitStatement:
|
Rails/TransactionExitStatement:
|
||||||
Exclude:
|
Exclude:
|
||||||
- 'app/lib/activitypub/activity/announce.rb'
|
- 'app/lib/activitypub/activity/announce.rb'
|
||||||
|
|
|
@ -14,6 +14,10 @@ class Admin::AnnouncementsController < Admin::BaseController
|
||||||
@announcement = Announcement.new
|
@announcement = Announcement.new
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
authorize :announcement, :update?
|
||||||
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
authorize :announcement, :create?
|
authorize :announcement, :create?
|
||||||
|
|
||||||
|
@ -28,10 +32,6 @@ class Admin::AnnouncementsController < Admin::BaseController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
|
||||||
authorize :announcement, :update?
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
def update
|
||||||
authorize :announcement, :update?
|
authorize :announcement, :update?
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,10 @@ module Admin
|
||||||
@role = UserRole.new
|
@role = UserRole.new
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
authorize @role, :update?
|
||||||
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
authorize :user_role, :create?
|
authorize :user_role, :create?
|
||||||
|
|
||||||
|
@ -30,10 +34,6 @@ module Admin
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
|
||||||
authorize @role, :update?
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
def update
|
||||||
authorize @role, :update?
|
authorize @role, :update?
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,10 @@ module Admin
|
||||||
@rule = Rule.new
|
@rule = Rule.new
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
authorize @rule, :update?
|
||||||
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
authorize :rule, :create?
|
authorize :rule, :create?
|
||||||
|
|
||||||
|
@ -24,10 +28,6 @@ module Admin
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
|
||||||
authorize @rule, :update?
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
def update
|
||||||
authorize @rule, :update?
|
authorize @rule, :update?
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,10 @@ module Admin
|
||||||
@warning_preset = AccountWarningPreset.new
|
@warning_preset = AccountWarningPreset.new
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
authorize @warning_preset, :update?
|
||||||
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
authorize :account_warning_preset, :create?
|
authorize :account_warning_preset, :create?
|
||||||
|
|
||||||
|
@ -24,10 +28,6 @@ module Admin
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit
|
|
||||||
authorize @warning_preset, :update?
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
def update
|
||||||
authorize @warning_preset, :update?
|
authorize @warning_preset, :update?
|
||||||
|
|
||||||
|
|
|
@ -10,12 +10,20 @@ module Admin
|
||||||
@webhooks = Webhook.page(params[:page])
|
@webhooks = Webhook.page(params[:page])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
authorize @webhook, :show?
|
||||||
|
end
|
||||||
|
|
||||||
def new
|
def new
|
||||||
authorize :webhook, :create?
|
authorize :webhook, :create?
|
||||||
|
|
||||||
@webhook = Webhook.new
|
@webhook = Webhook.new
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
authorize @webhook, :update?
|
||||||
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
authorize :webhook, :create?
|
authorize :webhook, :create?
|
||||||
|
|
||||||
|
@ -28,14 +36,6 @@ module Admin
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
|
||||||
authorize @webhook, :show?
|
|
||||||
end
|
|
||||||
|
|
||||||
def edit
|
|
||||||
authorize @webhook, :update?
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
def update
|
||||||
authorize @webhook, :update?
|
authorize @webhook, :update?
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,16 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController
|
||||||
|
|
||||||
PAGINATION_PARAMS = %i(limit).freeze
|
PAGINATION_PARAMS = %i(limit).freeze
|
||||||
|
|
||||||
|
def index
|
||||||
|
authorize :domain_allow, :index?
|
||||||
|
render json: @domain_allows, each_serializer: REST::Admin::DomainAllowSerializer
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
authorize @domain_allow, :show?
|
||||||
|
render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer
|
||||||
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
authorize :domain_allow, :create?
|
authorize :domain_allow, :create?
|
||||||
|
|
||||||
|
@ -29,16 +39,6 @@ class Api::V1::Admin::DomainAllowsController < Api::BaseController
|
||||||
render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer
|
render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
def index
|
|
||||||
authorize :domain_allow, :index?
|
|
||||||
render json: @domain_allows, each_serializer: REST::Admin::DomainAllowSerializer
|
|
||||||
end
|
|
||||||
|
|
||||||
def show
|
|
||||||
authorize @domain_allow, :show?
|
|
||||||
render json: @domain_allow, serializer: REST::Admin::DomainAllowSerializer
|
|
||||||
end
|
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
authorize @domain_allow, :destroy?
|
authorize @domain_allow, :destroy?
|
||||||
UnallowDomainService.new.call(@domain_allow)
|
UnallowDomainService.new.call(@domain_allow)
|
||||||
|
|
|
@ -16,6 +16,16 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
|
||||||
|
|
||||||
PAGINATION_PARAMS = %i(limit).freeze
|
PAGINATION_PARAMS = %i(limit).freeze
|
||||||
|
|
||||||
|
def index
|
||||||
|
authorize :domain_block, :index?
|
||||||
|
render json: @domain_blocks, each_serializer: REST::Admin::DomainBlockSerializer
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
authorize @domain_block, :show?
|
||||||
|
render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer
|
||||||
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
authorize :domain_block, :create?
|
authorize :domain_block, :create?
|
||||||
|
|
||||||
|
@ -28,16 +38,6 @@ class Api::V1::Admin::DomainBlocksController < Api::BaseController
|
||||||
render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer
|
render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
def index
|
|
||||||
authorize :domain_block, :index?
|
|
||||||
render json: @domain_blocks, each_serializer: REST::Admin::DomainBlockSerializer
|
|
||||||
end
|
|
||||||
|
|
||||||
def show
|
|
||||||
authorize @domain_block, :show?
|
|
||||||
render json: @domain_block, serializer: REST::Admin::DomainBlockSerializer
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
def update
|
||||||
authorize @domain_block, :update?
|
authorize @domain_block, :update?
|
||||||
@domain_block.update!(domain_block_params)
|
@domain_block.update!(domain_block_params)
|
||||||
|
|
|
@ -18,15 +18,6 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController
|
||||||
limit
|
limit
|
||||||
).freeze
|
).freeze
|
||||||
|
|
||||||
def create
|
|
||||||
authorize :email_domain_block, :create?
|
|
||||||
|
|
||||||
@email_domain_block = EmailDomainBlock.create!(resource_params)
|
|
||||||
log_action :create, @email_domain_block
|
|
||||||
|
|
||||||
render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer
|
|
||||||
end
|
|
||||||
|
|
||||||
def index
|
def index
|
||||||
authorize :email_domain_block, :index?
|
authorize :email_domain_block, :index?
|
||||||
render json: @email_domain_blocks, each_serializer: REST::Admin::EmailDomainBlockSerializer
|
render json: @email_domain_blocks, each_serializer: REST::Admin::EmailDomainBlockSerializer
|
||||||
|
@ -37,6 +28,15 @@ class Api::V1::Admin::EmailDomainBlocksController < Api::BaseController
|
||||||
render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer
|
render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
authorize :email_domain_block, :create?
|
||||||
|
|
||||||
|
@email_domain_block = EmailDomainBlock.create!(resource_params)
|
||||||
|
log_action :create, @email_domain_block
|
||||||
|
|
||||||
|
render json: @email_domain_block, serializer: REST::Admin::EmailDomainBlockSerializer
|
||||||
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
authorize @email_domain_block, :destroy?
|
authorize @email_domain_block, :destroy?
|
||||||
@email_domain_block.destroy!
|
@email_domain_block.destroy!
|
||||||
|
|
|
@ -18,13 +18,6 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController
|
||||||
limit
|
limit
|
||||||
).freeze
|
).freeze
|
||||||
|
|
||||||
def create
|
|
||||||
authorize :ip_block, :create?
|
|
||||||
@ip_block = IpBlock.create!(resource_params)
|
|
||||||
log_action :create, @ip_block
|
|
||||||
render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
|
|
||||||
end
|
|
||||||
|
|
||||||
def index
|
def index
|
||||||
authorize :ip_block, :index?
|
authorize :ip_block, :index?
|
||||||
render json: @ip_blocks, each_serializer: REST::Admin::IpBlockSerializer
|
render json: @ip_blocks, each_serializer: REST::Admin::IpBlockSerializer
|
||||||
|
@ -35,6 +28,13 @@ class Api::V1::Admin::IpBlocksController < Api::BaseController
|
||||||
render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
|
render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
authorize :ip_block, :create?
|
||||||
|
@ip_block = IpBlock.create!(resource_params)
|
||||||
|
log_action :create, @ip_block
|
||||||
|
render json: @ip_block, serializer: REST::Admin::IpBlockSerializer
|
||||||
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
authorize @ip_block, :update?
|
authorize @ip_block, :update?
|
||||||
@ip_block.update(resource_params)
|
@ip_block.update(resource_params)
|
||||||
|
|
|
@ -11,6 +11,10 @@ class Api::V1::FiltersController < Api::BaseController
|
||||||
render json: @filters, each_serializer: REST::V1::FilterSerializer
|
render json: @filters, each_serializer: REST::V1::FilterSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
render json: @filter, serializer: REST::V1::FilterSerializer
|
||||||
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
ApplicationRecord.transaction do
|
ApplicationRecord.transaction do
|
||||||
filter_category = current_account.custom_filters.create!(filter_params)
|
filter_category = current_account.custom_filters.create!(filter_params)
|
||||||
|
@ -20,10 +24,6 @@ class Api::V1::FiltersController < Api::BaseController
|
||||||
render json: @filter, serializer: REST::V1::FilterSerializer
|
render json: @filter, serializer: REST::V1::FilterSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
|
||||||
render json: @filter, serializer: REST::V1::FilterSerializer
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
def update
|
||||||
ApplicationRecord.transaction do
|
ApplicationRecord.transaction do
|
||||||
@filter.update!(keyword_params)
|
@filter.update!(keyword_params)
|
||||||
|
|
|
@ -6,6 +6,10 @@ class Api::V1::MediaController < Api::BaseController
|
||||||
before_action :set_media_attachment, except: [:create]
|
before_action :set_media_attachment, except: [:create]
|
||||||
before_action :check_processing, except: [:create]
|
before_action :check_processing, except: [:create]
|
||||||
|
|
||||||
|
def show
|
||||||
|
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_code_for_media_attachment
|
||||||
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@media_attachment = current_account.media_attachments.create!(media_attachment_params)
|
@media_attachment = current_account.media_attachments.create!(media_attachment_params)
|
||||||
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer
|
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer
|
||||||
|
@ -15,10 +19,6 @@ class Api::V1::MediaController < Api::BaseController
|
||||||
render json: processing_error, status: 500
|
render json: processing_error, status: 500
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
|
||||||
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_code_for_media_attachment
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@media_attachment.update!(updateable_media_attachment_params)
|
@media_attachment.update!(updateable_media_attachment_params)
|
||||||
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_code_for_media_attachment
|
render json: @media_attachment, serializer: REST::MediaAttachmentSerializer, status: status_code_for_media_attachment
|
||||||
|
|
|
@ -6,6 +6,10 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController
|
||||||
before_action :set_push_subscription
|
before_action :set_push_subscription
|
||||||
before_action :check_push_subscription, only: [:show, :update]
|
before_action :check_push_subscription, only: [:show, :update]
|
||||||
|
|
||||||
|
def show
|
||||||
|
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
|
||||||
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@push_subscription&.destroy!
|
@push_subscription&.destroy!
|
||||||
|
|
||||||
|
@ -21,10 +25,6 @@ class Api::V1::Push::SubscriptionsController < Api::BaseController
|
||||||
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
|
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
|
||||||
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@push_subscription.update!(data: data_params)
|
@push_subscription.update!(data: data_params)
|
||||||
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
|
render json: @push_subscription, serializer: REST::WebPushSubscriptionSerializer
|
||||||
|
|
|
@ -12,13 +12,13 @@ class Api::V2::Filters::KeywordsController < Api::BaseController
|
||||||
render json: @keywords, each_serializer: REST::FilterKeywordSerializer
|
render json: @keywords, each_serializer: REST::FilterKeywordSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def show
|
||||||
@keyword = current_account.custom_filters.find(params[:filter_id]).keywords.create!(resource_params)
|
|
||||||
|
|
||||||
render json: @keyword, serializer: REST::FilterKeywordSerializer
|
render json: @keyword, serializer: REST::FilterKeywordSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def create
|
||||||
|
@keyword = current_account.custom_filters.find(params[:filter_id]).keywords.create!(resource_params)
|
||||||
|
|
||||||
render json: @keyword, serializer: REST::FilterKeywordSerializer
|
render json: @keyword, serializer: REST::FilterKeywordSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -12,13 +12,13 @@ class Api::V2::Filters::StatusesController < Api::BaseController
|
||||||
render json: @status_filters, each_serializer: REST::FilterStatusSerializer
|
render json: @status_filters, each_serializer: REST::FilterStatusSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def show
|
||||||
@status_filter = current_account.custom_filters.find(params[:filter_id]).statuses.create!(resource_params)
|
|
||||||
|
|
||||||
render json: @status_filter, serializer: REST::FilterStatusSerializer
|
render json: @status_filter, serializer: REST::FilterStatusSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def create
|
||||||
|
@status_filter = current_account.custom_filters.find(params[:filter_id]).statuses.create!(resource_params)
|
||||||
|
|
||||||
render json: @status_filter, serializer: REST::FilterStatusSerializer
|
render json: @status_filter, serializer: REST::FilterStatusSerializer
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -11,13 +11,13 @@ class Api::V2::FiltersController < Api::BaseController
|
||||||
render json: @filters, each_serializer: REST::FilterSerializer, rules_requested: true
|
render json: @filters, each_serializer: REST::FilterSerializer, rules_requested: true
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def show
|
||||||
@filter = current_account.custom_filters.create!(resource_params)
|
|
||||||
|
|
||||||
render json: @filter, serializer: REST::FilterSerializer, rules_requested: true
|
render json: @filter, serializer: REST::FilterSerializer, rules_requested: true
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def create
|
||||||
|
@filter = current_account.custom_filters.create!(resource_params)
|
||||||
|
|
||||||
render json: @filter, serializer: REST::FilterSerializer, rules_requested: true
|
render json: @filter, serializer: REST::FilterSerializer, rules_requested: true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -25,16 +25,16 @@ class Auth::RegistrationsController < Devise::RegistrationsController
|
||||||
super(&:build_invite_request)
|
super(&:build_invite_request)
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
|
||||||
not_found
|
|
||||||
end
|
|
||||||
|
|
||||||
def update
|
def update
|
||||||
super do |resource|
|
super do |resource|
|
||||||
resource.clear_other_sessions(current_session.session_id) if resource.saved_change_to_encrypted_password?
|
resource.clear_other_sessions(current_session.session_id) if resource.saved_change_to_encrypted_password?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
not_found
|
||||||
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def update_resource(resource, params)
|
def update_resource(resource, params)
|
||||||
|
|
|
@ -18,6 +18,8 @@ class FiltersController < ApplicationController
|
||||||
@filter.keywords.build
|
@filter.keywords.build
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit; end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@filter = current_account.custom_filters.build(resource_params)
|
@filter = current_account.custom_filters.build(resource_params)
|
||||||
|
|
||||||
|
@ -28,8 +30,6 @@ class FiltersController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def edit; end
|
|
||||||
|
|
||||||
def update
|
def update
|
||||||
if @filter.update(resource_params)
|
if @filter.update(resource_params)
|
||||||
redirect_to filters_path
|
redirect_to filters_path
|
||||||
|
|
|
@ -8,6 +8,8 @@ class Settings::ApplicationsController < Settings::BaseController
|
||||||
@applications = current_user.applications.order(id: :desc).page(params[:page])
|
@applications = current_user.applications.order(id: :desc).page(params[:page])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def show; end
|
||||||
|
|
||||||
def new
|
def new
|
||||||
@application = Doorkeeper::Application.new(
|
@application = Doorkeeper::Application.new(
|
||||||
redirect_uri: Doorkeeper.configuration.native_redirect_uri,
|
redirect_uri: Doorkeeper.configuration.native_redirect_uri,
|
||||||
|
@ -15,8 +17,6 @@ class Settings::ApplicationsController < Settings::BaseController
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
def show; end
|
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@application = current_user.applications.build(application_params)
|
@application = current_user.applications.build(application_params)
|
||||||
|
|
||||||
|
|
|
@ -8,9 +8,8 @@ module Settings
|
||||||
before_action :require_otp_enabled
|
before_action :require_otp_enabled
|
||||||
before_action :require_webauthn_enabled, only: [:index, :destroy]
|
before_action :require_webauthn_enabled, only: [:index, :destroy]
|
||||||
|
|
||||||
def new; end
|
|
||||||
|
|
||||||
def index; end
|
def index; end
|
||||||
|
def new; end
|
||||||
|
|
||||||
def options
|
def options
|
||||||
current_user.update(webauthn_id: WebAuthn.generate_user_id) unless current_user.webauthn_id
|
current_user.update(webauthn_id: WebAuthn.generate_user_id) unless current_user.webauthn_id
|
||||||
|
|
|
@ -118,7 +118,7 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_icon
|
def check_icon
|
||||||
content_tag(:svg, tag(:path, 'fill-rule': 'evenodd', 'clip-rule': 'evenodd', d: 'M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z'), xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 20 20', fill: 'currentColor')
|
content_tag(:svg, tag.path('fill-rule': 'evenodd', 'clip-rule': 'evenodd', d: 'M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z'), xmlns: 'http://www.w3.org/2000/svg', viewBox: '0 0 20 20', fill: 'currentColor')
|
||||||
end
|
end
|
||||||
|
|
||||||
def visibility_icon(status)
|
def visibility_icon(status)
|
||||||
|
@ -152,7 +152,7 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def opengraph(property, content)
|
def opengraph(property, content)
|
||||||
tag(:meta, content: content, property: property)
|
tag.meta(content: content, property: property)
|
||||||
end
|
end
|
||||||
|
|
||||||
def body_classes
|
def body_classes
|
||||||
|
@ -162,7 +162,7 @@ module ApplicationHelper
|
||||||
output << 'system-font' if current_account&.user&.setting_system_font_ui
|
output << 'system-font' if current_account&.user&.setting_system_font_ui
|
||||||
output << (current_account&.user&.setting_reduce_motion ? 'reduce-motion' : 'no-reduce-motion')
|
output << (current_account&.user&.setting_reduce_motion ? 'reduce-motion' : 'no-reduce-motion')
|
||||||
output << 'rtl' if locale_direction == 'rtl'
|
output << 'rtl' if locale_direction == 'rtl'
|
||||||
output.reject(&:blank?).join(' ')
|
output.compact_blank.join(' ')
|
||||||
end
|
end
|
||||||
|
|
||||||
def cdn_host
|
def cdn_host
|
||||||
|
|
|
@ -11,11 +11,11 @@ module BrandingHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def _logo_as_symbol_wordmark
|
def _logo_as_symbol_wordmark
|
||||||
content_tag(:svg, tag(:use, href: '#logo-symbol-wordmark'), viewBox: '0 0 261 66', class: 'logo logo--wordmark')
|
content_tag(:svg, tag.use(href: '#logo-symbol-wordmark'), viewBox: '0 0 261 66', class: 'logo logo--wordmark')
|
||||||
end
|
end
|
||||||
|
|
||||||
def _logo_as_symbol_icon
|
def _logo_as_symbol_icon
|
||||||
content_tag(:svg, tag(:use, href: '#logo-symbol-icon'), viewBox: '0 0 79 79', class: 'logo logo--icon')
|
content_tag(:svg, tag.use(href: '#logo-symbol-icon'), viewBox: '0 0 79 79', class: 'logo logo--icon')
|
||||||
end
|
end
|
||||||
|
|
||||||
def render_logo
|
def render_logo
|
||||||
|
|
|
@ -51,14 +51,14 @@ module StatusesHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def status_description(status)
|
def status_description(status)
|
||||||
components = [[media_summary(status), status_text_summary(status)].reject(&:blank?).join(' · ')]
|
components = [[media_summary(status), status_text_summary(status)].compact_blank.join(' · ')]
|
||||||
|
|
||||||
if status.spoiler_text.blank?
|
if status.spoiler_text.blank?
|
||||||
components << status.text
|
components << status.text
|
||||||
components << poll_summary(status)
|
components << poll_summary(status)
|
||||||
end
|
end
|
||||||
|
|
||||||
components.reject(&:blank?).join("\n\n")
|
components.compact_blank.join("\n\n")
|
||||||
end
|
end
|
||||||
|
|
||||||
def stream_link_target
|
def stream_link_target
|
||||||
|
|
|
@ -441,16 +441,12 @@ export function changeUploadCompose(id, params) {
|
||||||
// Editing already-attached media is deferred to editing the post itself.
|
// Editing already-attached media is deferred to editing the post itself.
|
||||||
// For simplicity's sake, fake an API reply.
|
// For simplicity's sake, fake an API reply.
|
||||||
if (media && !media.get('unattached')) {
|
if (media && !media.get('unattached')) {
|
||||||
let { description, focus } = params;
|
const { focus, ...other } = params;
|
||||||
const data = media.toJS();
|
const data = { ...media.toJS(), ...other };
|
||||||
|
|
||||||
if (description) {
|
|
||||||
data.description = description;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (focus) {
|
if (focus) {
|
||||||
focus = focus.split(',');
|
const [x, y] = focus.split(',');
|
||||||
data.meta = { focus: { x: parseFloat(focus[0]), y: parseFloat(focus[1]) } };
|
data.meta = { focus: { x: parseFloat(x), y: parseFloat(y) } };
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch(changeUploadComposeSuccess(data, true));
|
dispatch(changeUploadComposeSuccess(data, true));
|
||||||
|
|
|
@ -20,7 +20,7 @@ export const PICTURE_IN_PICTURE_REMOVE = 'PICTURE_IN_PICTURE_REMOVE';
|
||||||
* @param {string} accountId
|
* @param {string} accountId
|
||||||
* @param {string} playerType
|
* @param {string} playerType
|
||||||
* @param {MediaProps} props
|
* @param {MediaProps} props
|
||||||
* @return {object}
|
* @returns {object}
|
||||||
*/
|
*/
|
||||||
export const deployPictureInPicture = (statusId, accountId, playerType, props) => {
|
export const deployPictureInPicture = (statusId, accountId, playerType, props) => {
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
|
|
|
@ -27,7 +27,7 @@ const { messages } = getLocale();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {number} max
|
* @param {number} max
|
||||||
* @return {number}
|
* @returns {number}
|
||||||
*/
|
*/
|
||||||
const randomUpTo = max =>
|
const randomUpTo = max =>
|
||||||
Math.floor(Math.random() * Math.floor(max));
|
Math.floor(Math.random() * Math.floor(max));
|
||||||
|
@ -40,7 +40,7 @@ const randomUpTo = max =>
|
||||||
* @param {function(Function, Function): void} [options.fallback]
|
* @param {function(Function, Function): void} [options.fallback]
|
||||||
* @param {function(): void} [options.fillGaps]
|
* @param {function(): void} [options.fillGaps]
|
||||||
* @param {function(object): boolean} [options.accept]
|
* @param {function(object): boolean} [options.accept]
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
export const connectTimelineStream = (timelineId, channelName, params = {}, options = {}) =>
|
export const connectTimelineStream = (timelineId, channelName, params = {}, options = {}) =>
|
||||||
connectStream(channelName, params, (dispatch, getState) => {
|
connectStream(channelName, params, (dispatch, getState) => {
|
||||||
|
@ -132,7 +132,7 @@ const refreshHomeTimelineAndNotification = (dispatch, done) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
export const connectUserStream = () =>
|
export const connectUserStream = () =>
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
|
@ -141,7 +141,7 @@ export const connectUserStream = () =>
|
||||||
/**
|
/**
|
||||||
* @param {Object} options
|
* @param {Object} options
|
||||||
* @param {boolean} [options.onlyMedia]
|
* @param {boolean} [options.onlyMedia]
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
export const connectCommunityStream = ({ onlyMedia } = {}) =>
|
export const connectCommunityStream = ({ onlyMedia } = {}) =>
|
||||||
connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => (fillCommunityTimelineGaps({ onlyMedia })) });
|
connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => (fillCommunityTimelineGaps({ onlyMedia })) });
|
||||||
|
@ -151,7 +151,7 @@ export const connectCommunityStream = ({ onlyMedia } = {}) =>
|
||||||
* @param {boolean} [options.onlyMedia]
|
* @param {boolean} [options.onlyMedia]
|
||||||
* @param {boolean} [options.onlyRemote]
|
* @param {boolean} [options.onlyRemote]
|
||||||
* @param {boolean} [options.allowLocalOnly]
|
* @param {boolean} [options.allowLocalOnly]
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
export const connectPublicStream = ({ onlyMedia, onlyRemote, allowLocalOnly } = {}) =>
|
export const connectPublicStream = ({ onlyMedia, onlyRemote, allowLocalOnly } = {}) =>
|
||||||
connectTimelineStream(`public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => fillPublicTimelineGaps({ onlyMedia, onlyRemote, allowLocalOnly }) });
|
connectTimelineStream(`public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => fillPublicTimelineGaps({ onlyMedia, onlyRemote, allowLocalOnly }) });
|
||||||
|
@ -161,20 +161,20 @@ export const connectPublicStream = ({ onlyMedia, onlyRemote, allowLocalOnly } =
|
||||||
* @param {string} tagName
|
* @param {string} tagName
|
||||||
* @param {boolean} onlyLocal
|
* @param {boolean} onlyLocal
|
||||||
* @param {function(object): boolean} accept
|
* @param {function(object): boolean} accept
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
export const connectHashtagStream = (columnId, tagName, onlyLocal, accept) =>
|
export const connectHashtagStream = (columnId, tagName, onlyLocal, accept) =>
|
||||||
connectTimelineStream(`hashtag:${columnId}${onlyLocal ? ':local' : ''}`, `hashtag${onlyLocal ? ':local' : ''}`, { tag: tagName }, { accept });
|
connectTimelineStream(`hashtag:${columnId}${onlyLocal ? ':local' : ''}`, `hashtag${onlyLocal ? ':local' : ''}`, { tag: tagName }, { accept });
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
export const connectDirectStream = () =>
|
export const connectDirectStream = () =>
|
||||||
connectTimelineStream('direct', 'direct');
|
connectTimelineStream('direct', 'direct');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} listId
|
* @param {string} listId
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
export const connectListStream = listId =>
|
export const connectListStream = listId =>
|
||||||
connectTimelineStream(`list:${listId}`, 'list', { list: listId }, { fillGaps: () => fillListTimelineGaps(listId) });
|
connectTimelineStream(`list:${listId}`, 'list', { list: listId }, { fillGaps: () => fillListTimelineGaps(listId) });
|
||||||
|
|
|
@ -20,9 +20,8 @@ import PropTypes from 'prop-types';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Component that is used to render blurred of blurhash string
|
* Component that is used to render blurred of blurhash string
|
||||||
*
|
|
||||||
* @param {BlurhashProps} param1 Props of the component
|
* @param {BlurhashProps} param1 Props of the component
|
||||||
* @returns Canvas which will render blurred region element to embed
|
* @returns {JSX.Element} Canvas which will render blurred region element to embed
|
||||||
*/
|
*/
|
||||||
function Blurhash({
|
function Blurhash({
|
||||||
hash,
|
hash,
|
||||||
|
|
|
@ -4,7 +4,6 @@ import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns custom renderer for one of the common counter types
|
* Returns custom renderer for one of the common counter types
|
||||||
*
|
|
||||||
* @param {"statuses" | "following" | "followers"} counterType
|
* @param {"statuses" | "following" | "followers"} counterType
|
||||||
* Type of the counter
|
* Type of the counter
|
||||||
* @param {boolean} isBold Whether display number must be displayed in bold
|
* @param {boolean} isBold Whether display number must be displayed in bold
|
||||||
|
|
|
@ -35,7 +35,6 @@ class SilentErrorBoundary extends React.Component {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to render counter of how much people are talking about hashtag
|
* Used to render counter of how much people are talking about hashtag
|
||||||
*
|
|
||||||
* @type {(displayNumber: JSX.Element, pluralReady: number) => JSX.Element}
|
* @type {(displayNumber: JSX.Element, pluralReady: number) => JSX.Element}
|
||||||
*/
|
*/
|
||||||
export const accountsCountRenderer = (displayNumber, pluralReady) => (
|
export const accountsCountRenderer = (displayNumber, pluralReady) => (
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
import React from 'react';
|
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import classNames from 'classnames';
|
|
||||||
|
|
||||||
export default class Icon extends React.PureComponent {
|
|
||||||
|
|
||||||
static propTypes = {
|
|
||||||
id: PropTypes.string.isRequired,
|
|
||||||
className: PropTypes.string,
|
|
||||||
fixedWidth: PropTypes.bool,
|
|
||||||
};
|
|
||||||
|
|
||||||
render () {
|
|
||||||
const { id, className, fixedWidth, ...other } = this.props;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<i role='img' className={classNames('fa', `fa-${id}`, className, { 'fa-fw': fixedWidth })} {...other} />
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
14
app/javascript/flavours/glitch/components/icon.tsx
Normal file
14
app/javascript/flavours/glitch/components/icon.tsx
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
import React from 'react';
|
||||||
|
import classNames from 'classnames';
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
id: string;
|
||||||
|
className?: string;
|
||||||
|
fixedWidth?: boolean;
|
||||||
|
children?: never;
|
||||||
|
[key: string]: any;
|
||||||
|
}
|
||||||
|
export const Icon: React.FC<Props> = ({ id, className, fixedWidth, ...other }) =>
|
||||||
|
<i className={classNames('fa', `fa-${id}`, className, { 'fa-fw': fixedWidth })} {...other} />;
|
||||||
|
|
||||||
|
export default Icon;
|
|
@ -1,22 +0,0 @@
|
||||||
import React from 'react';
|
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import Icon from 'flavours/glitch/components/icon';
|
|
||||||
|
|
||||||
const formatNumber = num => num > 40 ? '40+' : num;
|
|
||||||
|
|
||||||
const IconWithBadge = ({ id, count, issueBadge, className }) => (
|
|
||||||
<i className='icon-with-badge'>
|
|
||||||
<Icon id={id} fixedWidth className={className} />
|
|
||||||
{count > 0 && <i className='icon-with-badge__badge'>{formatNumber(count)}</i>}
|
|
||||||
{issueBadge && <i className='icon-with-badge__issue-badge' />}
|
|
||||||
</i>
|
|
||||||
);
|
|
||||||
|
|
||||||
IconWithBadge.propTypes = {
|
|
||||||
id: PropTypes.string.isRequired,
|
|
||||||
count: PropTypes.number.isRequired,
|
|
||||||
issueBadge: PropTypes.bool,
|
|
||||||
className: PropTypes.string,
|
|
||||||
};
|
|
||||||
|
|
||||||
export default IconWithBadge;
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
import React from 'react';
|
||||||
|
import { Icon } from './icon';
|
||||||
|
|
||||||
|
const formatNumber = (num: number): number | string => num > 40 ? '40+' : num;
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
id: string;
|
||||||
|
count: number;
|
||||||
|
issueBadge: boolean;
|
||||||
|
className: string;
|
||||||
|
}
|
||||||
|
const IconWithBadge: React.FC<Props> = ({ id, count, issueBadge, className }) => (
|
||||||
|
<i className='icon-with-badge'>
|
||||||
|
<Icon id={id} fixedWidth className={className} />
|
||||||
|
{count > 0 && <i className='icon-with-badge__badge'>{formatNumber(count)}</i>}
|
||||||
|
{issueBadge && <i className='icon-with-badge__issue-badge' />}
|
||||||
|
</i>
|
||||||
|
);
|
||||||
|
|
||||||
|
export default IconWithBadge;
|
|
@ -1,6 +1,5 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { injectIntl, defineMessages } from 'react-intl';
|
import { injectIntl, defineMessages, InjectedIntl } from 'react-intl';
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
today: { id: 'relative_time.today', defaultMessage: 'today' },
|
today: { id: 'relative_time.today', defaultMessage: 'today' },
|
||||||
|
@ -28,12 +27,12 @@ const dateFormatOptions = {
|
||||||
day: '2-digit',
|
day: '2-digit',
|
||||||
hour: '2-digit',
|
hour: '2-digit',
|
||||||
minute: '2-digit',
|
minute: '2-digit',
|
||||||
};
|
} as const;
|
||||||
|
|
||||||
const shortDateFormatOptions = {
|
const shortDateFormatOptions = {
|
||||||
month: 'short',
|
month: 'short',
|
||||||
day: 'numeric',
|
day: 'numeric',
|
||||||
};
|
} as const;
|
||||||
|
|
||||||
const SECOND = 1000;
|
const SECOND = 1000;
|
||||||
const MINUTE = 1000 * 60;
|
const MINUTE = 1000 * 60;
|
||||||
|
@ -42,7 +41,7 @@ const DAY = 1000 * 60 * 60 * 24;
|
||||||
|
|
||||||
const MAX_DELAY = 2147483647;
|
const MAX_DELAY = 2147483647;
|
||||||
|
|
||||||
const selectUnits = delta => {
|
const selectUnits = (delta: number) => {
|
||||||
const absDelta = Math.abs(delta);
|
const absDelta = Math.abs(delta);
|
||||||
|
|
||||||
if (absDelta < MINUTE) {
|
if (absDelta < MINUTE) {
|
||||||
|
@ -56,7 +55,7 @@ const selectUnits = delta => {
|
||||||
return 'day';
|
return 'day';
|
||||||
};
|
};
|
||||||
|
|
||||||
const getUnitDelay = units => {
|
const getUnitDelay = (units: string) => {
|
||||||
switch (units) {
|
switch (units) {
|
||||||
case 'second':
|
case 'second':
|
||||||
return SECOND;
|
return SECOND;
|
||||||
|
@ -71,7 +70,7 @@ const getUnitDelay = units => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const timeAgoString = (intl, date, now, year, timeGiven, short) => {
|
export const timeAgoString = (intl: InjectedIntl, date: Date, now: number, year: number, timeGiven: boolean, short?: boolean) => {
|
||||||
const delta = now - date.getTime();
|
const delta = now - date.getTime();
|
||||||
|
|
||||||
let relativeTime;
|
let relativeTime;
|
||||||
|
@ -99,7 +98,7 @@ export const timeAgoString = (intl, date, now, year, timeGiven, short) => {
|
||||||
return relativeTime;
|
return relativeTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
const timeRemainingString = (intl, date, now, timeGiven = true) => {
|
const timeRemainingString = (intl: InjectedIntl, date: Date, now: number, timeGiven = true) => {
|
||||||
const delta = date.getTime() - now;
|
const delta = date.getTime() - now;
|
||||||
|
|
||||||
let relativeTime;
|
let relativeTime;
|
||||||
|
@ -121,15 +120,17 @@ const timeRemainingString = (intl, date, now, timeGiven = true) => {
|
||||||
return relativeTime;
|
return relativeTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
class RelativeTimestamp extends React.Component {
|
type Props = {
|
||||||
|
intl: InjectedIntl;
|
||||||
static propTypes = {
|
timestamp: string;
|
||||||
intl: PropTypes.object.isRequired,
|
year: number;
|
||||||
timestamp: PropTypes.string.isRequired,
|
futureDate?: boolean;
|
||||||
year: PropTypes.number.isRequired,
|
short?: boolean;
|
||||||
futureDate: PropTypes.bool,
|
}
|
||||||
short: PropTypes.bool,
|
type States = {
|
||||||
};
|
now: number;
|
||||||
|
}
|
||||||
|
class RelativeTimestamp extends React.Component<Props, States> {
|
||||||
|
|
||||||
state = {
|
state = {
|
||||||
now: this.props.intl.now(),
|
now: this.props.intl.now(),
|
||||||
|
@ -140,7 +141,9 @@ class RelativeTimestamp extends React.Component {
|
||||||
short: true,
|
short: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
shouldComponentUpdate (nextProps, nextState) {
|
_timer: number | undefined;
|
||||||
|
|
||||||
|
shouldComponentUpdate (nextProps: Props, nextState: States) {
|
||||||
// As of right now the locale doesn't change without a new page load,
|
// As of right now the locale doesn't change without a new page load,
|
||||||
// but we might as well check in case that ever changes.
|
// but we might as well check in case that ever changes.
|
||||||
return this.props.timestamp !== nextProps.timestamp ||
|
return this.props.timestamp !== nextProps.timestamp ||
|
||||||
|
@ -148,7 +151,7 @@ class RelativeTimestamp extends React.Component {
|
||||||
this.state.now !== nextState.now;
|
this.state.now !== nextState.now;
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillReceiveProps (nextProps) {
|
UNSAFE_componentWillReceiveProps (nextProps: Props) {
|
||||||
if (this.props.timestamp !== nextProps.timestamp) {
|
if (this.props.timestamp !== nextProps.timestamp) {
|
||||||
this.setState({ now: this.props.intl.now() });
|
this.setState({ now: this.props.intl.now() });
|
||||||
}
|
}
|
||||||
|
@ -158,16 +161,16 @@ class RelativeTimestamp extends React.Component {
|
||||||
this._scheduleNextUpdate(this.props, this.state);
|
this._scheduleNextUpdate(this.props, this.state);
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUpdate (nextProps, nextState) {
|
UNSAFE_componentWillUpdate (nextProps: Props, nextState: States) {
|
||||||
this._scheduleNextUpdate(nextProps, nextState);
|
this._scheduleNextUpdate(nextProps, nextState);
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount () {
|
componentWillUnmount () {
|
||||||
clearTimeout(this._timer);
|
window.clearTimeout(this._timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
_scheduleNextUpdate (props, state) {
|
_scheduleNextUpdate (props: Props, state: States) {
|
||||||
clearTimeout(this._timer);
|
window.clearTimeout(this._timer);
|
||||||
|
|
||||||
const { timestamp } = props;
|
const { timestamp } = props;
|
||||||
const delta = (new Date(timestamp)).getTime() - state.now;
|
const delta = (new Date(timestamp)).getTime() - state.now;
|
||||||
|
@ -176,7 +179,7 @@ class RelativeTimestamp extends React.Component {
|
||||||
const updateInterval = 1000 * 10;
|
const updateInterval = 1000 * 10;
|
||||||
const delay = delta < 0 ? Math.max(updateInterval, unitDelay - unitRemainder) : Math.max(updateInterval, unitRemainder);
|
const delay = delta < 0 ? Math.max(updateInterval, unitDelay - unitRemainder) : Math.max(updateInterval, unitRemainder);
|
||||||
|
|
||||||
this._timer = setTimeout(() => {
|
this._timer = window.setTimeout(() => {
|
||||||
this.setState({ now: this.props.intl.now() });
|
this.setState({ now: this.props.intl.now() });
|
||||||
}, delay);
|
}, delay);
|
||||||
}
|
}
|
|
@ -24,7 +24,6 @@ import { FormattedMessage, FormattedNumber } from 'react-intl';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Component that renders short big number to a shorter version
|
* Component that renders short big number to a shorter version
|
||||||
*
|
|
||||||
* @param {ShortNumberProps} param0 Props for the component
|
* @param {ShortNumberProps} param0 Props for the component
|
||||||
* @returns {JSX.Element} Rendered number
|
* @returns {JSX.Element} Rendered number
|
||||||
*/
|
*/
|
||||||
|
@ -58,7 +57,6 @@ ShortNumber.propTypes = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders short number into corresponding localizable react fragment
|
* Renders short number into corresponding localizable react fragment
|
||||||
*
|
|
||||||
* @param {ShortNumberCounterProps} param0 Props for the component
|
* @param {ShortNumberCounterProps} param0 Props for the component
|
||||||
* @returns {JSX.Element} FormattedMessage ready to be embedded in code
|
* @returns {JSX.Element} FormattedMessage ready to be embedded in code
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -476,7 +476,7 @@ class Audio extends React.PureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classNames('audio-player', { editable, inactive: !revealed })} ref={this.setPlayerRef} style={{ backgroundColor: this._getBackgroundColor(), color: this._getForegroundColor(), width: '100%', height: this.props.fullscreen ? '100%' : (this.state.height || this.props.height) }} onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave} tabIndex={0} onKeyDown={this.handleKeyDown}>
|
<div className={classNames('audio-player', { editable, inactive: !revealed })} ref={this.setPlayerRef} style={{ backgroundColor: this._getBackgroundColor(), color: this._getForegroundColor(), height: this.props.fullscreen ? '100%' : (this.state.height || this.props.height) }} onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave} tabIndex={0} onKeyDown={this.handleKeyDown}>
|
||||||
|
|
||||||
<Blurhash
|
<Blurhash
|
||||||
hash={blurhash}
|
hash={blurhash}
|
||||||
|
|
|
@ -125,9 +125,15 @@ const mapStateToProps = state => ({
|
||||||
});
|
});
|
||||||
|
|
||||||
const mapDispatchToProps = dispatch => ({
|
const mapDispatchToProps = dispatch => ({
|
||||||
/** Set options in the redux store */
|
/**
|
||||||
|
* Set options in the redux store
|
||||||
|
* @param opts
|
||||||
|
*/
|
||||||
setOpt: (opts) => dispatch(doodleSet(opts)),
|
setOpt: (opts) => dispatch(doodleSet(opts)),
|
||||||
/** Submit doodle for upload */
|
/**
|
||||||
|
* Submit doodle for upload
|
||||||
|
* @param file
|
||||||
|
*/
|
||||||
submit: (file) => dispatch(uploadCompose([file])),
|
submit: (file) => dispatch(uploadCompose([file])),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -230,7 +236,10 @@ class DoodleModal extends ImmutablePureComponent {
|
||||||
|
|
||||||
//endregion
|
//endregion
|
||||||
|
|
||||||
/** Key up handler */
|
/**
|
||||||
|
* Key up handler
|
||||||
|
* @param e
|
||||||
|
*/
|
||||||
handleKeyUp = (e) => {
|
handleKeyUp = (e) => {
|
||||||
if (e.target.nodeName === 'INPUT') return;
|
if (e.target.nodeName === 'INPUT') return;
|
||||||
|
|
||||||
|
@ -256,7 +265,10 @@ class DoodleModal extends ImmutablePureComponent {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Key down handler */
|
/**
|
||||||
|
* Key down handler
|
||||||
|
* @param e
|
||||||
|
*/
|
||||||
handleKeyDown = (e) => {
|
handleKeyDown = (e) => {
|
||||||
if (e.key === 'Control' || e.key === 'Meta') {
|
if (e.key === 'Control' || e.key === 'Meta') {
|
||||||
this.controlHeld = true;
|
this.controlHeld = true;
|
||||||
|
@ -292,7 +304,6 @@ class DoodleModal extends ImmutablePureComponent {
|
||||||
/**
|
/**
|
||||||
* Set reference to the canvas element.
|
* Set reference to the canvas element.
|
||||||
* This is called during component init
|
* This is called during component init
|
||||||
*
|
|
||||||
* @param elem - canvas element
|
* @param elem - canvas element
|
||||||
*/
|
*/
|
||||||
setCanvasRef = (elem) => {
|
setCanvasRef = (elem) => {
|
||||||
|
@ -334,7 +345,6 @@ class DoodleModal extends ImmutablePureComponent {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set up the sketcher instance
|
* Set up the sketcher instance
|
||||||
*
|
|
||||||
* @param canvas - canvas element. Null if we're just resizing
|
* @param canvas - canvas element. Null if we're just resizing
|
||||||
*/
|
*/
|
||||||
initSketcher (canvas = null) {
|
initSketcher (canvas = null) {
|
||||||
|
@ -433,7 +443,6 @@ class DoodleModal extends ImmutablePureComponent {
|
||||||
/**
|
/**
|
||||||
* Palette left click.
|
* Palette left click.
|
||||||
* Selects Fg color (or Bg, if Control/Meta is held)
|
* Selects Fg color (or Bg, if Control/Meta is held)
|
||||||
*
|
|
||||||
* @param e - event
|
* @param e - event
|
||||||
*/
|
*/
|
||||||
onPaletteClick = (e) => {
|
onPaletteClick = (e) => {
|
||||||
|
@ -452,7 +461,6 @@ class DoodleModal extends ImmutablePureComponent {
|
||||||
/**
|
/**
|
||||||
* Palette right click.
|
* Palette right click.
|
||||||
* Selects Bg color
|
* Selects Bg color
|
||||||
*
|
|
||||||
* @param e - event
|
* @param e - event
|
||||||
*/
|
*/
|
||||||
onPaletteRClick = (e) => {
|
onPaletteRClick = (e) => {
|
||||||
|
@ -463,7 +471,6 @@ class DoodleModal extends ImmutablePureComponent {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle click on the Draw mode button
|
* Handle click on the Draw mode button
|
||||||
*
|
|
||||||
* @param e - event
|
* @param e - event
|
||||||
*/
|
*/
|
||||||
setModeDraw = (e) => {
|
setModeDraw = (e) => {
|
||||||
|
@ -473,7 +480,6 @@ class DoodleModal extends ImmutablePureComponent {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle click on the Fill mode button
|
* Handle click on the Fill mode button
|
||||||
*
|
|
||||||
* @param e - event
|
* @param e - event
|
||||||
*/
|
*/
|
||||||
setModeFill = (e) => {
|
setModeFill = (e) => {
|
||||||
|
@ -483,7 +489,6 @@ class DoodleModal extends ImmutablePureComponent {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle click on Smooth checkbox
|
* Handle click on Smooth checkbox
|
||||||
*
|
|
||||||
* @param e - event
|
* @param e - event
|
||||||
*/
|
*/
|
||||||
tglSmooth = (e) => {
|
tglSmooth = (e) => {
|
||||||
|
@ -493,7 +498,6 @@ class DoodleModal extends ImmutablePureComponent {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle click on Adaptive checkbox
|
* Handle click on Adaptive checkbox
|
||||||
*
|
|
||||||
* @param e - event
|
* @param e - event
|
||||||
*/
|
*/
|
||||||
tglAdaptive = (e) => {
|
tglAdaptive = (e) => {
|
||||||
|
@ -503,7 +507,6 @@ class DoodleModal extends ImmutablePureComponent {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle change of the Weight input field
|
* Handle change of the Weight input field
|
||||||
*
|
|
||||||
* @param e - event
|
* @param e - event
|
||||||
*/
|
*/
|
||||||
setWeight = (e) => {
|
setWeight = (e) => {
|
||||||
|
@ -512,7 +515,6 @@ class DoodleModal extends ImmutablePureComponent {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set size - clalback from the select box
|
* Set size - clalback from the select box
|
||||||
*
|
|
||||||
* @param e - event
|
* @param e - event
|
||||||
*/
|
*/
|
||||||
changeSize = (e) => {
|
changeSize = (e) => {
|
||||||
|
|
|
@ -17,10 +17,10 @@ let sharedConnection;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef StreamEvent
|
* @typedef StreamEvent
|
||||||
* @property {string} event
|
* @property {string} event
|
||||||
* @property {object} payload
|
* @property {object} payload
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {Array.<Subscription>}
|
* @type {Array.<Subscription>}
|
||||||
|
@ -126,7 +126,7 @@ const sharedCallbacks = {
|
||||||
/**
|
/**
|
||||||
* @param {string} channelName
|
* @param {string} channelName
|
||||||
* @param {Object.<string, string>} params
|
* @param {Object.<string, string>} params
|
||||||
* @return {string}
|
* @returns {string}
|
||||||
*/
|
*/
|
||||||
const channelNameWithInlineParams = (channelName, params) => {
|
const channelNameWithInlineParams = (channelName, params) => {
|
||||||
if (Object.keys(params).length === 0) {
|
if (Object.keys(params).length === 0) {
|
||||||
|
@ -140,7 +140,7 @@ const channelNameWithInlineParams = (channelName, params) => {
|
||||||
* @param {string} channelName
|
* @param {string} channelName
|
||||||
* @param {Object.<string, string>} params
|
* @param {Object.<string, string>} params
|
||||||
* @param {function(Function, Function): { onConnect: (function(): void), onReceive: (function(StreamEvent): void), onDisconnect: (function(): void) }} callbacks
|
* @param {function(Function, Function): { onConnect: (function(): void), onReceive: (function(StreamEvent): void), onDisconnect: (function(): void) }} callbacks
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
export const connectStream = (channelName, params, callbacks) => (dispatch, getState) => {
|
export const connectStream = (channelName, params, callbacks) => (dispatch, getState) => {
|
||||||
|
@ -227,7 +227,7 @@ const handleEventSourceMessage = (e, received) => {
|
||||||
* @param {string} accessToken
|
* @param {string} accessToken
|
||||||
* @param {string} channelName
|
* @param {string} channelName
|
||||||
* @param {{ connected: Function, received: function(StreamEvent): void, disconnected: Function, reconnected: Function }} callbacks
|
* @param {{ connected: Function, received: function(StreamEvent): void, disconnected: Function, reconnected: Function }} callbacks
|
||||||
* @return {WebSocketClient | EventSource}
|
* @returns {WebSocketClient | EventSource}
|
||||||
*/
|
*/
|
||||||
const createConnection = (streamingAPIBaseURL, accessToken, channelName, { connected, received, disconnected, reconnected }) => {
|
const createConnection = (streamingAPIBaseURL, accessToken, channelName, { connected, received, disconnected, reconnected }) => {
|
||||||
const params = channelName.split('&');
|
const params = channelName.split('&');
|
||||||
|
|
|
@ -381,6 +381,7 @@
|
||||||
background: darken($ui-base-color, 8%);
|
background: darken($ui-base-color, 8%);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
padding-bottom: 44px;
|
padding-bottom: 44px;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
&.editable {
|
&.editable {
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
let cachedScrollbarWidth = null;
|
let cachedScrollbarWidth = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {number}
|
* @returns {number}
|
||||||
*/
|
*/
|
||||||
const getActualScrollbarWidth = () => {
|
const getActualScrollbarWidth = () => {
|
||||||
const outer = document.createElement('div');
|
const outer = document.createElement('div');
|
||||||
|
@ -20,7 +20,7 @@ const getActualScrollbarWidth = () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {number}
|
* @returns {number}
|
||||||
*/
|
*/
|
||||||
export const getScrollbarWidth = () => {
|
export const getScrollbarWidth = () => {
|
||||||
if (cachedScrollbarWidth !== null) {
|
if (cachedScrollbarWidth !== null) {
|
||||||
|
|
|
@ -408,16 +408,12 @@ export function changeUploadCompose(id, params) {
|
||||||
// Editing already-attached media is deferred to editing the post itself.
|
// Editing already-attached media is deferred to editing the post itself.
|
||||||
// For simplicity's sake, fake an API reply.
|
// For simplicity's sake, fake an API reply.
|
||||||
if (media && !media.get('unattached')) {
|
if (media && !media.get('unattached')) {
|
||||||
let { description, focus } = params;
|
const { focus, ...other } = params;
|
||||||
const data = media.toJS();
|
const data = { ...media.toJS(), ...other };
|
||||||
|
|
||||||
if (description) {
|
|
||||||
data.description = description;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (focus) {
|
if (focus) {
|
||||||
focus = focus.split(',');
|
const [x, y] = focus.split(',');
|
||||||
data.meta = { focus: { x: parseFloat(focus[0]), y: parseFloat(focus[1]) } };
|
data.meta = { focus: { x: parseFloat(x), y: parseFloat(y) } };
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch(changeUploadComposeSuccess(data, true));
|
dispatch(changeUploadComposeSuccess(data, true));
|
||||||
|
|
|
@ -20,7 +20,7 @@ export const PICTURE_IN_PICTURE_REMOVE = 'PICTURE_IN_PICTURE_REMOVE';
|
||||||
* @param {string} accountId
|
* @param {string} accountId
|
||||||
* @param {string} playerType
|
* @param {string} playerType
|
||||||
* @param {MediaProps} props
|
* @param {MediaProps} props
|
||||||
* @return {object}
|
* @returns {object}
|
||||||
*/
|
*/
|
||||||
export const deployPictureInPicture = (statusId, accountId, playerType, props) => {
|
export const deployPictureInPicture = (statusId, accountId, playerType, props) => {
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
|
|
|
@ -27,7 +27,7 @@ const { messages } = getLocale();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {number} max
|
* @param {number} max
|
||||||
* @return {number}
|
* @returns {number}
|
||||||
*/
|
*/
|
||||||
const randomUpTo = max =>
|
const randomUpTo = max =>
|
||||||
Math.floor(Math.random() * Math.floor(max));
|
Math.floor(Math.random() * Math.floor(max));
|
||||||
|
@ -40,7 +40,7 @@ const randomUpTo = max =>
|
||||||
* @param {function(Function, Function): void} [options.fallback]
|
* @param {function(Function, Function): void} [options.fallback]
|
||||||
* @param {function(): void} [options.fillGaps]
|
* @param {function(): void} [options.fillGaps]
|
||||||
* @param {function(object): boolean} [options.accept]
|
* @param {function(object): boolean} [options.accept]
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
export const connectTimelineStream = (timelineId, channelName, params = {}, options = {}) =>
|
export const connectTimelineStream = (timelineId, channelName, params = {}, options = {}) =>
|
||||||
connectStream(channelName, params, (dispatch, getState) => {
|
connectStream(channelName, params, (dispatch, getState) => {
|
||||||
|
@ -132,7 +132,7 @@ const refreshHomeTimelineAndNotification = (dispatch, done) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
export const connectUserStream = () =>
|
export const connectUserStream = () =>
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
|
@ -141,7 +141,7 @@ export const connectUserStream = () =>
|
||||||
/**
|
/**
|
||||||
* @param {Object} options
|
* @param {Object} options
|
||||||
* @param {boolean} [options.onlyMedia]
|
* @param {boolean} [options.onlyMedia]
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
export const connectCommunityStream = ({ onlyMedia } = {}) =>
|
export const connectCommunityStream = ({ onlyMedia } = {}) =>
|
||||||
connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => (fillCommunityTimelineGaps({ onlyMedia })) });
|
connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => (fillCommunityTimelineGaps({ onlyMedia })) });
|
||||||
|
@ -150,7 +150,7 @@ export const connectCommunityStream = ({ onlyMedia } = {}) =>
|
||||||
* @param {Object} options
|
* @param {Object} options
|
||||||
* @param {boolean} [options.onlyMedia]
|
* @param {boolean} [options.onlyMedia]
|
||||||
* @param {boolean} [options.onlyRemote]
|
* @param {boolean} [options.onlyRemote]
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
export const connectPublicStream = ({ onlyMedia, onlyRemote } = {}) =>
|
export const connectPublicStream = ({ onlyMedia, onlyRemote } = {}) =>
|
||||||
connectTimelineStream(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => fillPublicTimelineGaps({ onlyMedia, onlyRemote }) });
|
connectTimelineStream(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => fillPublicTimelineGaps({ onlyMedia, onlyRemote }) });
|
||||||
|
@ -160,20 +160,20 @@ export const connectPublicStream = ({ onlyMedia, onlyRemote } = {}) =>
|
||||||
* @param {string} tagName
|
* @param {string} tagName
|
||||||
* @param {boolean} onlyLocal
|
* @param {boolean} onlyLocal
|
||||||
* @param {function(object): boolean} accept
|
* @param {function(object): boolean} accept
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
export const connectHashtagStream = (columnId, tagName, onlyLocal, accept) =>
|
export const connectHashtagStream = (columnId, tagName, onlyLocal, accept) =>
|
||||||
connectTimelineStream(`hashtag:${columnId}${onlyLocal ? ':local' : ''}`, `hashtag${onlyLocal ? ':local' : ''}`, { tag: tagName }, { accept });
|
connectTimelineStream(`hashtag:${columnId}${onlyLocal ? ':local' : ''}`, `hashtag${onlyLocal ? ':local' : ''}`, { tag: tagName }, { accept });
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
export const connectDirectStream = () =>
|
export const connectDirectStream = () =>
|
||||||
connectTimelineStream('direct', 'direct');
|
connectTimelineStream('direct', 'direct');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} listId
|
* @param {string} listId
|
||||||
* @return {function(): void}
|
* @returns {function(): void}
|
||||||
*/
|
*/
|
||||||
export const connectListStream = listId =>
|
export const connectListStream = listId =>
|
||||||
connectTimelineStream(`list:${listId}`, 'list', { list: listId }, { fillGaps: () => fillListTimelineGaps(listId) });
|
connectTimelineStream(`list:${listId}`, 'list', { list: listId }, { fillGaps: () => fillListTimelineGaps(listId) });
|
||||||
|
|
|
@ -20,9 +20,8 @@ import PropTypes from 'prop-types';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Component that is used to render blurred of blurhash string
|
* Component that is used to render blurred of blurhash string
|
||||||
*
|
|
||||||
* @param {BlurhashProps} param1 Props of the component
|
* @param {BlurhashProps} param1 Props of the component
|
||||||
* @returns Canvas which will render blurred region element to embed
|
* @returns {JSX.Element} Canvas which will render blurred region element to embed
|
||||||
*/
|
*/
|
||||||
function Blurhash({
|
function Blurhash({
|
||||||
hash,
|
hash,
|
||||||
|
|
|
@ -4,7 +4,6 @@ import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns custom renderer for one of the common counter types
|
* Returns custom renderer for one of the common counter types
|
||||||
*
|
|
||||||
* @param {"statuses" | "following" | "followers"} counterType
|
* @param {"statuses" | "following" | "followers"} counterType
|
||||||
* Type of the counter
|
* Type of the counter
|
||||||
* @param {boolean} isBold Whether display number must be displayed in bold
|
* @param {boolean} isBold Whether display number must be displayed in bold
|
||||||
|
|
|
@ -37,7 +37,6 @@ class SilentErrorBoundary extends React.Component {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to render counter of how much people are talking about hashtag
|
* Used to render counter of how much people are talking about hashtag
|
||||||
*
|
|
||||||
* @type {(displayNumber: JSX.Element, pluralReady: number) => JSX.Element}
|
* @type {(displayNumber: JSX.Element, pluralReady: number) => JSX.Element}
|
||||||
*/
|
*/
|
||||||
export const accountsCountRenderer = (displayNumber, pluralReady) => (
|
export const accountsCountRenderer = (displayNumber, pluralReady) => (
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
import React from 'react';
|
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import classNames from 'classnames';
|
|
||||||
|
|
||||||
export default class Icon extends React.PureComponent {
|
|
||||||
|
|
||||||
static propTypes = {
|
|
||||||
id: PropTypes.string.isRequired,
|
|
||||||
className: PropTypes.string,
|
|
||||||
fixedWidth: PropTypes.bool,
|
|
||||||
};
|
|
||||||
|
|
||||||
render () {
|
|
||||||
const { id, className, fixedWidth, ...other } = this.props;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<i className={classNames('fa', `fa-${id}`, className, { 'fa-fw': fixedWidth })} {...other} />
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
14
app/javascript/mastodon/components/icon.tsx
Normal file
14
app/javascript/mastodon/components/icon.tsx
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
import React from 'react';
|
||||||
|
import classNames from 'classnames';
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
id: string;
|
||||||
|
className?: string;
|
||||||
|
fixedWidth?: boolean;
|
||||||
|
children?: never;
|
||||||
|
[key: string]: any;
|
||||||
|
}
|
||||||
|
export const Icon: React.FC<Props> = ({ id, className, fixedWidth, ...other }) =>
|
||||||
|
<i className={classNames('fa', `fa-${id}`, className, { 'fa-fw': fixedWidth })} {...other} />;
|
||||||
|
|
||||||
|
export default Icon;
|
|
@ -1,22 +0,0 @@
|
||||||
import React from 'react';
|
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import Icon from 'mastodon/components/icon';
|
|
||||||
|
|
||||||
const formatNumber = num => num > 40 ? '40+' : num;
|
|
||||||
|
|
||||||
const IconWithBadge = ({ id, count, issueBadge, className }) => (
|
|
||||||
<i className='icon-with-badge'>
|
|
||||||
<Icon id={id} fixedWidth className={className} />
|
|
||||||
{count > 0 && <i className='icon-with-badge__badge'>{formatNumber(count)}</i>}
|
|
||||||
{issueBadge && <i className='icon-with-badge__issue-badge' />}
|
|
||||||
</i>
|
|
||||||
);
|
|
||||||
|
|
||||||
IconWithBadge.propTypes = {
|
|
||||||
id: PropTypes.string.isRequired,
|
|
||||||
count: PropTypes.number.isRequired,
|
|
||||||
issueBadge: PropTypes.bool,
|
|
||||||
className: PropTypes.string,
|
|
||||||
};
|
|
||||||
|
|
||||||
export default IconWithBadge;
|
|
20
app/javascript/mastodon/components/icon_with_badge.tsx
Normal file
20
app/javascript/mastodon/components/icon_with_badge.tsx
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
import React from 'react';
|
||||||
|
import { Icon } from './icon';
|
||||||
|
|
||||||
|
const formatNumber = (num: number): number | string => num > 40 ? '40+' : num;
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
id: string;
|
||||||
|
count: number;
|
||||||
|
issueBadge: boolean;
|
||||||
|
className: string;
|
||||||
|
}
|
||||||
|
const IconWithBadge: React.FC<Props> = ({ id, count, issueBadge, className }) => (
|
||||||
|
<i className='icon-with-badge'>
|
||||||
|
<Icon id={id} fixedWidth className={className} />
|
||||||
|
{count > 0 && <i className='icon-with-badge__badge'>{formatNumber(count)}</i>}
|
||||||
|
{issueBadge && <i className='icon-with-badge__issue-badge' />}
|
||||||
|
</i>
|
||||||
|
);
|
||||||
|
|
||||||
|
export default IconWithBadge;
|
|
@ -1,6 +1,5 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { injectIntl, defineMessages } from 'react-intl';
|
import { injectIntl, defineMessages, InjectedIntl } from 'react-intl';
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
today: { id: 'relative_time.today', defaultMessage: 'today' },
|
today: { id: 'relative_time.today', defaultMessage: 'today' },
|
||||||
|
@ -28,12 +27,12 @@ const dateFormatOptions = {
|
||||||
day: '2-digit',
|
day: '2-digit',
|
||||||
hour: '2-digit',
|
hour: '2-digit',
|
||||||
minute: '2-digit',
|
minute: '2-digit',
|
||||||
};
|
} as const;
|
||||||
|
|
||||||
const shortDateFormatOptions = {
|
const shortDateFormatOptions = {
|
||||||
month: 'short',
|
month: 'short',
|
||||||
day: 'numeric',
|
day: 'numeric',
|
||||||
};
|
} as const;
|
||||||
|
|
||||||
const SECOND = 1000;
|
const SECOND = 1000;
|
||||||
const MINUTE = 1000 * 60;
|
const MINUTE = 1000 * 60;
|
||||||
|
@ -42,7 +41,7 @@ const DAY = 1000 * 60 * 60 * 24;
|
||||||
|
|
||||||
const MAX_DELAY = 2147483647;
|
const MAX_DELAY = 2147483647;
|
||||||
|
|
||||||
const selectUnits = delta => {
|
const selectUnits = (delta: number) => {
|
||||||
const absDelta = Math.abs(delta);
|
const absDelta = Math.abs(delta);
|
||||||
|
|
||||||
if (absDelta < MINUTE) {
|
if (absDelta < MINUTE) {
|
||||||
|
@ -56,7 +55,7 @@ const selectUnits = delta => {
|
||||||
return 'day';
|
return 'day';
|
||||||
};
|
};
|
||||||
|
|
||||||
const getUnitDelay = units => {
|
const getUnitDelay = (units: string) => {
|
||||||
switch (units) {
|
switch (units) {
|
||||||
case 'second':
|
case 'second':
|
||||||
return SECOND;
|
return SECOND;
|
||||||
|
@ -71,7 +70,7 @@ const getUnitDelay = units => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const timeAgoString = (intl, date, now, year, timeGiven, short) => {
|
export const timeAgoString = (intl: InjectedIntl, date: Date, now: number, year: number, timeGiven: boolean, short?: boolean) => {
|
||||||
const delta = now - date.getTime();
|
const delta = now - date.getTime();
|
||||||
|
|
||||||
let relativeTime;
|
let relativeTime;
|
||||||
|
@ -99,7 +98,7 @@ export const timeAgoString = (intl, date, now, year, timeGiven, short) => {
|
||||||
return relativeTime;
|
return relativeTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
const timeRemainingString = (intl, date, now, timeGiven = true) => {
|
const timeRemainingString = (intl: InjectedIntl, date: Date, now: number, timeGiven = true) => {
|
||||||
const delta = date.getTime() - now;
|
const delta = date.getTime() - now;
|
||||||
|
|
||||||
let relativeTime;
|
let relativeTime;
|
||||||
|
@ -121,15 +120,17 @@ const timeRemainingString = (intl, date, now, timeGiven = true) => {
|
||||||
return relativeTime;
|
return relativeTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
class RelativeTimestamp extends React.Component {
|
type Props = {
|
||||||
|
intl: InjectedIntl;
|
||||||
static propTypes = {
|
timestamp: string;
|
||||||
intl: PropTypes.object.isRequired,
|
year: number;
|
||||||
timestamp: PropTypes.string.isRequired,
|
futureDate?: boolean;
|
||||||
year: PropTypes.number.isRequired,
|
short?: boolean;
|
||||||
futureDate: PropTypes.bool,
|
}
|
||||||
short: PropTypes.bool,
|
type States = {
|
||||||
};
|
now: number;
|
||||||
|
}
|
||||||
|
class RelativeTimestamp extends React.Component<Props, States> {
|
||||||
|
|
||||||
state = {
|
state = {
|
||||||
now: this.props.intl.now(),
|
now: this.props.intl.now(),
|
||||||
|
@ -140,7 +141,9 @@ class RelativeTimestamp extends React.Component {
|
||||||
short: true,
|
short: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
shouldComponentUpdate (nextProps, nextState) {
|
_timer: number | undefined;
|
||||||
|
|
||||||
|
shouldComponentUpdate (nextProps: Props, nextState: States) {
|
||||||
// As of right now the locale doesn't change without a new page load,
|
// As of right now the locale doesn't change without a new page load,
|
||||||
// but we might as well check in case that ever changes.
|
// but we might as well check in case that ever changes.
|
||||||
return this.props.timestamp !== nextProps.timestamp ||
|
return this.props.timestamp !== nextProps.timestamp ||
|
||||||
|
@ -148,7 +151,7 @@ class RelativeTimestamp extends React.Component {
|
||||||
this.state.now !== nextState.now;
|
this.state.now !== nextState.now;
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillReceiveProps (nextProps) {
|
UNSAFE_componentWillReceiveProps (nextProps: Props) {
|
||||||
if (this.props.timestamp !== nextProps.timestamp) {
|
if (this.props.timestamp !== nextProps.timestamp) {
|
||||||
this.setState({ now: this.props.intl.now() });
|
this.setState({ now: this.props.intl.now() });
|
||||||
}
|
}
|
||||||
|
@ -158,16 +161,16 @@ class RelativeTimestamp extends React.Component {
|
||||||
this._scheduleNextUpdate(this.props, this.state);
|
this._scheduleNextUpdate(this.props, this.state);
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUpdate (nextProps, nextState) {
|
UNSAFE_componentWillUpdate (nextProps: Props, nextState: States) {
|
||||||
this._scheduleNextUpdate(nextProps, nextState);
|
this._scheduleNextUpdate(nextProps, nextState);
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUnmount () {
|
componentWillUnmount () {
|
||||||
clearTimeout(this._timer);
|
window.clearTimeout(this._timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
_scheduleNextUpdate (props, state) {
|
_scheduleNextUpdate (props: Props, state: States) {
|
||||||
clearTimeout(this._timer);
|
window.clearTimeout(this._timer);
|
||||||
|
|
||||||
const { timestamp } = props;
|
const { timestamp } = props;
|
||||||
const delta = (new Date(timestamp)).getTime() - state.now;
|
const delta = (new Date(timestamp)).getTime() - state.now;
|
||||||
|
@ -176,7 +179,7 @@ class RelativeTimestamp extends React.Component {
|
||||||
const updateInterval = 1000 * 10;
|
const updateInterval = 1000 * 10;
|
||||||
const delay = delta < 0 ? Math.max(updateInterval, unitDelay - unitRemainder) : Math.max(updateInterval, unitRemainder);
|
const delay = delta < 0 ? Math.max(updateInterval, unitDelay - unitRemainder) : Math.max(updateInterval, unitRemainder);
|
||||||
|
|
||||||
this._timer = setTimeout(() => {
|
this._timer = window.setTimeout(() => {
|
||||||
this.setState({ now: this.props.intl.now() });
|
this.setState({ now: this.props.intl.now() });
|
||||||
}, delay);
|
}, delay);
|
||||||
}
|
}
|
|
@ -24,7 +24,6 @@ import { FormattedMessage, FormattedNumber } from 'react-intl';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Component that renders short big number to a shorter version
|
* Component that renders short big number to a shorter version
|
||||||
*
|
|
||||||
* @param {ShortNumberProps} param0 Props for the component
|
* @param {ShortNumberProps} param0 Props for the component
|
||||||
* @returns {JSX.Element} Rendered number
|
* @returns {JSX.Element} Rendered number
|
||||||
*/
|
*/
|
||||||
|
@ -58,7 +57,6 @@ ShortNumber.propTypes = {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders short number into corresponding localizable react fragment
|
* Renders short number into corresponding localizable react fragment
|
||||||
*
|
|
||||||
* @param {ShortNumberCounterProps} param0 Props for the component
|
* @param {ShortNumberCounterProps} param0 Props for the component
|
||||||
* @returns {JSX.Element} FormattedMessage ready to be embedded in code
|
* @returns {JSX.Element} FormattedMessage ready to be embedded in code
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -470,7 +470,7 @@ class Audio extends React.PureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classNames('audio-player', { editable, inactive: !revealed })} ref={this.setPlayerRef} style={{ backgroundColor: this._getBackgroundColor(), color: this._getForegroundColor(), width: '100%', height: this.props.fullscreen ? '100%' : (this.state.height || this.props.height) }} onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave} tabIndex={0} onKeyDown={this.handleKeyDown}>
|
<div className={classNames('audio-player', { editable, inactive: !revealed })} ref={this.setPlayerRef} style={{ backgroundColor: this._getBackgroundColor(), color: this._getForegroundColor(), height: this.props.fullscreen ? '100%' : (this.state.height || this.props.height) }} onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave} tabIndex={0} onKeyDown={this.handleKeyDown}>
|
||||||
|
|
||||||
<Blurhash
|
<Blurhash
|
||||||
hash={blurhash}
|
hash={blurhash}
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
||||||
"errors.unexpected_crash.report_issue": "Report issue",
|
"errors.unexpected_crash.report_issue": "Report issue",
|
||||||
"explore.search_results": "Soekresultate",
|
"explore.search_results": "Soekresultate",
|
||||||
"explore.suggested_follows": "For you",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Explore",
|
"explore.title": "Explore",
|
||||||
"explore.trending_links": "News",
|
"explore.trending_links": "News",
|
||||||
"explore.trending_statuses": "Posts",
|
"explore.trending_statuses": "Posts",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copiar lo seguimiento de pila en o portafuellas",
|
"errors.unexpected_crash.copy_stacktrace": "Copiar lo seguimiento de pila en o portafuellas",
|
||||||
"errors.unexpected_crash.report_issue": "Informar d'un problema/error",
|
"errors.unexpected_crash.report_issue": "Informar d'un problema/error",
|
||||||
"explore.search_results": "Resultaus de busqueda",
|
"explore.search_results": "Resultaus de busqueda",
|
||||||
"explore.suggested_follows": "Pa tu",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Explorar",
|
"explore.title": "Explorar",
|
||||||
"explore.trending_links": "Noticias",
|
"explore.trending_links": "Noticias",
|
||||||
"explore.trending_statuses": "Publicacions",
|
"explore.trending_statuses": "Publicacions",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "انسخ تتبع الارتباطات إلى الحافظة",
|
"errors.unexpected_crash.copy_stacktrace": "انسخ تتبع الارتباطات إلى الحافظة",
|
||||||
"errors.unexpected_crash.report_issue": "الإبلاغ عن خلل",
|
"errors.unexpected_crash.report_issue": "الإبلاغ عن خلل",
|
||||||
"explore.search_results": "نتائج البحث",
|
"explore.search_results": "نتائج البحث",
|
||||||
"explore.suggested_follows": "لك",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "استكشف",
|
"explore.title": "استكشف",
|
||||||
"explore.trending_links": "الأخبار",
|
"explore.trending_links": "الأخبار",
|
||||||
"explore.trending_statuses": "المنشورات",
|
"explore.trending_statuses": "المنشورات",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
||||||
"errors.unexpected_crash.report_issue": "Report issue",
|
"errors.unexpected_crash.report_issue": "Report issue",
|
||||||
"explore.search_results": "Resultaos de la busca",
|
"explore.search_results": "Resultaos de la busca",
|
||||||
"explore.suggested_follows": "Pa ti",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Esploración",
|
"explore.title": "Esploración",
|
||||||
"explore.trending_links": "Noticies",
|
"explore.trending_links": "Noticies",
|
||||||
"explore.trending_statuses": "Artículos",
|
"explore.trending_statuses": "Artículos",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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 en Mastodon",
|
"onboarding.follows.title": "Popular en Mastodon",
|
||||||
|
|
|
@ -182,7 +182,7 @@
|
||||||
"conversation.with": "З {names}",
|
"conversation.with": "З {names}",
|
||||||
"copypaste.copied": "Скапіравана",
|
"copypaste.copied": "Скапіравана",
|
||||||
"copypaste.copy": "Скапіраваць",
|
"copypaste.copy": "Скапіраваць",
|
||||||
"copypaste.copy_to_clipboard": "Copy to clipboard",
|
"copypaste.copy_to_clipboard": "Капіраваць у буфер абмену",
|
||||||
"directory.federated": "З вядомага федэсвету",
|
"directory.federated": "З вядомага федэсвету",
|
||||||
"directory.local": "Толькі з {domain}",
|
"directory.local": "Толькі з {domain}",
|
||||||
"directory.new_arrivals": "Новыя карыстальнікі",
|
"directory.new_arrivals": "Новыя карыстальнікі",
|
||||||
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Дадаць дыягнастычны стэк у буфер абмену",
|
"errors.unexpected_crash.copy_stacktrace": "Дадаць дыягнастычны стэк у буфер абмену",
|
||||||
"errors.unexpected_crash.report_issue": "Паведаміць аб праблеме",
|
"errors.unexpected_crash.report_issue": "Паведаміць аб праблеме",
|
||||||
"explore.search_results": "Вынікі пошуку",
|
"explore.search_results": "Вынікі пошуку",
|
||||||
"explore.suggested_follows": "Для вас",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Агляд",
|
"explore.title": "Агляд",
|
||||||
"explore.trending_links": "Навіны",
|
"explore.trending_links": "Навіны",
|
||||||
"explore.trending_statuses": "Допісы",
|
"explore.trending_statuses": "Допісы",
|
||||||
|
@ -440,21 +440,22 @@
|
||||||
"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": "Take me back",
|
"onboarding.action.back": "Прыняць мяне назад",
|
||||||
"onboarding.actions.back": "Take me back",
|
"onboarding.actions.back": "Прыняць мяне назад",
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Больш не паказваць гэты экран",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "Паглядзіце, што ў трэндзе",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Перайдзіце на свой хатні канал",
|
||||||
"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.compose.template": "Hello #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.empty": "На жаль, зараз немагчыма паказаць вынікі. Вы можаце паспрабаваць выкарыстоўваць пошук і праглядзець старонку агляду, каб знайсці людзей, на якіх можна падпісацца, або паўтарыце спробу пазней.",
|
||||||
"onboarding.follows.title": "Popular on Mastodon",
|
"onboarding.follows.lead": "Вы самі ствараеце свой хатні канал. Чым больш людзей вы падпішаце, тым больш актыўна і цікавей гэта будзе. Гэтыя профілі могуць стаць добрай адпраўной кропкай — вы заўсёды можаце адмяніць падпіску на іх пазней!",
|
||||||
"onboarding.share.lead": "Let people know how they can find you on Mastodon!",
|
"onboarding.follows.title": "Папулярна на Mastodon",
|
||||||
"onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
|
"onboarding.share.lead": "Дайце людзям ведаць, як яны могуць знайсці вас на Mastodon!",
|
||||||
"onboarding.share.next_steps": "Possible next steps:",
|
"onboarding.share.message": "Я {username} на #Mastodon! Сачыце за мной на {url}",
|
||||||
"onboarding.share.title": "Share your profile",
|
"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.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.skip": "Want to skip right ahead?",
|
||||||
"onboarding.start.title": "You've made it!",
|
"onboarding.start.title": "Вы зрабілі гэта!",
|
||||||
"onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
|
"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.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.body": "Say hello to the world.",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Копиране на трасето на стека в буферната памет",
|
"errors.unexpected_crash.copy_stacktrace": "Копиране на трасето на стека в буферната памет",
|
||||||
"errors.unexpected_crash.report_issue": "Сигнал за проблем",
|
"errors.unexpected_crash.report_issue": "Сигнал за проблем",
|
||||||
"explore.search_results": "Резултати от търсенето",
|
"explore.search_results": "Резултати от търсенето",
|
||||||
"explore.suggested_follows": "За вас",
|
"explore.suggested_follows": "Хора",
|
||||||
"explore.title": "Разглеждане",
|
"explore.title": "Разглеждане",
|
||||||
"explore.trending_links": "Новини",
|
"explore.trending_links": "Новини",
|
||||||
"explore.trending_statuses": "Публикации",
|
"explore.trending_statuses": "Публикации",
|
||||||
|
@ -445,11 +445,12 @@
|
||||||
"onboarding.actions.close": "Без показване пак на този екран",
|
"onboarding.actions.close": "Без показване пак на този екран",
|
||||||
"onboarding.actions.go_to_explore": "Вижте какво изгрява",
|
"onboarding.actions.go_to_explore": "Вижте какво изгрява",
|
||||||
"onboarding.actions.go_to_home": "Към началния ви инфоканал",
|
"onboarding.actions.go_to_home": "Към началния ви инфоканал",
|
||||||
"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.compose.template": "Здравейте, #Mastodon!",
|
||||||
|
"onboarding.follows.empty": "За съжаление, в момента не могат да се показват резултати. Може да опитате да употребявате търсене или да прегледате страницата за изследване, за да намерите страница за последване, или да опитате пак по-късно.",
|
||||||
"onboarding.follows.lead": "Може да бъдете куратор на началния си инфоканал. Последвайки повече хора, по-деен и по-интересен ще става. Тези профили може да са добра начална точка, от която винаги по-късно да спрете да следвате!",
|
"onboarding.follows.lead": "Може да бъдете куратор на началния си инфоканал. Последвайки повече хора, по-деен и по-интересен ще става. Тези профили може да са добра начална точка, от която винаги по-късно да спрете да следвате!",
|
||||||
"onboarding.follows.title": "Популярно в Mastodon",
|
"onboarding.follows.title": "Популярно в Mastodon",
|
||||||
"onboarding.share.lead": "Позволете на хората да знаят, че могат да ви намерят в Mastodon!",
|
"onboarding.share.lead": "Позволете на хората да знаят, че могат да ви намерят в Mastodon!",
|
||||||
"onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
|
"onboarding.share.message": "Аз съм {username} в #Mastodon! Елате да ме последвате при {url}",
|
||||||
"onboarding.share.next_steps": "Възможни следващи стъпки:",
|
"onboarding.share.next_steps": "Възможни следващи стъпки:",
|
||||||
"onboarding.share.title": "Споделяне на профила ви",
|
"onboarding.share.title": "Споделяне на профила ви",
|
||||||
"onboarding.start.lead": "Вашият нов акаунт в Mastodon е готов за употреба. Ето как може да се възползвате по най-добрия начин от него:",
|
"onboarding.start.lead": "Вашият нов акаунт в Mastodon е готов за употреба. Ето как може да се възползвате по най-добрия начин от него:",
|
||||||
|
@ -463,9 +464,9 @@
|
||||||
"onboarding.steps.setup_profile.title": "Пригодете профила си",
|
"onboarding.steps.setup_profile.title": "Пригодете профила си",
|
||||||
"onboarding.steps.share_profile.body": "Позволете на приятелите си да знаят как да ви намират в Mastodon!",
|
"onboarding.steps.share_profile.body": "Позволете на приятелите си да знаят как да ви намират в Mastodon!",
|
||||||
"onboarding.steps.share_profile.title": "Споделяне на профила ви",
|
"onboarding.steps.share_profile.title": "Споделяне на профила ви",
|
||||||
"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.2fa": "<strong>Знаете ли, че?</strong> Може да защитите акаунта си, настройвайки двуфакторното удостоверяване в настройките на акаунта си. То работи с всяко приложение TOTP по ваш избор, не е необходим номер телефона!",
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>Знаете ли, че?</strong> Откак Mastodon е децентрализиран, някои профили, които срещате ще бъдат разположени на сървъри различен от вашия. И още може да взаимодействате с тях безпроблемно! Сървърът им е втората половина от потребителското им име!",
|
"onboarding.tips.accounts_from_other_servers": "<strong>Знаете ли, че?</strong> Откак Mastodon е децентрализиран, някои профили, които срещате ще бъдат разположени на сървъри различен от вашия. И още може да взаимодействате с тях безпроблемно! Сървърът им е втората половина от потребителското им име!",
|
||||||
"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.migration": "<strong>Знаете ли, че?</strong> Ако се чувствате, че {domain} не е чудесен избор на сървър в бъдуще, може да се преместите на друг сървър на Mastodon без да загубите последователите си. Дори може да сте съдържатели на свой собствен сървър!",
|
||||||
"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!",
|
"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_maxlength": "Потвърждаването на паролата превишава максимално допустимата дължина за парола",
|
||||||
"password_confirmation.mismatching": "Потвърждаването на паролата не съвпада",
|
"password_confirmation.mismatching": "Потвърждаването на паролата не съвпада",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "স্টেকট্রেস ক্লিপবোর্ডে কপি করুন",
|
"errors.unexpected_crash.copy_stacktrace": "স্টেকট্রেস ক্লিপবোর্ডে কপি করুন",
|
||||||
"errors.unexpected_crash.report_issue": "সমস্যার প্রতিবেদন করুন",
|
"errors.unexpected_crash.report_issue": "সমস্যার প্রতিবেদন করুন",
|
||||||
"explore.search_results": "Search results",
|
"explore.search_results": "Search results",
|
||||||
"explore.suggested_follows": "For you",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Explore",
|
"explore.title": "Explore",
|
||||||
"explore.trending_links": "সংবাদ",
|
"explore.trending_links": "সংবাদ",
|
||||||
"explore.trending_statuses": "Posts",
|
"explore.trending_statuses": "Posts",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Eilañ ar roudoù diveugañ er golver",
|
"errors.unexpected_crash.copy_stacktrace": "Eilañ ar roudoù diveugañ er golver",
|
||||||
"errors.unexpected_crash.report_issue": "Danevellañ ur fazi",
|
"errors.unexpected_crash.report_issue": "Danevellañ ur fazi",
|
||||||
"explore.search_results": "Disoc'hoù an enklask",
|
"explore.search_results": "Disoc'hoù an enklask",
|
||||||
"explore.suggested_follows": "For you",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Furchal",
|
"explore.title": "Furchal",
|
||||||
"explore.trending_links": "News",
|
"explore.trending_links": "News",
|
||||||
"explore.trending_statuses": "Posts",
|
"explore.trending_statuses": "Posts",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
||||||
"errors.unexpected_crash.report_issue": "Report issue",
|
"errors.unexpected_crash.report_issue": "Report issue",
|
||||||
"explore.search_results": "Search results",
|
"explore.search_results": "Search results",
|
||||||
"explore.suggested_follows": "For you",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Explore",
|
"explore.title": "Explore",
|
||||||
"explore.trending_links": "News",
|
"explore.trending_links": "News",
|
||||||
"explore.trending_statuses": "Posts",
|
"explore.trending_statuses": "Posts",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copia stacktrace al porta-retalls",
|
"errors.unexpected_crash.copy_stacktrace": "Copia stacktrace al porta-retalls",
|
||||||
"errors.unexpected_crash.report_issue": "Informa d'un problema",
|
"errors.unexpected_crash.report_issue": "Informa d'un problema",
|
||||||
"explore.search_results": "Resultats de la cerca",
|
"explore.search_results": "Resultats de la cerca",
|
||||||
"explore.suggested_follows": "Per a tu",
|
"explore.suggested_follows": "Persones",
|
||||||
"explore.title": "Explora",
|
"explore.title": "Explora",
|
||||||
"explore.trending_links": "Notícies",
|
"explore.trending_links": "Notícies",
|
||||||
"explore.trending_statuses": "Tuts",
|
"explore.trending_statuses": "Tuts",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "No tornis a mostrar aquesta pantalla",
|
"onboarding.actions.close": "No tornis a mostrar aquesta pantalla",
|
||||||
"onboarding.actions.go_to_explore": "Mira què és tendència",
|
"onboarding.actions.go_to_explore": "Mira què és tendència",
|
||||||
"onboarding.actions.go_to_home": "Vés a la teva línia de temps inici",
|
"onboarding.actions.go_to_home": "Vés a la teva línia de temps inici",
|
||||||
|
"onboarding.compose.template": "Hello #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": "Tu tens cura de la teva línia de temps inici. Com més gent segueixis, més activa i interessant serà. Aquests perfils poden ser un bon punt d'inici—sempre pots acabar deixant-los de seguir!",
|
"onboarding.follows.lead": "Tu tens cura de la teva línia de temps inici. Com més gent segueixis, més activa i interessant serà. Aquests perfils poden ser un bon punt d'inici—sempre pots acabar deixant-los de seguir!",
|
||||||
"onboarding.follows.title": "Popular a Mastodon",
|
"onboarding.follows.title": "Popular a Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "کۆپیکردنی ستێکتراسی بۆ کلیپ بۆرد",
|
"errors.unexpected_crash.copy_stacktrace": "کۆپیکردنی ستێکتراسی بۆ کلیپ بۆرد",
|
||||||
"errors.unexpected_crash.report_issue": "کێشەی گوزارشت",
|
"errors.unexpected_crash.report_issue": "کێشەی گوزارشت",
|
||||||
"explore.search_results": "ئەنجامەکانی گەڕان",
|
"explore.search_results": "ئەنجامەکانی گەڕان",
|
||||||
"explore.suggested_follows": "بۆ تۆ",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "گەڕان",
|
"explore.title": "گەڕان",
|
||||||
"explore.trending_links": "هەواڵەکان",
|
"explore.trending_links": "هەواڵەکان",
|
||||||
"explore.trending_statuses": "بڵاوکراوەکان",
|
"explore.trending_statuses": "بڵاوکراوەکان",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Cupià stacktrace nant'à u fermacarta",
|
"errors.unexpected_crash.copy_stacktrace": "Cupià stacktrace nant'à u fermacarta",
|
||||||
"errors.unexpected_crash.report_issue": "Palisà prublemu",
|
"errors.unexpected_crash.report_issue": "Palisà prublemu",
|
||||||
"explore.search_results": "Search results",
|
"explore.search_results": "Search results",
|
||||||
"explore.suggested_follows": "For you",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Explore",
|
"explore.title": "Explore",
|
||||||
"explore.trending_links": "News",
|
"explore.trending_links": "News",
|
||||||
"explore.trending_statuses": "Posts",
|
"explore.trending_statuses": "Posts",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Zkopírovat stacktrace do schránky",
|
"errors.unexpected_crash.copy_stacktrace": "Zkopírovat stacktrace do schránky",
|
||||||
"errors.unexpected_crash.report_issue": "Nahlásit problém",
|
"errors.unexpected_crash.report_issue": "Nahlásit problém",
|
||||||
"explore.search_results": "Výsledky hledání",
|
"explore.search_results": "Výsledky hledání",
|
||||||
"explore.suggested_follows": "Pro vás",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Objevit",
|
"explore.title": "Objevit",
|
||||||
"explore.trending_links": "Zprávy",
|
"explore.trending_links": "Zprávy",
|
||||||
"explore.trending_statuses": "Příspěvky",
|
"explore.trending_statuses": "Příspěvky",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Příště nezobrazovat tuto obrazovku",
|
"onboarding.actions.close": "Příště nezobrazovat tuto obrazovku",
|
||||||
"onboarding.actions.go_to_explore": "Podívejte se, co je populární",
|
"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.actions.go_to_home": "Přejít na svůj domovský 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.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": "Populární na Mastodonu",
|
"onboarding.follows.title": "Populární na Mastodonu",
|
||||||
|
|
|
@ -182,7 +182,7 @@
|
||||||
"conversation.with": "Gyda {names}",
|
"conversation.with": "Gyda {names}",
|
||||||
"copypaste.copied": "Wedi ei gopïo",
|
"copypaste.copied": "Wedi ei gopïo",
|
||||||
"copypaste.copy": "Copïo",
|
"copypaste.copy": "Copïo",
|
||||||
"copypaste.copy_to_clipboard": "Copy to clipboard",
|
"copypaste.copy_to_clipboard": "Copïo i'r clipfwrdd",
|
||||||
"directory.federated": "O'r ffedysawd cyfan",
|
"directory.federated": "O'r ffedysawd cyfan",
|
||||||
"directory.local": "O {domain} yn unig",
|
"directory.local": "O {domain} yn unig",
|
||||||
"directory.new_arrivals": "Defnyddwyr newydd",
|
"directory.new_arrivals": "Defnyddwyr newydd",
|
||||||
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copïo'r olrhain stac i'r clipfwrdd",
|
"errors.unexpected_crash.copy_stacktrace": "Copïo'r olrhain stac i'r clipfwrdd",
|
||||||
"errors.unexpected_crash.report_issue": "Rhoi gwybod am broblem",
|
"errors.unexpected_crash.report_issue": "Rhoi gwybod am broblem",
|
||||||
"explore.search_results": "Canlyniadau chwilio",
|
"explore.search_results": "Canlyniadau chwilio",
|
||||||
"explore.suggested_follows": "I chi",
|
"explore.suggested_follows": "Pobl",
|
||||||
"explore.title": "Darganfod",
|
"explore.title": "Darganfod",
|
||||||
"explore.trending_links": "Newyddion",
|
"explore.trending_links": "Newyddion",
|
||||||
"explore.trending_statuses": "Postiadau",
|
"explore.trending_statuses": "Postiadau",
|
||||||
|
@ -440,33 +440,34 @@
|
||||||
"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 byddant 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 byddant wedi'u galluogi.",
|
||||||
"notifications_permission_banner.title": "Peidiwch colli dim",
|
"notifications_permission_banner.title": "Peidiwch colli dim",
|
||||||
"onboarding.action.back": "Take me back",
|
"onboarding.action.back": "Ewch â fi yn ôl",
|
||||||
"onboarding.actions.back": "Take me back",
|
"onboarding.actions.back": "Ewch â fi yn ôl",
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Peidio â dangos y sgrin hon eto",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "Gweld beth yw'r tuedd",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Ewch i'ch ffrwd gartref",
|
||||||
"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.compose.template": "Helo, #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.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.title": "Popular on Mastodon",
|
"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.share.lead": "Let people know how they can find you on Mastodon!",
|
"onboarding.follows.title": "Yn boblogaidd ar Mastodon",
|
||||||
"onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
|
"onboarding.share.lead": "Cofiwch ddweud wrth bobl sut y gallan nhw ddod o hyd i chi ar Mastodon!",
|
||||||
"onboarding.share.next_steps": "Possible next steps:",
|
"onboarding.share.message": "Fi yw {username} ar #Mastodon! Dewch i'm dilyn i yn {url}",
|
||||||
"onboarding.share.title": "Share your profile",
|
"onboarding.share.next_steps": "Camau nesaf posib:",
|
||||||
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
|
"onboarding.share.title": "Rhannwch eich proffil",
|
||||||
"onboarding.start.skip": "Want to skip right ahead?",
|
"onboarding.start.lead": "Mae eich cyfrif Mastodon newydd yn barod! Dyma sut y gallwch chi wneud y gorau ohono:",
|
||||||
"onboarding.start.title": "You've made it!",
|
"onboarding.start.skip": "Eisiau mynd syth yn eich blaen?",
|
||||||
"onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
|
"onboarding.start.title": "Rydych chi wedi cyrraedd!",
|
||||||
"onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
|
"onboarding.steps.follow_people.body": "Rydych chi'n curadu eich ffrwd eich hun. Gadewch i ni ei lenwi â phobl ddiddorol.",
|
||||||
"onboarding.steps.publish_status.body": "Say hello to the world.",
|
"onboarding.steps.follow_people.title": "Dilynwch {count, plural, one {one person} other {# people}}",
|
||||||
"onboarding.steps.publish_status.title": "Make your first post",
|
"onboarding.steps.publish_status.body": "Dywedwch helo wrth y byd.",
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
"onboarding.steps.publish_status.title": "Gwnewch eich postiad cyntaf",
|
||||||
"onboarding.steps.setup_profile.title": "Customize your profile",
|
"onboarding.steps.setup_profile.body": "Mae eraill yn fwy tebygol o ryngweithio â chi gyda phroffil wedi'i lenwi.",
|
||||||
"onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
|
"onboarding.steps.setup_profile.title": "Cyfaddaswch eich proffil",
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
"onboarding.steps.share_profile.body": "Gadewch i'ch ffrindiau wybod sut i ddod o hyd i chi ar Mastodon!",
|
||||||
"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.steps.share_profile.title": "Rhannwch eich proffil",
|
||||||
"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.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.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.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.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!",
|
"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",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Kopiér stacktrace til udklipsholderen",
|
"errors.unexpected_crash.copy_stacktrace": "Kopiér stacktrace til udklipsholderen",
|
||||||
"errors.unexpected_crash.report_issue": "Anmeld problem",
|
"errors.unexpected_crash.report_issue": "Anmeld problem",
|
||||||
"explore.search_results": "Søgeresultater",
|
"explore.search_results": "Søgeresultater",
|
||||||
"explore.suggested_follows": "Til dig",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Udforsk",
|
"explore.title": "Udforsk",
|
||||||
"explore.trending_links": "Nyheder",
|
"explore.trending_links": "Nyheder",
|
||||||
"explore.trending_statuses": "Indlæg",
|
"explore.trending_statuses": "Indlæg",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Vis ikke denne skærm igen",
|
"onboarding.actions.close": "Vis ikke denne skærm igen",
|
||||||
"onboarding.actions.go_to_explore": "Se, hvad som trender",
|
"onboarding.actions.go_to_explore": "Se, hvad som trender",
|
||||||
"onboarding.actions.go_to_home": "Gå til hjemme-feed'et",
|
"onboarding.actions.go_to_home": "Gå til hjemme-feed'et",
|
||||||
|
"onboarding.compose.template": "Hello #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.lead": "Man kurerer sin eget hjemme-feed. Jo flere personer man følger, des mere aktiv og interessant vil det være. Disse profiler kan være et godt udgangspunkt – de kan altid fjernes senere!",
|
||||||
"onboarding.follows.title": "Populært på Mastodon",
|
"onboarding.follows.title": "Populært på Mastodon",
|
||||||
|
|
|
@ -218,7 +218,7 @@
|
||||||
"empty_column.blocks": "Du hast bisher keine Profile gesperrt.",
|
"empty_column.blocks": "Du hast bisher keine Profile gesperrt.",
|
||||||
"empty_column.bookmarked_statuses": "Du hast bisher keine Beiträge als Lesezeichen abgelegt. Sobald du einen Beitrag als Lesezeichen speicherst, wird er hier erscheinen.",
|
"empty_column.bookmarked_statuses": "Du hast bisher keine Beiträge als Lesezeichen abgelegt. Sobald du einen Beitrag als Lesezeichen speicherst, wird er hier erscheinen.",
|
||||||
"empty_column.community": "Die lokale Timeline ist leer. Schreibe einen öffentlichen Beitrag, um den Stein ins Rollen zu bringen!",
|
"empty_column.community": "Die lokale Timeline ist leer. Schreibe einen öffentlichen Beitrag, um den Stein ins Rollen zu bringen!",
|
||||||
"empty_column.direct": "Du hast noch keine Direktnachrichten erhalten. Sobald du eine private Nachricht sendest oder empfängst, wird sie hier zu sehen sein.",
|
"empty_column.direct": "Du hast noch keine Direktnachrichten. Sobald du eine Nachricht sendest oder empfängst, wird sie hier zu sehen sein.",
|
||||||
"empty_column.domain_blocks": "Du hast noch keine Domains gesperrt.",
|
"empty_column.domain_blocks": "Du hast noch keine Domains gesperrt.",
|
||||||
"empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder vorbei!",
|
"empty_column.explore_statuses": "Momentan ist nichts im Trend. Schau später wieder vorbei!",
|
||||||
"empty_column.favourited_statuses": "Du hast noch keine Beiträge favorisiert. Sobald du einen favorisierst, wird er hier erscheinen.",
|
"empty_column.favourited_statuses": "Du hast noch keine Beiträge favorisiert. Sobald du einen favorisierst, wird er hier erscheinen.",
|
||||||
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Fehlerdiagnose in die Zwischenablage kopieren",
|
"errors.unexpected_crash.copy_stacktrace": "Fehlerdiagnose in die Zwischenablage kopieren",
|
||||||
"errors.unexpected_crash.report_issue": "Fehler melden",
|
"errors.unexpected_crash.report_issue": "Fehler melden",
|
||||||
"explore.search_results": "Suchergebnisse",
|
"explore.search_results": "Suchergebnisse",
|
||||||
"explore.suggested_follows": "Für dich",
|
"explore.suggested_follows": "Profile",
|
||||||
"explore.title": "Entdecken",
|
"explore.title": "Entdecken",
|
||||||
"explore.trending_links": "Neuigkeiten",
|
"explore.trending_links": "Neuigkeiten",
|
||||||
"explore.trending_statuses": "Beiträge",
|
"explore.trending_statuses": "Beiträge",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Diese Seite nicht mehr anzeigen",
|
"onboarding.actions.close": "Diese Seite nicht mehr anzeigen",
|
||||||
"onboarding.actions.go_to_explore": "Sieh, was gerade angesagt ist",
|
"onboarding.actions.go_to_explore": "Sieh, was gerade angesagt ist",
|
||||||
"onboarding.actions.go_to_home": "Gehe zu deiner Startseite",
|
"onboarding.actions.go_to_home": "Gehe zu deiner 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": "Du verwaltest deine eigene Startseite. Je mehr Leuten du folgst, desto aktiver und interessanter wird sie sein. Diese Profile können ein guter Start sein – du kannst ihnen später immer noch entfolgen!",
|
"onboarding.follows.lead": "Du verwaltest deine eigene Startseite. Je mehr Leuten du folgst, desto aktiver und interessanter wird sie sein. Diese Profile können ein guter Start sein – du kannst ihnen später immer noch entfolgen!",
|
||||||
"onboarding.follows.title": "Beliebt auf Mastodon",
|
"onboarding.follows.title": "Beliebt auf Mastodon",
|
||||||
|
@ -461,7 +462,7 @@
|
||||||
"onboarding.steps.publish_status.title": "Erstelle deinen ersten Beitrag",
|
"onboarding.steps.publish_status.title": "Erstelle deinen ersten Beitrag",
|
||||||
"onboarding.steps.setup_profile.body": "Mit einem ausgefüllten Profil interagieren andere eher mit dir.",
|
"onboarding.steps.setup_profile.body": "Mit einem ausgefüllten Profil interagieren andere eher mit dir.",
|
||||||
"onboarding.steps.setup_profile.title": "Personalisiere dein Profil",
|
"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.body": "Lass Deine FreundInnen wissen, wie sie Dich auf Mastodon finden können!",
|
||||||
"onboarding.steps.share_profile.title": "Teile dein Profil",
|
"onboarding.steps.share_profile.title": "Teile dein 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.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.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!",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Αντιγραφή μηνυμάτων κώδικα στο πρόχειρο",
|
"errors.unexpected_crash.copy_stacktrace": "Αντιγραφή μηνυμάτων κώδικα στο πρόχειρο",
|
||||||
"errors.unexpected_crash.report_issue": "Αναφορά προβλήματος",
|
"errors.unexpected_crash.report_issue": "Αναφορά προβλήματος",
|
||||||
"explore.search_results": "Αποτελέσματα αναζήτησης",
|
"explore.search_results": "Αποτελέσματα αναζήτησης",
|
||||||
"explore.suggested_follows": "Για σένα",
|
"explore.suggested_follows": "Άτομα",
|
||||||
"explore.title": "Εξερεύνηση",
|
"explore.title": "Εξερεύνηση",
|
||||||
"explore.trending_links": "Νέα",
|
"explore.trending_links": "Νέα",
|
||||||
"explore.trending_statuses": "Αναρτήσεις",
|
"explore.trending_statuses": "Αναρτήσεις",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Να μην εμφανιστεί ξανά αυτό",
|
"onboarding.actions.close": "Να μην εμφανιστεί ξανά αυτό",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Πηγαίνετε στην αρχική σας ροή",
|
"onboarding.actions.go_to_home": "Πηγαίνετε στην αρχική σας ροή",
|
||||||
|
"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.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.follows.title": "Δημοφιλή στο Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
||||||
"errors.unexpected_crash.report_issue": "Report issue",
|
"errors.unexpected_crash.report_issue": "Report issue",
|
||||||
"explore.search_results": "Search results",
|
"explore.search_results": "Search results",
|
||||||
"explore.suggested_follows": "For you",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Explore",
|
"explore.title": "Explore",
|
||||||
"explore.trending_links": "News",
|
"explore.trending_links": "News",
|
||||||
"explore.trending_statuses": "Posts",
|
"explore.trending_statuses": "Posts",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Kopii stakspuron en tondujo",
|
"errors.unexpected_crash.copy_stacktrace": "Kopii stakspuron en tondujo",
|
||||||
"errors.unexpected_crash.report_issue": "Raporti problemon",
|
"errors.unexpected_crash.report_issue": "Raporti problemon",
|
||||||
"explore.search_results": "Serĉaj rezultoj",
|
"explore.search_results": "Serĉaj rezultoj",
|
||||||
"explore.suggested_follows": "Por vi",
|
"explore.suggested_follows": "Homoj",
|
||||||
"explore.title": "Esplori",
|
"explore.title": "Esplori",
|
||||||
"explore.trending_links": "Novaĵoj",
|
"explore.trending_links": "Novaĵoj",
|
||||||
"explore.trending_statuses": "Afiŝoj",
|
"explore.trending_statuses": "Afiŝoj",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copiar stacktrace al portapapeles",
|
"errors.unexpected_crash.copy_stacktrace": "Copiar stacktrace al portapapeles",
|
||||||
"errors.unexpected_crash.report_issue": "Informar problema",
|
"errors.unexpected_crash.report_issue": "Informar problema",
|
||||||
"explore.search_results": "Resultados de búsqueda",
|
"explore.search_results": "Resultados de búsqueda",
|
||||||
"explore.suggested_follows": "Para vos",
|
"explore.suggested_follows": "Cuentas",
|
||||||
"explore.title": "Explorá",
|
"explore.title": "Explorá",
|
||||||
"explore.trending_links": "Noticias",
|
"explore.trending_links": "Noticias",
|
||||||
"explore.trending_statuses": "Mensajes",
|
"explore.trending_statuses": "Mensajes",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "No mostrar esta pantalla de nuevo",
|
"onboarding.actions.close": "No mostrar esta pantalla de nuevo",
|
||||||
"onboarding.actions.go_to_explore": "Mirá qué está en tendencia",
|
"onboarding.actions.go_to_explore": "Mirá qué está en tendencia",
|
||||||
"onboarding.actions.go_to_home": "Andá a tu línea temporal principal",
|
"onboarding.actions.go_to_home": "Andá a tu 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": "Vos completás tu propia línea temporal principal. Cuantas más cuentas sigas, más activa e interesante se volverá. Estos perfiles pueden ser un buen punto de partida; ¡podés dejar de seguir estas cuentas cuando quieras!",
|
"onboarding.follows.lead": "Vos completás tu propia línea temporal principal. Cuantas más cuentas sigas, más activa e interesante se volverá. Estos perfiles pueden ser un buen punto de partida; ¡podés dejar de seguir estas cuentas cuando quieras!",
|
||||||
"onboarding.follows.title": "Popular en Mastodon",
|
"onboarding.follows.title": "Popular en Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copiar el seguimiento de pila en el portapapeles",
|
"errors.unexpected_crash.copy_stacktrace": "Copiar el seguimiento de pila en el portapapeles",
|
||||||
"errors.unexpected_crash.report_issue": "Informar problema",
|
"errors.unexpected_crash.report_issue": "Informar problema",
|
||||||
"explore.search_results": "Resultados de búsqueda",
|
"explore.search_results": "Resultados de búsqueda",
|
||||||
"explore.suggested_follows": "Para ti",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Descubrir",
|
"explore.title": "Descubrir",
|
||||||
"explore.trending_links": "Noticias",
|
"explore.trending_links": "Noticias",
|
||||||
"explore.trending_statuses": "Publicaciones",
|
"explore.trending_statuses": "Publicaciones",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "No volver a mostrar esta pantalla",
|
"onboarding.actions.close": "No volver a mostrar esta pantalla",
|
||||||
"onboarding.actions.go_to_explore": "Ver qué es tendencia",
|
"onboarding.actions.go_to_explore": "Ver qué es tendencia",
|
||||||
"onboarding.actions.go_to_home": "Ir al inicio",
|
"onboarding.actions.go_to_home": "Ir al inicio",
|
||||||
|
"onboarding.compose.template": "Hello #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.lead": "Tienes que personalizar tu inicio. Cuantas más personas sigas, más activo e interesante será. Estos perfiles pueden ser un buen punto de partida, ¡pero siempre puedes dejar de seguirlos más adelante!",
|
||||||
"onboarding.follows.title": "Popular en Mastodon",
|
"onboarding.follows.title": "Popular en Mastodon",
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
"account.follow": "Seguir",
|
"account.follow": "Seguir",
|
||||||
"account.followers": "Seguidores",
|
"account.followers": "Seguidores",
|
||||||
"account.followers.empty": "Todavía nadie sigue a este usuario.",
|
"account.followers.empty": "Todavía nadie sigue a este usuario.",
|
||||||
"account.followers_counter": "{count, plural, one {{counter} seguidor} other {{counter} seguidores}}",
|
"account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}",
|
||||||
"account.following": "Siguiendo",
|
"account.following": "Siguiendo",
|
||||||
"account.following_counter": "{count, plural, other {Siguiendo a {counter}}}",
|
"account.following_counter": "{count, plural, other {Siguiendo a {counter}}}",
|
||||||
"account.follows.empty": "Este usuario todavía no sigue a nadie.",
|
"account.follows.empty": "Este usuario todavía no sigue a nadie.",
|
||||||
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copiar el seguimiento de pila en el portapapeles",
|
"errors.unexpected_crash.copy_stacktrace": "Copiar el seguimiento de pila en el portapapeles",
|
||||||
"errors.unexpected_crash.report_issue": "Informar de un problema/error",
|
"errors.unexpected_crash.report_issue": "Informar de un problema/error",
|
||||||
"explore.search_results": "Resultados de búsqueda",
|
"explore.search_results": "Resultados de búsqueda",
|
||||||
"explore.suggested_follows": "Para ti",
|
"explore.suggested_follows": "Personas",
|
||||||
"explore.title": "Explorar",
|
"explore.title": "Explorar",
|
||||||
"explore.trending_links": "Noticias",
|
"explore.trending_links": "Noticias",
|
||||||
"explore.trending_statuses": "Publicaciones",
|
"explore.trending_statuses": "Publicaciones",
|
||||||
|
@ -365,7 +365,7 @@
|
||||||
"media_gallery.toggle_visible": "Cambiar visibilidad",
|
"media_gallery.toggle_visible": "Cambiar visibilidad",
|
||||||
"moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te has mudado a {movedToAccount}.",
|
"moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te has mudado a {movedToAccount}.",
|
||||||
"mute_modal.duration": "Duración",
|
"mute_modal.duration": "Duración",
|
||||||
"mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?",
|
"mute_modal.hide_notifications": "¿Ocultar notificaciones de este usuario?",
|
||||||
"mute_modal.indefinite": "Indefinida",
|
"mute_modal.indefinite": "Indefinida",
|
||||||
"navigation_bar.about": "Acerca de",
|
"navigation_bar.about": "Acerca de",
|
||||||
"navigation_bar.blocks": "Usuarios bloqueados",
|
"navigation_bar.blocks": "Usuarios bloqueados",
|
||||||
|
@ -445,11 +445,12 @@
|
||||||
"onboarding.actions.close": "No volver a mostrar esta pantalla",
|
"onboarding.actions.close": "No volver a mostrar esta pantalla",
|
||||||
"onboarding.actions.go_to_explore": "Ver qué es tendencia",
|
"onboarding.actions.go_to_explore": "Ver qué es tendencia",
|
||||||
"onboarding.actions.go_to_home": "Ir al inicio",
|
"onboarding.actions.go_to_home": "Ir al inicio",
|
||||||
"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.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.lead": "Tienes que personalizar tu línea de inicio. Cuantas más personas sigas, más activa e interesante será. Estos perfiles pueden ser un buen punto de partida, ¡pero siempre puedes dejar de seguirlos más adelante!",
|
"onboarding.follows.lead": "Tienes que personalizar tu línea de inicio. Cuantas más personas sigas, más activa e interesante será. Estos perfiles pueden ser un buen punto de partida, ¡pero siempre puedes dejar de seguirlos más adelante!",
|
||||||
"onboarding.follows.title": "Popular en Mastodon",
|
"onboarding.follows.title": "Popular en Mastodon",
|
||||||
"onboarding.share.lead": "¡Dile a la gente cómo te pueden encontrar en Mastodon!",
|
"onboarding.share.lead": "¡Dile a la gente cómo te pueden encontrar en Mastodon!",
|
||||||
"onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
|
"onboarding.share.message": "¡Soy {username} en #Mastodon! Ven a seguirme en {url}",
|
||||||
"onboarding.share.next_steps": "Posibles siguientes pasos:",
|
"onboarding.share.next_steps": "Posibles siguientes pasos:",
|
||||||
"onboarding.share.title": "Comparte tu perfil",
|
"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.lead": "Tu nueva cuenta de Mastodon está lista. Así es como puedes sacarle el máximo provecho:",
|
||||||
|
@ -463,10 +464,10 @@
|
||||||
"onboarding.steps.setup_profile.title": "Personaliza tu perfil",
|
"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.body": "¡Dile a tus amigos cómo encontrarte en Mastodon!",
|
||||||
"onboarding.steps.share_profile.title": "Comparte tu perfil",
|
"onboarding.steps.share_profile.title": "Comparte tu perfil",
|
||||||
"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.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.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>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.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>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!",
|
"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",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Kopeeri stacktrace lõikelauale",
|
"errors.unexpected_crash.copy_stacktrace": "Kopeeri stacktrace lõikelauale",
|
||||||
"errors.unexpected_crash.report_issue": "Teavita veast",
|
"errors.unexpected_crash.report_issue": "Teavita veast",
|
||||||
"explore.search_results": "Otsitulemused",
|
"explore.search_results": "Otsitulemused",
|
||||||
"explore.suggested_follows": "Kasutajad",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Avasta",
|
"explore.title": "Avasta",
|
||||||
"explore.trending_links": "Uudised",
|
"explore.trending_links": "Uudised",
|
||||||
"explore.trending_statuses": "Postitused",
|
"explore.trending_statuses": "Postitused",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Ära näita seda ekraani uuesti",
|
"onboarding.actions.close": "Ära näita seda ekraani uuesti",
|
||||||
"onboarding.actions.go_to_explore": "Vaata, mis on trendikas",
|
"onboarding.actions.go_to_explore": "Vaata, mis on trendikas",
|
||||||
"onboarding.actions.go_to_home": "Mine oma koduvoogu",
|
"onboarding.actions.go_to_home": "Mine oma koduvoogu",
|
||||||
|
"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": "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.lead": "Haldad ise oma koduvoogu. Mida rohkemaid inimesi jälgid, seda aktiivsem ja huvitavam see on. Need profiilid võiksid olla head alustamiskohad — saad nende jälgimise alati lõpetada!",
|
||||||
"onboarding.follows.title": "Populaarne Mastodonis",
|
"onboarding.follows.title": "Populaarne Mastodonis",
|
||||||
|
|
|
@ -182,7 +182,7 @@
|
||||||
"conversation.with": "Hauekin: {names}",
|
"conversation.with": "Hauekin: {names}",
|
||||||
"copypaste.copied": "Kopiatuta",
|
"copypaste.copied": "Kopiatuta",
|
||||||
"copypaste.copy": "Kopiatu",
|
"copypaste.copy": "Kopiatu",
|
||||||
"copypaste.copy_to_clipboard": "Copy to clipboard",
|
"copypaste.copy_to_clipboard": "Kopiatu arbelera",
|
||||||
"directory.federated": "Fedibertso ezagunekoak",
|
"directory.federated": "Fedibertso ezagunekoak",
|
||||||
"directory.local": "{domain} domeinukoak soilik",
|
"directory.local": "{domain} domeinukoak soilik",
|
||||||
"directory.new_arrivals": "Iritsi berriak",
|
"directory.new_arrivals": "Iritsi berriak",
|
||||||
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Kopiatu irteera arbelera",
|
"errors.unexpected_crash.copy_stacktrace": "Kopiatu irteera arbelera",
|
||||||
"errors.unexpected_crash.report_issue": "Eman arazoaren berri",
|
"errors.unexpected_crash.report_issue": "Eman arazoaren berri",
|
||||||
"explore.search_results": "Bilaketaren emaitzak",
|
"explore.search_results": "Bilaketaren emaitzak",
|
||||||
"explore.suggested_follows": "Zuretzako",
|
"explore.suggested_follows": "Jendea",
|
||||||
"explore.title": "Arakatu",
|
"explore.title": "Arakatu",
|
||||||
"explore.trending_links": "Berriak",
|
"explore.trending_links": "Berriak",
|
||||||
"explore.trending_statuses": "Tutak",
|
"explore.trending_statuses": "Tutak",
|
||||||
|
@ -440,33 +440,34 @@
|
||||||
"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": "Take me back",
|
"onboarding.action.back": "Atzera egin",
|
||||||
"onboarding.actions.back": "Take me back",
|
"onboarding.actions.back": "Atzera egin",
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Ez erakutsi pantaila hau berriro",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "Ikusi zer dagoen pil-pilean",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Joan hasierara",
|
||||||
"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.compose.template": "Kaixo #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.empty": "Zoritxarrez, ezin da emaitzik erakutsi orain. Bilaketa erabil dezakezu edo Arakatu orrian jendea bilatu jarraitzeko, edo saiatu geroago.",
|
||||||
"onboarding.follows.title": "Popular on Mastodon",
|
"onboarding.follows.lead": "Hasierako orria zuk pertsonalizatzen duzu. Gero eta jende gehiago jarraitu, orduan eta aktibo eta interesgarriago izango da. Profil hauek egokiak izan daitezke hasteko, beti ere, geroago jarraitzeari utz diezazkiekezu!",
|
||||||
"onboarding.share.lead": "Let people know how they can find you on Mastodon!",
|
"onboarding.follows.title": "Mastodonen pil-pilean",
|
||||||
"onboarding.share.message": "I'm {username} on #Mastodon! Come follow me at {url}",
|
"onboarding.share.lead": "Ezagutarazi jendeari nola aurki zaitzaketen Mastodonen!",
|
||||||
"onboarding.share.next_steps": "Possible next steps:",
|
"onboarding.share.message": "{username} naiz #Mastodon-en! Jarrai iezadazu hemen: {url}",
|
||||||
"onboarding.share.title": "Share your profile",
|
"onboarding.share.next_steps": "Hurrengo urrats posibleak:",
|
||||||
"onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
|
"onboarding.share.title": "Partekatu zure profila",
|
||||||
"onboarding.start.skip": "Want to skip right ahead?",
|
"onboarding.start.lead": "Zure Mastodoneko kontu berria prest dago. Jakin nola atera diezaioekun etekin handiena hemen:",
|
||||||
"onboarding.start.title": "You've made it!",
|
"onboarding.start.skip": "Urrats guztiak saltatu nahi dituzu?",
|
||||||
"onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
|
"onboarding.start.title": "Lortu duzu!",
|
||||||
"onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
|
"onboarding.steps.follow_people.body": "Zure jarioa zuk pertsonalizatzen duzu. Bete dezagun jende interesgarriaz.",
|
||||||
"onboarding.steps.publish_status.body": "Say hello to the world.",
|
"onboarding.steps.follow_people.title": "Jarraitu {count, plural, one {pertsona bat} other {# pertsona}}",
|
||||||
"onboarding.steps.publish_status.title": "Make your first post",
|
"onboarding.steps.publish_status.body": "Agurtu munduari.",
|
||||||
|
"onboarding.steps.publish_status.title": "Sortu zure lehen argitalpena",
|
||||||
"onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
|
"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.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.body": "Let your friends know how to find you on Mastodon!",
|
||||||
"onboarding.steps.share_profile.title": "Share your profile",
|
"onboarding.steps.share_profile.title": "Share your 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.2fa": "<strong>Bazenekien?</strong> Zure kontua babes dezakezu bi faktoreko autentifikazioa zure kontuko ezarpenetan ezarriaz. Darabilzun edozein TOTP aplikaziorekin dabil, ez da telefono-zenbakirik behar!",
|
||||||
"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.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.migration": "<strong>Bazenekien?</strong> Uste baduzu {domain} ez dela aukera on bat zuretzako etorkizunari begira, beste Mastodoneko instantzia batera alda zaitezke zure jarraitzaileak galdu gabe. Zure zerbitzaria ostata dezakezu eta guzti!",
|
||||||
"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!",
|
"onboarding.tips.verification": "<strong>Bazenekien?</strong> Zure kontua egiazta dezakezu zure webgunean zure Mastodoneko profilaren esteka erantsiaz, zure webgunea Mastodoneko profilean ere duzularik. Kuota 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",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "رونوشت از جزئیات اشکال",
|
"errors.unexpected_crash.copy_stacktrace": "رونوشت از جزئیات اشکال",
|
||||||
"errors.unexpected_crash.report_issue": "گزارش مشکل",
|
"errors.unexpected_crash.report_issue": "گزارش مشکل",
|
||||||
"explore.search_results": "نتایج جستوجو",
|
"explore.search_results": "نتایج جستوجو",
|
||||||
"explore.suggested_follows": "برای شما",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "کاوش",
|
"explore.title": "کاوش",
|
||||||
"explore.trending_links": "اخبار",
|
"explore.trending_links": "اخبار",
|
||||||
"explore.trending_statuses": "فرستهها",
|
"explore.trending_statuses": "فرستهها",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Kopioi pinon jäljitys leikepöydälle",
|
"errors.unexpected_crash.copy_stacktrace": "Kopioi pinon jäljitys leikepöydälle",
|
||||||
"errors.unexpected_crash.report_issue": "Ilmoita ongelmasta",
|
"errors.unexpected_crash.report_issue": "Ilmoita ongelmasta",
|
||||||
"explore.search_results": "Hakutulokset",
|
"explore.search_results": "Hakutulokset",
|
||||||
"explore.suggested_follows": "Sinulle",
|
"explore.suggested_follows": "Ihmiset",
|
||||||
"explore.title": "Selaa",
|
"explore.title": "Selaa",
|
||||||
"explore.trending_links": "Uutiset",
|
"explore.trending_links": "Uutiset",
|
||||||
"explore.trending_statuses": "Julkaisut",
|
"explore.trending_statuses": "Julkaisut",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Älä näytä tätä uudelleen",
|
"onboarding.actions.close": "Älä näytä tätä uudelleen",
|
||||||
"onboarding.actions.go_to_explore": "Katso, mikä on trendikästä",
|
"onboarding.actions.go_to_explore": "Katso, mikä on trendikästä",
|
||||||
"onboarding.actions.go_to_home": "Siirry kotisyötteeseesi",
|
"onboarding.actions.go_to_home": "Siirry kotisyötteeseesi",
|
||||||
|
"onboarding.compose.template": "Tervehdys, #Mastodon!",
|
||||||
"onboarding.follows.empty": "Valitettavasti tuloksia ei voida näyttää juuri nyt. Voit kokeilla hakua tai selata hakusivua 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 hakusivua löytääksesi seurattavaa, tai yrittää myöhemmin uudelleen.",
|
||||||
"onboarding.follows.lead": "Kokoat oman kotisyötteesi itse. Mitä enemmän ihmisiä seuraat, sitä aktiivisempi ja kiinnostavampi syöte on. Nämä profiilit voivat olla alkuun hyvä lähtökohta — voit aina lopettaa niiden seuraamisen myöhemmin!",
|
"onboarding.follows.lead": "Kokoat oman kotisyötteesi itse. Mitä enemmän ihmisiä seuraat, sitä aktiivisempi ja kiinnostavampi syöte on. Nämä profiilit voivat olla alkuun hyvä lähtökohta — voit aina lopettaa niiden seuraamisen myöhemmin!",
|
||||||
"onboarding.follows.title": "Suosittua Mastodonissa",
|
"onboarding.follows.title": "Suosittua Mastodonissa",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Avrita stakkaslóðina til setiborðið",
|
"errors.unexpected_crash.copy_stacktrace": "Avrita stakkaslóðina til setiborðið",
|
||||||
"errors.unexpected_crash.report_issue": "Fráboða trupulleika",
|
"errors.unexpected_crash.report_issue": "Fráboða trupulleika",
|
||||||
"explore.search_results": "Leitiúrslit",
|
"explore.search_results": "Leitiúrslit",
|
||||||
"explore.suggested_follows": "Til tín",
|
"explore.suggested_follows": "Fólk",
|
||||||
"explore.title": "Rannsaka",
|
"explore.title": "Rannsaka",
|
||||||
"explore.trending_links": "Tíðindi",
|
"explore.trending_links": "Tíðindi",
|
||||||
"explore.trending_statuses": "Postar",
|
"explore.trending_statuses": "Postar",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Ikki vísa hendan skermin aftur",
|
"onboarding.actions.close": "Ikki vísa hendan skermin aftur",
|
||||||
"onboarding.actions.go_to_explore": "Sí rákið",
|
"onboarding.actions.go_to_explore": "Sí rákið",
|
||||||
"onboarding.actions.go_to_home": "Far til heimarásina",
|
"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.lead": "Tú snikkar sjálv/ur tína heimarás til. Jú fleiri fólk, tú fylgir, jú virknari og áhugaverdari verður tað. Hesir vangar kunnu vera ein góð byrjan — tú kanst altíð gevast at fylgja teimum seinni!",
|
||||||
"onboarding.follows.title": "Vælumtókt á Mastodon",
|
"onboarding.follows.title": "Vælumtókt á Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copier la trace d'appels dans le presse-papier",
|
"errors.unexpected_crash.copy_stacktrace": "Copier la trace d'appels dans le presse-papier",
|
||||||
"errors.unexpected_crash.report_issue": "Signaler un problème",
|
"errors.unexpected_crash.report_issue": "Signaler un problème",
|
||||||
"explore.search_results": "Résultats",
|
"explore.search_results": "Résultats",
|
||||||
"explore.suggested_follows": "Pour vous",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Explorer",
|
"explore.title": "Explorer",
|
||||||
"explore.trending_links": "Nouvelles",
|
"explore.trending_links": "Nouvelles",
|
||||||
"explore.trending_statuses": "Messages",
|
"explore.trending_statuses": "Messages",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copier la trace d'appels dans le presse-papier",
|
"errors.unexpected_crash.copy_stacktrace": "Copier la trace d'appels dans le presse-papier",
|
||||||
"errors.unexpected_crash.report_issue": "Signaler le problème",
|
"errors.unexpected_crash.report_issue": "Signaler le problème",
|
||||||
"explore.search_results": "Résultats de la recherche",
|
"explore.search_results": "Résultats de la recherche",
|
||||||
"explore.suggested_follows": "Pour vous",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Explorer",
|
"explore.title": "Explorer",
|
||||||
"explore.trending_links": "Nouvelles",
|
"explore.trending_links": "Nouvelles",
|
||||||
"explore.trending_statuses": "Messages",
|
"explore.trending_statuses": "Messages",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Stacktrace nei klamboerd kopiearje",
|
"errors.unexpected_crash.copy_stacktrace": "Stacktrace nei klamboerd kopiearje",
|
||||||
"errors.unexpected_crash.report_issue": "Technysk probleem melde",
|
"errors.unexpected_crash.report_issue": "Technysk probleem melde",
|
||||||
"explore.search_results": "Sykresultaten",
|
"explore.search_results": "Sykresultaten",
|
||||||
"explore.suggested_follows": "Foar jo",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Ferkenne",
|
"explore.title": "Ferkenne",
|
||||||
"explore.trending_links": "Nijs",
|
"explore.trending_links": "Nijs",
|
||||||
"explore.trending_statuses": "Berjochten",
|
"explore.trending_statuses": "Berjochten",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Dit skerm net mear toane",
|
"onboarding.actions.close": "Dit skerm net mear toane",
|
||||||
"onboarding.actions.go_to_explore": "De aktuele trends besjen",
|
"onboarding.actions.go_to_explore": "De aktuele trends besjen",
|
||||||
"onboarding.actions.go_to_home": "Gean nei jo startside",
|
"onboarding.actions.go_to_home": "Gean nei jo startside",
|
||||||
|
"onboarding.compose.template": "Hello #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.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.follows.title": "Populêr op Mastodon",
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
"account.follows_you": "Do do leanúint",
|
"account.follows_you": "Do do leanúint",
|
||||||
"account.go_to_profile": "Téigh go dtí próifíl",
|
"account.go_to_profile": "Téigh go dtí próifíl",
|
||||||
"account.hide_reblogs": "Folaigh moltaí ó @{name}",
|
"account.hide_reblogs": "Folaigh moltaí ó @{name}",
|
||||||
"account.in_memoriam": "In Memoriam.",
|
"account.in_memoriam": "Cuimhneachán.",
|
||||||
"account.joined_short": "Cláraithe",
|
"account.joined_short": "Cláraithe",
|
||||||
"account.languages": "Athraigh teangacha foscríofa",
|
"account.languages": "Athraigh teangacha foscríofa",
|
||||||
"account.link_verified_on": "Seiceáladh úinéireacht an naisc seo ar {date}",
|
"account.link_verified_on": "Seiceáladh úinéireacht an naisc seo ar {date}",
|
||||||
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
||||||
"errors.unexpected_crash.report_issue": "Tuairiscigh deacracht",
|
"errors.unexpected_crash.report_issue": "Tuairiscigh deacracht",
|
||||||
"explore.search_results": "Torthaí cuardaigh",
|
"explore.search_results": "Torthaí cuardaigh",
|
||||||
"explore.suggested_follows": "Duitse",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Féach thart",
|
"explore.title": "Féach thart",
|
||||||
"explore.trending_links": "Nuacht",
|
"explore.trending_links": "Nuacht",
|
||||||
"explore.trending_statuses": "Postálacha",
|
"explore.trending_statuses": "Postálacha",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Cuir lethbhreac dhen stacktrace air an stòr-bhòrd",
|
"errors.unexpected_crash.copy_stacktrace": "Cuir lethbhreac dhen stacktrace air an stòr-bhòrd",
|
||||||
"errors.unexpected_crash.report_issue": "Dèan aithris air an duilgheadas",
|
"errors.unexpected_crash.report_issue": "Dèan aithris air an duilgheadas",
|
||||||
"explore.search_results": "Toraidhean an luirg",
|
"explore.search_results": "Toraidhean an luirg",
|
||||||
"explore.suggested_follows": "Dhut-sa",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Rùraich",
|
"explore.title": "Rùraich",
|
||||||
"explore.trending_links": "Naidheachdan",
|
"explore.trending_links": "Naidheachdan",
|
||||||
"explore.trending_statuses": "Postaichean",
|
"explore.trending_statuses": "Postaichean",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copiar trazas (stacktrace) ó portapapeis",
|
"errors.unexpected_crash.copy_stacktrace": "Copiar trazas (stacktrace) ó portapapeis",
|
||||||
"errors.unexpected_crash.report_issue": "Informar sobre un problema",
|
"errors.unexpected_crash.report_issue": "Informar sobre un problema",
|
||||||
"explore.search_results": "Resultados da busca",
|
"explore.search_results": "Resultados da busca",
|
||||||
"explore.suggested_follows": "Para ti",
|
"explore.suggested_follows": "Persoas",
|
||||||
"explore.title": "Descubrir",
|
"explore.title": "Descubrir",
|
||||||
"explore.trending_links": "Novas",
|
"explore.trending_links": "Novas",
|
||||||
"explore.trending_statuses": "Publicacións",
|
"explore.trending_statuses": "Publicacións",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Non mostrar esta pantalla de novo",
|
"onboarding.actions.close": "Non mostrar esta pantalla de novo",
|
||||||
"onboarding.actions.go_to_explore": "Mira do que se está a falar",
|
"onboarding.actions.go_to_explore": "Mira do que se está a falar",
|
||||||
"onboarding.actions.go_to_home": "Vai á cronoloxía de inicio",
|
"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": "Podes facer que a túa cronoloxía de inicio sexa como ti a queres. Canta máis xente sigas máis interesante será. Estes perfís poderían axudarche a comezar —sempre poderás deixar de seguilos despois!",
|
"onboarding.follows.lead": "Podes facer que a túa cronoloxía de inicio sexa como ti a queres. Canta máis xente sigas máis interesante será. Estes perfís poderían axudarche a comezar —sempre poderás deixar de seguilos despois!",
|
||||||
"onboarding.follows.title": "Popular en Mastodon",
|
"onboarding.follows.title": "Popular en Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "להעתיק את הקוד ללוח הכתיבה",
|
"errors.unexpected_crash.copy_stacktrace": "להעתיק את הקוד ללוח הכתיבה",
|
||||||
"errors.unexpected_crash.report_issue": "דווח על בעיה",
|
"errors.unexpected_crash.report_issue": "דווח על בעיה",
|
||||||
"explore.search_results": "תוצאות חיפוש",
|
"explore.search_results": "תוצאות חיפוש",
|
||||||
"explore.suggested_follows": "עבורך",
|
"explore.suggested_follows": "אנשים",
|
||||||
"explore.title": "סיור",
|
"explore.title": "סיור",
|
||||||
"explore.trending_links": "חדשות",
|
"explore.trending_links": "חדשות",
|
||||||
"explore.trending_statuses": "הודעות",
|
"explore.trending_statuses": "הודעות",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "אל תציג זאת שוב",
|
"onboarding.actions.close": "אל תציג זאת שוב",
|
||||||
"onboarding.actions.go_to_explore": "הצגת מגמות",
|
"onboarding.actions.go_to_explore": "הצגת מגמות",
|
||||||
"onboarding.actions.go_to_home": "מעבר לזרם הודעות הנעקבים",
|
"onboarding.actions.go_to_home": "מעבר לזרם הודעות הנעקבים",
|
||||||
|
"onboarding.compose.template": "שלום #מסטודון!",
|
||||||
"onboarding.follows.empty": "למצער, תוצאות לחיפושך אינן בנמצא. ניתן להשתמש בחיפוש או בדף החקירות לשם מציאת אנשים ולעקבם. אפשר גם לנסות שוב אחר כך.",
|
"onboarding.follows.empty": "למצער, תוצאות לחיפושך אינן בנמצא. ניתן להשתמש בחיפוש או בדף החקירות לשם מציאת אנשים ולעקבם. אפשר גם לנסות שוב אחר כך.",
|
||||||
"onboarding.follows.lead": "אתם אוצרים את הזרם הבייתי שלכם. ככל שתעקבו אחרי יותר אנשים, הוא יהיה עשיר ופעיל יותר. הנה כמה פרופילים להתחיל בהם - תמיד ניתן להפסיק מעקב אחריהם בהמשך!",
|
"onboarding.follows.lead": "אתם אוצרים את הזרם הבייתי שלכם. ככל שתעקבו אחרי יותר אנשים, הוא יהיה עשיר ופעיל יותר. הנה כמה פרופילים להתחיל בהם - תמיד ניתן להפסיק מעקב אחריהם בהמשך!",
|
||||||
"onboarding.follows.title": "פופולארי על מסטודון",
|
"onboarding.follows.title": "פופולארי על מסטודון",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "स्टैकट्रेस को क्लिपबोर्ड पर कॉपी करें",
|
"errors.unexpected_crash.copy_stacktrace": "स्टैकट्रेस को क्लिपबोर्ड पर कॉपी करें",
|
||||||
"errors.unexpected_crash.report_issue": "समस्या सूचित करें",
|
"errors.unexpected_crash.report_issue": "समस्या सूचित करें",
|
||||||
"explore.search_results": "सर्च रिजल्ट्स",
|
"explore.search_results": "सर्च रिजल्ट्स",
|
||||||
"explore.suggested_follows": "आपके लिए",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "एक्स्प्लोर",
|
"explore.title": "एक्स्प्लोर",
|
||||||
"explore.trending_links": "समाचार",
|
"explore.trending_links": "समाचार",
|
||||||
"explore.trending_statuses": "पोस्ट्स",
|
"explore.trending_statuses": "पोस्ट्स",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Kopiraj stacktrace u međuspremnik",
|
"errors.unexpected_crash.copy_stacktrace": "Kopiraj stacktrace u međuspremnik",
|
||||||
"errors.unexpected_crash.report_issue": "Prijavi problem",
|
"errors.unexpected_crash.report_issue": "Prijavi problem",
|
||||||
"explore.search_results": "Rezultati pretrage",
|
"explore.search_results": "Rezultati pretrage",
|
||||||
"explore.suggested_follows": "Za vas",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Explore",
|
"explore.title": "Explore",
|
||||||
"explore.trending_links": "Novosti",
|
"explore.trending_links": "Novosti",
|
||||||
"explore.trending_statuses": "Objave",
|
"explore.trending_statuses": "Objave",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -132,7 +132,7 @@
|
||||||
"compose_form.hashtag_warning": "Ez a bejegyzésed nem fog megjelenni semmilyen hashtag alatt, mivel nem nyilvános. Csak a nyilvános bejegyzések kereshetők hashtaggel.",
|
"compose_form.hashtag_warning": "Ez a bejegyzésed nem fog megjelenni semmilyen hashtag alatt, mivel nem nyilvános. Csak a nyilvános bejegyzések kereshetők hashtaggel.",
|
||||||
"compose_form.lock_disclaimer": "A fiókod nincs {locked}. Bárki követni tud, hogy megtekintse a kizárólag követőknek szánt bejegyzéseket.",
|
"compose_form.lock_disclaimer": "A fiókod nincs {locked}. Bárki követni tud, hogy megtekintse a kizárólag követőknek szánt bejegyzéseket.",
|
||||||
"compose_form.lock_disclaimer.lock": "lezárva",
|
"compose_form.lock_disclaimer.lock": "lezárva",
|
||||||
"compose_form.placeholder": "Mire gondolunk éppen?",
|
"compose_form.placeholder": "Mi jár a fejedben?",
|
||||||
"compose_form.poll.add_option": "Lehetőség hozzáadása",
|
"compose_form.poll.add_option": "Lehetőség hozzáadása",
|
||||||
"compose_form.poll.duration": "Szavazás időtartama",
|
"compose_form.poll.duration": "Szavazás időtartama",
|
||||||
"compose_form.poll.option_placeholder": "{number}. lehetőség",
|
"compose_form.poll.option_placeholder": "{number}. lehetőség",
|
||||||
|
@ -148,7 +148,7 @@
|
||||||
"compose_form.sensitive.unmarked": "{count, plural, one {A médiát nem jelölték kényesnek} other {A médiát nem jelölték kényesnek}}",
|
"compose_form.sensitive.unmarked": "{count, plural, one {A médiát nem jelölték kényesnek} other {A médiát nem jelölték kényesnek}}",
|
||||||
"compose_form.spoiler.marked": "Tartalmi figyelmeztetés eltávolítása",
|
"compose_form.spoiler.marked": "Tartalmi figyelmeztetés eltávolítása",
|
||||||
"compose_form.spoiler.unmarked": "Tartalmi figyelmeztetés hozzáadása",
|
"compose_form.spoiler.unmarked": "Tartalmi figyelmeztetés hozzáadása",
|
||||||
"compose_form.spoiler_placeholder": "A figyelmeztetés beírása ide",
|
"compose_form.spoiler_placeholder": "Írd ide a figyelmeztetést",
|
||||||
"confirmation_modal.cancel": "Mégsem",
|
"confirmation_modal.cancel": "Mégsem",
|
||||||
"confirmations.block.block_and_report": "Letiltás és jelentés",
|
"confirmations.block.block_and_report": "Letiltás és jelentés",
|
||||||
"confirmations.block.confirm": "Letiltás",
|
"confirmations.block.confirm": "Letiltás",
|
||||||
|
@ -240,11 +240,11 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Veremkiíratás vágólapra másolása",
|
"errors.unexpected_crash.copy_stacktrace": "Veremkiíratás vágólapra másolása",
|
||||||
"errors.unexpected_crash.report_issue": "Probléma jelentése",
|
"errors.unexpected_crash.report_issue": "Probléma jelentése",
|
||||||
"explore.search_results": "Keresési találatok",
|
"explore.search_results": "Keresési találatok",
|
||||||
"explore.suggested_follows": "Nekem",
|
"explore.suggested_follows": "Emberek",
|
||||||
"explore.title": "Felfedezés",
|
"explore.title": "Felfedezés",
|
||||||
"explore.trending_links": "Hírek",
|
"explore.trending_links": "Hírek",
|
||||||
"explore.trending_statuses": "Bejegyzések",
|
"explore.trending_statuses": "Bejegyzések",
|
||||||
"explore.trending_tags": "#Címkék",
|
"explore.trending_tags": "Hashtagek",
|
||||||
"filter_modal.added.context_mismatch_explanation": "Ez a szűrőkategória nem érvényes abban a környezetben, amelyből ez a bejegyzés elérésre kerül. Ha ebben a környezetben is szűrni szeretnénk a bejegyzést, akkor szerkeszteni kell a szűrőt.",
|
"filter_modal.added.context_mismatch_explanation": "Ez a szűrőkategória nem érvényes abban a környezetben, amelyből ez a bejegyzés elérésre kerül. Ha ebben a környezetben is szűrni szeretnénk a bejegyzést, akkor szerkeszteni kell a szűrőt.",
|
||||||
"filter_modal.added.context_mismatch_title": "Környezeti eltérés.",
|
"filter_modal.added.context_mismatch_title": "Környezeti eltérés.",
|
||||||
"filter_modal.added.expired_explanation": "Ez a szűrőkategória elévült, a használatához módosítani kell a lejárati dátumot.",
|
"filter_modal.added.expired_explanation": "Ez a szűrőkategória elévült, a használatához módosítani kell a lejárati dátumot.",
|
||||||
|
@ -264,7 +264,7 @@
|
||||||
"follow_request.authorize": "Hitelesítés",
|
"follow_request.authorize": "Hitelesítés",
|
||||||
"follow_request.reject": "Elutasítás",
|
"follow_request.reject": "Elutasítás",
|
||||||
"follow_requests.unlocked_explanation": "Bár a fiókod nincs zárolva, a(z) {domain} csapata úgy gondolta, hogy talán kézzel szeretnéd ellenőrizni a fiók követési kéréseit.",
|
"follow_requests.unlocked_explanation": "Bár a fiókod nincs zárolva, a(z) {domain} csapata úgy gondolta, hogy talán kézzel szeretnéd ellenőrizni a fiók követési kéréseit.",
|
||||||
"followed_tags": "Követett #címkék",
|
"followed_tags": "Követett hashtagek",
|
||||||
"footer.about": "Névjegy",
|
"footer.about": "Névjegy",
|
||||||
"footer.directory": "Profiltár",
|
"footer.directory": "Profiltár",
|
||||||
"footer.get_app": "Alkalmazás beszerzése",
|
"footer.get_app": "Alkalmazás beszerzése",
|
||||||
|
@ -279,11 +279,11 @@
|
||||||
"hashtag.column_header.tag_mode.any": "vagy {additional}",
|
"hashtag.column_header.tag_mode.any": "vagy {additional}",
|
||||||
"hashtag.column_header.tag_mode.none": "{additional} nélkül",
|
"hashtag.column_header.tag_mode.none": "{additional} nélkül",
|
||||||
"hashtag.column_settings.select.no_options_message": "Nincs javaslat",
|
"hashtag.column_settings.select.no_options_message": "Nincs javaslat",
|
||||||
"hashtag.column_settings.select.placeholder": "#Címkék megadása…",
|
"hashtag.column_settings.select.placeholder": "Addj meg hashtageket…",
|
||||||
"hashtag.column_settings.tag_mode.all": "Mindegyik",
|
"hashtag.column_settings.tag_mode.all": "Mindegyik",
|
||||||
"hashtag.column_settings.tag_mode.any": "Bármelyik",
|
"hashtag.column_settings.tag_mode.any": "Bármelyik",
|
||||||
"hashtag.column_settings.tag_mode.none": "Egyik sem",
|
"hashtag.column_settings.tag_mode.none": "Egyik sem",
|
||||||
"hashtag.column_settings.tag_toggle": "További címkék felvétele ehhez az oszlophoz",
|
"hashtag.column_settings.tag_toggle": "Új címkék felvétele ehhez az oszlophoz",
|
||||||
"hashtag.follow": "Hashtag követése",
|
"hashtag.follow": "Hashtag követése",
|
||||||
"hashtag.unfollow": "Hashtag követésének megszüntetése",
|
"hashtag.unfollow": "Hashtag követésének megszüntetése",
|
||||||
"home.column_settings.basic": "Alapvető",
|
"home.column_settings.basic": "Alapvető",
|
||||||
|
@ -335,7 +335,7 @@
|
||||||
"keyboard_shortcuts.search": "Keresősáv fókuszálása",
|
"keyboard_shortcuts.search": "Keresősáv fókuszálása",
|
||||||
"keyboard_shortcuts.spoilers": "Tartalmi figyelmeztetés mező megjelenítése/elrejtése",
|
"keyboard_shortcuts.spoilers": "Tartalmi figyelmeztetés mező megjelenítése/elrejtése",
|
||||||
"keyboard_shortcuts.start": "\"Első lépések\" oszlop megnyitása",
|
"keyboard_shortcuts.start": "\"Első lépések\" oszlop megnyitása",
|
||||||
"keyboard_shortcuts.toggle_hidden": "Tartalmi figyelmeztetéssel mögötti szöveg megjelenítése/elrejtése",
|
"keyboard_shortcuts.toggle_hidden": "Tartalmi figyelmeztetéssel ellátott szöveg megjelenítése/elrejtése",
|
||||||
"keyboard_shortcuts.toggle_sensitivity": "Média megjelenítése/elrejtése",
|
"keyboard_shortcuts.toggle_sensitivity": "Média megjelenítése/elrejtése",
|
||||||
"keyboard_shortcuts.toot": "Új bejegyzés írása",
|
"keyboard_shortcuts.toot": "Új bejegyzés írása",
|
||||||
"keyboard_shortcuts.unfocus": "Szerkesztés/keresés fókuszból való kivétele",
|
"keyboard_shortcuts.unfocus": "Szerkesztés/keresés fókuszból való kivétele",
|
||||||
|
@ -380,7 +380,7 @@
|
||||||
"navigation_bar.favourites": "Kedvencek",
|
"navigation_bar.favourites": "Kedvencek",
|
||||||
"navigation_bar.filters": "Némított szavak",
|
"navigation_bar.filters": "Némított szavak",
|
||||||
"navigation_bar.follow_requests": "Követési kérelmek",
|
"navigation_bar.follow_requests": "Követési kérelmek",
|
||||||
"navigation_bar.followed_tags": "Követett #címkék",
|
"navigation_bar.followed_tags": "Követett hashtagek",
|
||||||
"navigation_bar.follows_and_followers": "Követettek és követők",
|
"navigation_bar.follows_and_followers": "Követettek és követők",
|
||||||
"navigation_bar.lists": "Listák",
|
"navigation_bar.lists": "Listák",
|
||||||
"navigation_bar.logout": "Kijelentkezés",
|
"navigation_bar.logout": "Kijelentkezés",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Ez a képernyő ne jelenjen meg újra",
|
"onboarding.actions.close": "Ez a képernyő ne jelenjen meg újra",
|
||||||
"onboarding.actions.go_to_explore": "Felkapottak megtekintése",
|
"onboarding.actions.go_to_explore": "Felkapottak megtekintése",
|
||||||
"onboarding.actions.go_to_home": "Ugrás a saját hírfolyamra",
|
"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": "Mindenki maga válogatja össze a saját hírfolyamát. Minél több embert követsz, annál aktívabb és érdekesebb a dolog. Ezek a profilok jó kiindulási alapot jelenthetnek – később bármikor leállíthatod a követésüket!",
|
"onboarding.follows.lead": "Mindenki maga válogatja össze a saját hírfolyamát. Minél több embert követsz, annál aktívabb és érdekesebb a dolog. Ezek a profilok jó kiindulási alapot jelenthetnek – később bármikor leállíthatod a követésüket!",
|
||||||
"onboarding.follows.title": "Népszerű a Mastodonon",
|
"onboarding.follows.title": "Népszerű a Mastodonon",
|
||||||
|
@ -554,12 +555,12 @@
|
||||||
"search.quick_action.go_to_hashtag": "Ugrás a következő hashtaghez: {x}",
|
"search.quick_action.go_to_hashtag": "Ugrás a következő hashtaghez: {x}",
|
||||||
"search.quick_action.open_url": "Webcím megnyitása a Mastodonon",
|
"search.quick_action.open_url": "Webcím megnyitása a Mastodonon",
|
||||||
"search.quick_action.status_search": "Bejegyzések a következő keresésre: {x}",
|
"search.quick_action.status_search": "Bejegyzések a következő keresésre: {x}",
|
||||||
"search.search_or_paste": "Keresés vagy webcím beillesztése",
|
"search.search_or_paste": "Keresés vagy URL beillesztése",
|
||||||
"search_popout.quick_actions": "Gyors műveletek",
|
"search_popout.quick_actions": "Gyors műveletek",
|
||||||
"search_popout.recent": "Legutóbbi keresések",
|
"search_popout.recent": "Legutóbbi keresések",
|
||||||
"search_results.accounts": "Profilok",
|
"search_results.accounts": "Profilok",
|
||||||
"search_results.all": "Összes",
|
"search_results.all": "Összes",
|
||||||
"search_results.hashtags": "#Címkék",
|
"search_results.hashtags": "Hashtagek",
|
||||||
"search_results.nothing_found": "Nincs találat ezekre a keresési kifejezésekre",
|
"search_results.nothing_found": "Nincs találat ezekre a keresési kifejezésekre",
|
||||||
"search_results.statuses": "Bejegyzések",
|
"search_results.statuses": "Bejegyzések",
|
||||||
"search_results.statuses_fts_disabled": "Ezen a Mastodon szerveren nem engedélyezett a bejegyzések tartalom szerinti keresése.",
|
"search_results.statuses_fts_disabled": "Ezen a Mastodon szerveren nem engedélyezett a bejegyzések tartalom szerinti keresése.",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Պատճենել սթաքթրեյսը սեղմատախտակին",
|
"errors.unexpected_crash.copy_stacktrace": "Պատճենել սթաքթրեյսը սեղմատախտակին",
|
||||||
"errors.unexpected_crash.report_issue": "Զեկուցել խնդրի մասին",
|
"errors.unexpected_crash.report_issue": "Զեկուցել խնդրի մասին",
|
||||||
"explore.search_results": "Որոնման արդիւնքներ",
|
"explore.search_results": "Որոնման արդիւնքներ",
|
||||||
"explore.suggested_follows": "Քեզ համար",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Բացայայտել",
|
"explore.title": "Բացայայտել",
|
||||||
"explore.trending_links": "Նորութիւններ",
|
"explore.trending_links": "Նորութիւններ",
|
||||||
"explore.trending_statuses": "Գրառումներ",
|
"explore.trending_statuses": "Գրառումներ",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Salin stacktrace ke papan klip",
|
"errors.unexpected_crash.copy_stacktrace": "Salin stacktrace ke papan klip",
|
||||||
"errors.unexpected_crash.report_issue": "Laporkan masalah",
|
"errors.unexpected_crash.report_issue": "Laporkan masalah",
|
||||||
"explore.search_results": "Hasil pencarian",
|
"explore.search_results": "Hasil pencarian",
|
||||||
"explore.suggested_follows": "Untuk Anda",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Jelajahi",
|
"explore.title": "Jelajahi",
|
||||||
"explore.trending_links": "Berita",
|
"explore.trending_links": "Berita",
|
||||||
"explore.trending_statuses": "Kiriman",
|
"explore.trending_statuses": "Kiriman",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
||||||
"errors.unexpected_crash.report_issue": "Kpesa nsogbu",
|
"errors.unexpected_crash.report_issue": "Kpesa nsogbu",
|
||||||
"explore.search_results": "Search results",
|
"explore.search_results": "Search results",
|
||||||
"explore.suggested_follows": "For you",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Explore",
|
"explore.title": "Explore",
|
||||||
"explore.trending_links": "News",
|
"explore.trending_links": "News",
|
||||||
"explore.trending_statuses": "Posts",
|
"explore.trending_statuses": "Posts",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Kopiez amastraso a klipplanko",
|
"errors.unexpected_crash.copy_stacktrace": "Kopiez amastraso a klipplanko",
|
||||||
"errors.unexpected_crash.report_issue": "Reportigez problemo",
|
"errors.unexpected_crash.report_issue": "Reportigez problemo",
|
||||||
"explore.search_results": "Trovuri",
|
"explore.search_results": "Trovuri",
|
||||||
"explore.suggested_follows": "For you",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Explorez",
|
"explore.title": "Explorez",
|
||||||
"explore.trending_links": "News",
|
"explore.trending_links": "News",
|
||||||
"explore.trending_statuses": "Posts",
|
"explore.trending_statuses": "Posts",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Afrita rakningarupplýsingar (stacktrace) á klippispjald",
|
"errors.unexpected_crash.copy_stacktrace": "Afrita rakningarupplýsingar (stacktrace) á klippispjald",
|
||||||
"errors.unexpected_crash.report_issue": "Tilkynna vandamál",
|
"errors.unexpected_crash.report_issue": "Tilkynna vandamál",
|
||||||
"explore.search_results": "Leitarniðurstöður",
|
"explore.search_results": "Leitarniðurstöður",
|
||||||
"explore.suggested_follows": "Fyrir þig",
|
"explore.suggested_follows": "Fólk",
|
||||||
"explore.title": "Kanna",
|
"explore.title": "Kanna",
|
||||||
"explore.trending_links": "Fréttir",
|
"explore.trending_links": "Fréttir",
|
||||||
"explore.trending_statuses": "Færslur",
|
"explore.trending_statuses": "Færslur",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Ekki birta þetta aftur",
|
"onboarding.actions.close": "Ekki birta þetta aftur",
|
||||||
"onboarding.actions.go_to_explore": "Sjáðu hvað er í umræðunni",
|
"onboarding.actions.go_to_explore": "Sjáðu hvað er í umræðunni",
|
||||||
"onboarding.actions.go_to_home": "Fara á heimastreymið þitt",
|
"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.lead": "Þú ræktar heimastreymið þitt. Því fleira fólki sem þú fylgist með, því virkara og áhugaverðara verður það. Að fylgjast með þessum notendum gæti verið ágætt til að byrja með - þú getur alltaf hætt að fylgjast með þeim síðar!",
|
||||||
"onboarding.follows.title": "Vinsælt á Mastodon",
|
"onboarding.follows.title": "Vinsælt á Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copia stacktrace negli appunti",
|
"errors.unexpected_crash.copy_stacktrace": "Copia stacktrace negli appunti",
|
||||||
"errors.unexpected_crash.report_issue": "Segnala un problema",
|
"errors.unexpected_crash.report_issue": "Segnala un problema",
|
||||||
"explore.search_results": "Risultati della ricerca",
|
"explore.search_results": "Risultati della ricerca",
|
||||||
"explore.suggested_follows": "Per te",
|
"explore.suggested_follows": "Persone",
|
||||||
"explore.title": "Esplora",
|
"explore.title": "Esplora",
|
||||||
"explore.trending_links": "Novità",
|
"explore.trending_links": "Novità",
|
||||||
"explore.trending_statuses": "Post",
|
"explore.trending_statuses": "Post",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Non mostrare più",
|
"onboarding.actions.close": "Non mostrare più",
|
||||||
"onboarding.actions.go_to_explore": "Guarda le tendenze",
|
"onboarding.actions.go_to_explore": "Guarda le tendenze",
|
||||||
"onboarding.actions.go_to_home": "Vai alla cronologia della tua home",
|
"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.lead": "La cronologia della tua home è gestita da te. Più persone segui, più attiva e interessante sarà. Questi profili possono essere un buon punto di partenza; puoi sempre smettere di seguirli in seguito!",
|
||||||
"onboarding.follows.title": "Popolare su Mastodon",
|
"onboarding.follows.title": "Popolare su Mastodon",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "スタックトレースをクリップボードにコピー",
|
"errors.unexpected_crash.copy_stacktrace": "スタックトレースをクリップボードにコピー",
|
||||||
"errors.unexpected_crash.report_issue": "問題を報告",
|
"errors.unexpected_crash.report_issue": "問題を報告",
|
||||||
"explore.search_results": "検索結果",
|
"explore.search_results": "検索結果",
|
||||||
"explore.suggested_follows": "おすすめ",
|
"explore.suggested_follows": "ユーザー",
|
||||||
"explore.title": "エクスプローラー",
|
"explore.title": "エクスプローラー",
|
||||||
"explore.trending_links": "ニュース",
|
"explore.trending_links": "ニュース",
|
||||||
"explore.trending_statuses": "投稿",
|
"explore.trending_statuses": "投稿",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "今後この画面を表示しない",
|
"onboarding.actions.close": "今後この画面を表示しない",
|
||||||
"onboarding.actions.go_to_explore": "話題をさがす",
|
"onboarding.actions.go_to_explore": "話題をさがす",
|
||||||
"onboarding.actions.go_to_home": "タイムラインに移動",
|
"onboarding.actions.go_to_home": "タイムラインに移動",
|
||||||
|
"onboarding.compose.template": "#Mastodon はじめました",
|
||||||
"onboarding.follows.empty": "おすすめに表示できるアカウントはまだありません。検索や「見つける」を活用して、ほかのアカウントを探してみましょう。",
|
"onboarding.follows.empty": "おすすめに表示できるアカウントはまだありません。検索や「見つける」を活用して、ほかのアカウントを探してみましょう。",
|
||||||
"onboarding.follows.lead": "自分の手でタイムラインを作ってみましょう。フォローを増やせば、タイムラインはより賑やかでおもしろいものになります。最初のフォローの参考になりそうなアカウントをいくつか表示しています。気になったものがあれば、ここからフォローしてみましょう。フォローはいつでも解除して大丈夫です。",
|
"onboarding.follows.lead": "自分の手でタイムラインを作ってみましょう。フォローを増やせば、タイムラインはより賑やかでおもしろいものになります。最初のフォローの参考になりそうなアカウントをいくつか表示しています。気になったものがあれば、ここからフォローしてみましょう。フォローはいつでも解除して大丈夫です。",
|
||||||
"onboarding.follows.title": "おすすめのアカウント",
|
"onboarding.follows.title": "おすすめのアカウント",
|
||||||
|
@ -463,10 +464,10 @@
|
||||||
"onboarding.steps.setup_profile.title": "プロフィールを完成させる",
|
"onboarding.steps.setup_profile.title": "プロフィールを完成させる",
|
||||||
"onboarding.steps.share_profile.body": "Mastodon アカウントをほかの人に紹介しましょう。",
|
"onboarding.steps.share_profile.body": "Mastodon アカウントをほかの人に紹介しましょう。",
|
||||||
"onboarding.steps.share_profile.title": "プロフィールをシェアする",
|
"onboarding.steps.share_profile.title": "プロフィールをシェアする",
|
||||||
"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.2fa": "<strong>ワンポイント</strong> アカウント設定から2要素認証を有効にして、アカウントのセキュリティを強化しておきましょう。認証には任意のワンタイムパスワード(TOTP)アプリを利用でき、電話番号は不要です。",
|
||||||
"onboarding.tips.accounts_from_other_servers": "<strong>ワンポイント</strong> Mastodon はたくさんのサーバーがつながりあってできている非中央集権型のSNSです。いくつかのアカウントはこことは別のサーバーに所属していることがありますが、サーバーの違いを意識しなくても同じようにフォローすることができます。サーバーが異なる場合は、ユーザー名の後半にサーバー名が表示されます。",
|
"onboarding.tips.accounts_from_other_servers": "<strong>ワンポイント</strong> Mastodon はたくさんのサーバーがつながりあってできている非中央集権型のSNSです。いくつかのアカウントはこことは別のサーバーに所属していることがありますが、サーバーの違いを意識しなくても同じようにフォローすることができます。サーバーが異なる場合は、ユーザー名の後半にサーバー名が表示されます。",
|
||||||
"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.migration": "<strong>ワンポイント</strong> もしも {domain} の雰囲気が合わないと感じたときは、ほかのMastodonサーバーにフォロワーを引き継いだまま引っ越しできます。また、自分で独自のサーバーを開設することも可能です。",
|
||||||
"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!",
|
"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": "元に戻す",
|
||||||
|
|
|
@ -240,7 +240,7 @@
|
||||||
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
"errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
|
||||||
"errors.unexpected_crash.report_issue": "Report issue",
|
"errors.unexpected_crash.report_issue": "Report issue",
|
||||||
"explore.search_results": "Search results",
|
"explore.search_results": "Search results",
|
||||||
"explore.suggested_follows": "For you",
|
"explore.suggested_follows": "People",
|
||||||
"explore.title": "Explore",
|
"explore.title": "Explore",
|
||||||
"explore.trending_links": "News",
|
"explore.trending_links": "News",
|
||||||
"explore.trending_statuses": "Posts",
|
"explore.trending_statuses": "Posts",
|
||||||
|
@ -445,6 +445,7 @@
|
||||||
"onboarding.actions.close": "Don't show this screen again",
|
"onboarding.actions.close": "Don't show this screen again",
|
||||||
"onboarding.actions.go_to_explore": "See what's trending",
|
"onboarding.actions.go_to_explore": "See what's trending",
|
||||||
"onboarding.actions.go_to_home": "Go to your home feed",
|
"onboarding.actions.go_to_home": "Go to your 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.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.follows.title": "Popular on Mastodon",
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue