diff options
381 files changed, 7619 insertions, 2801 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml index 751ca95b1..a9ad92145 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -32,7 +32,7 @@ commands: name: Install system dependencies command: | sudo apt-get update - sudo apt-get install -y libicu-dev libidn11-dev libprotobuf-dev protobuf-compiler + sudo apt-get install -y libicu-dev libidn11-dev install-ruby-dependencies: parameters: ruby-version: diff --git a/Aptfile b/Aptfile index b2cbad714..9235141ad 100644 --- a/Aptfile +++ b/Aptfile @@ -4,10 +4,8 @@ libicu-dev libidn11 libidn11-dev libpq-dev -libprotobuf-dev libxdamage1 libxfixes3 -protobuf-compiler zlib1g-dev libcairo2 libcroco3 diff --git a/Dockerfile b/Dockerfile index 79f2fe0b5..0185ebfe9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -51,7 +51,7 @@ RUN npm install -g npm@latest && \ gem install bundler && \ apt-get update && \ apt-get install -y --no-install-recommends git libicu-dev libidn11-dev \ - libpq-dev libprotobuf-dev protobuf-compiler shared-mime-info + libpq-dev shared-mime-info COPY Gemfile* package.json yarn.lock /opt/mastodon/ @@ -88,7 +88,7 @@ RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selectio RUN apt-get update && \ apt-get -y --no-install-recommends install \ libssl1.1 libpq5 imagemagick ffmpeg libjemalloc2 \ - libicu66 libprotobuf17 libidn11 libyaml-0-2 \ + libicu66 libidn11 libyaml-0-2 \ file ca-certificates tzdata libreadline8 gcc tini apt-utils && \ ln -s /opt/mastodon /mastodon && \ gem install bundler && \ diff --git a/Gemfile b/Gemfile index ae999d964..c35c7b2a3 100644 --- a/Gemfile +++ b/Gemfile @@ -21,7 +21,7 @@ gem 'dotenv-rails', '~> 2.7' gem 'aws-sdk-s3', '~> 1.112', require: false gem 'fog-core', '<= 2.1.0' gem 'fog-openstack', '~> 0.3', require: false -gem 'kt-paperclip', '~> 7.0' +gem 'kt-paperclip', '~> 7.1' gem 'blurhash', '~> 0.1' gem 'active_model_serializers', '~> 0.10' @@ -65,7 +65,7 @@ gem 'oj', '~> 3.13' gem 'ox', '~> 2.14' gem 'parslet' gem 'posix-spawn' -gem 'pundit', '~> 2.1' +gem 'pundit', '~> 2.2' gem 'premailer-rails' gem 'rack-attack', '~> 6.5' gem 'rack-cors', '~> 1.1', require: 'rack/cors' @@ -76,7 +76,7 @@ gem 'mario-redis-lock', '~> 1.2', require: 'redis_lock' gem 'rqrcode', '~> 2.1' gem 'ruby-progressbar', '~> 1.11' gem 'sanitize', '~> 6.0' -gem 'scenic', '~> 1.5' +gem 'scenic', '~> 1.6' gem 'sidekiq', '~> 6.4' gem 'sidekiq-scheduler', '~> 3.1' gem 'sidekiq-unique-jobs', '~> 7.1' @@ -105,7 +105,7 @@ group :development, :test do gem 'i18n-tasks', '~> 0.9', require: false gem 'pry-byebug', '~> 3.9' gem 'pry-rails', '~> 0.3' - gem 'rspec-rails', '~> 5.0' + gem 'rspec-rails', '~> 5.1' end group :production, :test do @@ -126,7 +126,7 @@ end group :development do gem 'active_record_query_trace', '~> 1.8' - gem 'annotate', '~> 3.1' + gem 'annotate', '~> 3.2' gem 'better_errors', '~> 2.9' gem 'binding_of_caller', '~> 1.0' gem 'bullet', '~> 7.0' diff --git a/Gemfile.lock b/Gemfile.lock index 9d160dade..28b363c2e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,40 +1,40 @@ GEM remote: https://rubygems.org/ specs: - actioncable (6.1.4.4) - actionpack (= 6.1.4.4) - activesupport (= 6.1.4.4) + actioncable (6.1.4.6) + actionpack (= 6.1.4.6) + activesupport (= 6.1.4.6) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.4.4) - actionpack (= 6.1.4.4) - activejob (= 6.1.4.4) - activerecord (= 6.1.4.4) - activestorage (= 6.1.4.4) - activesupport (= 6.1.4.4) + actionmailbox (6.1.4.6) + actionpack (= 6.1.4.6) + activejob (= 6.1.4.6) + activerecord (= 6.1.4.6) + activestorage (= 6.1.4.6) + activesupport (= 6.1.4.6) mail (>= 2.7.1) - actionmailer (6.1.4.4) - actionpack (= 6.1.4.4) - actionview (= 6.1.4.4) - activejob (= 6.1.4.4) - activesupport (= 6.1.4.4) + actionmailer (6.1.4.6) + actionpack (= 6.1.4.6) + actionview (= 6.1.4.6) + activejob (= 6.1.4.6) + activesupport (= 6.1.4.6) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.1.4.4) - actionview (= 6.1.4.4) - activesupport (= 6.1.4.4) + actionpack (6.1.4.6) + actionview (= 6.1.4.6) + activesupport (= 6.1.4.6) rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.1.4.4) - actionpack (= 6.1.4.4) - activerecord (= 6.1.4.4) - activestorage (= 6.1.4.4) - activesupport (= 6.1.4.4) + actiontext (6.1.4.6) + actionpack (= 6.1.4.6) + activerecord (= 6.1.4.6) + activestorage (= 6.1.4.6) + activesupport (= 6.1.4.6) nokogiri (>= 1.8.5) - actionview (6.1.4.4) - activesupport (= 6.1.4.4) + actionview (6.1.4.6) + activesupport (= 6.1.4.6) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -45,22 +45,22 @@ GEM case_transform (>= 0.2) jsonapi-renderer (>= 0.1.1.beta1, < 0.3) active_record_query_trace (1.8) - activejob (6.1.4.4) - activesupport (= 6.1.4.4) + activejob (6.1.4.6) + activesupport (= 6.1.4.6) globalid (>= 0.3.6) - activemodel (6.1.4.4) - activesupport (= 6.1.4.4) - activerecord (6.1.4.4) - activemodel (= 6.1.4.4) - activesupport (= 6.1.4.4) - activestorage (6.1.4.4) - actionpack (= 6.1.4.4) - activejob (= 6.1.4.4) - activerecord (= 6.1.4.4) - activesupport (= 6.1.4.4) + activemodel (6.1.4.6) + activesupport (= 6.1.4.6) + activerecord (6.1.4.6) + activemodel (= 6.1.4.6) + activesupport (= 6.1.4.6) + activestorage (6.1.4.6) + actionpack (= 6.1.4.6) + activejob (= 6.1.4.6) + activerecord (= 6.1.4.6) + activesupport (= 6.1.4.6) marcel (~> 1.0.0) mini_mime (>= 1.1.0) - activesupport (6.1.4.4) + activesupport (6.1.4.6) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -71,8 +71,8 @@ GEM airbrussh (1.4.0) sshkit (>= 1.6.1, != 1.7.0) android_key_attestation (0.3.0) - annotate (3.1.1) - activerecord (>= 3.2, < 7.0) + annotate (3.2.0) + activerecord (>= 3.2, < 8.0) rake (>= 10.4, < 14.0) ast (2.4.2) attr_encrypted (3.1.0) @@ -181,7 +181,7 @@ GEM devise_pam_authenticatable2 (9.2.0) devise (>= 4.0.0) rpam2 (~> 4.0) - diff-lcs (1.4.4) + diff-lcs (1.5.0) discard (1.2.1) activerecord (>= 4.2, < 8) docile (1.3.4) @@ -332,7 +332,7 @@ GEM activerecord kaminari-core (= 1.2.2) kaminari-core (1.2.2) - kt-paperclip (7.0.1) + kt-paperclip (7.1.1) activemodel (>= 4.2.0) activesupport (>= 4.2.0) marcel (~> 1.0.1) @@ -356,14 +356,14 @@ GEM activesupport (>= 4) railties (>= 4) request_store (~> 1.0) - loofah (2.13.0) + loofah (2.14.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) mail (2.7.1) mini_mime (>= 0.1.1) makara (0.5.1) activerecord (>= 5.2.0) - marcel (1.0.1) + marcel (1.0.2) mario-redis-lock (1.2.1) redis (>= 3.0.5) matrix (0.4.2) @@ -374,7 +374,7 @@ GEM nokogiri (~> 1.10) mime-types (3.4.1) mime-types-data (~> 3.2015) - mime-types-data (3.2021.1115) + mime-types-data (3.2022.0105) mini_mime (1.1.2) mini_portile2 (2.7.1) minitest (5.15.0) @@ -418,7 +418,7 @@ GEM parslet (2.0.0) pastel (0.8.0) tty-color (~> 0.5) - pg (1.3.1) + pg (1.3.2) pghero (2.8.2) activerecord (>= 5) pkg-config (1.4.7) @@ -442,7 +442,7 @@ GEM public_suffix (4.0.6) puma (5.6.2) nio4r (~> 2.0) - pundit (2.1.1) + pundit (2.2.0) activesupport (>= 3.0.0) raabro (1.4.0) racc (1.6.0) @@ -455,20 +455,20 @@ GEM rack rack-test (1.1.0) rack (>= 1.0, < 3) - rails (6.1.4.4) - actioncable (= 6.1.4.4) - actionmailbox (= 6.1.4.4) - actionmailer (= 6.1.4.4) - actionpack (= 6.1.4.4) - actiontext (= 6.1.4.4) - actionview (= 6.1.4.4) - activejob (= 6.1.4.4) - activemodel (= 6.1.4.4) - activerecord (= 6.1.4.4) - activestorage (= 6.1.4.4) - activesupport (= 6.1.4.4) + rails (6.1.4.6) + actioncable (= 6.1.4.6) + actionmailbox (= 6.1.4.6) + actionmailer (= 6.1.4.6) + actionpack (= 6.1.4.6) + actiontext (= 6.1.4.6) + actionview (= 6.1.4.6) + activejob (= 6.1.4.6) + activemodel (= 6.1.4.6) + activerecord (= 6.1.4.6) + activestorage (= 6.1.4.6) + activesupport (= 6.1.4.6) bundler (>= 1.15.0) - railties (= 6.1.4.4) + railties (= 6.1.4.6) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) @@ -484,9 +484,9 @@ GEM railties (>= 6.0.0, < 7) rails-settings-cached (0.6.6) rails (>= 4.2.0) - railties (6.1.4.4) - actionpack (= 6.1.4.4) - activesupport (= 6.1.4.4) + railties (6.1.4.6) + actionpack (= 6.1.4.6) + activesupport (= 6.1.4.6) method_source rake (>= 0.13) thor (~> 1.0) @@ -509,19 +509,19 @@ GEM rexml (3.2.5) rotp (6.2.0) rpam2 (4.0.2) - rqrcode (2.1.0) + rqrcode (2.1.1) chunky_png (~> 1.0) rqrcode_core (~> 1.0) rqrcode_core (1.2.0) - rspec-core (3.10.1) - rspec-support (~> 3.10.0) - rspec-expectations (3.10.1) + rspec-core (3.11.0) + rspec-support (~> 3.11.0) + rspec-expectations (3.11.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.10.0) - rspec-mocks (3.10.2) + rspec-support (~> 3.11.0) + rspec-mocks (3.11.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.10.0) - rspec-rails (5.0.2) + rspec-support (~> 3.11.0) + rspec-rails (5.1.0) actionpack (>= 5.2) activesupport (>= 5.2) railties (>= 5.2) @@ -532,7 +532,7 @@ GEM rspec-sidekiq (3.1.0) rspec-core (~> 3.0, >= 3.0.0) sidekiq (>= 2.4.0) - rspec-support (3.10.3) + rspec-support (3.11.0) rspec_junit_formatter (0.5.1) rspec-core (>= 2, < 4, != 2.12.0) rubocop (1.25.1) @@ -562,7 +562,7 @@ GEM sanitize (6.0.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) - scenic (1.5.5) + scenic (1.6.0) activerecord (>= 4.0.0) railties (>= 4.0.0) securecompare (1.0.0) @@ -685,7 +685,7 @@ DEPENDENCIES active_model_serializers (~> 0.10) active_record_query_trace (~> 1.8) addressable (~> 2.8) - annotate (~> 3.1) + annotate (~> 3.2) aws-sdk-s3 (~> 1.112) better_errors (~> 2.9) binding_of_caller (~> 1.0) @@ -732,7 +732,7 @@ DEPENDENCIES json-ld json-ld-preloaded (~> 3.2) kaminari (~> 1.2) - kt-paperclip (~> 7.0) + kt-paperclip (~> 7.1) letter_opener (~> 1.7) letter_opener_web (~> 2.0) link_header (~> 0.0) @@ -761,7 +761,7 @@ DEPENDENCIES pry-byebug (~> 3.9) pry-rails (~> 0.3) puma (~> 5.6) - pundit (~> 2.1) + pundit (~> 2.2) rack (~> 2.2.3) rack-attack (~> 6.5) rack-cors (~> 1.1) @@ -775,14 +775,14 @@ DEPENDENCIES redis-namespace (~> 1.8) rexml (~> 3.2) rqrcode (~> 2.1) - rspec-rails (~> 5.0) + rspec-rails (~> 5.1) rspec-sidekiq (~> 3.1) rspec_junit_formatter (~> 0.5) rubocop (~> 1.25) rubocop-rails (~> 2.13) ruby-progressbar (~> 1.11) sanitize (~> 6.0) - scenic (~> 1.5) + scenic (~> 1.6) sidekiq (~> 6.4) sidekiq-bulk (~> 0.2.0) sidekiq-scheduler (~> 3.1) diff --git a/Vagrantfile b/Vagrantfile index aeff2f233..0d44b4d23 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -33,11 +33,9 @@ sudo apt-get install \ redis-tools \ postgresql \ postgresql-contrib \ - protobuf-compiler \ yarn \ libicu-dev \ libidn11-dev \ - libprotobuf-dev \ libreadline-dev \ libpam0g-dev \ -y diff --git a/app/controllers/admin/accounts_controller.rb b/app/controllers/admin/accounts_controller.rb index e7f56e243..e0ae71b9f 100644 --- a/app/controllers/admin/accounts_controller.rb +++ b/app/controllers/admin/accounts_controller.rb @@ -28,7 +28,7 @@ module Admin @deletion_request = @account.deletion_request @account_moderation_note = current_account.account_moderation_notes.new(target_account: @account) @moderation_notes = @account.targeted_moderation_notes.latest - @warnings = @account.strikes.custom.latest + @warnings = @account.strikes.includes(:target_account, :account, :appeal).latest @domain_block = DomainBlock.rule_for(@account.domain) end @@ -146,7 +146,7 @@ module Admin end def filter_params - params.slice(*AccountFilter::KEYS).permit(*AccountFilter::KEYS) + params.slice(:page, *AccountFilter::KEYS).permit(:page, *AccountFilter::KEYS) end def form_account_batch_params diff --git a/app/controllers/admin/dashboard_controller.rb b/app/controllers/admin/dashboard_controller.rb index f0a935411..e376baab2 100644 --- a/app/controllers/admin/dashboard_controller.rb +++ b/app/controllers/admin/dashboard_controller.rb @@ -8,6 +8,7 @@ module Admin @pending_users_count = User.pending.count @pending_reports_count = Report.unresolved.count @pending_tags_count = Tag.pending_review.count + @pending_appeals_count = Appeal.pending.count end private diff --git a/app/controllers/admin/disputes/appeals_controller.rb b/app/controllers/admin/disputes/appeals_controller.rb new file mode 100644 index 000000000..32e5e2f6f --- /dev/null +++ b/app/controllers/admin/disputes/appeals_controller.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +class Admin::Disputes::AppealsController < Admin::BaseController + before_action :set_appeal, except: :index + + def index + authorize :appeal, :index? + + @appeals = filtered_appeals.page(params[:page]) + end + + def approve + authorize @appeal, :approve? + log_action :approve, @appeal + ApproveAppealService.new.call(@appeal, current_account) + redirect_to disputes_strike_path(@appeal.strike) + end + + def reject + authorize @appeal, :approve? + log_action :reject, @appeal + @appeal.reject!(current_account) + UserMailer.appeal_rejected(@appeal.account.user, @appeal) + redirect_to disputes_strike_path(@appeal.strike) + end + + private + + def filtered_appeals + Admin::AppealFilter.new(filter_params.with_defaults(status: 'pending')).results.includes(strike: :account) + end + + def filter_params + params.slice(:page, *Admin::AppealFilter::KEYS).permit(:page, *Admin::AppealFilter::KEYS) + end + + def set_appeal + @appeal = Appeal.find(params[:id]) + end +end diff --git a/app/controllers/api/web/push_subscriptions_controller.rb b/app/controllers/api/web/push_subscriptions_controller.rb index db2512e5f..5167928e9 100644 --- a/app/controllers/api/web/push_subscriptions_controller.rb +++ b/app/controllers/api/web/push_subscriptions_controller.rb @@ -17,17 +17,7 @@ class Api::Web::PushSubscriptionsController < Api::Web::BaseController data = { policy: 'all', - - alerts: { - follow: alerts_enabled, - follow_request: alerts_enabled, - favourite: alerts_enabled, - reblog: alerts_enabled, - mention: alerts_enabled, - poll: alerts_enabled, - status: alerts_enabled, - update: alerts_enabled, - }, + alerts: Notification::TYPES.index_with { alerts_enabled }, } data.deep_merge!(data_params) if params[:data] @@ -62,15 +52,6 @@ class Api::Web::PushSubscriptionsController < Api::Web::BaseController end def data_params - @data_params ||= params.require(:data).permit(:policy, alerts: [ - :follow, - :follow_request, - :favourite, - :reblog, - :mention, - :poll, - :status, - :update, - ]) + @data_params ||= params.require(:data).permit(:policy, alerts: Notification::TYPES) end end diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb index 6b1f3fa82..5d32fe66e 100644 --- a/app/controllers/auth/registrations_controller.rb +++ b/app/controllers/auth/registrations_controller.rb @@ -10,6 +10,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController before_action :configure_sign_up_params, only: [:create] before_action :set_pack before_action :set_sessions, only: [:edit, :update] + before_action :set_strikes, only: [:edit, :update] before_action :set_instance_presenter, only: [:new, :create, :update] before_action :set_body_classes, only: [:new, :create, :edit, :update] before_action :require_not_suspended!, only: [:update] @@ -116,8 +117,10 @@ class Auth::RegistrationsController < Devise::RegistrationsController end def set_invite - invite = invite_code.present? ? Invite.find_by(code: invite_code) : nil - @invite = invite&.valid_for_use? ? invite : nil + @invite = begin + invite = Invite.find_by(code: invite_code) if invite_code.present? + invite if invite&.valid_for_use? + end end def determine_layout @@ -128,6 +131,10 @@ class Auth::RegistrationsController < Devise::RegistrationsController @sessions = current_user.session_activations end + def set_strikes + @strikes = current_account.strikes.active.latest + end + def require_not_suspended! forbidden if current_account.suspended? end diff --git a/app/controllers/concerns/authorization.rb b/app/controllers/concerns/authorization.rb index 95a37e379..05260cc8b 100644 --- a/app/controllers/concerns/authorization.rb +++ b/app/controllers/concerns/authorization.rb @@ -3,7 +3,7 @@ module Authorization extend ActiveSupport::Concern - include Pundit + include Pundit::Authorization def pundit_user current_account diff --git a/app/controllers/concerns/localized.rb b/app/controllers/concerns/localized.rb index f7b62f09c..173316800 100644 --- a/app/controllers/concerns/localized.rb +++ b/app/controllers/concerns/localized.rb @@ -14,7 +14,7 @@ module Localized private def requested_locale - requested_locale_name = available_locale_or_nil(params[:locale]) + requested_locale_name = available_locale_or_nil(params[:lang]) requested_locale_name ||= available_locale_or_nil(current_user.locale) if respond_to?(:user_signed_in?) && user_signed_in? requested_locale_name ||= http_accept_language if ENV['DEFAULT_LOCALE'].blank? requested_locale_name diff --git a/app/controllers/disputes/appeals_controller.rb b/app/controllers/disputes/appeals_controller.rb new file mode 100644 index 000000000..eefd92b5a --- /dev/null +++ b/app/controllers/disputes/appeals_controller.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class Disputes::AppealsController < Disputes::BaseController + before_action :set_strike + + def create + authorize @strike, :appeal? + + @appeal = AppealService.new.call(@strike, appeal_params[:text]) + + redirect_to disputes_strike_path(@strike), notice: I18n.t('disputes.strikes.appealed_msg') + rescue ActiveRecord::RecordInvalid => e + @appeal = e.record + render template: 'disputes/strikes/show' + end + + private + + def set_strike + @strike = current_account.strikes.find(params[:strike_id]) + end + + def appeal_params + params.require(:appeal).permit(:text) + end +end diff --git a/app/controllers/disputes/base_controller.rb b/app/controllers/disputes/base_controller.rb new file mode 100644 index 000000000..7830c5524 --- /dev/null +++ b/app/controllers/disputes/base_controller.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +class Disputes::BaseController < ApplicationController + include Authorization + + layout 'admin' + + skip_before_action :require_functional! + + before_action :set_body_classes + before_action :authenticate_user! + before_action :set_pack + + private + + def set_pack + use_pack 'admin' + end + + def set_body_classes + @body_classes = 'admin' + end +end diff --git a/app/controllers/disputes/strikes_controller.rb b/app/controllers/disputes/strikes_controller.rb new file mode 100644 index 000000000..d41c5c727 --- /dev/null +++ b/app/controllers/disputes/strikes_controller.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class Disputes::StrikesController < Disputes::BaseController + before_action :set_strike + + def show + authorize @strike, :show? + + @appeal = @strike.appeal || @strike.build_appeal + end + + private + + def set_strike + @strike = AccountWarning.find(params[:id]) + end +end diff --git a/app/helpers/admin/account_moderation_notes_helper.rb b/app/helpers/admin/account_moderation_notes_helper.rb index 40b2a5289..2f08538ca 100644 --- a/app/helpers/admin/account_moderation_notes_helper.rb +++ b/app/helpers/admin/account_moderation_notes_helper.rb @@ -1,10 +1,10 @@ # frozen_string_literal: true module Admin::AccountModerationNotesHelper - def admin_account_link_to(account) + def admin_account_link_to(account, path: nil) return if account.nil? - link_to admin_account_path(account.id), class: name_tag_classes(account), title: account.acct do + link_to path || admin_account_path(account.id), class: name_tag_classes(account), title: account.acct do safe_join([ image_tag(account.avatar.url, width: 15, height: 15, alt: display_name(account), class: 'avatar'), content_tag(:span, account.acct, class: 'username'), diff --git a/app/helpers/admin/action_logs_helper.rb b/app/helpers/admin/action_logs_helper.rb index f3aa4be4f..47eeeaac3 100644 --- a/app/helpers/admin/action_logs_helper.rb +++ b/app/helpers/admin/action_logs_helper.rb @@ -33,6 +33,8 @@ module Admin::ActionLogsHelper "#{record.ip}/#{record.ip.prefix} (#{I18n.t("simple_form.labels.ip_block.severities.#{record.severity}")})" when 'Instance' record.domain + when 'Appeal' + link_to record.account.acct, disputes_strike_path(record.strike) end end diff --git a/app/helpers/admin/trends/statuses_helper.rb b/app/helpers/admin/trends/statuses_helper.rb new file mode 100644 index 000000000..d16e3dd12 --- /dev/null +++ b/app/helpers/admin/trends/statuses_helper.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +module Admin::Trends::StatusesHelper + def one_line_preview(status) + text = begin + if status.local? + status.text.split("\n").first + else + Nokogiri::HTML(status.text).css('html > body > *').first&.text + end + end + + return '' if text.blank? + + html = Formatter.instance.send(:encode, text) + html = Formatter.instance.send(:encode_custom_emojis, html, status.emojis, prefers_autoplay?) + + html.html_safe # rubocop:disable Rails/OutputSafety + end +end diff --git a/app/javascript/flavours/glitch/actions/notifications.js b/app/javascript/flavours/glitch/actions/notifications.js index 40430102c..42ad39efa 100644 --- a/app/javascript/flavours/glitch/actions/notifications.js +++ b/app/javascript/flavours/glitch/actions/notifications.js @@ -57,7 +57,7 @@ defineMessages({ }); const fetchRelatedRelationships = (dispatch, notifications) => { - const accountIds = notifications.filter(item => item.type === 'follow').map(item => item.account.id); + const accountIds = notifications.filter(item => ['follow', 'follow_request', 'admin.sign_up'].indexOf(item.type) !== -1).map(item => item.account.id); if (accountIds > 0) { dispatch(fetchRelationships(accountIds)); @@ -144,6 +144,7 @@ const excludeTypesFromFilter = filter => { 'poll', 'status', 'update', + 'admin.sign_up', ]); return allTypes.filterNot(item => item === filter).toJS(); diff --git a/app/javascript/flavours/glitch/actions/reports.js b/app/javascript/flavours/glitch/actions/reports.js index 80c3b3280..333bc71f4 100644 --- a/app/javascript/flavours/glitch/actions/reports.js +++ b/app/javascript/flavours/glitch/actions/reports.js @@ -1,89 +1,38 @@ import api from 'flavours/glitch/util/api'; -import { openModal, closeModal } from './modal'; - -export const REPORT_INIT = 'REPORT_INIT'; -export const REPORT_CANCEL = 'REPORT_CANCEL'; +import { openModal } from './modal'; export const REPORT_SUBMIT_REQUEST = 'REPORT_SUBMIT_REQUEST'; export const REPORT_SUBMIT_SUCCESS = 'REPORT_SUBMIT_SUCCESS'; export const REPORT_SUBMIT_FAIL = 'REPORT_SUBMIT_FAIL'; -export const REPORT_STATUS_TOGGLE = 'REPORT_STATUS_TOGGLE'; -export const REPORT_COMMENT_CHANGE = 'REPORT_COMMENT_CHANGE'; -export const REPORT_FORWARD_CHANGE = 'REPORT_FORWARD_CHANGE'; - -export function initReport(account, status) { - return dispatch => { - dispatch({ - type: REPORT_INIT, - account, - status, - }); - - dispatch(openModal('REPORT')); - }; -}; - -export function cancelReport() { - return { - type: REPORT_CANCEL, - }; -}; - -export function toggleStatusReport(statusId, checked) { - return { - type: REPORT_STATUS_TOGGLE, - statusId, - checked, - }; -}; - -export function submitReport() { - return (dispatch, getState) => { - dispatch(submitReportRequest()); - - api(getState).post('/api/v1/reports', { - account_id: getState().getIn(['reports', 'new', 'account_id']), - status_ids: getState().getIn(['reports', 'new', 'status_ids']), - comment: getState().getIn(['reports', 'new', 'comment']), - forward: getState().getIn(['reports', 'new', 'forward']), - }).then(response => { - dispatch(closeModal()); - dispatch(submitReportSuccess(response.data)); - }).catch(error => dispatch(submitReportFail(error))); - }; -}; - -export function submitReportRequest() { - return { - type: REPORT_SUBMIT_REQUEST, - }; -}; - -export function submitReportSuccess(report) { - return { - type: REPORT_SUBMIT_SUCCESS, - report, - }; -}; - -export function submitReportFail(error) { - return { - type: REPORT_SUBMIT_FAIL, - error, - }; -}; - -export function changeReportComment(comment) { - return { - type: REPORT_COMMENT_CHANGE, - comment, - }; -}; - -export function changeReportForward(forward) { - return { - type: REPORT_FORWARD_CHANGE, - forward, - }; -}; +export const initReport = (account, status) => dispatch => + dispatch(openModal('REPORT', { + accountId: account.get('id'), + statusId: status?.get('id'), + })); + +export const submitReport = (params, onSuccess, onFail) => (dispatch, getState) => { + dispatch(submitReportRequest()); + + api(getState).post('/api/v1/reports', params).then(response => { + dispatch(submitReportSuccess(response.data)); + if (onSuccess) onSuccess(); + }).catch(error => { + dispatch(submitReportFail(error)); + if (onFail) onFail(); + }); +}; + +export const submitReportRequest = () => ({ + type: REPORT_SUBMIT_REQUEST, +}); + +export const submitReportSuccess = report => ({ + type: REPORT_SUBMIT_SUCCESS, + report, +}); + +export const submitReportFail = error => ({ + type: REPORT_SUBMIT_FAIL, + error, +}); diff --git a/app/javascript/flavours/glitch/actions/rules.js b/app/javascript/flavours/glitch/actions/rules.js new file mode 100644 index 000000000..b95045e81 --- /dev/null +++ b/app/javascript/flavours/glitch/actions/rules.js @@ -0,0 +1,27 @@ +import api from 'flavours/glitch/util/api'; + +export const RULES_FETCH_REQUEST = 'RULES_FETCH_REQUEST'; +export const RULES_FETCH_SUCCESS = 'RULES_FETCH_SUCCESS'; +export const RULES_FETCH_FAIL = 'RULES_FETCH_FAIL'; + +export const fetchRules = () => (dispatch, getState) => { + dispatch(fetchRulesRequest()); + + api(getState) + .get('/api/v1/instance').then(({ data }) => dispatch(fetchRulesSuccess(data.rules))) + .catch(err => dispatch(fetchRulesFail(err))); +}; + +const fetchRulesRequest = () => ({ + type: RULES_FETCH_REQUEST, +}); + +const fetchRulesSuccess = rules => ({ + type: RULES_FETCH_SUCCESS, + rules, +}); + +const fetchRulesFail = error => ({ + type: RULES_FETCH_FAIL, + error, +}); diff --git a/app/javascript/flavours/glitch/components/check.js b/app/javascript/flavours/glitch/components/check.js new file mode 100644 index 000000000..ee2ef1595 --- /dev/null +++ b/app/javascript/flavours/glitch/components/check.js @@ -0,0 +1,9 @@ +import React from 'react'; + +const Check = () => ( + <svg width='14' height='11' viewBox='0 0 14 11'> + <path d='M11.264 0L5.26 6.004 2.103 2.847 0 4.95l5.26 5.26 8.108-8.107L11.264 0' fill='currentColor' fillRule='evenodd' /> + </svg> +); + +export default Check; diff --git a/app/javascript/flavours/glitch/features/emoji_picker/index.js b/app/javascript/flavours/glitch/features/emoji_picker/index.js index 78f691c98..5de9fe107 100644 --- a/app/javascript/flavours/glitch/features/emoji_picker/index.js +++ b/app/javascript/flavours/glitch/features/emoji_picker/index.js @@ -250,7 +250,7 @@ class EmojiPickerMenu extends React.PureComponent { state = { modifierOpen: false, - placement: null, + readyToFocus: false, }; handleDocumentClick = e => { @@ -262,6 +262,16 @@ class EmojiPickerMenu extends React.PureComponent { componentDidMount () { document.addEventListener('click', this.handleDocumentClick, false); document.addEventListener('touchend', this.handleDocumentClick, listenerOptions); + + // Because of https://github.com/react-bootstrap/react-bootstrap/issues/2614 we need + // to wait for a frame before focusing + requestAnimationFrame(() => { + this.setState({ readyToFocus: true }); + if (this.node) { + const element = this.node.querySelector('input[type="search"]'); + if (element) element.focus(); + } + }); } componentWillUnmount () { @@ -361,7 +371,7 @@ class EmojiPickerMenu extends React.PureComponent { showSkinTones={false} backgroundImageFn={backgroundImageFn} notFound={notFoundFn} - autoFocus + autoFocus={this.state.readyToFocus} emojiTooltip native={useSystemEmojiFont} /> @@ -396,6 +406,7 @@ class EmojiPickerDropdown extends React.PureComponent { state = { active: false, loading: false, + placement: null, }; setRef = (c) => { diff --git a/app/javascript/flavours/glitch/features/notifications/components/admin_signup.js b/app/javascript/flavours/glitch/features/notifications/components/admin_signup.js new file mode 100644 index 000000000..355ebef94 --- /dev/null +++ b/app/javascript/flavours/glitch/features/notifications/components/admin_signup.js @@ -0,0 +1,101 @@ +// Package imports. +import React from 'react'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import PropTypes from 'prop-types'; +import { FormattedMessage } from 'react-intl'; +import ImmutablePureComponent from 'react-immutable-pure-component'; +import { HotKeys } from 'react-hotkeys'; +import classNames from 'classnames'; + +// Our imports. +import Permalink from 'flavours/glitch/components/permalink'; +import AccountContainer from 'flavours/glitch/containers/account_container'; +import NotificationOverlayContainer from '../containers/overlay_container'; +import Icon from 'flavours/glitch/components/icon'; + +export default class NotificationFollow extends ImmutablePureComponent { + + static propTypes = { + hidden: PropTypes.bool, + id: PropTypes.string.isRequired, + account: ImmutablePropTypes.map.isRequired, + notification: ImmutablePropTypes.map.isRequired, + unread: PropTypes.bool, + }; + + handleMoveUp = () => { + const { notification, onMoveUp } = this.props; + onMoveUp(notification.get('id')); + } + + handleMoveDown = () => { + const { notification, onMoveDown } = this.props; + onMoveDown(notification.get('id')); + } + + handleOpen = () => { + this.handleOpenProfile(); + } + + handleOpenProfile = () => { + const { notification } = this.props; + this.context.router.history.push(`/@${notification.getIn(['account', 'acct'])}`); + } + + handleMention = e => { + e.preventDefault(); + + const { notification, onMention } = this.props; + onMention(notification.get('account'), this.context.router.history); + } + + getHandlers () { + return { + moveUp: this.handleMoveUp, + moveDown: this.handleMoveDown, + open: this.handleOpen, + openProfile: this.handleOpenProfile, + mention: this.handleMention, + reply: this.handleMention, + }; + } + + render () { + const { account, notification, hidden, unread } = this.props; + + // Links to the display name. + const displayName = account.get('display_name_html') || account.get('username'); + const link = ( + <bdi><Permalink + className='notification__display-name' + href={account.get('url')} + title={account.get('acct')} + to={`/@${account.get('acct')}`} + dangerouslySetInnerHTML={{ __html: displayName }} + /></bdi> + ); + + // Renders. + return ( + <HotKeys handlers={this.getHandlers()}> + <div className={classNames('notification notification-admin-sign-up focusable', { unread })} tabIndex='0'> + <div className='notification__message'> + <div className='notification__favourite-icon-wrapper'> + <Icon fixedWidth id='user-plus' /> + </div> + + <FormattedMessage + id='notification.admin.sign_up' + defaultMessage='{name} signed up' + values={{ name: link }} + /> + </div> + + <AccountContainer hidden={hidden} id={account.get('id')} withNote={false} /> + <NotificationOverlayContainer notification={notification} /> + </div> + </HotKeys> + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/notifications/components/column_settings.js b/app/javascript/flavours/glitch/features/notifications/components/column_settings.js index 569ba4db0..0dad079ad 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/column_settings.js +++ b/app/javascript/flavours/glitch/features/notifications/components/column_settings.js @@ -6,6 +6,7 @@ import ClearColumnButton from './clear_column_button'; import GrantPermissionButton from './grant_permission_button'; import SettingToggle from './setting_toggle'; import PillBarButton from './pill_bar_button'; +import { isStaff } from 'flavours/glitch/util/initial_state'; export default class ColumnSettings extends React.PureComponent { @@ -156,7 +157,7 @@ export default class ColumnSettings extends React.PureComponent { </div> <div role='group' aria-labelledby='notifications-update'> - <span id='notifications-status' className='column-settings__section'><FormattedMessage id='notifications.column_settings.update' defaultMessage='Edits:' /></span> + <span id='notifications-update' className='column-settings__section'><FormattedMessage id='notifications.column_settings.update' defaultMessage='Edits:' /></span> <div className='column-settings__pillbar'> <PillBarButton disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'update']} onChange={onChange} label={alertStr} /> @@ -165,6 +166,19 @@ export default class ColumnSettings extends React.PureComponent { <PillBarButton prefix='notifications' settings={settings} settingPath={['sounds', 'update']} onChange={onChange} label={soundStr} /> </div> </div> + + {isStaff && ( + <div role='group' aria-labelledby='notifications-admin-sign-up'> + <span id='notifications-status' className='column-settings__section'><FormattedMessage id='notifications.column_settings.admin.sign_up' defaultMessage='New sign-ups:' /></span> + + <div className='column-settings__pillbar'> + <PillBarButton disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'admin.sign_up']} onChange={onChange} label={alertStr} /> + {showPushSettings && <PillBarButton prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'admin.sign_up']} onChange={this.onPushChange} label={pushStr} />} + <PillBarButton prefix='notifications' settings={settings} settingPath={['shows', 'admin.sign_up']} onChange={onChange} label={showStr} /> + <PillBarButton prefix='notifications' settings={settings} settingPath={['sounds', 'admin.sign_up']} onChange={onChange} label={soundStr} /> + </div> + </div> + )} </div> ); } diff --git a/app/javascript/flavours/glitch/features/notifications/components/notification.js b/app/javascript/flavours/glitch/features/notifications/components/notification.js index 1cf205898..e0cd3c7a6 100644 --- a/app/javascript/flavours/glitch/features/notifications/components/notification.js +++ b/app/javascript/flavours/glitch/features/notifications/components/notification.js @@ -8,6 +8,7 @@ import ImmutablePureComponent from 'react-immutable-pure-component'; import StatusContainer from 'flavours/glitch/containers/status_container'; import NotificationFollow from './follow'; import NotificationFollowRequestContainer from '../containers/follow_request_container'; +import NotificationAdminSignup from './admin_signup'; export default class Notification extends ImmutablePureComponent { @@ -63,6 +64,19 @@ export default class Notification extends ImmutablePureComponent { unread={this.props.unread} /> ); + case 'admin.sign_up': + return ( + <NotificationAdminSignup + hidden={hidden} + id={notification.get('id')} + account={notification.get('account')} + notification={notification} + onMoveDown={onMoveDown} + onMoveUp={onMoveUp} + onMention={onMention} + unread={this.props.unread} + /> + ); case 'mention': return ( <StatusContainer diff --git a/app/javascript/flavours/glitch/features/report/category.js b/app/javascript/flavours/glitch/features/report/category.js new file mode 100644 index 000000000..ddbc82563 --- /dev/null +++ b/app/javascript/flavours/glitch/features/report/category.js @@ -0,0 +1,93 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import Button from 'flavours/glitch/components/button'; +import Option from './components/option'; + +const messages = defineMessages({ + dislike: { id: 'report.reasons.dislike', defaultMessage: 'I don\'t like it' }, + dislike_description: { id: 'report.reasons.dislike_description', defaultMessage: 'It is not something you want to see' }, + spam: { id: 'report.reasons.spam', defaultMessage: 'It\'s spam' }, + spam_description: { id: 'report.reasons.spam_description', defaultMessage: 'Malicious links, fake engagement, or repetetive replies' }, + violation: { id: 'report.reasons.violation', defaultMessage: 'It violates server rules' }, + violation_description: { id: 'report.reasons.violation_description', defaultMessage: 'You are aware that it breaks specific rules' }, + other: { id: 'report.reasons.other', defaultMessage: 'It\'s something else' }, + other_description: { id: 'report.reasons.other_description', defaultMessage: 'The issue does not fit into other categories' }, + status: { id: 'report.category.title_status', defaultMessage: 'post' }, + account: { id: 'report.category.title_account', defaultMessage: 'profile' }, +}); + +export default @injectIntl +class Category extends React.PureComponent { + + static propTypes = { + onNextStep: PropTypes.func.isRequired, + category: PropTypes.string, + onChangeCategory: PropTypes.func.isRequired, + startedFrom: PropTypes.oneOf(['status', 'account']), + intl: PropTypes.object.isRequired, + }; + + handleNextClick = () => { + const { onNextStep, category } = this.props; + + switch(category) { + case 'dislike': + onNextStep('thanks'); + break; + case 'violation': + onNextStep('rules'); + break; + default: + onNextStep('statuses'); + break; + } + }; + + handleCategoryToggle = (value, checked) => { + const { onChangeCategory } = this.props; + + if (checked) { + onChangeCategory(value); + } + }; + + render () { + const { category, startedFrom, intl } = this.props; + + const options = [ + 'dislike', + 'spam', + 'violation', + 'other', + ]; + + return ( + <React.Fragment> + <h3 className='report-dialog-modal__title'><FormattedMessage id='report.category.title' defaultMessage="Tell us what's going on with this {type}" values={{ type: intl.formatMessage(messages[startedFrom]) }} /></h3> + <p className='report-dialog-modal__lead'><FormattedMessage id='report.category.subtitle' defaultMessage='Choose the best match' /></p> + + <div> + {options.map(item => ( + <Option + key={item} + name='category' + value={item} + checked={category === item} + onToggle={this.handleCategoryToggle} + label={intl.formatMessage(messages[item])} + description={intl.formatMessage(messages[`${item}_description`])} + /> + ))} + </div> + + <div className='flex-spacer' /> + + <div className='report-dialog-modal__actions'> + <Button onClick={this.handleNextClick} disabled={category === null}><FormattedMessage id='report.next' defaultMessage='Next' /></Button> + </div> + </React.Fragment> + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/report/comment.js b/app/javascript/flavours/glitch/features/report/comment.js new file mode 100644 index 000000000..b2663bbf2 --- /dev/null +++ b/app/javascript/flavours/glitch/features/report/comment.js @@ -0,0 +1,83 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { injectIntl, defineMessages, FormattedMessage } from 'react-intl'; +import Button from 'flavours/glitch/components/button'; +import Toggle from 'react-toggle'; + +const messages = defineMessages({ + placeholder: { id: 'report.placeholder', defaultMessage: 'Type or paste additional comments' }, +}); + +export default @injectIntl +class Comment extends React.PureComponent { + + static propTypes = { + onSubmit: PropTypes.func.isRequired, + comment: PropTypes.string.isRequired, + onChangeComment: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, + isSubmitting: PropTypes.bool, + forward: PropTypes.bool, + isRemote: PropTypes.bool, + domain: PropTypes.string, + onChangeForward: PropTypes.func.isRequired, + }; + + handleClick = () => { + const { onSubmit } = this.props; + onSubmit(); + }; + + handleChange = e => { + const { onChangeComment } = this.props; + onChangeComment(e.target.value); + }; + + handleKeyDown = e => { + if (e.keyCode === 13 && (e.ctrlKey || e.metaKey)) { + this.handleClick(); + } + }; + + handleForwardChange = e => { + const { onChangeForward } = this.props; + onChangeForward(e.target.checked); + }; + + render () { + const { comment, isRemote, forward, domain, isSubmitting, intl } = this.props; + + return ( + <React.Fragment> + <h3 className='report-dialog-modal__title'><FormattedMessage id='report.comment.title' defaultMessage='Is there anything else you think we should know?' /></h3> + + <textarea + className='report-dialog-modal__textarea' + placeholder={intl.formatMessage(messages.placeholder)} + value={comment} + onChange={this.handleChange} + onKeyDown={this.handleKeyDown} + disabled={isSubmitting} + /> + + {isRemote && ( + <React.Fragment> + <p className='report-dialog-modal__lead'><FormattedMessage id='report.forward_hint' defaultMessage='The account is from another server. Send an anonymized copy of the report there as well?' /></p> + + <label className='report-dialog-modal__toggle'> + <Toggle checked={forward} disabled={isSubmitting} onChange={this.handleForwardChange} /> + <FormattedMessage id='report.forward' defaultMessage='Forward to {target}' values={{ target: domain }} /> + </label> + </React.Fragment> + )} + + <div className='flex-spacer' /> + + <div className='report-dialog-modal__actions'> + <Button onClick={this.handleClick}><FormattedMessage id='report.submit' defaultMessage='Submit report' /></Button> + </div> + </React.Fragment> + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/report/components/option.js b/app/javascript/flavours/glitch/features/report/components/option.js new file mode 100644 index 000000000..7e94f0654 --- /dev/null +++ b/app/javascript/flavours/glitch/features/report/components/option.js @@ -0,0 +1,60 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import classNames from 'classnames'; +import Check from 'flavours/glitch/components/check'; + +export default class Option extends React.PureComponent { + + static propTypes = { + name: PropTypes.string.isRequired, + value: PropTypes.string.isRequired, + checked: PropTypes.bool, + label: PropTypes.node, + description: PropTypes.node, + onToggle: PropTypes.func, + multiple: PropTypes.bool, + labelComponent: PropTypes.node, + }; + + handleKeyPress = e => { + const { value, checked, onToggle } = this.props; + + if (e.key === 'Enter' || e.key === ' ') { + e.stopPropagation(); + e.preventDefault(); + onToggle(value, !checked); + } + } + + handleChange = e => { + const { value, onToggle } = this.props; + onToggle(value, e.target.checked); + } + + render () { + const { name, value, checked, label, labelComponent, description, multiple } = this.props; + + return ( + <label className='dialog-option poll__option selectable'> + <input type={multiple ? 'checkbox' : 'radio'} name={name} value={value} checked={checked} onChange={this.handleChange} /> + + <span + className={classNames('poll__input', { active: checked, checkbox: multiple })} + tabIndex='0' + role='radio' + onKeyPress={this.handleKeyPress} + aria-checked={checked} + aria-label={label} + >{checked && <Check />}</span> + + {labelComponent ? labelComponent : ( + <span className='poll__option__text'> + <strong>{label}</strong> + {description} + </span> + )} + </label> + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/report/components/status_check_box.js b/app/javascript/flavours/glitch/features/report/components/status_check_box.js index cc49042fc..adb5e77a7 100644 --- a/app/javascript/flavours/glitch/features/report/components/status_check_box.js +++ b/app/javascript/flavours/glitch/features/report/components/status_check_box.js @@ -1,23 +1,32 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import Toggle from 'react-toggle'; import noop from 'lodash/noop'; import StatusContent from 'flavours/glitch/components/status_content'; import { MediaGallery, Video } from 'flavours/glitch/util/async-components'; import Bundle from 'flavours/glitch/features/ui/components/bundle'; +import Avatar from 'flavours/glitch/components/avatar'; +import DisplayName from 'flavours/glitch/components/display_name'; +import RelativeTimestamp from 'flavours/glitch/components/relative_timestamp'; +import Option from './option'; export default class StatusCheckBox extends React.PureComponent { static propTypes = { + id: PropTypes.string.isRequired, status: ImmutablePropTypes.map.isRequired, checked: PropTypes.bool, onToggle: PropTypes.func.isRequired, - disabled: PropTypes.bool, + }; + + handleStatusesToggle = (value, checked) => { + const { onToggle } = this.props; + onToggle(value, checked); }; render () { - const { status, checked, onToggle, disabled } = this.props; + const { status, checked } = this.props; + let media = null; if (status.get('reblog')) { @@ -51,26 +60,45 @@ export default class StatusCheckBox extends React.PureComponent { } else { media = ( <Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery} > - {Component => <Component media={status.get('media_attachments')} sensitive={status.get('sensitive')} revealed={false} height={110} onOpenMedia={noop} />} + {Component => ( + <Component + media={status.get('media_attachments')} + sensitive={status.get('sensitive')} + revealed={false} + height={110} + onOpenMedia={noop} + /> + )} </Bundle> ); } } - return ( - <div className='status-check-box'> - <div className='status-check-box__status'> - <StatusContent - status={status} - media={media} - /> - </div> + const labelComponent = ( + <div className='status-check-box__status poll__option__text'> + <div className='detailed-status__display-name'> + <div className='detailed-status__display-avatar'> + <Avatar account={status.get('account')} size={46} /> + </div> - <div className='status-check-box-toggle'> - <Toggle checked={checked} onChange={onToggle} disabled={disabled} /> + <div><DisplayName account={status.get('account')} /> · <RelativeTimestamp timestamp={status.get('created_at')} /></div> </div> + + <StatusContent status={status} media={media} /> </div> ); + + return ( + <Option + name='status_ids' + value={status.get('id')} + checked={checked} + onToggle={this.handleStatusesToggle} + label={status.get('search_index')} + labelComponent={labelComponent} + multiple + /> + ); } } diff --git a/app/javascript/flavours/glitch/features/report/containers/status_check_box_container.js b/app/javascript/flavours/glitch/features/report/containers/status_check_box_container.js index 9bfd41ffc..aa34b3efd 100644 --- a/app/javascript/flavours/glitch/features/report/containers/status_check_box_container.js +++ b/app/javascript/flavours/glitch/features/report/containers/status_check_box_container.js @@ -1,19 +1,15 @@ import { connect } from 'react-redux'; import StatusCheckBox from '../components/status_check_box'; -import { toggleStatusReport } from 'flavours/glitch/actions/reports'; -import { Set as ImmutableSet } from 'immutable'; +import { makeGetStatus } from 'flavours/glitch/selectors'; -const mapStateToProps = (state, { id }) => ({ - status: state.getIn(['statuses', id]), - checked: state.getIn(['reports', 'new', 'status_ids'], ImmutableSet()).includes(id), -}); +const makeMapStateToProps = () => { + const getStatus = makeGetStatus(); -const mapDispatchToProps = (dispatch, { id }) => ({ + const mapStateToProps = (state, { id }) => ({ + status: getStatus(state, { id }), + }); - onToggle (e) { - dispatch(toggleStatusReport(id, e.target.checked)); - }, + return mapStateToProps; +}; -}); - -export default connect(mapStateToProps, mapDispatchToProps)(StatusCheckBox); +export default connect(makeMapStateToProps)(StatusCheckBox); diff --git a/app/javascript/flavours/glitch/features/report/rules.js b/app/javascript/flavours/glitch/features/report/rules.js new file mode 100644 index 000000000..4772e04a2 --- /dev/null +++ b/app/javascript/flavours/glitch/features/report/rules.js @@ -0,0 +1,64 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; +import { FormattedMessage } from 'react-intl'; +import Button from 'flavours/glitch/components/button'; +import Option from './components/option'; + +const mapStateToProps = state => ({ + rules: state.get('rules'), +}); + +export default @connect(mapStateToProps) +class Rules extends React.PureComponent { + + static propTypes = { + onNextStep: PropTypes.func.isRequired, + rules: ImmutablePropTypes.list, + selectedRuleIds: ImmutablePropTypes.set.isRequired, + onToggle: PropTypes.func.isRequired, + }; + + handleNextClick = () => { + const { onNextStep } = this.props; + onNextStep('statuses'); + }; + + handleRulesToggle = (value, checked) => { + const { onToggle } = this.props; + onToggle(value, checked); + }; + + render () { + const { rules, selectedRuleIds } = this.props; + + return ( + <React.Fragment> + <h3 className='report-dialog-modal__title'><FormattedMessage id='report.rules.title' defaultMessage='Which rules are being violated?' /></h3> + <p className='report-dialog-modal__lead'><FormattedMessage id='report.rules.subtitle' defaultMessage='Select all that apply' /></p> + + <div> + {rules.map(item => ( + <Option + key={item.get('id')} + name='rule_ids' + value={item.get('id')} + checked={selectedRuleIds.includes(item.get('id'))} + onToggle={this.handleRulesToggle} + label={item.get('text')} + multiple + /> + ))} + </div> + + <div className='flex-spacer' /> + + <div className='report-dialog-modal__actions'> + <Button onClick={this.handleNextClick} disabled={selectedRuleIds.size < 1}><FormattedMessage id='report.next' defaultMessage='Next' /></Button> + </div> + </React.Fragment> + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/report/statuses.js b/app/javascript/flavours/glitch/features/report/statuses.js new file mode 100644 index 000000000..69cfbb3e5 --- /dev/null +++ b/app/javascript/flavours/glitch/features/report/statuses.js @@ -0,0 +1,58 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; +import StatusCheckBox from 'flavours/glitch/features/report/containers/status_check_box_container'; +import { OrderedSet } from 'immutable'; +import { FormattedMessage } from 'react-intl'; +import Button from 'flavours/glitch/components/button'; + +const mapStateToProps = (state, { accountId }) => ({ + availableStatusIds: OrderedSet(state.getIn(['timelines', `account:${accountId}:with_replies`, 'items'])), +}); + +export default @connect(mapStateToProps) +class Statuses extends React.PureComponent { + + static propTypes = { + onNextStep: PropTypes.func.isRequired, + accountId: PropTypes.string.isRequired, + availableStatusIds: ImmutablePropTypes.set.isRequired, + selectedStatusIds: ImmutablePropTypes.set.isRequired, + onToggle: PropTypes.func.isRequired, + }; + + handleNextClick = () => { + const { onNextStep } = this.props; + onNextStep('comment'); + }; + + render () { + const { availableStatusIds, selectedStatusIds, onToggle } = this.props; + + return ( + <React.Fragment> + <h3 className='report-dialog-modal__title'><FormattedMessage id='report.statuses.title' defaultMessage='Are there any posts that back up this report?' /></h3> + <p className='report-dialog-modal__lead'><FormattedMessage id='report.statuses.subtitle' defaultMessage='Select all that apply' /></p> + + <div className='report-dialog-modal__statuses'> + {availableStatusIds.union(selectedStatusIds).map(statusId => ( + <StatusCheckBox + id={statusId} + key={statusId} + checked={selectedStatusIds.includes(statusId)} + onToggle={onToggle} + /> + ))} + </div> + + <div className='flex-spacer' /> + + <div className='report-dialog-modal__actions'> + <Button onClick={this.handleNextClick}><FormattedMessage id='report.next' defaultMessage='Next' /></Button> + </div> + </React.Fragment> + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/report/thanks.js b/app/javascript/flavours/glitch/features/report/thanks.js new file mode 100644 index 000000000..9c41baa7f --- /dev/null +++ b/app/javascript/flavours/glitch/features/report/thanks.js @@ -0,0 +1,84 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { FormattedMessage } from 'react-intl'; +import Button from 'flavours/glitch/components/button'; +import { connect } from 'react-redux'; +import { + unfollowAccount, + muteAccount, + blockAccount, +} from 'mastodon/actions/accounts'; + +const mapStateToProps = () => ({}); + +export default @connect(mapStateToProps) +class Thanks extends React.PureComponent { + + static propTypes = { + submitted: PropTypes.bool, + onClose: PropTypes.func.isRequired, + account: ImmutablePropTypes.map.isRequired, + dispatch: PropTypes.func.isRequired, + }; + + handleCloseClick = () => { + const { onClose } = this.props; + onClose(); + }; + + handleUnfollowClick = () => { + const { dispatch, account, onClose } = this.props; + dispatch(unfollowAccount(account.get('id'))); + onClose(); + }; + + handleMuteClick = () => { + const { dispatch, account, onClose } = this.props; + dispatch(muteAccount(account.get('id'))); + onClose(); + }; + + handleBlockClick = () => { + const { dispatch, account, onClose } = this.props; + dispatch(blockAccount(account.get('id'))); + onClose(); + }; + + render () { + const { account, submitted } = this.props; + + return ( + <React.Fragment> + <h3 className='report-dialog-modal__title'>{submitted ? <FormattedMessage id='report.thanks.title_actionable' defaultMessage="Thanks for reporting, we'll look into this." /> : <FormattedMessage id='report.thanks.title' defaultMessage="Don't want to see this?" />}</h3> + <p className='report-dialog-modal__lead'>{submitted ? <FormattedMessage id='report.thanks.take_action_actionable' defaultMessage='While we review this, you can take action against @{name}:' values={{ name: account.get('username') }} /> : <FormattedMessage id='report.thanks.take_action' defaultMessage='Here are your options for controlling what you see on Mastodon:' />}</p> + + {account.getIn(['relationship', 'following']) && ( + <React.Fragment> + <h4 className='report-dialog-modal__subtitle'><FormattedMessage id='report.unfollow' defaultMessage='Unfollow @{name}' values={{ name: account.get('username') }} /></h4> + <p className='report-dialog-modal__lead'><FormattedMessage id='report.unfollow_explanation' defaultMessage='You are following this account. To not see their posts in your home feed anymore, unfollow them.' /></p> + <Button secondary onClick={this.handleUnfollowClick}><FormattedMessage id='account.unfollow' defaultMessage='Unfollow' /></Button> + <hr /> + </React.Fragment> + )} + + <h4 className='report-dialog-modal__subtitle'><FormattedMessage id='account.mute' defaultMessage='Mute @{name}' values={{ name: account.get('username') }} /></h4> + <p className='report-dialog-modal__lead'><FormattedMessage id='report.mute_explanation' defaultMessage='You will not see their posts. They can still follow you and see your posts and will not know that they are muted.' /></p> + <Button secondary onClick={this.handleMuteClick}>{!account.getIn(['relationship', 'muting']) ? <FormattedMessage id='report.mute' defaultMessage='Mute' /> : <FormattedMessage id='account.muted' defaultMessage='Muted' />}</Button> + + <hr /> + + <h4 className='report-dialog-modal__subtitle'><FormattedMessage id='account.block' defaultMessage='Block @{name}' values={{ name: account.get('username') }} /></h4> + <p className='report-dialog-modal__lead'><FormattedMessage id='report.block_explanation' defaultMessage='You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.' /></p> + <Button secondary onClick={this.handleBlockClick}>{!account.getIn(['relationship', 'blocking']) ? <FormattedMessage id='report.block' defaultMessage='Block' /> : <FormattedMessage id='account.blocked' defaultMessage='Blocked' />}</Button> + + <div className='flex-spacer' /> + + <div className='report-dialog-modal__actions'> + <Button onClick={this.handleCloseClick}><FormattedMessage id='report.close' defaultMessage='Done' /></Button> + </div> + </React.Fragment> + ); + } + +} diff --git a/app/javascript/flavours/glitch/features/ui/components/report_modal.js b/app/javascript/flavours/glitch/features/ui/components/report_modal.js index 5cb7c5d07..dcbe94929 100644 --- a/app/javascript/flavours/glitch/features/ui/components/report_modal.js +++ b/app/javascript/flavours/glitch/features/ui/components/report_modal.js @@ -1,38 +1,32 @@ import React from 'react'; import { connect } from 'react-redux'; -import { changeReportComment, changeReportForward, submitReport } from 'flavours/glitch/actions/reports'; +import { submitReport } from 'flavours/glitch/actions/reports'; import { expandAccountTimeline } from 'flavours/glitch/actions/timelines'; +import { fetchRules } from 'flavours/glitch/actions/rules'; +import { fetchRelationships } from 'flavours/glitch/actions/accounts'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import { makeGetAccount } from 'flavours/glitch/selectors'; import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; -import StatusCheckBox from 'flavours/glitch/features/report/containers/status_check_box_container'; import { OrderedSet } from 'immutable'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import Button from 'flavours/glitch/components/button'; -import Toggle from 'react-toggle'; -import IconButton from '../../../components/icon_button'; +import IconButton from 'flavours/glitch/components/icon_button'; +import Category from 'flavours/glitch/features/report/category'; +import Statuses from 'flavours/glitch/features/report/statuses'; +import Rules from 'flavours/glitch/features/report/rules'; +import Comment from 'flavours/glitch/features/report/comment'; +import Thanks from 'flavours/glitch/features/report/thanks'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, - placeholder: { id: 'report.placeholder', defaultMessage: 'Additional comments' }, - submit: { id: 'report.submit', defaultMessage: 'Submit' }, }); const makeMapStateToProps = () => { const getAccount = makeGetAccount(); - const mapStateToProps = state => { - const accountId = state.getIn(['reports', 'new', 'account_id']); - - return { - isSubmitting: state.getIn(['reports', 'new', 'isSubmitting']), - account: getAccount(state, accountId), - comment: state.getIn(['reports', 'new', 'comment']), - forward: state.getIn(['reports', 'new', 'forward']), - statusIds: OrderedSet(state.getIn(['timelines', `account:${accountId}:with_replies`, 'items'])).union(state.getIn(['reports', 'new', 'status_ids'])), - }; - }; + const mapStateToProps = (state, { accountId }) => ({ + account: getAccount(state, accountId), + }); return mapStateToProps; }; @@ -42,92 +36,183 @@ export default @connect(makeMapStateToProps) class ReportModal extends ImmutablePureComponent { static propTypes = { - isSubmitting: PropTypes.bool, - account: ImmutablePropTypes.map, - statusIds: ImmutablePropTypes.orderedSet.isRequired, - comment: PropTypes.string.isRequired, - forward: PropTypes.bool, + accountId: PropTypes.string.isRequired, + statusId: PropTypes.string, dispatch: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, + account: ImmutablePropTypes.map.isRequired, }; - handleCommentChange = e => { - this.props.dispatch(changeReportComment(e.target.value)); - } - - handleForwardChange = e => { - this.props.dispatch(changeReportForward(e.target.checked)); - } + state = { + step: 'category', + selectedStatusIds: OrderedSet(this.props.statusId ? [this.props.statusId] : []), + comment: '', + category: null, + selectedRuleIds: OrderedSet(), + forward: true, + isSubmitting: false, + isSubmitted: false, + }; handleSubmit = () => { - this.props.dispatch(submitReport()); - } + const { dispatch, accountId } = this.props; + const { selectedStatusIds, comment, category, selectedRuleIds, forward } = this.state; + + this.setState({ isSubmitting: true }); + + dispatch(submitReport({ + account_id: accountId, + status_ids: selectedStatusIds.toArray(), + comment, + forward, + category, + rule_ids: selectedRuleIds.toArray(), + }, this.handleSuccess, this.handleFail)); + }; + + handleSuccess = () => { + this.setState({ isSubmitting: false, isSubmitted: true, step: 'thanks' }); + }; + + handleFail = () => { + this.setState({ isSubmitting: false }); + }; + + handleStatusToggle = (statusId, checked) => { + const { selectedStatusIds } = this.state; + + if (checked) { + this.setState({ selectedStatusIds: selectedStatusIds.add(statusId) }); + } else { + this.setState({ selectedStatusIds: selectedStatusIds.remove(statusId) }); + } + }; - handleKeyDown = e => { - if (e.keyCode === 13 && (e.ctrlKey || e.metaKey)) { - this.handleSubmit(); + handleRuleToggle = (ruleId, checked) => { + const { selectedRuleIds } = this.state; + + if (checked) { + this.setState({ selectedRuleIds: selectedRuleIds.add(ruleId) }); + } else { + this.setState({ selectedRuleIds: selectedRuleIds.remove(ruleId) }); } } + handleChangeCategory = category => { + this.setState({ category }); + }; + + handleChangeComment = comment => { + this.setState({ comment }); + }; + + handleChangeForward = forward => { + this.setState({ forward }); + }; + + handleNextStep = step => { + this.setState({ step }); + }; + componentDidMount () { - this.props.dispatch(expandAccountTimeline(this.props.account.get('id'), { withReplies: true })); - } + const { dispatch, accountId } = this.props; - componentWillReceiveProps (nextProps) { - if (this.props.account !== nextProps.account && nextProps.account) { - this.props.dispatch(expandAccountTimeline(nextProps.account.get('id'), { withReplies: true })); - } + dispatch(fetchRelationships([accountId])); + dispatch(expandAccountTimeline(accountId, { withReplies: true })); + dispatch(fetchRules()); } render () { - const { account, comment, intl, statusIds, isSubmitting, forward, onClose } = this.props; + const { + accountId, + account, + intl, + onClose, + } = this.props; if (!account) { return null; } - const domain = account.get('acct').split('@')[1]; + const { + step, + selectedStatusIds, + selectedRuleIds, + comment, + forward, + category, + isSubmitting, + isSubmitted, + } = this.state; + + const domain = account.get('acct').split('@')[1]; + const isRemote = !!domain; + + let stepComponent; + + switch(step) { + case 'category': + stepComponent = ( + <Category + onNextStep={this.handleNextStep} + startedFrom={this.props.statusId ? 'status' : 'account'} + category={category} + onChangeCategory={this.handleChangeCategory} + /> + ); + break; + case 'rules': + stepComponent = ( + <Rules + onNextStep={this.handleNextStep} + selectedRuleIds={selectedRuleIds} + onToggle={this.handleRuleToggle} + /> + ); + break; + case 'statuses': + stepComponent = ( + <Statuses + onNextStep={this.handleNextStep} + accountId={accountId} + selectedStatusIds={selectedStatusIds} + onToggle={this.handleStatusToggle} + /> + ); + break; + case 'comment': + stepComponent = ( + <Comment + onSubmit={this.handleSubmit} + isSubmitting={isSubmitting} + isRemote={isRemote} + comment={comment} + forward={forward} + domain={domain} + onChangeComment={this.handleChangeComment} + onChangeForward={this.handleChangeForward} + /> + ); + break; + case 'thanks': + stepComponent = ( + <Thanks + submitted={isSubmitted} + account={account} + onClose={onClose} + /> + ); + } return ( - <div className='modal-root__modal report-modal'> + <div className='modal-root__modal report-dialog-modal'> <div className='report-modal__target'> <IconButton className='report-modal__close' title={intl.formatMessage(messages.close)} icon='times' onClick={onClose} size={20} /> <FormattedMessage id='report.target' defaultMessage='Report {target}' values={{ target: <strong>{account.get('acct')}</strong> }} /> </div> - <div className='report-modal__container'> - <div className='report-modal__comment'> - <p><FormattedMessage id='report.hint' defaultMessage='The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:' /></p> - - <textarea - className='setting-text light' - placeholder={intl.formatMessage(messages.placeholder)} - value={comment} - onChange={this.handleCommentChange} - onKeyDown={this.handleKeyDown} - disabled={isSubmitting} - autoFocus - /> - - {domain && ( - <div> - <p><FormattedMessage id='report.forward_hint' defaultMessage='The account is from another server. Send an anonymized copy of the report there as well?' /></p> - - <div className='setting-toggle'> - <Toggle id='report-forward' checked={forward} disabled={isSubmitting} onChange={this.handleForwardChange} /> - <label htmlFor='report-forward' className='setting-toggle__label'><FormattedMessage id='report.forward' defaultMessage='Forward to {target}' values={{ target: domain }} /></label> - </div> - </div> - )} - - <Button disabled={isSubmitting} text={intl.formatMessage(messages.submit)} onClick={this.handleSubmit} /> - </div> - - <div className='report-modal__statuses'> - <div> - {statusIds.map(statusId => <StatusCheckBox id={statusId} key={statusId} disabled={isSubmitting} />)} - </div> - </div> + <div className='report-dialog-modal__container'> + {stepComponent} </div> </div> ); diff --git a/app/javascript/flavours/glitch/packs/public.js b/app/javascript/flavours/glitch/packs/public.js index a92f3d5a8..84ec9fce7 100644 --- a/app/javascript/flavours/glitch/packs/public.js +++ b/app/javascript/flavours/glitch/packs/public.js @@ -147,13 +147,7 @@ function main() { }); delegate(document, '.sidebar__toggle__icon', 'click', () => { - const target = document.querySelector('.sidebar ul'); - - if (target.style.display === 'block') { - target.style.display = 'none'; - } else { - target.style.display = 'block'; - } + document.querySelector('.sidebar ul').classList.toggle('visible'); }); // Empty the honeypot fields in JS in case something like an extension diff --git a/app/javascript/flavours/glitch/packs/settings.js b/app/javascript/flavours/glitch/packs/settings.js index 9c4d119c1..0a53e1c25 100644 --- a/app/javascript/flavours/glitch/packs/settings.js +++ b/app/javascript/flavours/glitch/packs/settings.js @@ -7,13 +7,7 @@ function main() { const { delegate } = require('@rails/ujs'); delegate(document, '.sidebar__toggle__icon', 'click', () => { - const target = document.querySelector('.sidebar ul'); - - if (target.style.display === 'block') { - target.style.display = 'none'; - } else { - target.style.display = 'block'; - } + document.querySelector('.sidebar ul').classList.toggle('visible'); }); } diff --git a/app/javascript/flavours/glitch/reducers/index.js b/app/javascript/flavours/glitch/reducers/index.js index d9123b103..92348c0c5 100644 --- a/app/javascript/flavours/glitch/reducers/index.js +++ b/app/javascript/flavours/glitch/reducers/index.js @@ -17,7 +17,7 @@ import push_notifications from './push_notifications'; import status_lists from './status_lists'; import mutes from './mutes'; import blocks from './blocks'; -import reports from './reports'; +import rules from './rules'; import boosts from './boosts'; import contexts from './contexts'; import compose from './compose'; @@ -64,7 +64,7 @@ const reducers = { push_notifications, mutes, blocks, - reports, + rules, boosts, contexts, compose, diff --git a/app/javascript/flavours/glitch/reducers/reports.js b/app/javascript/flavours/glitch/reducers/reports.js deleted file mode 100644 index 1f7f3f273..000000000 --- a/app/javascript/flavours/glitch/reducers/reports.js +++ /dev/null @@ -1,77 +0,0 @@ -import { - REPORT_INIT, - REPORT_SUBMIT_REQUEST, - REPORT_SUBMIT_SUCCESS, - REPORT_SUBMIT_FAIL, - REPORT_CANCEL, - REPORT_STATUS_TOGGLE, - REPORT_COMMENT_CHANGE, - REPORT_FORWARD_CHANGE, -} from 'flavours/glitch/actions/reports'; -import { - TIMELINE_DELETE, -} from 'flavours/glitch/actions/timelines'; -import { Map as ImmutableMap, Set as ImmutableSet } from 'immutable'; - -const initialState = ImmutableMap({ - new: ImmutableMap({ - isSubmitting: false, - account_id: null, - status_ids: ImmutableSet(), - comment: '', - forward: false, - }), -}); - -const deleteStatus = (state, id, references) => { - references.forEach(ref => { - state = deleteStatus(state, ref[0], []); - }); - - return state.updateIn(['new', 'status_ids'], ImmutableSet(), set => set.remove(id)); -}; - -export default function reports(state = initialState, action) { - switch(action.type) { - case REPORT_INIT: - return state.withMutations(map => { - map.setIn(['new', 'isSubmitting'], false); - map.setIn(['new', 'account_id'], action.account.get('id')); - - if (state.getIn(['new', 'account_id']) !== action.account.get('id')) { - map.setIn(['new', 'status_ids'], action.status ? ImmutableSet([action.status.getIn(['reblog', 'id'], action.status.get('id'))]) : ImmutableSet()); - map.setIn(['new', 'comment'], ''); - } else if (action.status) { - map.updateIn(['new', 'status_ids'], ImmutableSet(), set => set.add(action.status.getIn(['reblog', 'id'], action.status.get('id')))); - } - }); - case REPORT_STATUS_TOGGLE: - return state.updateIn(['new', 'status_ids'], ImmutableSet(), set => { - if (action.checked) { - return set.add(action.statusId); - } - - return set.remove(action.statusId); - }); - case REPORT_COMMENT_CHANGE: - return state.setIn(['new', 'comment'], action.comment); - case REPORT_FORWARD_CHANGE: - return state.setIn(['new', 'forward'], action.forward); - case REPORT_SUBMIT_REQUEST: - return state.setIn(['new', 'isSubmitting'], true); - case REPORT_SUBMIT_FAIL: - return state.setIn(['new', 'isSubmitting'], false); - case REPORT_CANCEL: - case REPORT_SUBMIT_SUCCESS: - return state.withMutations(map => { - map.setIn(['new', 'account_id'], null); - map.setIn(['new', 'status_ids'], ImmutableSet()); - map.setIn(['new', 'comment'], ''); - map.setIn(['new', 'isSubmitting'], false); - }); - case TIMELINE_DELETE: - return deleteStatus(state, action.id, action.references); - default: - return state; - } -}; diff --git a/app/javascript/flavours/glitch/reducers/rules.js b/app/javascript/flavours/glitch/reducers/rules.js new file mode 100644 index 000000000..6cc2230bc --- /dev/null +++ b/app/javascript/flavours/glitch/reducers/rules.js @@ -0,0 +1,13 @@ +import { RULES_FETCH_SUCCESS } from 'flavours/glitch/actions/rules'; +import { List as ImmutableList, fromJS } from 'immutable'; + +const initialState = ImmutableList(); + +export default function rules(state = initialState, action) { + switch (action.type) { + case RULES_FETCH_SUCCESS: + return fromJS(action.rules); + default: + return state; + } +} diff --git a/app/javascript/flavours/glitch/reducers/settings.js b/app/javascript/flavours/glitch/reducers/settings.js index 48587ce64..676a1ccc1 100644 --- a/app/javascript/flavours/glitch/reducers/settings.js +++ b/app/javascript/flavours/glitch/reducers/settings.js @@ -41,6 +41,7 @@ const initialState = ImmutableMap({ poll: false, status: false, update: false, + 'admin.sign_up': false, }), quickFilter: ImmutableMap({ @@ -61,6 +62,7 @@ const initialState = ImmutableMap({ poll: true, status: true, update: true, + 'admin.sign_up': true, }), sounds: ImmutableMap({ @@ -72,6 +74,7 @@ const initialState = ImmutableMap({ poll: true, status: true, update: true, + 'admin.sign_up': true, }), }), diff --git a/app/javascript/flavours/glitch/styles/admin.scss b/app/javascript/flavours/glitch/styles/admin.scss index 66ce92ce2..a1b99636c 100644 --- a/app/javascript/flavours/glitch/styles/admin.scss +++ b/app/javascript/flavours/glitch/styles/admin.scss @@ -322,6 +322,10 @@ $content-width: 840px; & > ul { display: none; + + &.visible { + display: block; + } } ul a, @@ -594,12 +598,16 @@ body, } .log-entry { + display: block; line-height: 20px; padding: 15px; padding-left: 15px * 2 + 40px; background: $ui-base-color; border-bottom: 1px solid darken($ui-base-color, 8%); position: relative; + text-decoration: none; + color: $darker-text-color; + font-size: 14px; &:first-child { border-top-left-radius: 4px; @@ -612,15 +620,12 @@ body, border-bottom: 0; } - &:hover { + &:hover, + &:focus, + &:active { background: lighten($ui-base-color, 4%); } - &__header { - color: $darker-text-color; - font-size: 14px; - } - &__avatar { position: absolute; left: 15px; @@ -1278,6 +1283,30 @@ a.sparkline { background: linear-gradient(to left, $ui-base-color, transparent); pointer-events: none; } + + a { + color: $secondary-text-color; + text-decoration: none; + unicode-bidi: isolate; + + &:hover { + text-decoration: underline; + + .fa { + color: lighten($dark-text-color, 7%); + } + } + + &.mention { + &:hover { + text-decoration: none; + + span { + text-decoration: underline; + } + } + } + } } &__actions { @@ -1467,3 +1496,75 @@ a.sparkline { } } } + +.strike-card { + padding: 15px; + border-radius: 4px; + background: $ui-base-color; + font-size: 15px; + line-height: 20px; + word-wrap: break-word; + font-weight: 400; + color: $primary-text-color; + + p { + margin-bottom: 20px; + unicode-bidi: plaintext; + + &:last-child { + margin-bottom: 0; + } + + strong { + font-weight: 700; + } + } + + &__rules { + list-style: disc; + padding-left: 15px; + margin-bottom: 20px; + color: $darker-text-color; + + &:last-child { + margin-bottom: 0; + } + + &__text { + color: $primary-text-color; + } + } + + &__statuses-list { + border-radius: 4px; + border: 1px solid darken($ui-base-color, 8%); + font-size: 13px; + line-height: 18px; + overflow: hidden; + + &__item { + padding: 16px; + background: lighten($ui-base-color, 2%); + border-bottom: 1px solid darken($ui-base-color, 8%); + + &:last-child { + border-bottom: 0; + } + + &__meta { + color: $darker-text-color; + } + + a { + color: inherit; + text-decoration: none; + + &:hover, + &:focus, + &:active { + text-decoration: underline; + } + } + } + } +} diff --git a/app/javascript/flavours/glitch/styles/components/composer.scss b/app/javascript/flavours/glitch/styles/components/composer.scss index fd62bb651..937751d00 100644 --- a/app/javascript/flavours/glitch/styles/components/composer.scss +++ b/app/javascript/flavours/glitch/styles/components/composer.scss @@ -652,14 +652,14 @@ & > .primary { display: inline-block; margin: 0; - padding: 0 10px; + padding: 7px 10px; text-align: center; } & > .side_arm { display: inline-block; margin: 0 2px; - padding: 0; + padding: 7px 0; width: 36px; text-align: center; } diff --git a/app/javascript/flavours/glitch/styles/components/index.scss b/app/javascript/flavours/glitch/styles/components/index.scss index 656d8f25d..55abd6e1e 100644 --- a/app/javascript/flavours/glitch/styles/components/index.scss +++ b/app/javascript/flavours/glitch/styles/components/index.scss @@ -41,16 +41,14 @@ cursor: pointer; display: inline-block; font-family: inherit; - font-size: 14px; + font-size: 17px; font-weight: 500; - height: 36px; letter-spacing: 0; - line-height: 36px; + line-height: 22px; overflow: hidden; - padding: 0 16px; + padding: 7px 18px; position: relative; text-align: center; - text-transform: uppercase; text-decoration: none; text-overflow: ellipsis; transition: all 100ms ease-in; @@ -82,17 +80,6 @@ cursor: default; } - &.button-primary, - &.button-alternative, - &.button-secondary, - &.button-alternative-2 { - font-size: 16px; - line-height: 36px; - height: auto; - text-transform: none; - padding: 4px 16px; - } - &.button-alternative { color: $inverted-text-color; background: $ui-primary-color; @@ -121,8 +108,7 @@ color: $darker-text-color; text-transform: none; background: transparent; - padding: 3px 15px; - border-radius: 4px; + padding: 6px 17px; border: 1px solid $ui-primary-color; &:active, diff --git a/app/javascript/flavours/glitch/styles/components/modal.scss b/app/javascript/flavours/glitch/styles/components/modal.scss index fb2445a17..ae1afc320 100644 --- a/app/javascript/flavours/glitch/styles/components/modal.scss +++ b/app/javascript/flavours/glitch/styles/components/modal.scss @@ -537,6 +537,192 @@ max-width: 700px; } +.report-dialog-modal { + max-width: 90vw; + width: 480px; + height: 80vh; + background: lighten($ui-secondary-color, 8%); + color: $inverted-text-color; + border-radius: 8px; + overflow: hidden; + position: relative; + flex-direction: column; + display: flex; + + &__container { + box-sizing: border-box; + border-top: 1px solid $ui-secondary-color; + padding: 20px; + flex-grow: 1; + display: flex; + flex-direction: column; + min-height: 0; + overflow: auto; + } + + &__title { + font-size: 28px; + line-height: 33px; + font-weight: 700; + margin-bottom: 15px; + + @media screen and (max-height: 800px) { + font-size: 22px; + } + } + + &__subtitle { + font-size: 17px; + font-weight: 600; + line-height: 22px; + margin-bottom: 4px; + } + + &__lead { + font-size: 17px; + line-height: 22px; + color: lighten($inverted-text-color, 16%); + margin-bottom: 30px; + } + + &__actions { + margin-top: 30px; + display: flex; + + .button { + flex: 1 1 auto; + } + } + + &__statuses { + flex-grow: 1; + min-height: 0; + overflow: auto; + } + + .status__content a { + color: $highlight-text-color; + } + + .status__content, + .status__content p { + color: $inverted-text-color; + } + + .dialog-option .poll__input { + border-color: $inverted-text-color; + color: $ui-secondary-color; + display: inline-flex; + align-items: center; + justify-content: center; + + svg { + width: 8px; + height: auto; + } + + &:active, + &:focus, + &:hover { + border-color: lighten($inverted-text-color, 15%); + border-width: 4px; + } + + &.active { + border-color: $inverted-text-color; + background: $inverted-text-color; + } + } + + .poll__option.dialog-option { + padding: 15px 0; + flex: 0 0 auto; + border-bottom: 1px solid $ui-secondary-color; + + &:last-child { + border-bottom: 0; + } + + & > .poll__option__text { + font-size: 13px; + color: lighten($inverted-text-color, 16%); + + strong { + font-size: 17px; + font-weight: 500; + line-height: 22px; + color: $inverted-text-color; + display: block; + margin-bottom: 4px; + + &:last-child { + margin-bottom: 0; + } + } + } + } + + .flex-spacer { + background: transparent; + } + + &__textarea { + display: block; + box-sizing: border-box; + width: 100%; + margin: 0; + color: $inverted-text-color; + background: $simple-background-color; + padding: 10px; + font-family: inherit; + font-size: 17px; + line-height: 22px; + resize: vertical; + border: 0; + outline: 0; + border-radius: 4px; + margin: 20px 0; + + &::placeholder { + color: $dark-text-color; + } + + &:focus { + outline: 0; + } + } + + &__toggle { + display: flex; + align-items: center; + + & > span { + font-size: 17px; + font-weight: 500; + margin-left: 10px; + } + } + + .button.button-secondary { + border-color: $inverted-text-color; + color: $inverted-text-color; + flex: 0 0 auto; + + &:hover, + &:focus, + &:active { + border-color: lighten($inverted-text-color, 15%); + color: lighten($inverted-text-color, 15%); + } + } + + hr { + border: 0; + background: transparent; + margin: 15px 0; + } +} + .report-modal__container { display: flex; border-top: 1px solid $ui-secondary-color; diff --git a/app/javascript/flavours/glitch/styles/components/status.scss b/app/javascript/flavours/glitch/styles/components/status.scss index d9154e4c7..77541ab74 100644 --- a/app/javascript/flavours/glitch/styles/components/status.scss +++ b/app/javascript/flavours/glitch/styles/components/status.scss @@ -521,42 +521,39 @@ justify-content: flex-start; } -.status-check-box { - border-bottom: 1px solid $ui-secondary-color; - display: flex; +.status-check-box__status { + display: block; + box-sizing: border-box; + width: 100%; + padding: 0 10px; - .status-check-box__status { - margin: 10px 0 10px 10px; - flex: 1; - overflow: hidden; + .detailed-status__display-name { + color: lighten($inverted-text-color, 16%); - .media-gallery { - max-width: 250px; + span { + display: inline; } - .status__content { - padding: 0; - white-space: normal; + &:hover strong { + text-decoration: none; } + } - .video-player, - .audio-player { - margin-top: 8px; - max-width: 250px; - } + .media-gallery, + .audio-player, + .video-player { + margin-top: 8px; + max-width: 250px; + } - .media-gallery__item-thumbnail { - cursor: default; - } + .status__content { + padding: 0; + white-space: normal; } -} -.status-check-box-toggle { - align-items: center; - display: flex; - flex: 0 0 auto; - justify-content: center; - padding: 10px; + .media-gallery__item-thumbnail { + cursor: default; + } } .status__prepend { diff --git a/app/javascript/flavours/glitch/styles/footer.scss b/app/javascript/flavours/glitch/styles/footer.scss index 00d290883..073ebda7e 100644 --- a/app/javascript/flavours/glitch/styles/footer.scss +++ b/app/javascript/flavours/glitch/styles/footer.scss @@ -90,6 +90,20 @@ .column-4 { display: none; } + + .column-2 h4 { + display: none; + } + } + } + + .legal-xs { + display: none; + text-align: center; + padding-top: 20px; + + @media screen and (max-width: $no-gap-breakpoint) { + display: block; } } @@ -105,7 +119,8 @@ } } - ul a { + ul a, + .legal-xs a { text-decoration: none; color: lighten($ui-base-color, 34%); diff --git a/app/javascript/mastodon/actions/notifications.js b/app/javascript/mastodon/actions/notifications.js index 9370811e0..00e8d74d7 100644 --- a/app/javascript/mastodon/actions/notifications.js +++ b/app/javascript/mastodon/actions/notifications.js @@ -45,7 +45,7 @@ defineMessages({ }); const fetchRelatedRelationships = (dispatch, notifications) => { - const accountIds = notifications.filter(item => item.type === 'follow').map(item => item.account.id); + const accountIds = notifications.filter(item => ['follow', 'follow_request', 'admin.sign_up'].indexOf(item.type) !== -1).map(item => item.account.id); if (accountIds.length > 0) { dispatch(fetchRelationships(accountIds)); @@ -132,6 +132,7 @@ const excludeTypesFromFilter = filter => { 'poll', 'status', 'update', + 'admin.sign_up', ]); return allTypes.filterNot(item => item === filter).toJS(); diff --git a/app/javascript/mastodon/actions/reports.js b/app/javascript/mastodon/actions/reports.js index afa0c3412..fbe5b3791 100644 --- a/app/javascript/mastodon/actions/reports.js +++ b/app/javascript/mastodon/actions/reports.js @@ -1,89 +1,38 @@ import api from '../api'; -import { openModal, closeModal } from './modal'; - -export const REPORT_INIT = 'REPORT_INIT'; -export const REPORT_CANCEL = 'REPORT_CANCEL'; +import { openModal } from './modal'; export const REPORT_SUBMIT_REQUEST = 'REPORT_SUBMIT_REQUEST'; export const REPORT_SUBMIT_SUCCESS = 'REPORT_SUBMIT_SUCCESS'; export const REPORT_SUBMIT_FAIL = 'REPORT_SUBMIT_FAIL'; -export const REPORT_STATUS_TOGGLE = 'REPORT_STATUS_TOGGLE'; -export const REPORT_COMMENT_CHANGE = 'REPORT_COMMENT_CHANGE'; -export const REPORT_FORWARD_CHANGE = 'REPORT_FORWARD_CHANGE'; - -export function initReport(account, status) { - return dispatch => { - dispatch({ - type: REPORT_INIT, - account, - status, - }); - - dispatch(openModal('REPORT')); - }; -}; - -export function cancelReport() { - return { - type: REPORT_CANCEL, - }; -}; - -export function toggleStatusReport(statusId, checked) { - return { - type: REPORT_STATUS_TOGGLE, - statusId, - checked, - }; -}; - -export function submitReport() { - return (dispatch, getState) => { - dispatch(submitReportRequest()); - - api(getState).post('/api/v1/reports', { - account_id: getState().getIn(['reports', 'new', 'account_id']), - status_ids: getState().getIn(['reports', 'new', 'status_ids']), - comment: getState().getIn(['reports', 'new', 'comment']), - forward: getState().getIn(['reports', 'new', 'forward']), - }).then(response => { - dispatch(closeModal()); - dispatch(submitReportSuccess(response.data)); - }).catch(error => dispatch(submitReportFail(error))); - }; -}; - -export function submitReportRequest() { - return { - type: REPORT_SUBMIT_REQUEST, - }; -}; - -export function submitReportSuccess(report) { - return { - type: REPORT_SUBMIT_SUCCESS, - report, - }; -}; - -export function submitReportFail(error) { - return { - type: REPORT_SUBMIT_FAIL, - error, - }; -}; - -export function changeReportComment(comment) { - return { - type: REPORT_COMMENT_CHANGE, - comment, - }; -}; - -export function changeReportForward(forward) { - return { - type: REPORT_FORWARD_CHANGE, - forward, - }; -}; +export const initReport = (account, status) => dispatch => + dispatch(openModal('REPORT', { + accountId: account.get('id'), + statusId: status?.get('id'), + })); + +export const submitReport = (params, onSuccess, onFail) => (dispatch, getState) => { + dispatch(submitReportRequest()); + + api(getState).post('/api/v1/reports', params).then(response => { + dispatch(submitReportSuccess(response.data)); + if (onSuccess) onSuccess(); + }).catch(error => { + dispatch(submitReportFail(error)); + if (onFail) onFail(); + }); +}; + +export const submitReportRequest = () => ({ + type: REPORT_SUBMIT_REQUEST, +}); + +export const submitReportSuccess = report => ({ + type: REPORT_SUBMIT_SUCCESS, + report, +}); + +export const submitReportFail = error => ({ + type: REPORT_SUBMIT_FAIL, + error, +}); diff --git a/app/javascript/mastodon/actions/rules.js b/app/javascript/mastodon/actions/rules.js new file mode 100644 index 000000000..34e60a121 --- /dev/null +++ b/app/javascript/mastodon/actions/rules.js @@ -0,0 +1,27 @@ +import api from '../api'; + +export const RULES_FETCH_REQUEST = 'RULES_FETCH_REQUEST'; +export const RULES_FETCH_SUCCESS = 'RULES_FETCH_SUCCESS'; +export const RULES_FETCH_FAIL = 'RULES_FETCH_FAIL'; + +export const fetchRules = () => (dispatch, getState) => { + dispatch(fetchRulesRequest()); + + api(getState) + .get('/api/v1/instance').then(({ data }) => dispatch(fetchRulesSuccess(data.rules))) + .catch(err => dispatch(fetchRulesFail(err))); +}; + +const fetchRulesRequest = () => ({ + type: RULES_FETCH_REQUEST, +}); + +const fetchRulesSuccess = rules => ({ + type: RULES_FETCH_SUCCESS, + rules, +}); + +const fetchRulesFail = error => ({ + type: RULES_FETCH_FAIL, + error, +}); diff --git a/app/javascript/mastodon/components/check.js b/app/javascript/mastodon/components/check.js new file mode 100644 index 000000000..ee2ef1595 --- /dev/null +++ b/app/javascript/mastodon/components/check.js @@ -0,0 +1,9 @@ +import React from 'react'; + +const Check = () => ( + <svg width='14' height='11' viewBox='0 0 14 11'> + <path d='M11.264 0L5.26 6.004 2.103 2.847 0 4.95l5.26 5.26 8.108-8.107L11.264 0' fill='currentColor' fillRule='evenodd' /> + </svg> +); + +export default Check; diff --git a/app/javascript/mastodon/components/loading_indicator.js b/app/javascript/mastodon/components/loading_indicator.js index 59f721c50..33c59d94c 100644 --- a/app/javascript/mastodon/components/loading_indicator.js +++ b/app/javascript/mastodon/components/loading_indicator.js @@ -6,7 +6,7 @@ export const CircularProgress = ({ size, strokeWidth }) => { const radius = (size - strokeWidth) / 2; return ( - <svg width={size} heigh={size} viewBox={viewBox} className='circular-progress' role='progressbar'> + <svg width={size} height={size} viewBox={viewBox} className='circular-progress' role='progressbar'> <circle fill='none' cx={size / 2} diff --git a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js index 4a87714e6..f433e4de9 100644 --- a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js +++ b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js @@ -170,7 +170,7 @@ class EmojiPickerMenu extends React.PureComponent { state = { modifierOpen: false, - placement: null, + readyToFocus: false, }; handleDocumentClick = e => { @@ -182,6 +182,16 @@ class EmojiPickerMenu extends React.PureComponent { componentDidMount () { document.addEventListener('click', this.handleDocumentClick, false); document.addEventListener('touchend', this.handleDocumentClick, listenerOptions); + + // Because of https://github.com/react-bootstrap/react-bootstrap/issues/2614 we need + // to wait for a frame before focusing + requestAnimationFrame(() => { + this.setState({ readyToFocus: true }); + if (this.node) { + const element = this.node.querySelector('input[type="search"]'); + if (element) element.focus(); + } + }); } componentWillUnmount () { @@ -281,7 +291,7 @@ class EmojiPickerMenu extends React.PureComponent { showSkinTones={false} backgroundImageFn={backgroundImageFn} notFound={notFoundFn} - autoFocus + autoFocus={this.state.readyToFocus} emojiTooltip /> @@ -314,6 +324,7 @@ class EmojiPickerDropdown extends React.PureComponent { state = { active: false, loading: false, + placement: null, }; setRef = (c) => { diff --git a/app/javascript/mastodon/features/emoji/emoji_compressed.js b/app/javascript/mastodon/features/emoji/emoji_compressed.js index 74b53ce5c..6a402f2d4 100644 --- a/app/javascript/mastodon/features/emoji/emoji_compressed.js +++ b/app/javascript/mastodon/features/emoji/emoji_compressed.js @@ -90,7 +90,7 @@ Object.keys(emojiIndex.emojis).forEach(key => { let { short_names, search, unified } = emojiMartData.emojis[key]; if (short_names[0] !== key) { - throw new Error('The compresser expects the first short_code to be the ' + + throw new Error('The compressor expects the first short_code to be the ' + 'key. It may need to be rewritten if the emoji change such that this ' + 'is no longer the case.'); } diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.js b/app/javascript/mastodon/features/notifications/components/column_settings.js index ada8b6e4a..84db04430 100644 --- a/app/javascript/mastodon/features/notifications/components/column_settings.js +++ b/app/javascript/mastodon/features/notifications/components/column_settings.js @@ -5,6 +5,7 @@ import { FormattedMessage } from 'react-intl'; import ClearColumnButton from './clear_column_button'; import GrantPermissionButton from './grant_permission_button'; import SettingToggle from './setting_toggle'; +import { isStaff } from 'mastodon/initial_state'; export default class ColumnSettings extends React.PureComponent { @@ -155,7 +156,7 @@ export default class ColumnSettings extends React.PureComponent { </div> <div role='group' aria-labelledby='notifications-update'> - <span id='notifications-status' className='column-settings__section'><FormattedMessage id='notifications.column_settings.update' defaultMessage='Edits:' /></span> + <span id='notifications-update' className='column-settings__section'><FormattedMessage id='notifications.column_settings.update' defaultMessage='Edits:' /></span> <div className='column-settings__row'> <SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'update']} onChange={onChange} label={alertStr} /> @@ -164,6 +165,19 @@ export default class ColumnSettings extends React.PureComponent { <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'update']} onChange={onChange} label={soundStr} /> </div> </div> + + {isStaff && ( + <div role='group' aria-labelledby='notifications-admin-sign-up'> + <span id='notifications-status' className='column-settings__section'><FormattedMessage id='notifications.column_settings.admin.sign_up' defaultMessage='New sign-ups:' /></span> + + <div className='column-settings__row'> + <SettingToggle disabled={browserPermission === 'denied'} prefix='notifications_desktop' settings={settings} settingPath={['alerts', 'admin.sign_up']} onChange={onChange} label={alertStr} /> + {showPushSettings && <SettingToggle prefix='notifications_push' settings={pushSettings} settingPath={['alerts', 'admin.sign_up']} onChange={this.onPushChange} label={pushStr} />} + <SettingToggle prefix='notifications' settings={settings} settingPath={['shows', 'admin.sign_up']} onChange={onChange} label={showStr} /> + <SettingToggle prefix='notifications' settings={settings} settingPath={['sounds', 'admin.sign_up']} onChange={onChange} label={soundStr} /> + </div> + </div> + )} </div> ); } diff --git a/app/javascript/mastodon/features/notifications/components/notification.js b/app/javascript/mastodon/features/notifications/components/notification.js index cd471852b..9198e9c9d 100644 --- a/app/javascript/mastodon/features/notifications/components/notification.js +++ b/app/javascript/mastodon/features/notifications/components/notification.js @@ -20,6 +20,7 @@ const messages = defineMessages({ reblog: { id: 'notification.reblog', defaultMessage: '{name} boosted your status' }, status: { id: 'notification.status', defaultMessage: '{name} just posted' }, update: { id: 'notification.update', defaultMessage: '{name} edited a post' }, + adminSignUp: { id: 'notification.admin.sign_up', defaultMessage: '{name} signed up' }, }); const notificationForScreenReader = (intl, message, timestamp) => { @@ -344,6 +345,28 @@ class Notification extends ImmutablePureComponent { ); } + renderAdminSignUp (notification, account, link) { + const { intl, unread } = this.props; + + return ( + <HotKeys handlers={this.getHandlers()}> + <div className={classNames('notification notification-admin-sign-up focusable', { unread })} tabIndex='0' aria-label={notificationForScreenReader(intl, intl.formatMessage(messages.adminSignUp, { name: account.get('acct') }), notification.get('created_at'))}> + <div className='notification__message'> + <div className='notification__favourite-icon-wrapper'> + <Icon id='user-plus' fixedWidth /> + </div> + + <span title={notification.get('created_at')}> + <FormattedMessage id='notification.admin.sign_up' defaultMessage='{name} signed up' values={{ name: link }} /> + </span> + </div> + + <AccountContainer id={account.get('id')} hidden={this.props.hidden} /> + </div> + </HotKeys> + ); + } + render () { const { notification } = this.props; const account = notification.get('account'); @@ -367,6 +390,8 @@ class Notification extends ImmutablePureComponent { return this.renderUpdate(notification, link); case 'poll': return this.renderPoll(notification, account); + case 'admin.sign_up': + return this.renderAdminSignUp(notification, account, link); } return null; diff --git a/app/javascript/mastodon/features/report/category.js b/app/javascript/mastodon/features/report/category.js new file mode 100644 index 000000000..122b51c7c --- /dev/null +++ b/app/javascript/mastodon/features/report/category.js @@ -0,0 +1,93 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { defineMessages, injectIntl, FormattedMessage } from 'react-intl'; +import Button from 'mastodon/components/button'; +import Option from './components/option'; + +const messages = defineMessages({ + dislike: { id: 'report.reasons.dislike', defaultMessage: 'I don\'t like it' }, + dislike_description: { id: 'report.reasons.dislike_description', defaultMessage: 'It is not something you want to see' }, + spam: { id: 'report.reasons.spam', defaultMessage: 'It\'s spam' }, + spam_description: { id: 'report.reasons.spam_description', defaultMessage: 'Malicious links, fake engagement, or repetetive replies' }, + violation: { id: 'report.reasons.violation', defaultMessage: 'It violates server rules' }, + violation_description: { id: 'report.reasons.violation_description', defaultMessage: 'You are aware that it breaks specific rules' }, + other: { id: 'report.reasons.other', defaultMessage: 'It\'s something else' }, + other_description: { id: 'report.reasons.other_description', defaultMessage: 'The issue does not fit into other categories' }, + status: { id: 'report.category.title_status', defaultMessage: 'post' }, + account: { id: 'report.category.title_account', defaultMessage: 'profile' }, +}); + +export default @injectIntl +class Category extends React.PureComponent { + + static propTypes = { + onNextStep: PropTypes.func.isRequired, + category: PropTypes.string, + onChangeCategory: PropTypes.func.isRequired, + startedFrom: PropTypes.oneOf(['status', 'account']), + intl: PropTypes.object.isRequired, + }; + + handleNextClick = () => { + const { onNextStep, category } = this.props; + + switch(category) { + case 'dislike': + onNextStep('thanks'); + break; + case 'violation': + onNextStep('rules'); + break; + default: + onNextStep('statuses'); + break; + } + }; + + handleCategoryToggle = (value, checked) => { + const { onChangeCategory } = this.props; + + if (checked) { + onChangeCategory(value); + } + }; + + render () { + const { category, startedFrom, intl } = this.props; + + const options = [ + 'dislike', + 'spam', + 'violation', + 'other', + ]; + + return ( + <React.Fragment> + <h3 className='report-dialog-modal__title'><FormattedMessage id='report.category.title' defaultMessage="Tell us what's going on with this {type}" values={{ type: intl.formatMessage(messages[startedFrom]) }} /></h3> + <p className='report-dialog-modal__lead'><FormattedMessage id='report.category.subtitle' defaultMessage='Choose the best match' /></p> + + <div> + {options.map(item => ( + <Option + key={item} + name='category' + value={item} + checked={category === item} + onToggle={this.handleCategoryToggle} + label={intl.formatMessage(messages[item])} + description={intl.formatMessage(messages[`${item}_description`])} + /> + ))} + </div> + + <div className='flex-spacer' /> + + <div className='report-dialog-modal__actions'> + <Button onClick={this.handleNextClick} disabled={category === null}><FormattedMessage id='report.next' defaultMessage='Next' /></Button> + </div> + </React.Fragment> + ); + } + +} diff --git a/app/javascript/mastodon/features/report/comment.js b/app/javascript/mastodon/features/report/comment.js new file mode 100644 index 000000000..8d1a4e21f --- /dev/null +++ b/app/javascript/mastodon/features/report/comment.js @@ -0,0 +1,83 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { injectIntl, defineMessages, FormattedMessage } from 'react-intl'; +import Button from 'mastodon/components/button'; +import Toggle from 'react-toggle'; + +const messages = defineMessages({ + placeholder: { id: 'report.placeholder', defaultMessage: 'Type or paste additional comments' }, +}); + +export default @injectIntl +class Comment extends React.PureComponent { + + static propTypes = { + onSubmit: PropTypes.func.isRequired, + comment: PropTypes.string.isRequired, + onChangeComment: PropTypes.func.isRequired, + intl: PropTypes.object.isRequired, + isSubmitting: PropTypes.bool, + forward: PropTypes.bool, + isRemote: PropTypes.bool, + domain: PropTypes.string, + onChangeForward: PropTypes.func.isRequired, + }; + + handleClick = () => { + const { onSubmit } = this.props; + onSubmit(); + }; + + handleChange = e => { + const { onChangeComment } = this.props; + onChangeComment(e.target.value); + }; + + handleKeyDown = e => { + if (e.keyCode === 13 && (e.ctrlKey || e.metaKey)) { + this.handleClick(); + } + }; + + handleForwardChange = e => { + const { onChangeForward } = this.props; + onChangeForward(e.target.checked); + }; + + render () { + const { comment, isRemote, forward, domain, isSubmitting, intl } = this.props; + + return ( + <React.Fragment> + <h3 className='report-dialog-modal__title'><FormattedMessage id='report.comment.title' defaultMessage='Is there anything else you think we should know?' /></h3> + + <textarea + className='report-dialog-modal__textarea' + placeholder={intl.formatMessage(messages.placeholder)} + value={comment} + onChange={this.handleChange} + onKeyDown={this.handleKeyDown} + disabled={isSubmitting} + /> + + {isRemote && ( + <React.Fragment> + <p className='report-dialog-modal__lead'><FormattedMessage id='report.forward_hint' defaultMessage='The account is from another server. Send an anonymized copy of the report there as well?' /></p> + + <label className='report-dialog-modal__toggle'> + <Toggle checked={forward} disabled={isSubmitting} onChange={this.handleForwardChange} /> + <FormattedMessage id='report.forward' defaultMessage='Forward to {target}' values={{ target: domain }} /> + </label> + </React.Fragment> + )} + + <div className='flex-spacer' /> + + <div className='report-dialog-modal__actions'> + <Button onClick={this.handleClick}><FormattedMessage id='report.submit' defaultMessage='Submit report' /></Button> + </div> + </React.Fragment> + ); + } + +} diff --git a/app/javascript/mastodon/features/report/components/option.js b/app/javascript/mastodon/features/report/components/option.js new file mode 100644 index 000000000..744d85268 --- /dev/null +++ b/app/javascript/mastodon/features/report/components/option.js @@ -0,0 +1,60 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import classNames from 'classnames'; +import Check from 'mastodon/components/check'; + +export default class Option extends React.PureComponent { + + static propTypes = { + name: PropTypes.string.isRequired, + value: PropTypes.string.isRequired, + checked: PropTypes.bool, + label: PropTypes.node, + description: PropTypes.node, + onToggle: PropTypes.func, + multiple: PropTypes.bool, + labelComponent: PropTypes.node, + }; + + handleKeyPress = e => { + const { value, checked, onToggle } = this.props; + + if (e.key === 'Enter' || e.key === ' ') { + e.stopPropagation(); + e.preventDefault(); + onToggle(value, !checked); + } + } + + handleChange = e => { + const { value, onToggle } = this.props; + onToggle(value, e.target.checked); + } + + render () { + const { name, value, checked, label, labelComponent, description, multiple } = this.props; + + return ( + <label className='dialog-option poll__option selectable'> + <input type={multiple ? 'checkbox' : 'radio'} name={name} value={value} checked={checked} onChange={this.handleChange} /> + + <span + className={classNames('poll__input', { active: checked, checkbox: multiple })} + tabIndex='0' + role='radio' + onKeyPress={this.handleKeyPress} + aria-checked={checked} + aria-label={label} + >{checked && <Check />}</span> + + {labelComponent ? labelComponent : ( + <span className='poll__option__text'> + <strong>{label}</strong> + {description} + </span> + )} + </label> + ); + } + +} diff --git a/app/javascript/mastodon/features/report/components/status_check_box.js b/app/javascript/mastodon/features/report/components/status_check_box.js index c29e517da..a2eb3d6f5 100644 --- a/app/javascript/mastodon/features/report/components/status_check_box.js +++ b/app/javascript/mastodon/features/report/components/status_check_box.js @@ -1,23 +1,32 @@ import React from 'react'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import Toggle from 'react-toggle'; import noop from 'lodash/noop'; -import StatusContent from '../../../components/status_content'; -import { MediaGallery, Video } from '../../ui/util/async-components'; -import Bundle from '../../ui/components/bundle'; +import StatusContent from 'mastodon/components/status_content'; +import { MediaGallery, Video } from 'mastodon/features/ui/util/async-components'; +import Bundle from 'mastodon/features/ui/components/bundle'; +import Avatar from 'mastodon/components/avatar'; +import DisplayName from 'mastodon/components/display_name'; +import RelativeTimestamp from 'mastodon/components/relative_timestamp'; +import Option from './option'; export default class StatusCheckBox extends React.PureComponent { static propTypes = { + id: PropTypes.string.isRequired, status: ImmutablePropTypes.map.isRequired, checked: PropTypes.bool, onToggle: PropTypes.func.isRequired, - disabled: PropTypes.bool, + }; + + handleStatusesToggle = (value, checked) => { + const { onToggle } = this.props; + onToggle(value, checked); }; render () { - const { status, checked, onToggle, disabled } = this.props; + const { status, checked } = this.props; + let media = null; if (status.get('reblog')) { @@ -50,24 +59,46 @@ export default class StatusCheckBox extends React.PureComponent { } else { media = ( <Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery} > - {Component => <Component media={status.get('media_attachments')} sensitive={status.get('sensitive')} height={110} onOpenMedia={noop} />} + {Component => ( + <Component + media={status.get('media_attachments')} + sensitive={status.get('sensitive')} + height={110} + onOpenMedia={noop} + /> + )} </Bundle> ); } } - return ( - <div className='status-check-box'> - <div className='status-check-box__status'> - <StatusContent status={status} /> - {media} - </div> + const labelComponent = ( + <div className='status-check-box__status poll__option__text'> + <div className='detailed-status__display-name'> + <div className='detailed-status__display-avatar'> + <Avatar account={status.get('account')} size={46} /> + </div> - <div className='status-check-box-toggle'> - <Toggle checked={checked} onChange={onToggle} disabled={disabled} /> + <div><DisplayName account={status.get('account')} /> · <RelativeTimestamp timestamp={status.get('created_at')} /></div> </div> + + <StatusContent status={status} /> + + {media} </div> ); + + return ( + <Option + name='status_ids' + value={status.get('id')} + checked={checked} + onToggle={this.handleStatusesToggle} + label={status.get('search_index')} + labelComponent={labelComponent} + multiple + /> + ); } } diff --git a/app/javascript/mastodon/features/report/containers/status_check_box_container.js b/app/javascript/mastodon/features/report/containers/status_check_box_container.js index 48cd0319b..65a7c11fd 100644 --- a/app/javascript/mastodon/features/report/containers/status_check_box_container.js +++ b/app/javascript/mastodon/features/report/containers/status_check_box_container.js @@ -1,19 +1,15 @@ import { connect } from 'react-redux'; import StatusCheckBox from '../components/status_check_box'; -import { toggleStatusReport } from '../../../actions/reports'; -import { Set as ImmutableSet } from 'immutable'; +import { makeGetStatus } from 'mastodon/selectors'; -const mapStateToProps = (state, { id }) => ({ - status: state.getIn(['statuses', id]), - checked: state.getIn(['reports', 'new', 'status_ids'], ImmutableSet()).includes(id), -}); +const makeMapStateToProps = () => { + const getStatus = makeGetStatus(); -const mapDispatchToProps = (dispatch, { id }) => ({ + const mapStateToProps = (state, { id }) => ({ + status: getStatus(state, { id }), + }); - onToggle (e) { - dispatch(toggleStatusReport(id, e.target.checked)); - }, + return mapStateToProps; +}; -}); - -export default connect(mapStateToProps, mapDispatchToProps)(StatusCheckBox); +export default connect(makeMapStateToProps)(StatusCheckBox); diff --git a/app/javascript/mastodon/features/report/rules.js b/app/javascript/mastodon/features/report/rules.js new file mode 100644 index 000000000..f2db0d9e4 --- /dev/null +++ b/app/javascript/mastodon/features/report/rules.js @@ -0,0 +1,64 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; +import { FormattedMessage } from 'react-intl'; +import Button from 'mastodon/components/button'; +import Option from './components/option'; + +const mapStateToProps = state => ({ + rules: state.get('rules'), +}); + +export default @connect(mapStateToProps) +class Rules extends React.PureComponent { + + static propTypes = { + onNextStep: PropTypes.func.isRequired, + rules: ImmutablePropTypes.list, + selectedRuleIds: ImmutablePropTypes.set.isRequired, + onToggle: PropTypes.func.isRequired, + }; + + handleNextClick = () => { + const { onNextStep } = this.props; + onNextStep('statuses'); + }; + + handleRulesToggle = (value, checked) => { + const { onToggle } = this.props; + onToggle(value, checked); + }; + + render () { + const { rules, selectedRuleIds } = this.props; + + return ( + <React.Fragment> + <h3 className='report-dialog-modal__title'><FormattedMessage id='report.rules.title' defaultMessage='Which rules are being violated?' /></h3> + <p className='report-dialog-modal__lead'><FormattedMessage id='report.rules.subtitle' defaultMessage='Select all that apply' /></p> + + <div> + {rules.map(item => ( + <Option + key={item.get('id')} + name='rule_ids' + value={item.get('id')} + checked={selectedRuleIds.includes(item.get('id'))} + onToggle={this.handleRulesToggle} + label={item.get('text')} + multiple + /> + ))} + </div> + + <div className='flex-spacer' /> + + <div className='report-dialog-modal__actions'> + <Button onClick={this.handleNextClick} disabled={selectedRuleIds.size < 1}><FormattedMessage id='report.next' defaultMessage='Next' /></Button> + </div> + </React.Fragment> + ); + } + +} diff --git a/app/javascript/mastodon/features/report/statuses.js b/app/javascript/mastodon/features/report/statuses.js new file mode 100644 index 000000000..5999a0e06 --- /dev/null +++ b/app/javascript/mastodon/features/report/statuses.js @@ -0,0 +1,58 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { connect } from 'react-redux'; +import StatusCheckBox from 'mastodon/features/report/containers/status_check_box_container'; +import { OrderedSet } from 'immutable'; +import { FormattedMessage } from 'react-intl'; +import Button from 'mastodon/components/button'; + +const mapStateToProps = (state, { accountId }) => ({ + availableStatusIds: OrderedSet(state.getIn(['timelines', `account:${accountId}:with_replies`, 'items'])), +}); + +export default @connect(mapStateToProps) +class Statuses extends React.PureComponent { + + static propTypes = { + onNextStep: PropTypes.func.isRequired, + accountId: PropTypes.string.isRequired, + availableStatusIds: ImmutablePropTypes.set.isRequired, + selectedStatusIds: ImmutablePropTypes.set.isRequired, + onToggle: PropTypes.func.isRequired, + }; + + handleNextClick = () => { + const { onNextStep } = this.props; + onNextStep('comment'); + }; + + render () { + const { availableStatusIds, selectedStatusIds, onToggle } = this.props; + + return ( + <React.Fragment> + <h3 className='report-dialog-modal__title'><FormattedMessage id='report.statuses.title' defaultMessage='Are there any posts that back up this report?' /></h3> + <p className='report-dialog-modal__lead'><FormattedMessage id='report.statuses.subtitle' defaultMessage='Select all that apply' /></p> + + <div className='report-dialog-modal__statuses'> + {availableStatusIds.union(selectedStatusIds).map(statusId => ( + <StatusCheckBox + id={statusId} + key={statusId} + checked={selectedStatusIds.includes(statusId)} + onToggle={onToggle} + /> + ))} + </div> + + <div className='flex-spacer' /> + + <div className='report-dialog-modal__actions'> + <Button onClick={this.handleNextClick}><FormattedMessage id='report.next' defaultMessage='Next' /></Button> + </div> + </React.Fragment> + ); + } + +} diff --git a/app/javascript/mastodon/features/report/thanks.js b/app/javascript/mastodon/features/report/thanks.js new file mode 100644 index 000000000..d169b1e32 --- /dev/null +++ b/app/javascript/mastodon/features/report/thanks.js @@ -0,0 +1,84 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ImmutablePropTypes from 'react-immutable-proptypes'; +import { FormattedMessage } from 'react-intl'; +import Button from 'mastodon/components/button'; +import { connect } from 'react-redux'; +import { + unfollowAccount, + muteAccount, + blockAccount, +} from 'mastodon/actions/accounts'; + +const mapStateToProps = () => ({}); + +export default @connect(mapStateToProps) +class Thanks extends React.PureComponent { + + static propTypes = { + submitted: PropTypes.bool, + onClose: PropTypes.func.isRequired, + account: ImmutablePropTypes.map.isRequired, + dispatch: PropTypes.func.isRequired, + }; + + handleCloseClick = () => { + const { onClose } = this.props; + onClose(); + }; + + handleUnfollowClick = () => { + const { dispatch, account, onClose } = this.props; + dispatch(unfollowAccount(account.get('id'))); + onClose(); + }; + + handleMuteClick = () => { + const { dispatch, account, onClose } = this.props; + dispatch(muteAccount(account.get('id'))); + onClose(); + }; + + handleBlockClick = () => { + const { dispatch, account, onClose } = this.props; + dispatch(blockAccount(account.get('id'))); + onClose(); + }; + + render () { + const { account, submitted } = this.props; + + return ( + <React.Fragment> + <h3 className='report-dialog-modal__title'>{submitted ? <FormattedMessage id='report.thanks.title_actionable' defaultMessage="Thanks for reporting, we'll look into this." /> : <FormattedMessage id='report.thanks.title' defaultMessage="Don't want to see this?" />}</h3> + <p className='report-dialog-modal__lead'>{submitted ? <FormattedMessage id='report.thanks.take_action_actionable' defaultMessage='While we review this, you can take action against @{name}:' values={{ name: account.get('username') }} /> : <FormattedMessage id='report.thanks.take_action' defaultMessage='Here are your options for controlling what you see on Mastodon:' />}</p> + + {account.getIn(['relationship', 'following']) && ( + <React.Fragment> + <h4 className='report-dialog-modal__subtitle'><FormattedMessage id='report.unfollow' defaultMessage='Unfollow @{name}' values={{ name: account.get('username') }} /></h4> + <p className='report-dialog-modal__lead'><FormattedMessage id='report.unfollow_explanation' defaultMessage='You are following this account. To not see their posts in your home feed anymore, unfollow them.' /></p> + <Button secondary onClick={this.handleUnfollowClick}><FormattedMessage id='account.unfollow' defaultMessage='Unfollow' /></Button> + <hr /> + </React.Fragment> + )} + + <h4 className='report-dialog-modal__subtitle'><FormattedMessage id='account.mute' defaultMessage='Mute @{name}' values={{ name: account.get('username') }} /></h4> + <p className='report-dialog-modal__lead'><FormattedMessage id='report.mute_explanation' defaultMessage='You will not see their posts. They can still follow you and see your posts and will not know that they are muted.' /></p> + <Button secondary onClick={this.handleMuteClick}>{!account.getIn(['relationship', 'muting']) ? <FormattedMessage id='report.mute' defaultMessage='Mute' /> : <FormattedMessage id='account.muted' defaultMessage='Muted' />}</Button> + + <hr /> + + <h4 className='report-dialog-modal__subtitle'><FormattedMessage id='account.block' defaultMessage='Block @{name}' values={{ name: account.get('username') }} /></h4> + <p className='report-dialog-modal__lead'><FormattedMessage id='report.block_explanation' defaultMessage='You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.' /></p> + <Button secondary onClick={this.handleBlockClick}>{!account.getIn(['relationship', 'blocking']) ? <FormattedMessage id='report.block' defaultMessage='Block' /> : <FormattedMessage id='account.blocked' defaultMessage='Blocked' />}</Button> + + <div className='flex-spacer' /> + + <div className='report-dialog-modal__actions'> + <Button onClick={this.handleCloseClick}><FormattedMessage id='report.close' defaultMessage='Done' /></Button> + </div> + </React.Fragment> + ); + } + +} diff --git a/app/javascript/mastodon/features/ui/components/report_modal.js b/app/javascript/mastodon/features/ui/components/report_modal.js index f4f0a3884..744dd248b 100644 --- a/app/javascript/mastodon/features/ui/components/report_modal.js +++ b/app/javascript/mastodon/features/ui/components/report_modal.js @@ -1,38 +1,31 @@ import React from 'react'; import { connect } from 'react-redux'; -import { changeReportComment, changeReportForward, submitReport } from '../../../actions/reports'; -import { expandAccountTimeline } from '../../../actions/timelines'; +import { submitReport } from 'mastodon/actions/reports'; +import { expandAccountTimeline } from 'mastodon/actions/timelines'; +import { fetchRules } from 'mastodon/actions/rules'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; -import { makeGetAccount } from '../../../selectors'; +import { makeGetAccount } from 'mastodon/selectors'; import { defineMessages, FormattedMessage, injectIntl } from 'react-intl'; -import StatusCheckBox from '../../report/containers/status_check_box_container'; import { OrderedSet } from 'immutable'; import ImmutablePureComponent from 'react-immutable-pure-component'; -import Button from '../../../components/button'; -import Toggle from 'react-toggle'; -import IconButton from '../../../components/icon_button'; +import IconButton from 'mastodon/components/icon_button'; +import Category from 'mastodon/features/report/category'; +import Statuses from 'mastodon/features/report/statuses'; +import Rules from 'mastodon/features/report/rules'; +import Comment from 'mastodon/features/report/comment'; +import Thanks from 'mastodon/features/report/thanks'; const messages = defineMessages({ close: { id: 'lightbox.close', defaultMessage: 'Close' }, - placeholder: { id: 'report.placeholder', defaultMessage: 'Additional comments' }, - submit: { id: 'report.submit', defaultMessage: 'Submit' }, }); const makeMapStateToProps = () => { const getAccount = makeGetAccount(); - const mapStateToProps = state => { - const accountId = state.getIn(['reports', 'new', 'account_id']); - - return { - isSubmitting: state.getIn(['reports', 'new', 'isSubmitting']), - account: getAccount(state, accountId), - comment: state.getIn(['reports', 'new', 'comment']), - forward: state.getIn(['reports', 'new', 'forward']), - statusIds: OrderedSet(state.getIn(['timelines', `account:${accountId}:with_replies`, 'items'])).union(state.getIn(['reports', 'new', 'status_ids'])), - }; - }; + const mapStateToProps = (state, { accountId }) => ({ + account: getAccount(state, accountId), + }); return mapStateToProps; }; @@ -42,92 +35,182 @@ export default @connect(makeMapStateToProps) class ReportModal extends ImmutablePureComponent { static propTypes = { - isSubmitting: PropTypes.bool, - account: ImmutablePropTypes.map, - statusIds: ImmutablePropTypes.orderedSet.isRequired, - comment: PropTypes.string.isRequired, - forward: PropTypes.bool, + accountId: PropTypes.string.isRequired, + statusId: PropTypes.string, dispatch: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, + account: ImmutablePropTypes.map.isRequired, }; - handleCommentChange = e => { - this.props.dispatch(changeReportComment(e.target.value)); - } - - handleForwardChange = e => { - this.props.dispatch(changeReportForward(e.target.checked)); - } + state = { + step: 'category', + selectedStatusIds: OrderedSet(this.props.statusId ? [this.props.statusId] : []), + comment: '', + category: null, + selectedRuleIds: OrderedSet(), + forward: true, + isSubmitting: false, + isSubmitted: false, + }; handleSubmit = () => { - this.props.dispatch(submitReport()); - } + const { dispatch, accountId } = this.props; + const { selectedStatusIds, comment, category, selectedRuleIds, forward } = this.state; + + this.setState({ isSubmitting: true }); + + dispatch(submitReport({ + account_id: accountId, + status_ids: selectedStatusIds.toArray(), + comment, + forward, + category, + rule_ids: selectedRuleIds.toArray(), + }, this.handleSuccess, this.handleFail)); + }; + + handleSuccess = () => { + this.setState({ isSubmitting: false, isSubmitted: true, step: 'thanks' }); + }; + + handleFail = () => { + this.setState({ isSubmitting: false }); + }; + + handleStatusToggle = (statusId, checked) => { + const { selectedStatusIds } = this.state; + + if (checked) { + this.setState({ selectedStatusIds: selectedStatusIds.add(statusId) }); + } else { + this.setState({ selectedStatusIds: selectedStatusIds.remove(statusId) }); + } + }; - handleKeyDown = e => { - if (e.keyCode === 13 && (e.ctrlKey || e.metaKey)) { - this.handleSubmit(); + handleRuleToggle = (ruleId, checked) => { + const { selectedRuleIds } = this.state; + + if (checked) { + this.setState({ selectedRuleIds: selectedRuleIds.add(ruleId) }); + } else { + this.setState({ selectedRuleIds: selectedRuleIds.remove(ruleId) }); } } + handleChangeCategory = category => { + this.setState({ category }); + }; + + handleChangeComment = comment => { + this.setState({ comment }); + }; + + handleChangeForward = forward => { + this.setState({ forward }); + }; + + handleNextStep = step => { + this.setState({ step }); + }; + componentDidMount () { - this.props.dispatch(expandAccountTimeline(this.props.account.get('id'), { withReplies: true })); - } + const { dispatch, accountId } = this.props; - componentWillReceiveProps (nextProps) { - if (this.props.account !== nextProps.account && nextProps.account) { - this.props.dispatch(expandAccountTimeline(nextProps.account.get('id'), { withReplies: true })); - } + dispatch(expandAccountTimeline(accountId, { withReplies: true })); + dispatch(fetchRules()); } render () { - const { account, comment, intl, statusIds, isSubmitting, forward, onClose } = this.props; + const { + accountId, + account, + intl, + onClose, + } = this.props; if (!account) { return null; } - const domain = account.get('acct').split('@')[1]; + const { + step, + selectedStatusIds, + selectedRuleIds, + comment, + forward, + category, + isSubmitting, + isSubmitted, + } = this.state; + + const domain = account.get('acct').split('@')[1]; + const isRemote = !!domain; + + let stepComponent; + + switch(step) { + case 'category': + stepComponent = ( + <Category + onNextStep={this.handleNextStep} + startedFrom={this.props.statusId ? 'status' : 'account'} + category={category} + onChangeCategory={this.handleChangeCategory} + /> + ); + break; + case 'rules': + stepComponent = ( + <Rules + onNextStep={this.handleNextStep} + selectedRuleIds={selectedRuleIds} + onToggle={this.handleRuleToggle} + /> + ); + break; + case 'statuses': + stepComponent = ( + <Statuses + onNextStep={this.handleNextStep} + accountId={accountId} + selectedStatusIds={selectedStatusIds} + onToggle={this.handleStatusToggle} + /> + ); + break; + case 'comment': + stepComponent = ( + <Comment + onSubmit={this.handleSubmit} + isSubmitting={isSubmitting} + isRemote={isRemote} + comment={comment} + forward={forward} + domain={domain} + onChangeComment={this.handleChangeComment} + onChangeForward={this.handleChangeForward} + /> + ); + break; + case 'thanks': + stepComponent = ( + <Thanks + submitted={isSubmitted} + account={account} + onClose={onClose} + /> + ); + } return ( - <div className='modal-root__modal report-modal'> + <div className='modal-root__modal report-dialog-modal'> <div className='report-modal__target'> <IconButton className='report-modal__close' title={intl.formatMessage(messages.close)} icon='times' onClick={onClose} size={20} /> <FormattedMessage id='report.target' defaultMessage='Report {target}' values={{ target: <strong>{account.get('acct')}</strong> }} /> </div> - <div className='report-modal__container'> - <div className='report-modal__comment'> - <p><FormattedMessage id='report.hint' defaultMessage='The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:' /></p> - - <textarea - className='setting-text light' - placeholder={intl.formatMessage(messages.placeholder)} - value={comment} - onChange={this.handleCommentChange} - onKeyDown={this.handleKeyDown} - disabled={isSubmitting} - autoFocus - /> - - {domain && ( - <div> - <p><FormattedMessage id='report.forward_hint' defaultMessage='The account is from another server. Send an anonymized copy of the report there as well?' /></p> - - <div className='setting-toggle'> - <Toggle id='report-forward' checked={forward} disabled={isSubmitting} onChange={this.handleForwardChange} /> - <label htmlFor='report-forward' className='setting-toggle__label'><FormattedMessage id='report.forward' defaultMessage='Forward to {target}' values={{ target: domain }} /></label> - </div> - </div> - )} - - <Button disabled={isSubmitting} text={intl.formatMessage(messages.submit)} onClick={this.handleSubmit} /> - </div> - - <div className='report-modal__statuses'> - <div> - {statusIds.map(statusId => <StatusCheckBox id={statusId} key={statusId} disabled={isSubmitting} />)} - </div> - </div> + <div className='report-dialog-modal__container'> + {stepComponent} </div> </div> ); diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json index 2675da68c..5456eb88e 100644 --- a/app/javascript/mastodon/locales/af.json +++ b/app/javascript/mastodon/locales/af.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json index d244ab5fc..33a78afa3 100644 --- a/app/javascript/mastodon/locales/ar.json +++ b/app/javascript/mastodon/locales/ar.json @@ -21,7 +21,7 @@ "account.following_counter": "{count, plural, zero{لا يُتابِع} one {يُتابِعُ واحد} two{يُتابِعُ اِثنان} few{يُتابِعُ {counter}} many{يُتابِعُ {counter}} other {يُتابِعُ {counter}}}", "account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.", "account.follows_you": "يُتابِعُك", - "account.hide_reblogs": "إخفاء تعزيزات @{name}", + "account.hide_reblogs": "إخفاء مشاركات @{name}", "account.joined": "انضم في {date}", "account.last_status": "آخر نشاط", "account.link_verified_on": "تمَّ التَّحقق مِن مِلْكيّة هذا الرابط بتاريخ {date}", @@ -38,7 +38,7 @@ "account.report": "الإبلاغ عن @{name}", "account.requested": "في اِنتظر القُبول. اِنقُر لإلغاء طلب المُتابعة", "account.share": "مُشاركة الملف الشخصي لـ @{name}", - "account.show_reblogs": "عرض تعزيزات @{name}", + "account.show_reblogs": "عرض مشاركات @{name}", "account.statuses_counter": "{count, plural, zero {لَا تَبويقات} one {تَبويقةٌ واحدة} two {تَبويقَتانِ اِثنتان} few {{counter} تَبويقات} many {{counter} تَبويقتًا} other {{counter} تَبويقة}}", "account.unblock": "إلغاء الحَظر عن @{name}", "account.unblock_domain": "إلغاء الحَظر عن النِّطاق {domain}", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "تغيِير الاستطلاع للسماح باِخيار واحد فقط", "compose_form.publish": "تبويق", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "احفظ التعديلات", "compose_form.sensitive.hide": "{count, plural, one {الإشارة إلى الوَسط كمُحتوى حسّاس} two{الإشارة إلى الوسطان كمُحتويان حسّاسان} other {الإشارة إلى الوسائط كمُحتويات حسّاسة}}", "compose_form.sensitive.marked": "{count, plural, one {تمَّ الإشارة إلى الوسط كمُحتوى حسّاس} two{تمَّ الإشارة إلى الوسطان كمُحتويان حسّاسان} other {تمَّ الإشارة إلى الوسائط كمُحتويات حسّاسة}}", "compose_form.sensitive.unmarked": "{count, plural, one {لم تَتِمّ الإشارة إلى الوسط كمُحتوى حسّاس} two{لم تَتِمّ الإشارة إلى الوسطان كمُحتويان حسّاسان} other {لم تَتِمّ الإشارة إلى الوسائط كمُحتويات حسّاسة}}", @@ -248,7 +248,7 @@ "keyboard_shortcuts.start": "لفتح عمود \"هيا نبدأ\"", "keyboard_shortcuts.toggle_hidden": "لعرض أو إخفاء النص مِن وراء التحذير", "keyboard_shortcuts.toggle_sensitivity": "لعرض/إخفاء الوسائط", - "keyboard_shortcuts.toot": "لتحرير تبويق جديد", + "keyboard_shortcuts.toot": "للشروع في تحرير منشور جديد", "keyboard_shortcuts.unfocus": "لإلغاء التركيز على حقل النص أو نافذة البحث", "keyboard_shortcuts.up": "للانتقال إلى أعلى القائمة", "lightbox.close": "إغلاق", @@ -281,7 +281,7 @@ "navigation_bar.blocks": "الحسابات المحجوبة", "navigation_bar.bookmarks": "الفواصل المرجعية", "navigation_bar.community_timeline": "الخيط العام المحلي", - "navigation_bar.compose": "تحرير تبويق جديد", + "navigation_bar.compose": "لتحرير منشور جديد", "navigation_bar.direct": "الرسائل المباشِرة", "navigation_bar.discover": "اكتشف", "navigation_bar.domain_blocks": "النطاقات المخفية", @@ -306,8 +306,9 @@ "notification.mention": "{name} ذكرك", "notification.own_poll": "انتهى استطلاعك للرأي", "notification.poll": "لقد إنتها تصويت شاركت فيه", - "notification.reblog": "{name} قام بترقية تبويقك", + "notification.reblog": "قام {name} بمشاركة منشورك", "notification.status": "{name} نشر للتو", + "notification.update": "{name} edited a post", "notifications.clear": "امسح الإخطارات", "notifications.clear_confirmation": "أمتأكد من أنك تود مسح جل الإخطارات الخاصة بك و المتلقاة إلى حد الآن ؟", "notifications.column_settings.alert": "إشعارات سطح المكتب", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "منشورات جديدة:", "notifications.column_settings.unread_notifications.category": "إشعارات غير مقروءة", "notifications.column_settings.unread_notifications.highlight": "علّم الإشعارات غير المقرؤة", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "الكل", "notifications.filter.boosts": "الترقيات", "notifications.filter.favourites": "المفضلة", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "جارٍ التحميل…", "regeneration_indicator.sublabel": "جارٍ تجهيز تغذية صفحتك الرئيسية!", "relative_time.days": "{number}ي", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "منذ {number, plural, zero {} one {# يوم} two {# يومين} few {# أيام} many {# أيام} other {# يوم}}", + "relative_time.full.hours": "منذ {number, plural, zero {} one {# ساعة واحدة} two {# ساعتين} few {# ساعات} many {# ساعات} other {# ساعة}}", + "relative_time.full.just_now": "الآن", + "relative_time.full.minutes": "منذ {number, plural, zero {} one {# دقيقة واحدة} two {# دقيقتين} few {# دقائق} many {# دقيقة} other {# دقائق}}", + "relative_time.full.seconds": "منذ {number, plural, zero {} one {# ثانية واحدة} two {# ثانيتين} few {# ثوانٍ} many {# ثوانٍ} other {# ثانية}}", "relative_time.hours": "{number}سا", "relative_time.just_now": "الآن", "relative_time.minutes": "{number}د", "relative_time.seconds": "{number}ثا", "relative_time.today": "اليوم", "reply_indicator.cancel": "إلغاء", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "أخرى", + "report.categories.spam": "مزعج", + "report.categories.violation": "المحتوى ينتهك شرطا أو عدة شروط استخدام للخادم", "report.forward": "التحويل إلى {target}", "report.forward_hint": "هذا الحساب ينتمي إلى خادوم آخَر. هل تودّ إرسال نسخة مجهولة مِن التقرير إلى هنالك أيضًا؟", "report.hint": "سوف يتم إرسال التقرير إلى المُشرِفين على خادومكم. بإمكانكم الإدلاء بشرح عن سبب الإبلاغ عن الحساب أسفله:", @@ -407,9 +409,9 @@ "status.delete": "احذف", "status.detailed_status": "تفاصيل المحادثة", "status.direct": "رسالة خاصة إلى @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "تعديل", + "status.edited": "عُدّل في {date}", + "status.edited_x_times": "عُدّل {count, plural, zero {} one {{count} مرة} two {{count} مرتين} few {{count} مرات} many {{count} مرات} other {{count} مرة}}", "status.embed": "إدماج", "status.favourite": "أضف إلى المفضلة", "status.filtered": "مُصفّى", @@ -423,12 +425,12 @@ "status.mute_conversation": "كتم المحادثة", "status.open": "وسع هذه المشاركة", "status.pin": "دبّسه على الصفحة التعريفية", - "status.pinned": "تبويق مثبَّت", + "status.pinned": "منشور مثبَّت", "status.read_more": "اقرأ المزيد", "status.reblog": "رَقِّي", "status.reblog_private": "القيام بالترقية إلى الجمهور الأصلي", "status.reblogged_by": "رقّاه {name}", - "status.reblogs.empty": "لم يقم أي أحد بترقية هذا التبويق بعد. عندما يقوم أحدهم بذلك سوف تظهر هنا.", + "status.reblogs.empty": "لم يقم أي أحد بمشاركة هذا المنشور بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.", "status.redraft": "إزالة و إعادة الصياغة", "status.remove_bookmark": "احذفه مِن الفواصل المرجعية", "status.reply": "ردّ", diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json index d4c4f84b0..526c0f0f0 100644 --- a/app/javascript/mastodon/locales/ast.json +++ b/app/javascript/mastodon/locales/ast.json @@ -308,6 +308,7 @@ "notification.poll": "Finó una encuesta na que votesti", "notification.reblog": "{name} compartió'l to estáu", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Llimpiar avisos", "notifications.clear_confirmation": "¿De xuru que quies llimpiar dafechu tolos avisos?", "notifications.column_settings.alert": "Avisos d'escritoriu", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Too", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json index 02e37c4c7..14cbddaf3 100644 --- a/app/javascript/mastodon/locales/bg.json +++ b/app/javascript/mastodon/locales/bg.json @@ -308,6 +308,7 @@ "notification.poll": "Анкета, в която сте гласували, приключи", "notification.reblog": "{name} сподели твоята публикация", "notification.status": "{name} току-що публикува", + "notification.update": "{name} edited a post", "notifications.clear": "Изчистване на известия", "notifications.clear_confirmation": "Сигурни ли сте, че искате да изчистите окончателно всичките си известия?", "notifications.column_settings.alert": "Десктоп известия", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Нови публикации:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Всичко", "notifications.filter.boosts": "Споделяния", "notifications.filter.favourites": "Любими", diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json index ec034b002..0c0a1ca1b 100644 --- a/app/javascript/mastodon/locales/bn.json +++ b/app/javascript/mastodon/locales/bn.json @@ -308,6 +308,7 @@ "notification.poll": "আপনি ভোট দিয়েছিলেন এমন এক নির্বাচনের ভোটের সময় শেষ হয়েছে", "notification.reblog": "{name} আপনার কার্যক্রমে সমর্থন দেখিয়েছেন", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "প্রজ্ঞাপনগুলো মুছে ফেলতে", "notifications.clear_confirmation": "আপনি কি নির্চিত প্রজ্ঞাপনগুলো মুছে ফেলতে চান ?", "notifications.column_settings.alert": "কম্পিউটারে প্রজ্ঞাপনগুলি", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "সব", "notifications.filter.boosts": "সমর্থনগুলো", "notifications.filter.favourites": "পছন্দের গুলো", diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json index f13b7dfd7..daea18086 100644 --- a/app/javascript/mastodon/locales/br.json +++ b/app/javascript/mastodon/locales/br.json @@ -308,6 +308,7 @@ "notification.poll": "Ur sontadeg ho deus mouezhet warnañ a zo echuet", "notification.reblog": "{name} skignet ho toud", "notification.status": "{name} en/he deus toudet", + "notification.update": "{name} edited a post", "notifications.clear": "Skarzhañ ar c'hemennoù", "notifications.clear_confirmation": "Ha sur oc'h e fell deoc'h skarzhañ ho kemennoù penn-da-benn?", "notifications.column_settings.alert": "Kemennoù war ar burev", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Toudoù nevez:", "notifications.column_settings.unread_notifications.category": "Kemennoù n'int ket lennet", "notifications.column_settings.unread_notifications.highlight": "Usskediñ kemennoù nevez", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Pep tra", "notifications.filter.boosts": "Skignadennoù", "notifications.filter.favourites": "Muiañ-karet", @@ -367,7 +369,7 @@ "relative_time.days": "{number}d", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", + "relative_time.full.just_now": "bremañ", "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}e", diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index 0ab88e2cd..15036eef9 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -47,8 +47,8 @@ "account.unmute": "Treure silenci de @{name}", "account.unmute_notifications": "Activar notificacions de @{name}", "account_note.placeholder": "Fes clic per afegir una nota", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Ràtio de retenció per dia després del registre", + "admin.dashboard.monthly_retention": "Ràtio de retenció per mes després del registre", "admin.dashboard.retention.average": "Mitjana", "admin.dashboard.retention.cohort": "Registres mes", "admin.dashboard.retention.cohort_size": "Nous usuaris", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Canvia l’enquesta per a permetre una única opció", "compose_form.publish": "Publicar", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Desa els canvis", "compose_form.sensitive.hide": "Marcar mèdia com a sensible", "compose_form.sensitive.marked": "Mèdia marcat com a sensible", "compose_form.sensitive.unmarked": "Mèdia no està marcat com a sensible", @@ -308,6 +308,7 @@ "notification.poll": "Ha finalitzat una enquesta en la que has votat", "notification.reblog": "{name} ha impulsat el teu estat", "notification.status": "ha publicat {name}", + "notification.update": "{name} ha editat una publicació", "notifications.clear": "Netejar notificacions", "notifications.clear_confirmation": "Estàs segur que vols esborrar permanentment totes les teves notificacions?", "notifications.column_settings.alert": "Notificacions d'escriptori", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Nous tuts:", "notifications.column_settings.unread_notifications.category": "Notificacions no llegides", "notifications.column_settings.unread_notifications.highlight": "Destaca notificacions no llegides", + "notifications.column_settings.update": "Edicions:", "notifications.filter.all": "Tots", "notifications.filter.boosts": "Impulsos", "notifications.filter.favourites": "Favorits", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Carregant…", "regeneration_indicator.sublabel": "S'està preparant la línia de temps Inici!", "relative_time.days": "fa {number} dies", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "fa {number, plural, one {# dia} other {# dies}}", + "relative_time.full.hours": "fa {number, plural, one {# hora} other {# hores}}", + "relative_time.full.just_now": "ara mateix", + "relative_time.full.minutes": "fa {number, plural, one {# minut} other {# minuts}}", + "relative_time.full.seconds": "fa {number, plural, one {# segon} other {# segons}}", "relative_time.hours": "fa {number} hores", "relative_time.just_now": "ara", "relative_time.minutes": "fa {number} minuts", "relative_time.seconds": "fa {number} segons", "relative_time.today": "avui", "reply_indicator.cancel": "Cancel·lar", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "Altres", + "report.categories.spam": "Contingut brossa", + "report.categories.violation": "El contingut viola una o més regles del servidor", "report.forward": "Reenvia a {target}", "report.forward_hint": "Aquest compte és d'un altre servidor. Enviar-hi també una copia anònima del informe?", "report.hint": "El informe s'enviarà als moderadors del teu servidor. Pots explicar perquè vols informar d'aquest compte aquí:", @@ -407,14 +409,14 @@ "status.delete": "Esborrar", "status.detailed_status": "Visualització detallada de la conversa", "status.direct": "Missatge directe @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Edita", + "status.edited": "Editat {date}", + "status.edited_x_times": "Editat {count, plural, one {{count} vegada} other {{count} vegades}}", "status.embed": "Incrustar", "status.favourite": "Favorit", "status.filtered": "Filtrat", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} ha creat {date}", + "status.history.edited": "{name} ha editat {date}", "status.load_more": "Carrega més", "status.media_hidden": "Multimèdia amagat", "status.mention": "Esmentar @{name}", diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json index d3fade546..8956cd678 100644 --- a/app/javascript/mastodon/locales/co.json +++ b/app/javascript/mastodon/locales/co.json @@ -308,6 +308,7 @@ "notification.poll": "Un scandagliu induve avete vutatu hè finitu", "notification.reblog": "{name} hà spartutu u vostru statutu", "notification.status": "{name} hà appena pubblicatu", + "notification.update": "{name} edited a post", "notifications.clear": "Purgà e nutificazione", "notifications.clear_confirmation": "Site sicuru·a che vulete toglie tutte ste nutificazione?", "notifications.column_settings.alert": "Nutificazione nant'à l'urdinatore", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Statuti novi:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Tuttu", "notifications.filter.boosts": "Spartere", "notifications.filter.favourites": "Favuriti", diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json index 2b31d32c3..2c5bf8a85 100644 --- a/app/javascript/mastodon/locales/cs.json +++ b/app/javascript/mastodon/locales/cs.json @@ -308,6 +308,7 @@ "notification.poll": "Anketa, ve které jste hlasovali, skončila", "notification.reblog": "Uživatel {name} boostnul váš příspěvek", "notification.status": "Nový příspěvek od {name}", + "notification.update": "{name} edited a post", "notifications.clear": "Smazat oznámení", "notifications.clear_confirmation": "Opravdu chcete trvale smazat všechna vaše oznámení?", "notifications.column_settings.alert": "Oznámení na počítači", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Nové příspěvky:", "notifications.column_settings.unread_notifications.category": "Nepřečtená oznámení", "notifications.column_settings.unread_notifications.highlight": "Zvýraznit nepřečtená oznámení", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Vše", "notifications.filter.boosts": "Boosty", "notifications.filter.favourites": "Oblíbení", diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json index a6379568c..387f33782 100644 --- a/app/javascript/mastodon/locales/cy.json +++ b/app/javascript/mastodon/locales/cy.json @@ -308,6 +308,7 @@ "notification.poll": "Mae pleidlais rydych wedi pleidleisio ynddi wedi dod i ben", "notification.reblog": "Hysbysebodd {name} eich tŵt", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clirio hysbysiadau", "notifications.clear_confirmation": "Ydych chi'n sicr eich bod am glirio'ch holl hysbysiadau am byth?", "notifications.column_settings.alert": "Hysbysiadau bwrdd gwaith", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Pob", "notifications.filter.boosts": "Hybiadau", "notifications.filter.favourites": "Ffefrynnau", diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json index 56c1daa13..4e1832fd3 100644 --- a/app/javascript/mastodon/locales/da.json +++ b/app/javascript/mastodon/locales/da.json @@ -47,7 +47,7 @@ "account.unmute": "Fjern tavsgjort for @{name}", "account.unmute_notifications": "Slå notifikationer om @{name} til igen", "account_note.placeholder": "Klik for at tilføje notat", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", + "admin.dashboard.daily_retention": "Brugerfastholdelsesrate efter dag efter tilmelding", "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", "admin.dashboard.retention.average": "Gennemsnitlig", "admin.dashboard.retention.cohort": "Tilmeldingsmåned", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Ændr afstemning til enkeltvalgstype", "compose_form.publish": "Udgiv", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Gem ændringer", "compose_form.sensitive.hide": "{count, plural, one {Markér medie som følsomt} other {Markér medier som følsomme}}", "compose_form.sensitive.marked": "{count, plural, one {Medie er markeret som sensitivt} other {Medier er markerede som sensitive}}", "compose_form.sensitive.unmarked": "{count, plural, one {Medie er ikke market som sensitivt} other {Medier er ikke markerede som sensitive}}", @@ -308,6 +308,7 @@ "notification.poll": "En afstemning, du deltog i, er færdig", "notification.reblog": "{name} fremhævede dit indlæg", "notification.status": "{name} har netop udgivet", + "notification.update": "{name} redigerede et indlæg", "notifications.clear": "Ryd notifikationer", "notifications.clear_confirmation": "Er du sikker på, du vil rydde alle dine notifikationer permanent?", "notifications.column_settings.alert": "Skrivebordsnotifikationer", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Nye indlæg:", "notifications.column_settings.unread_notifications.category": "Ulæste notifikationer", "notifications.column_settings.unread_notifications.highlight": "Fremhæv ulæste notifikationer", + "notifications.column_settings.update": "Redigeringer:", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Fremhævelser", "notifications.filter.favourites": "Favoritter", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Indlæser…", "regeneration_indicator.sublabel": "Din hjemmetidslinje klargøres!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# dag} other {# dage}} diden", + "relative_time.full.hours": "{number, plural, one {# time} other {# timer}} siden", + "relative_time.full.just_now": "netop nu", + "relative_time.full.minutes": "{number, plural, one {# minut} other {# minutter}} siden", + "relative_time.full.seconds": "{number, plural, one {# sekund} other {# sekunder}} siden", "relative_time.hours": "{number}t", "relative_time.just_now": "nu", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "i dag", "reply_indicator.cancel": "Afbryd", - "report.categories.other": "Other", + "report.categories.other": "Andre", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "Indhold overtræder en eller flere serverregler", "report.forward": "Videresend til {target}", "report.forward_hint": "Kontoen er fra en anden server. Send en anonymiseret kopi af anmeldelsen dertil også?", "report.hint": "Anmeldelsen sendes til din serverordstyrer. Du kan oplyse nærmere om kontoanmeldelsen nedenfor:", @@ -407,14 +409,14 @@ "status.delete": "Slet", "status.detailed_status": "Detaljeret samtalevisning", "status.direct": "Direkte besked til @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Redigér", + "status.edited": "Redigeret {date}", + "status.edited_x_times": "Redigeret {count, plural, one {{count} gang} other {{count} gange}}", "status.embed": "Indlejr", "status.favourite": "Favorit", "status.filtered": "Filtreret", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} oprettet {date}", + "status.history.edited": "{name} redigeret {date}", "status.load_more": "Indlæs mere", "status.media_hidden": "Medie skjult", "status.mention": "Nævn @{name}", diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json index 12ac0b253..89faee676 100644 --- a/app/javascript/mastodon/locales/de.json +++ b/app/javascript/mastodon/locales/de.json @@ -47,8 +47,8 @@ "account.unmute": "@{name} nicht mehr stummschalten", "account.unmute_notifications": "Benachrichtigungen von @{name} einschalten", "account_note.placeholder": "Notiz durch Klicken hinzufügen", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Benutzerverbleibrate nach Tag nach Anmeldung", + "admin.dashboard.monthly_retention": "Benutzerverbleibrate nach Monat nach Anmeldung", "admin.dashboard.retention.average": "Durchschnitt", "admin.dashboard.retention.cohort": "Anmeldemonat", "admin.dashboard.retention.cohort_size": "Neue Benutzer", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Umfrage ändern, um eine einzige Wahl zu erlauben", "compose_form.publish": "Tröt", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Änderungen speichern", "compose_form.sensitive.hide": "Medien als NSFW markieren", "compose_form.sensitive.marked": "Medien sind als NSFW markiert", "compose_form.sensitive.unmarked": "Medien sind nicht als NSFW markiert", @@ -308,6 +308,7 @@ "notification.poll": "Eine Umfrage in der du abgestimmt hast ist vorbei", "notification.reblog": "{name} hat deinen Beitrag geteilt", "notification.status": "{name} hat gerade etwas gepostet", + "notification.update": "{name} edited a post", "notifications.clear": "Mitteilungen löschen", "notifications.clear_confirmation": "Bist du dir sicher, dass du alle Mitteilungen löschen möchtest?", "notifications.column_settings.alert": "Desktop-Benachrichtigungen", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Neue Beiträge:", "notifications.column_settings.unread_notifications.category": "Ungelesene Benachrichtigungen", "notifications.column_settings.unread_notifications.highlight": "Ungelesene Benachrichtigungen hervorheben", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Geteilte Beiträge", "notifications.filter.favourites": "Favorisierungen", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Laden…", "regeneration_indicator.sublabel": "Deine Startseite wird gerade vorbereitet!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "vor {number, plural, one {# Tag} other {# Tagen}}", + "relative_time.full.hours": "vor {number, plural, one {# Stunde} other {# Stunden}}", + "relative_time.full.just_now": "gerade eben", + "relative_time.full.minutes": "vor {number, plural, one {# Minute} other {# Minuten}}", + "relative_time.full.seconds": "vor {number, plural, one {1 Sekunde} other {# Sekunden}}", "relative_time.hours": "{number}h", "relative_time.just_now": "jetzt", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "heute", "reply_indicator.cancel": "Abbrechen", - "report.categories.other": "Other", + "report.categories.other": "Andere", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "Inhalt verletzt ein oder mehrere Server-Regeln", "report.forward": "An {target} weiterleiten", "report.forward_hint": "Dieses Konto ist von einem anderen Server. Soll eine anonymisierte Kopie des Berichts auch dorthin geschickt werden?", "report.hint": "Der Bericht wird an die Moderatoren des Servers geschickt. Du kannst hier eine Erklärung angeben, warum du dieses Konto meldest:", @@ -407,14 +409,14 @@ "status.delete": "Löschen", "status.detailed_status": "Detaillierte Ansicht der Konversation", "status.direct": "Direktnachricht @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Bearbeiten", + "status.edited": "Bearbeitet {date}", + "status.edited_x_times": "{count, plural, one {{count} mal} other {{count} mal}} bearbeitet", "status.embed": "Einbetten", "status.favourite": "Favorisieren", "status.filtered": "Gefiltert", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} erstellte {date}", + "status.history.edited": "{name} bearbeitete {date}", "status.load_more": "Weitere laden", "status.media_hidden": "Medien versteckt", "status.mention": "@{name} erwähnen", diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json index 1f6477e44..5be55db82 100644 --- a/app/javascript/mastodon/locales/defaultMessages.json +++ b/app/javascript/mastodon/locales/defaultMessages.json @@ -2408,6 +2408,10 @@ { "defaultMessage": "New toots:", "id": "notifications.column_settings.status" + }, + { + "defaultMessage": "Edits:", + "id": "notifications.column_settings.update" } ], "path": "app/javascript/mastodon/features/notifications/components/column_settings.json" @@ -2494,6 +2498,10 @@ "id": "notification.status" }, { + "defaultMessage": "{name} edited a post", + "id": "notification.update" + }, + { "defaultMessage": "{name} has requested to follow you", "id": "notification.follow_request" } diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json index 78d071f66..450b3aff8 100644 --- a/app/javascript/mastodon/locales/el.json +++ b/app/javascript/mastodon/locales/el.json @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Ενημέρωση δημοσκόπησης με μοναδική επιλογή", "compose_form.publish": "Τουτ", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Αποθήκευση αλλαγών", "compose_form.sensitive.hide": "Σημείωσε τα πολυμέσα ως ευαίσθητα", "compose_form.sensitive.marked": "Το πολυμέσο έχει σημειωθεί ως ευαίσθητο", "compose_form.sensitive.unmarked": "Το πολυμέσο δεν έχει σημειωθεί ως ευαίσθητο", @@ -308,6 +308,7 @@ "notification.poll": "Τελείωσε μια από τις ψηφοφορίες που συμμετείχες", "notification.reblog": "Ο/Η {name} προώθησε την κατάστασή σου", "notification.status": "Ο/Η {name} μόλις έγραψε κάτι", + "notification.update": "{name} επεξεργάστηκε μια δημοσίευση", "notifications.clear": "Καθαρισμός ειδοποιήσεων", "notifications.clear_confirmation": "Σίγουρα θέλεις να καθαρίσεις όλες τις ειδοποιήσεις σου;", "notifications.column_settings.alert": "Ειδοποιήσεις επιφάνειας εργασίας", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Νέα τουτ:", "notifications.column_settings.unread_notifications.category": "Μη αναγνωσμένες ειδοποιήσεις", "notifications.column_settings.unread_notifications.highlight": "Επισήμανση μη αναγνωσμένων ειδοποιήσεων", + "notifications.column_settings.update": "Επεξεργασίες:", "notifications.filter.all": "Όλες", "notifications.filter.boosts": "Προωθήσεις", "notifications.filter.favourites": "Αγαπημένα", @@ -367,7 +369,7 @@ "relative_time.days": "{number}η", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", + "relative_time.full.just_now": "μόλις τώρα", "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}ω", @@ -376,9 +378,9 @@ "relative_time.seconds": "{number}δ", "relative_time.today": "σήμερα", "reply_indicator.cancel": "Άκυρο", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "Άλλες", + "report.categories.spam": "Ανεπιθύμητα", + "report.categories.violation": "Το περιεχόμενο παραβιάζει έναν ή περισσότερους κανόνες διακομιστή", "report.forward": "Προώθηση προς {target}", "report.forward_hint": "Ο λογαριασμός είναι από διαφορετικό διακομιστή. Να σταλεί ανώνυμο αντίγραφο της καταγγελίας κι εκεί;", "report.hint": "Η καταγγελία θα σταλεί στους διαχειριστές του κόμβου σου. Μπορείς να περιγράψεις γιατί καταγγέλεις αυτόν το λογαριασμό παρακάτω:", @@ -407,8 +409,8 @@ "status.delete": "Διαγραφή", "status.detailed_status": "Προβολή λεπτομερειών συζήτησης", "status.direct": "Προσωπικό μήνυμα προς @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", + "status.edit": "Επεξεργασία", + "status.edited": "Επεξεργάστηκε στις {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Ενσωμάτωσε", "status.favourite": "Σημείωσε ως αγαπημένο", diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 9b5676ee3..ad3508f8d 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -313,6 +313,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your post", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -331,6 +332,7 @@ "notifications.column_settings.status": "New posts:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json index c3f7e3acd..1039bb695 100644 --- a/app/javascript/mastodon/locales/eo.json +++ b/app/javascript/mastodon/locales/eo.json @@ -308,6 +308,7 @@ "notification.poll": "Partoprenita balotenketo finiĝis", "notification.reblog": "{name} diskonigis vian mesaĝon", "notification.status": "{name} ĵus afiŝita", + "notification.update": "{name} edited a post", "notifications.clear": "Forviŝi sciigojn", "notifications.clear_confirmation": "Ĉu vi certas, ke vi volas porĉiame forviŝi ĉiujn viajn sciigojn?", "notifications.column_settings.alert": "Retumilaj sciigoj", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Novaj mesaĝoj:", "notifications.column_settings.unread_notifications.category": "Nelegitaj sciigoj", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Ĉiuj", "notifications.filter.boosts": "Diskonigoj", "notifications.filter.favourites": "Stelumoj", diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json index d57be2717..24902a058 100644 --- a/app/javascript/mastodon/locales/es-AR.json +++ b/app/javascript/mastodon/locales/es-AR.json @@ -47,8 +47,8 @@ "account.unmute": "Dejar de silenciar a @{name}", "account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}", "account_note.placeholder": "Hacé clic par agregar una nota", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Tasa de retención de usuarios por día, después del registro", + "admin.dashboard.monthly_retention": "Tasa de retención de usuarios por mes, después del registro", "admin.dashboard.retention.average": "Promedio", "admin.dashboard.retention.cohort": "Mes de registro", "admin.dashboard.retention.cohort_size": "Nuevos usuarios", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Cambiar encuesta para permitir una sola opción", "compose_form.publish": "Enviar", "compose_form.publish_loud": "¡{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Guardar cambios", "compose_form.sensitive.hide": "Marcar medio como sensible", "compose_form.sensitive.marked": "{count, plural, one {El medio está marcado como sensible} other {Los medios están marcados como sensibles}}", "compose_form.sensitive.unmarked": "El medio no está marcado como sensible", @@ -308,6 +308,7 @@ "notification.poll": "Finalizó una encuesta en la que votaste", "notification.reblog": "{name} adhirió a tu mensaje", "notification.status": "{name} acaba de enviar un mensaje", + "notification.update": "{name} editó un mensaje", "notifications.clear": "Limpiar notificaciones", "notifications.clear_confirmation": "¿Estás seguro que querés limpiar todas tus notificaciones permanentemente?", "notifications.column_settings.alert": "Notificaciones de escritorio", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Nuevos mensajes:", "notifications.column_settings.unread_notifications.category": "Notificaciones sin leer", "notifications.column_settings.unread_notifications.highlight": "Resaltar notificaciones no leídas", + "notifications.column_settings.update": "Ediciones:", "notifications.filter.all": "Todas", "notifications.filter.boosts": "Adhesiones", "notifications.filter.favourites": "Favoritos", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Se está preparando tu línea temporal principal!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural,one {hace # día} other {hace # días}}", + "relative_time.full.hours": "{number, plural,one {hace # hora} other {hace # horas}}", + "relative_time.full.just_now": "recién", + "relative_time.full.minutes": "{number, plural,one {hace # minuto} other {hace # minutos}}", + "relative_time.full.seconds": "{number, plural,one {hace # segundo} other {hace # segundos}}", "relative_time.hours": "{number}h", "relative_time.just_now": "ahora", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "hoy", "reply_indicator.cancel": "Cancelar", - "report.categories.other": "Other", + "report.categories.other": "Otra", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "El contenido viola una o más reglas del servidor", "report.forward": "Reenviar a {target}", "report.forward_hint": "La cuenta es de otro servidor. ¿Querés enviar una copia anonimizada del informe también ahí?", "report.hint": "La denuncia se enviará a los moderadores de tu servidor. A continuación, podés proporcionar una explicación de por qué estás denunciando esta cuenta:", @@ -407,14 +409,14 @@ "status.delete": "Eliminar", "status.detailed_status": "Vista de conversación detallada", "status.direct": "Mensaje directo para @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Editar", + "status.edited": "Editado {date}", + "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Insertar", "status.favourite": "Marcar como favorito", "status.filtered": "Filtrado", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "Creado por {name} el {date}", + "status.history.edited": "Editado por {name} el {date}", "status.load_more": "Cargar más", "status.media_hidden": "Medios ocultos", "status.mention": "Mencionar a @{name}", diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json index ba56241ff..ad967f4e9 100644 --- a/app/javascript/mastodon/locales/es-MX.json +++ b/app/javascript/mastodon/locales/es-MX.json @@ -47,8 +47,8 @@ "account.unmute": "Dejar de silenciar a @{name}", "account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}", "account_note.placeholder": "Clic para añadir nota", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Tasa de retención de usuarios por día después del registro", + "admin.dashboard.monthly_retention": "Tasa de retención de usuarios por mes después del registro", "admin.dashboard.retention.average": "Promedio", "admin.dashboard.retention.cohort": "Mes de registro", "admin.dashboard.retention.cohort_size": "Nuevos usuarios", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Modificar encuesta para permitir una única opción", "compose_form.publish": "Tootear", "compose_form.publish_loud": "¡{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Guardar cambios", "compose_form.sensitive.hide": "Marcar multimedia como sensible", "compose_form.sensitive.marked": "Material marcado como sensible", "compose_form.sensitive.unmarked": "Material no marcado como sensible", @@ -308,6 +308,7 @@ "notification.poll": "Una encuesta en la que has votado ha terminado", "notification.reblog": "{name} ha retooteado tu estado", "notification.status": "{name} acaba de publicar", + "notification.update": "{name} edited a post", "notifications.clear": "Limpiar notificaciones", "notifications.clear_confirmation": "¿Seguro que quieres limpiar permanentemente todas tus notificaciones?", "notifications.column_settings.alert": "Notificaciones de escritorio", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Nuevos toots:", "notifications.column_settings.unread_notifications.category": "Notificaciones sin leer", "notifications.column_settings.unread_notifications.highlight": "Destacar notificaciones no leídas", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Todos", "notifications.filter.boosts": "Retoots", "notifications.filter.favourites": "Favoritos", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!", "relative_time.days": "{number} d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "hace {number, plural, one {# día} other {# días}}", + "relative_time.full.hours": "hace {number, plural, one {# hora} other {# horas}}", + "relative_time.full.just_now": "justo ahora", + "relative_time.full.minutes": "hace {number, plural, one {# minuto} other {# minutos}}", + "relative_time.full.seconds": "hace {number, plural, one {# segundo} other {# segundos}}", "relative_time.hours": "{number} h", "relative_time.just_now": "ahora", "relative_time.minutes": "{number} m", "relative_time.seconds": "{number} s", "relative_time.today": "hoy", "reply_indicator.cancel": "Cancelar", - "report.categories.other": "Other", + "report.categories.other": "Otros", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "El contenido viola una o más reglas del servidor", "report.forward": "Reenviar a {target}", "report.forward_hint": "Esta cuenta es de otro servidor. ¿Enviar una copia anonimizada del informe allí también?", "report.hint": "El informe se enviará a los moderadores de tu instancia. Puedes proporcionar una explicación de por qué informas sobre esta cuenta a continuación:", @@ -407,14 +409,14 @@ "status.delete": "Borrar", "status.detailed_status": "Vista de conversación detallada", "status.direct": "Mensaje directo a @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Editar", + "status.edited": "Editado {date}", + "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Incrustado", "status.favourite": "Favorito", "status.filtered": "Filtrado", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} creó {date}", + "status.history.edited": "{name} editó {date}", "status.load_more": "Cargar más", "status.media_hidden": "Contenido multimedia oculto", "status.mention": "Mencionar", diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json index 0b91f0809..3ac5a9c05 100644 --- a/app/javascript/mastodon/locales/es.json +++ b/app/javascript/mastodon/locales/es.json @@ -47,8 +47,8 @@ "account.unmute": "Dejar de silenciar a @{name}", "account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}", "account_note.placeholder": "Clic para añadir nota", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Tasa de retención de usuarios por día después del registro", + "admin.dashboard.monthly_retention": "Tasa de retención de usuarios por mes después del registro", "admin.dashboard.retention.average": "Media", "admin.dashboard.retention.cohort": "Mes de registro", "admin.dashboard.retention.cohort_size": "Nuevos usuarios", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Modificar encuesta para permitir una única opción", "compose_form.publish": "Tootear", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Guardar cambios", "compose_form.sensitive.hide": "{count, plural, one {Marcar material como sensible} other {Marcar material como sensible}}", "compose_form.sensitive.marked": "{count, plural, one {Material marcado como sensible} other {Material marcado como sensible}}", "compose_form.sensitive.unmarked": "{count, plural, one {Material no marcado como sensible} other {Material no marcado como sensible}}", @@ -308,6 +308,7 @@ "notification.poll": "Una encuesta en la que has votado ha terminado", "notification.reblog": "{name} ha retooteado tu publicación", "notification.status": "{name} acaba de publicar", + "notification.update": "{name} editó una publicación", "notifications.clear": "Limpiar notificaciones", "notifications.clear_confirmation": "¿Seguro que quieres limpiar permanentemente todas tus notificaciones?", "notifications.column_settings.alert": "Notificaciones de escritorio", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Nuevas publicaciones:", "notifications.column_settings.unread_notifications.category": "Notificaciones sin leer", "notifications.column_settings.unread_notifications.highlight": "Destacar notificaciones no leídas", + "notifications.column_settings.update": "Ediciones:", "notifications.filter.all": "Todos", "notifications.filter.boosts": "Retoots", "notifications.filter.favourites": "Favoritos", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Cargando…", "regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!", "relative_time.days": "{number} d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "hace {number, plural, one {# día} other {# días}}", + "relative_time.full.hours": "hace {number, plural, one {# hora} other {# horas}}", + "relative_time.full.just_now": "justo ahora", + "relative_time.full.minutes": "hace {number, plural, one {# minuto} other {# minutos}}", + "relative_time.full.seconds": "hace {number, plural, one {# segundo} other {# segundos}}", "relative_time.hours": "{number} h", "relative_time.just_now": "ahora", "relative_time.minutes": "{number} m", "relative_time.seconds": "{number} s", "relative_time.today": "hoy", "reply_indicator.cancel": "Cancelar", - "report.categories.other": "Other", + "report.categories.other": "Otros", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "El contenido viola una o más reglas del servidor", "report.forward": "Reenviar a {target}", "report.forward_hint": "Esta cuenta es de otro servidor. ¿Enviar una copia anonimizada del informe allí también?", "report.hint": "El informe se enviará a los moderadores de tu instancia. Puedes proporcionar una explicación de por qué informas sobre esta cuenta a continuación:", @@ -407,14 +409,14 @@ "status.delete": "Borrar", "status.detailed_status": "Vista de conversación detallada", "status.direct": "Mensaje directo a @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Editar", + "status.edited": "Editado {date}", + "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Incrustado", "status.favourite": "Favorito", "status.filtered": "Filtrado", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} creó {date}", + "status.history.edited": "{name} editó {date}", "status.load_more": "Cargar más", "status.media_hidden": "Contenido multimedia oculto", "status.mention": "Mencionar", diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json index c1c71a91a..8f180c411 100644 --- a/app/javascript/mastodon/locales/et.json +++ b/app/javascript/mastodon/locales/et.json @@ -308,6 +308,7 @@ "notification.poll": "Küsitlus, milles osalesite, on lõppenud", "notification.reblog": "{name} upitas Teie staatust", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Puhasta teated", "notifications.clear_confirmation": "Olete kindel, et soovite püsivalt kõik oma teated eemaldada?", "notifications.column_settings.alert": "Töölauateated", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Kõik", "notifications.filter.boosts": "Upitused", "notifications.filter.favourites": "Lemmikud", diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json index 4581dfe95..da3d66a9a 100644 --- a/app/javascript/mastodon/locales/eu.json +++ b/app/javascript/mastodon/locales/eu.json @@ -47,8 +47,8 @@ "account.unmute": "Desmututu @{name}", "account.unmute_notifications": "Desmututu @{name}(r)en jakinarazpenak", "account_note.placeholder": "Click to add a note", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Erabiltzaile atxikitze-tasa izena eman ondorengo eguneko", + "admin.dashboard.monthly_retention": "Erabiltzaile atxikitze-tasa izena eman ondorengo hilabeteko", "admin.dashboard.retention.average": "Batezbestekoa", "admin.dashboard.retention.cohort": "Izen emate hilean", "admin.dashboard.retention.cohort_size": "Erabiltzaile berriak", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Aldatu inkesta aukera bakarra onartzeko", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Gorde aldaketak", "compose_form.sensitive.hide": "Markatu multimedia hunkigarri gisa", "compose_form.sensitive.marked": "Multimedia edukia hunkigarri gisa markatu da", "compose_form.sensitive.unmarked": "Multimedia edukia ez da hunkigarri gisa markatu", @@ -308,6 +308,7 @@ "notification.poll": "Zuk erantzun duzun inkesta bat bukatu da", "notification.reblog": "{name}(e)k bultzada eman dio zure bidalketari", "notification.status": "{name} erabiltzaileak bidalketa egin berri du", + "notification.update": "{name} erabiltzaileak bidalketa bat editatu du", "notifications.clear": "Garbitu jakinarazpenak", "notifications.clear_confirmation": "Ziur zure jakinarazpen guztiak behin betirako garbitu nahi dituzula?", "notifications.column_settings.alert": "Mahaigaineko jakinarazpenak", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Bidalketa berriak:", "notifications.column_settings.unread_notifications.category": "Irakurri gabeko jakinarazpenak", "notifications.column_settings.unread_notifications.highlight": "Nabarmendu irakurri gabeko jakinarazpenak", + "notifications.column_settings.update": "Edizioak:", "notifications.filter.all": "Denak", "notifications.filter.boosts": "Bultzadak", "notifications.filter.favourites": "Gogokoak", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Kargatzen…", "regeneration_indicator.sublabel": "Zure hasiera-jarioa prestatzen ari da!", "relative_time.days": "{number}e", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "Duela {number, plural, one {egun #} other {# egun}}", + "relative_time.full.hours": "Duela {number, plural, one {ordu #} other {# ordu}}", + "relative_time.full.just_now": "oraintxe", + "relative_time.full.minutes": "Duela {number, plural, one {minutu #} other {# minutu}}", + "relative_time.full.seconds": "Duela {number, plural, one {segundo #} other {# segundo}}", "relative_time.hours": "{number}h", "relative_time.just_now": "orain", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "gaur", "reply_indicator.cancel": "Utzi", - "report.categories.other": "Other", + "report.categories.other": "Bestelakoak", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "Edukiak zerbitzariko arau bat edo gehiago urratzen ditu", "report.forward": "Birbidali hona: {target}", "report.forward_hint": "Kontu hau beste zerbitzari batekoa da. Bidali txostenaren kopia anonimo hara ere?", "report.hint": "Txostena zure zerbitzariaren moderatzaileei bidaliko zaie. Kontu hau zergatik salatzen duzun behean azaldu dezakezu:", @@ -407,14 +409,14 @@ "status.delete": "Ezabatu", "status.detailed_status": "Elkarrizketaren ikuspegi xehetsua", "status.direct": "Mezu zuzena @{name}(r)i", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Editatu", + "status.edited": "Editatua {date}", + "status.edited_x_times": "{count, plural, one {behin} other {{count} aldiz}} editatua", "status.embed": "Txertatu", "status.favourite": "Gogokoa", "status.filtered": "Iragazita", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} erabiltzaileak sortua {date}", + "status.history.edited": "{name} erabiltzaileak editatua {date}", "status.load_more": "Kargatu gehiago", "status.media_hidden": "Multimedia ezkutatua", "status.mention": "Aipatu @{name}", diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json index f36850dc2..76dd3fdc0 100644 --- a/app/javascript/mastodon/locales/fa.json +++ b/app/javascript/mastodon/locales/fa.json @@ -308,6 +308,7 @@ "notification.poll": "نظرسنجیای که در آن رأی دادید به پایان رسیده است", "notification.reblog": "{name} فرستهتان را تقویت کرد", "notification.status": "{name} چیزی فرستاد", + "notification.update": "{name} edited a post", "notifications.clear": "پاکسازی آگاهیها", "notifications.clear_confirmation": "مطمئنید میخواهید همهٔ آگاهیهایتان را برای همیشه پاک کنید؟", "notifications.column_settings.alert": "آگاهیهای میزکار", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "فرستههای جدید:", "notifications.column_settings.unread_notifications.category": "آگاهیهای خوانده نشده", "notifications.column_settings.unread_notifications.highlight": "پررنگ کردن آگاهیهای خوانده نشده", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "همه", "notifications.filter.boosts": "تقویتها", "notifications.filter.favourites": "پسندها", @@ -412,7 +414,7 @@ "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "جاگذاری", "status.favourite": "پسندیدن", - "status.filtered": "پالایششده", + "status.filtered": "پالوده", "status.history.created": "{name} created {date}", "status.history.edited": "{name} edited {date}", "status.load_more": "بار کردن بیشتر", diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json index 58e65bed1..032344abe 100644 --- a/app/javascript/mastodon/locales/fi.json +++ b/app/javascript/mastodon/locales/fi.json @@ -47,8 +47,8 @@ "account.unmute": "Poista käyttäjän @{name} mykistys", "account.unmute_notifications": "Poista mykistys käyttäjän @{name} ilmoituksilta", "account_note.placeholder": "Lisää muistiinpano napsauttamalla", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Käyttäjän säilyminen rekisteröitymisen jälkeiseen päivään mennessä", + "admin.dashboard.monthly_retention": "Käyttäjän säilyminen rekisteröitymisen jälkeiseen kuukauteen mennessä", "admin.dashboard.retention.average": "Keskimäärin", "admin.dashboard.retention.cohort": "Kirjautumiset", "admin.dashboard.retention.cohort_size": "Uudet käyttäjät", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Muuta kysely sallimaan vain yksi valinta", "compose_form.publish": "Lähetä viesti", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Tallenna muutokset", "compose_form.sensitive.hide": "{count, plural, one {Merkitse media arkaluontoiseksi} other {Merkitse media arkaluontoiseksi}}", "compose_form.sensitive.marked": "{count, plural, one {Media on merkitty arkaluontoiseksi} other {Media on merkitty arkaluontoiseksi}}", "compose_form.sensitive.unmarked": "{count, plural, one {Mediaa ei ole merkitty arkaluontoiseksi} other {Mediaa ei ole merkitty arkaluontoiseksi}}", @@ -308,6 +308,7 @@ "notification.poll": "Kysely, johon osallistuit, on päättynyt", "notification.reblog": "{name} buustasi julkaisusi", "notification.status": "{name} julkaisi juuri", + "notification.update": "{name} muokkasi viestiä", "notifications.clear": "Tyhjennä ilmoitukset", "notifications.clear_confirmation": "Haluatko varmasti poistaa kaikki ilmoitukset pysyvästi?", "notifications.column_settings.alert": "Työpöytäilmoitukset", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Uudet julkaisut:", "notifications.column_settings.unread_notifications.category": "Lukemattomat ilmoitukset", "notifications.column_settings.unread_notifications.highlight": "Korosta lukemattomat ilmoitukset", + "notifications.column_settings.update": "Muokkaukset:", "notifications.filter.all": "Kaikki", "notifications.filter.boosts": "Buustit", "notifications.filter.favourites": "Suosikit", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Ladataan…", "regeneration_indicator.sublabel": "Kotinäkymääsi valmistellaan!", "relative_time.days": "{number} pv", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# päivä} other {# päivää}} sitten", + "relative_time.full.hours": "{number, plural, one {# tunti} other {# tuntia}} sitten", + "relative_time.full.just_now": "juuri nyt", + "relative_time.full.minutes": "{number, plural, one {# minuutti} other {# minuuttia}} sitten", + "relative_time.full.seconds": "{number, plural, one {# sekunti} other {# sekuntia}} sitten", "relative_time.hours": "{number} tuntia", "relative_time.just_now": "nyt", "relative_time.minutes": "{number} min", "relative_time.seconds": "{number} sek", "relative_time.today": "tänään", "reply_indicator.cancel": "Peruuta", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "Muu", + "report.categories.spam": "Roskaposti", + "report.categories.violation": "Sisältö rikkoo yhden tai useamman palvelimen sääntöjä", "report.forward": "Välitä kohteeseen {target}", "report.forward_hint": "Tämä tili on toisella palvelimella. Haluatko lähettää nimettömän raportin myös sinne?", "report.hint": "Raportti lähetetään oman palvelimesi moderaattoreille. Voit kertoa alla, miksi raportoit tästä tilistä:", @@ -407,14 +409,14 @@ "status.delete": "Poista", "status.detailed_status": "Yksityiskohtainen keskustelunäkymä", "status.direct": "Pikaviesti käyttäjälle @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Muokkaa", + "status.edited": "Muokattu {date}", + "status.edited_x_times": "Muokattu {count, plural, one {{count} aika} other {{count} kertaa}}", "status.embed": "Upota", "status.favourite": "Tykkää", "status.filtered": "Suodatettu", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} luotu {date}", + "status.history.edited": "{name} muokkasi {date}", "status.load_more": "Lataa lisää", "status.media_hidden": "Media piilotettu", "status.mention": "Mainitse @{name}", diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json index 8c2b8f3e6..c12eb7e6c 100644 --- a/app/javascript/mastodon/locales/fr.json +++ b/app/javascript/mastodon/locales/fr.json @@ -13,7 +13,7 @@ "account.domain_blocked": "Domaine bloqué", "account.edit_profile": "Modifier le profil", "account.enable_notifications": "Me notifier quand @{name} publie", - "account.endorse": "Recommander sur le profil", + "account.endorse": "Recommander sur votre profil", "account.follow": "Suivre", "account.followers": "Abonnés", "account.followers.empty": "Personne ne suit cet·te utilisateur·rice pour l’instant.", @@ -34,7 +34,7 @@ "account.muted": "Masqué·e", "account.never_active": "Jamais", "account.posts": "Messages", - "account.posts_with_replies": "Partages et réponses", + "account.posts_with_replies": "Messages et réponses", "account.report": "Signaler @{name}", "account.requested": "En attente d’approbation. Cliquez pour annuler la requête", "account.share": "Partager le profil de @{name}", @@ -47,8 +47,8 @@ "account.unmute": "Ne plus masquer @{name}", "account.unmute_notifications": "Ne plus masquer les notifications de @{name}", "account_note.placeholder": "Cliquez pour ajouter une note", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Taux de maintien des utilisateur·rice·s par jour après inscription", + "admin.dashboard.monthly_retention": "Brugerfastholdelsesrate efter måned efter tilmelding", "admin.dashboard.retention.average": "Moyenne", "admin.dashboard.retention.cohort": "Mois d'inscription", "admin.dashboard.retention.cohort_size": "Nouveaux utilisateurs", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Changer le sondage pour autoriser qu'un seul choix", "compose_form.publish": "Pouet", "compose_form.publish_loud": "{publish} !", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Enregistrer les modifications", "compose_form.sensitive.hide": "Marquer le média comme sensible", "compose_form.sensitive.marked": "{count, plural, one {Le média est marqué comme sensible} other {Les médias sont marqués comme sensibles}}", "compose_form.sensitive.unmarked": "Le média n’est pas marqué comme sensible", @@ -134,7 +134,7 @@ "confirmations.reply.confirm": "Répondre", "confirmations.reply.message": "Répondre maintenant écrasera le message que vous rédigez actuellement. Voulez-vous vraiment continuer ?", "confirmations.unfollow.confirm": "Ne plus suivre", - "confirmations.unfollow.message": "Voulez-vous vraiment arrêter de suivre {name} ?", + "confirmations.unfollow.message": "Voulez-vous vraiment vous désabonner de {name} ?", "conversation.delete": "Supprimer la conversation", "conversation.mark_as_read": "Marquer comme lu", "conversation.open": "Afficher la conversation", @@ -288,7 +288,7 @@ "navigation_bar.edit_profile": "Modifier le profil", "navigation_bar.favourites": "Favoris", "navigation_bar.filters": "Mots masqués", - "navigation_bar.follow_requests": "Demandes de suivi", + "navigation_bar.follow_requests": "Demandes d’abonnement", "navigation_bar.follows_and_followers": "Abonnements et abonné⋅e·s", "navigation_bar.info": "À propos de ce serveur", "navigation_bar.keyboard_shortcuts": "Raccourcis clavier", @@ -308,6 +308,7 @@ "notification.poll": "Un sondage auquel vous avez participé vient de se terminer", "notification.reblog": "{name} a partagé votre message", "notification.status": "{name} vient de publier", + "notification.update": "{name} a modifié un message", "notifications.clear": "Effacer les notifications", "notifications.clear_confirmation": "Voulez-vous vraiment effacer toutes vos notifications ?", "notifications.column_settings.alert": "Notifications du navigateur", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Nouveaux messages :", "notifications.column_settings.unread_notifications.category": "Notifications non lues", "notifications.column_settings.unread_notifications.highlight": "Surligner les notifications non lues", + "notifications.column_settings.update": "Modifications :", "notifications.filter.all": "Tout", "notifications.filter.boosts": "Partages", "notifications.filter.favourites": "Favoris", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Chargement…", "regeneration_indicator.sublabel": "Votre fil principal est en cours de préparation !", "relative_time.days": "{number} j", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "il y a {number, plural, one {# jour} other {# jours}}", + "relative_time.full.hours": "il y a {number, plural, one {# heure} other {# heures}}", + "relative_time.full.just_now": "à l’instant", + "relative_time.full.minutes": "il y a {number, plural, one {# minute} other {# minutes}}", + "relative_time.full.seconds": "il y a {number, plural, one {# second} other {# seconds}}", "relative_time.hours": "{number} h", "relative_time.just_now": "à l’instant", "relative_time.minutes": "{number} min", "relative_time.seconds": "{number} s", "relative_time.today": "aujourd’hui", "reply_indicator.cancel": "Annuler", - "report.categories.other": "Other", + "report.categories.other": "Autre", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "Le contenu enfreint une ou plusieurs règles du serveur", "report.forward": "Transférer à {target}", "report.forward_hint": "Le compte provient d’un autre serveur. Envoyer également une copie anonyme du rapport ?", "report.hint": "Le rapport sera envoyé aux modérateur·rice·s de votre serveur. Vous pouvez expliquer pourquoi vous signalez le compte ci-dessous :", @@ -389,7 +391,7 @@ "search_popout.search_format": "Recherche avancée", "search_popout.tips.full_text": "Un texte normal retourne les messages que vous avez écrits, ajoutés à vos favoris, partagés, ou vous mentionnant, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et messages correspondants.", "search_popout.tips.hashtag": "hashtag", - "search_popout.tips.status": "statuts", + "search_popout.tips.status": "message", "search_popout.tips.text": "Un texte simple renvoie les noms affichés, les identifiants et les hashtags correspondants", "search_popout.tips.user": "utilisateur·ice", "search_results.accounts": "Comptes", @@ -407,14 +409,14 @@ "status.delete": "Supprimer", "status.detailed_status": "Vue détaillée de la conversation", "status.direct": "Envoyer un message direct à @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Éditer", + "status.edited": "Édité le {date}", + "status.edited_x_times": "Edité {count, plural, one {{count} fois} other {{count} fois}}", "status.embed": "Intégrer", "status.favourite": "Ajouter aux favoris", "status.filtered": "Filtré", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "créé par {name} {date}", + "status.history.edited": "édité par {name} {date}", "status.load_more": "Charger plus", "status.media_hidden": "Média caché", "status.mention": "Mentionner @{name}", diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json index c9f2cd414..60e6441c3 100644 --- a/app/javascript/mastodon/locales/ga.json +++ b/app/javascript/mastodon/locales/ga.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json index 750674ca2..a7ffbe6b2 100644 --- a/app/javascript/mastodon/locales/gd.json +++ b/app/javascript/mastodon/locales/gd.json @@ -308,6 +308,7 @@ "notification.poll": "Thàinig cunntas-bheachd sa bhòt thu gu crìoch", "notification.reblog": "Bhrosnaich {name} am post agad", "notification.status": "Tha {name} air rud a phostadh", + "notification.update": "{name} edited a post", "notifications.clear": "Falamhaich na brathan", "notifications.clear_confirmation": "A bheil thu cinnteach gu bheil thu airson na brathan uile agad fhalamhachadh gu buan?", "notifications.column_settings.alert": "Brathan deasga", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Postaichean ùra:", "notifications.column_settings.unread_notifications.category": "Brathan nach deach a leughadh", "notifications.column_settings.unread_notifications.highlight": "Soillsich na brathan nach deach a leughadh", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Na h-uile", "notifications.filter.boosts": "Brosnachaidhean", "notifications.filter.favourites": "Na h-annsachdan", diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json index e926239bb..39f121065 100644 --- a/app/javascript/mastodon/locales/gl.json +++ b/app/javascript/mastodon/locales/gl.json @@ -47,8 +47,8 @@ "account.unmute": "Deixar de silenciar a @{name}", "account.unmute_notifications": "Deixar de silenciar as notificacións de @{name}", "account_note.placeholder": "Preme para engadir nota", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Ratio de retención de usuarias após rexistrarse", + "admin.dashboard.monthly_retention": "Ratio de retención de usuarias após un mes do rexistro", "admin.dashboard.retention.average": "Media", "admin.dashboard.retention.cohort": "Mes de rexistro", "admin.dashboard.retention.cohort_size": "Novas usuarias", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Mudar a enquisa para permitir unha soa escolla", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Gardar cambios", "compose_form.sensitive.hide": "{count, plural, one {Marca multimedia como sensible} other {Marca multimedia como sensibles}}", "compose_form.sensitive.marked": "{count, plural, one {Multimedia marcado como sensible} other {Multimedia marcados como sensibles}}", "compose_form.sensitive.unmarked": "{count, plural, one {Multimedia non marcado como sensible} other {Multimedia non marcado como sensible}}", @@ -308,6 +308,7 @@ "notification.poll": "Unha enquisa na que votaches rematou", "notification.reblog": "{name} compartiu a túa publicación", "notification.status": "{name} publicou", + "notification.update": "{name} editou unha publicación", "notifications.clear": "Limpar notificacións", "notifications.clear_confirmation": "Tes a certeza de querer limpar de xeito permanente todas as túas notificacións?", "notifications.column_settings.alert": "Notificacións de escritorio", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Novas publicacións:", "notifications.column_settings.unread_notifications.category": "Notificacións non lidas", "notifications.column_settings.unread_notifications.highlight": "Resaltar notificacións non lidas", + "notifications.column_settings.update": "Edicións:", "notifications.filter.all": "Todo", "notifications.filter.boosts": "Compartidos", "notifications.filter.favourites": "Favoritos", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Estase a cargar…", "regeneration_indicator.sublabel": "Estase a preparar a túa cronoloxía de inicio!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "fai {number, plural, one {# día} other {# días}}", + "relative_time.full.hours": "fai {number, plural, one {# hora} other {# horas}} ago", + "relative_time.full.just_now": "xusto agora", + "relative_time.full.minutes": "fai {number, plural, one {# minuto} other {# minutos}}", + "relative_time.full.seconds": "fai {number, plural, one {# segundo} other {# segundos}}", "relative_time.hours": "{number}h", "relative_time.just_now": "agora", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "hoxe", "reply_indicator.cancel": "Desbotar", - "report.categories.other": "Other", + "report.categories.other": "Outro", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "O contido viola unha ou máis regras do servidor", "report.forward": "Reenviar a {target}", "report.forward_hint": "A conta é doutro servidor. Enviar unha copia anónima da denuncia aló tamén?", "report.hint": "A denuncia enviarase á moderación do teu servidor. Abaixo podes explicar a razón pola que estás a denunciar:", @@ -407,14 +409,14 @@ "status.delete": "Eliminar", "status.detailed_status": "Vista detallada da conversa", "status.direct": "Mensaxe directa a @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Editar", + "status.edited": "Editado {date}", + "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}", "status.embed": "Incrustar", "status.favourite": "Favorito", "status.filtered": "Filtrado", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} creado o {date}", + "status.history.edited": "{name} editado o {date}", "status.load_more": "Cargar máis", "status.media_hidden": "Contido multimedia agochado", "status.mention": "Mencionar @{name}", diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json index 1447ff711..c163812ac 100644 --- a/app/javascript/mastodon/locales/he.json +++ b/app/javascript/mastodon/locales/he.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "חצרוצך הודהד על ידי {name}", "notification.status": "{name} just posted", + "notification.update": "{name} ערכו פוסט", "notifications.clear": "הסרת התראות", "notifications.clear_confirmation": "להסיר את כל ההתראות? בטוח?", "notifications.column_settings.alert": "התראות לשולחן העבודה", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "שינויים:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json index d3221c468..fef87bda2 100644 --- a/app/javascript/mastodon/locales/hi.json +++ b/app/javascript/mastodon/locales/hi.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "सभी", "notifications.filter.boosts": "बूस्ट", "notifications.filter.favourites": "पसंदीदा", diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json index ecdfab67a..32deff205 100644 --- a/app/javascript/mastodon/locales/hr.json +++ b/app/javascript/mastodon/locales/hr.json @@ -308,6 +308,7 @@ "notification.poll": "Anketa u kojoj ste glasali je završila", "notification.reblog": "{name} je boostao/la Vaš status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Očisti obavijesti", "notifications.clear_confirmation": "Želite li zaista trajno očistiti sve Vaše obavijesti?", "notifications.column_settings.alert": "Obavijesti radne površine", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Sve", "notifications.filter.boosts": "Boostovi", "notifications.filter.favourites": "Favoriti", diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json index 4a55c85d9..97b985d95 100644 --- a/app/javascript/mastodon/locales/hu.json +++ b/app/javascript/mastodon/locales/hu.json @@ -17,7 +17,7 @@ "account.follow": "Követés", "account.followers": "Követő", "account.followers.empty": "Ezt a felhasználót még senki sem követi.", - "account.followers_counter": "{count, plural, one {{counter} követő} other {{counter} követő}}", + "account.followers_counter": "{count, plural, one {{counter} Követő} other {{counter} Követő}}", "account.following_counter": "{count, plural, other {{counter} Követett}}", "account.follows.empty": "Ez a felhasználó még senkit sem követ.", "account.follows_you": "Követ téged", @@ -47,8 +47,8 @@ "account.unmute": "@{name} némítás feloldása", "account.unmute_notifications": "@{name} némított értesítéseinek feloldása", "account_note.placeholder": "Klikk a feljegyzéshez", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Napi regisztráció utáni felhasználómegtartási arány", + "admin.dashboard.monthly_retention": "Havi regisztráció utáni felhasználómegtartási arány", "admin.dashboard.retention.average": "Átlag", "admin.dashboard.retention.cohort": "Regisztráció hónapja", "admin.dashboard.retention.cohort_size": "Új felhasználó", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Szavazás megváltoztatása egyetlen választásosra", "compose_form.publish": "Tülk", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Módosítások mentése", "compose_form.sensitive.hide": "{count, plural, one {Média kényesnek jelölése} other {Média kényesnek jelölése}}", "compose_form.sensitive.marked": "{count, plural, one {A médiát kényesnek jelölték} other {A médiát kényesnek jelölték}}", "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}}", @@ -308,6 +308,7 @@ "notification.poll": "Egy szavazás, melyben részt vettél, véget ért", "notification.reblog": "{name} megtolta a bejegyzésedet", "notification.status": "{name} bejegyzést tett közzé", + "notification.update": "{name} szerkesztett egy bejegyzést", "notifications.clear": "Értesítések törlése", "notifications.clear_confirmation": "Biztos, hogy véglegesen törölni akarod az összes értesítésed?", "notifications.column_settings.alert": "Asztali értesítések", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Új bejegyzések:", "notifications.column_settings.unread_notifications.category": "Olvasatlan értesítések", "notifications.column_settings.unread_notifications.highlight": "Olvasatlan értesítések kiemelése", + "notifications.column_settings.update": "Szerkesztések:", "notifications.filter.all": "Mind", "notifications.filter.boosts": "Megtolások", "notifications.filter.favourites": "Kedvencnek jelölések", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Töltődik…", "regeneration_indicator.sublabel": "A saját idővonalad épp készül!", "relative_time.days": "{number}n", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# napja} other {# napja}}", + "relative_time.full.hours": "{number, plural, one {# órája} other {# órája}}", + "relative_time.full.just_now": "épp most", + "relative_time.full.minutes": "{number, plural, one {# perce} other {# perce}}", + "relative_time.full.seconds": "{number, plural, one {# másodperce} other {# másodperce}}", "relative_time.hours": "{number}ó", "relative_time.just_now": "most", "relative_time.minutes": "{number}p", "relative_time.seconds": "{number}mp", "relative_time.today": "ma", "reply_indicator.cancel": "Mégsem", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "Egyéb", + "report.categories.spam": "Kéretlen üzenet", + "report.categories.violation": "A tartalom a kiszolgáló egy vagy több szabályát sérti", "report.forward": "Továbbítás: {target}", "report.forward_hint": "Ez a fiók egy másik kiszolgálóról van. Oda is elküldöd a jelentés egy anonimizált másolatát?", "report.hint": "A bejelentést a szervered moderátorainak küldjük el. Megmagyarázhatod, miért jelented az alábbi problémát:", @@ -407,14 +409,14 @@ "status.delete": "Törlés", "status.detailed_status": "Részletes beszélgetési nézet", "status.direct": "Közvetlen üzenet @{name} számára", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Szerkesztés", + "status.edited": "Szerkesztve: {date}", + "status.edited_x_times": "{count, plural, one {{count} alkalommal} other {{count} alkalommal}} szerkesztve", "status.embed": "Beágyazás", "status.favourite": "Kedvenc", "status.filtered": "Megszűrt", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} létrehozta: {date}", + "status.history.edited": "{name} szerkesztette: {date}", "status.load_more": "Többet", "status.media_hidden": "Média elrejtve", "status.mention": "@{name} megemlítése", diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json index dde99078b..24139d132 100644 --- a/app/javascript/mastodon/locales/hy.json +++ b/app/javascript/mastodon/locales/hy.json @@ -308,6 +308,7 @@ "notification.poll": "Հարցումը, ուր դու քուէարկել ես, աւարտուեց։", "notification.reblog": "{name} տարածեց գրառումդ", "notification.status": "{name} հենց նոր գրառում արեց", + "notification.update": "{name} edited a post", "notifications.clear": "Մաքրել ծանուցումները", "notifications.clear_confirmation": "Վստա՞հ ես, որ ուզում ես մշտապէս մաքրել քո բոլոր ծանուցումները։", "notifications.column_settings.alert": "Աշխատատիրոյթի ծանուցումներ", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Նոր գրառումներ։", "notifications.column_settings.unread_notifications.category": "Չկարդացուած ծանուցումներ", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Բոլորը", "notifications.filter.boosts": "Տարածածները", "notifications.filter.favourites": "Հաւանածները", diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json index 3b43f60d5..e8e81cfde 100644 --- a/app/javascript/mastodon/locales/id.json +++ b/app/javascript/mastodon/locales/id.json @@ -47,8 +47,8 @@ "account.unmute": "Berhenti membisukan @{name}", "account.unmute_notifications": "Berhenti bisukan pemberitahuan dari @{name}", "account_note.placeholder": "Klik untuk menambah catatan", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Tingkat retensi pengguna perhari setelah mendaftar", + "admin.dashboard.monthly_retention": "Tingkat retensi pengguna perbulan setelah mendaftar", "admin.dashboard.retention.average": "Rata-rata", "admin.dashboard.retention.cohort": "Bulan pendaftaran", "admin.dashboard.retention.cohort_size": "Pengguna baru", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Ubah japat menjadi pilihan tunggal", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Simpan perubahan", "compose_form.sensitive.hide": "{count, plural, other {Tandai media sebagai sensitif}}", "compose_form.sensitive.marked": "{count, plural, other {Media ini ditandai sebagai sensitif}}", "compose_form.sensitive.unmarked": "{count, plural, other {Media ini tidak ditandai sebagai sensitif}}", @@ -308,6 +308,7 @@ "notification.poll": "Japat yang Anda ikuti telah berakhir", "notification.reblog": "{name} mem-boost status anda", "notification.status": "{name} baru saja memposting", + "notification.update": "{name} mengedit kiriman", "notifications.clear": "Hapus notifikasi", "notifications.clear_confirmation": "Apa anda yakin hendak menghapus semua notifikasi anda?", "notifications.column_settings.alert": "Notifikasi desktop", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Toot baru:", "notifications.column_settings.unread_notifications.category": "Notifikasi yang belum dibaca", "notifications.column_settings.unread_notifications.highlight": "Sorot notifikasi yang belum dibaca", + "notifications.column_settings.update": "Edit:", "notifications.filter.all": "Semua", "notifications.filter.boosts": "Boost", "notifications.filter.favourites": "Favorit", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Memuat…", "regeneration_indicator.sublabel": "Linimasa anda sedang disiapkan!", "relative_time.days": "{number}h", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, other {# hari}} yang lalu", + "relative_time.full.hours": "{number, plural, other {# jam}} yang lalu", + "relative_time.full.just_now": "baru saja", + "relative_time.full.minutes": "{number, plural, other {# menit}} yang lalu", + "relative_time.full.seconds": "{number, plural, other {# detik}} yang lalu", "relative_time.hours": "{number}j", "relative_time.just_now": "sekarang", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}d", "relative_time.today": "hari ini", "reply_indicator.cancel": "Batal", - "report.categories.other": "Other", + "report.categories.other": "Lainnya", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "Konten melanggar satu atau lebih peraturan server", "report.forward": "Teruskan ke {target}", "report.forward_hint": "Akun dari server lain. Kirim salinan laporan scr anonim ke sana?", "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:", @@ -408,13 +410,13 @@ "status.detailed_status": "Tampilan detail percakapan", "status.direct": "Pesan langsung @{name}", "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edited": "Diedit {date}", + "status.edited_x_times": "Diedit {count, plural, other {{count} kali}}", "status.embed": "Tanam", "status.favourite": "Difavoritkan", "status.filtered": "Disaring", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} membuat pada {date}", + "status.history.edited": "{name} mengedit pada {date}", "status.load_more": "Tampilkan semua", "status.media_hidden": "Media disembunyikan", "status.mention": "Balasan @{name}", diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json index ee8a2b1b9..e4ae1d2ff 100644 --- a/app/javascript/mastodon/locales/io.json +++ b/app/javascript/mastodon/locales/io.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} repetis tua mesajo", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Efacar savigi", "notifications.clear_confirmation": "Ka tu esas certa, ke tu volas efacar omna tua savigi?", "notifications.column_settings.alert": "Surtabla savigi", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json index 5020bd068..a5164fa24 100644 --- a/app/javascript/mastodon/locales/is.json +++ b/app/javascript/mastodon/locales/is.json @@ -1,16 +1,16 @@ { "account.account_note_header": "Minnispunktur", "account.add_or_remove_from_list": "Bæta við eða fjarlægja af listum", - "account.badges.bot": "Þjarkur", + "account.badges.bot": "Róbót", "account.badges.group": "Hópur", "account.block": "Loka á @{name}", - "account.block_domain": "Fela allt frá {domain}", - "account.blocked": "Lokað á", + "account.block_domain": "Útiloka lénið {domain}", + "account.blocked": "Útilokaður", "account.browse_more_on_origin_server": "Skoða nánari upplýsingar á notandasniðinu", "account.cancel_follow_request": "Hætta við beiðni um að fylgjas", "account.direct": "Bein skilaboð til @{name}", - "account.disable_notifications": "Hættu að láta mig vita þegar @{name} þýtur", - "account.domain_blocked": "Lén falið", + "account.disable_notifications": "Hætta að láta mig vita þegar @{name} sendir inn", + "account.domain_blocked": "Lén útilokað", "account.edit_profile": "Breyta notandasniði", "account.enable_notifications": "Láta mig vita þegar @{name} sendir inn", "account.endorse": "Birta á notandasniði", @@ -33,22 +33,22 @@ "account.mute_notifications": "Þagga tilkynningar frá @{name}", "account.muted": "Þaggað", "account.never_active": "Aldrei", - "account.posts": "Þyt", - "account.posts_with_replies": "Þyt og svör", + "account.posts": "Færslur", + "account.posts_with_replies": "Færslur og svör", "account.report": "Kæra @{name}", "account.requested": "Bíður eftir samþykki. Smelltu til að hætta við beiðni um að fylgjast með", "account.share": "Deila notandasniði fyrir @{name}", "account.show_reblogs": "Sýna endurbirtingar frá @{name}", - "account.statuses_counter": "{count, plural, one {{counter} tíst} other {{counter} tíst}}", + "account.statuses_counter": "{count, plural, one {{counter} færsla} other {{counter} færslur}}", "account.unblock": "Aflétta útilokun af @{name}", - "account.unblock_domain": "Hætta að fela {domain}", + "account.unblock_domain": "Aflétta útilokun lénsins {domain}", "account.unendorse": "Ekki birta á notandasniði", "account.unfollow": "Hætta að fylgja", "account.unmute": "Hætta að þagga niður í @{name}", "account.unmute_notifications": "Hætta að þagga tilkynningar frá @{name}", - "account_note.placeholder": "Engin athugasemd gefin", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "account_note.placeholder": "Smelltu til að bæta við minnispunkti", + "admin.dashboard.daily_retention": "Hlutfall virkra notenda eftir nýskráningu eftir dögum", + "admin.dashboard.monthly_retention": "Hlutfall virkra notenda eftir nýskráningu eftir mánuðum", "admin.dashboard.retention.average": "Meðaltal", "admin.dashboard.retention.cohort": "Mánuður nýskráninga", "admin.dashboard.retention.cohort_size": "Nýir notendur", @@ -71,14 +71,14 @@ "column.community": "Staðvær tímalína", "column.direct": "Bein skilaboð", "column.directory": "Skoða notandasnið", - "column.domain_blocks": "Falin lén", - "column.favourites": "Fílanir", - "column.follow_requests": "Fylgja beiðnum", + "column.domain_blocks": "Útilokuð lén", + "column.favourites": "Eftirlæti", + "column.follow_requests": "Beiðnir um að fylgjast með", "column.home": "Heim", "column.lists": "Listar", "column.mutes": "Þaggaðir notendur", "column.notifications": "Tilkynningar", - "column.pins": "Föst tíst", + "column.pins": "Festar færslur", "column.public": "Sameiginleg tímalína", "column_back_button.label": "Til baka", "column_header.hide_settings": "Fela stillingar", @@ -91,9 +91,9 @@ "community.column_settings.local_only": "Einungis staðvært", "community.column_settings.media_only": "Einungis myndskrár", "community.column_settings.remote_only": "Einungis fjartengt", - "compose_form.direct_message_warning": "Þetta tíst verður aðeins sent á notendur sem minnst er á.", + "compose_form.direct_message_warning": "Þessi færsla verður aðeins send á notendur sem minnst er á.", "compose_form.direct_message_warning_learn_more": "Kanna nánar", - "compose_form.hashtag_warning": "Þetta tíst verður ekki talið með undir nokkru myllumerki þar sem það er óskráð. Einungis er hægt að leita að opinberum tístum eftir myllumerkjum.", + "compose_form.hashtag_warning": "Þessi færsla verður ekki talin með undir nokkru myllumerki þar sem það er óskráð. Einungis er hægt að leita að opinberum færslum eftir myllumerkjum.", "compose_form.lock_disclaimer": "Aðgangurinn þinn er ekki {locked}. Hver sem er getur fylgst með þeim færslum þínum sem einungis eru til fylgjenda þinna.", "compose_form.lock_disclaimer.lock": "læst", "compose_form.placeholder": "Hvað varstu að hugsa?", @@ -103,26 +103,26 @@ "compose_form.poll.remove_option": "Fjarlægja þennan valkost", "compose_form.poll.switch_to_multiple": "Breyta könnun svo hægt sé að hafa marga valkosti", "compose_form.poll.switch_to_single": "Breyta könnun svo hægt sé að hafa einn stakan valkost", - "compose_form.publish": "Þyt", + "compose_form.publish": "Tíst", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", - "compose_form.sensitive.hide": "Merkja myndir sem viðkvæmar", - "compose_form.sensitive.marked": "Mynd er merkt sem viðkvæm", - "compose_form.sensitive.unmarked": "Mynd er ekki merkt sem viðkvæm", - "compose_form.spoiler.marked": "Texti er falinn á bak við aðvörun", - "compose_form.spoiler.unmarked": "Texti er ekki falinn", + "compose_form.save_changes": "Vista breytingar", + "compose_form.sensitive.hide": "{count, plural, one {Merkja mynd sem viðkvæma} other {Merkja myndir sem viðkvæmar}}", + "compose_form.sensitive.marked": "{count, plural, one {Mynd er merkt sem viðkvæm} other {Myndir eru merktar sem viðkvæmar}}", + "compose_form.sensitive.unmarked": "{count, plural, one {Mynd er ekki merkt sem viðkvæm} other {Myndir eru ekki merktar sem viðkvæmar}}", + "compose_form.spoiler.marked": "Fjarlægja aðvörun vegna efnis", + "compose_form.spoiler.unmarked": "Bæta við aðvörun vegna efnis", "compose_form.spoiler_placeholder": "Skrifaðu aðvörunina þína hér", "confirmation_modal.cancel": "Hætta við", "confirmations.block.block_and_report": "Útiloka og kæra", "confirmations.block.confirm": "Útiloka", "confirmations.block.message": "Ertu viss um að þú viljir loka á {name}?", "confirmations.delete.confirm": "Eyða", - "confirmations.delete.message": "Ertu viss um að þú viljir eyða þessari stöðufærslu?", + "confirmations.delete.message": "Ertu viss um að þú viljir eyða þessari færslu?", "confirmations.delete_list.confirm": "Eyða", "confirmations.delete_list.message": "Ertu viss um að þú viljir eyða þessum lista endanlega?", "confirmations.discard_edit_media.confirm": "Henda", "confirmations.discard_edit_media.message": "Þú ert með óvistaðar breytingar á lýsingu myndefnis eða forskoðunar, henda þeim samt?", - "confirmations.domain_block.confirm": "Fela allt lénið", + "confirmations.domain_block.confirm": "Útiloka allt lénið", "confirmations.domain_block.message": "Ertu alveg algjörlega viss um að þú viljir loka á allt {domain}? Í flestum tilfellum er vænlegra að nota færri en markvissari útilokanir eða að þagga niður tiltekna aðila. Þú munt ekki sjá efni frá þessu léni í neinum opinberum tímalínum eða í tilkynningunum þínum. Fylgjendur þínir frá þessu léni verða fjarlægðir.", "confirmations.logout.confirm": "Skrá út", "confirmations.logout.message": "Ertu viss um að þú viljir skrá þig út?", @@ -130,7 +130,7 @@ "confirmations.mute.explanation": "Þetta mun fela færslur frá þeim og þær færslur þar sem minnst er á þau, en það mun samt sem áður gera þeim kleift að sjá færslurnar þínar og að fylgjast með þér.", "confirmations.mute.message": "Ertu viss um að þú viljir þagga niður í {name}?", "confirmations.redraft.confirm": "Eyða og enduvinna drög", - "confirmations.redraft.message": "Ertu viss um að þú viljir eyða þessari stöðufærslu og enduvinna drögin? Fílanir og endurbirtingar munu glatast og svör við upprunalegu fæerslunni munu verða munaðarlaus.", + "confirmations.redraft.message": "Ertu viss um að þú viljir eyða þessari færslu og enduvinna drögin? Eftirlæti og endurbirtingar munu glatast og svör við upprunalegu færslunni munu verða munaðarlaus.", "confirmations.reply.confirm": "Svara", "confirmations.reply.message": "Ef þú svarar núna verður skrifað yfir skilaboðin sem þú ert að semja núna. Ertu viss um að þú viljir halda áfram?", "confirmations.unfollow.confirm": "Hætta að fylgja", @@ -151,7 +151,7 @@ "emoji_button.food": "Matur og drykkur", "emoji_button.label": "Setja inn tjáningartákn", "emoji_button.nature": "Náttúra", - "emoji_button.not_found": "Engin tjáningartákn!! (╯°□°)╯︵ ┻━┻", + "emoji_button.not_found": "Engin samsvarandi tjáningartákn fundust", "emoji_button.objects": "Hlutir", "emoji_button.people": "Fólk", "emoji_button.recent": "Oft notað", @@ -160,21 +160,21 @@ "emoji_button.symbols": "Tákn", "emoji_button.travel": "Ferðalög og staðir", "empty_column.account_suspended": "Notandaaðgangur í bið", - "empty_column.account_timeline": "Engin þyt hér!", + "empty_column.account_timeline": "Engar færslur hér!", "empty_column.account_unavailable": "Notandasnið ekki tiltækt", "empty_column.blocks": "Þú hefur ekki ennþá útilokað neina notendur.", - "empty_column.bookmarked_statuses": "Þú ert ekki ennþá með nein bókamerkt þyt. Þegar þú gefur þyti bókamerki, mun það birtast hér.", + "empty_column.bookmarked_statuses": "Þú ert ekki ennþá með neinar bókamerktar færslur. Þegar þú bókamerkir færslu, mun það birtast hér.", "empty_column.community": "Staðværa tímalínan er tóm. Skrifaðu eitthvað opinberlega til að láta boltann fara að rúlla!", "empty_column.direct": "Þú átt ennþá engin bein skilaboð. Þegar þú sendir eða tekur á móti slíkum skilaboðum, munu þau birtast hér.", - "empty_column.domain_blocks": "Það eru engin falin lén ennþá.", - "empty_column.favourited_statuses": "Þú hefur ekki fílað nein þyt. Þegar að þú fílar þyt, þá mun það birtast hér.", - "empty_column.favourites": "Enginn hefu fílað þetta þyt ennþá. Þegar einhver gerir það, mun sá birtast hér.", + "empty_column.domain_blocks": "Það eru ennþá engin útilokuð lén.", + "empty_column.favourited_statuses": "Þú ert ekki ennþá með neinar eftirlætisfærslur. Þegar þú setur færslu í eftirlæti, munu þau birtast hér.", + "empty_column.favourites": "Enginn hefur ennþá sett þessa færslu í eftirlæti. Þegar einhver gerir það, mun það birtast hér.", "empty_column.follow_recommendations": "Það lítur út fyrir að ekki hafi verið hægt að útbúa neinar tillögur fyrir þig. Þú getur reynt að leita að fólki sem þú gætir þekkt eða skoðað myllumerki sem eru í umræðunni.", "empty_column.follow_requests": "Þú átt ennþá engar beiðnir um að fylgja þér. Þegar þú færð slíkar beiðnir, munu þær birtast hér.", "empty_column.hashtag": "Það er ekkert ennþá undir þessu myllumerki.", - "empty_column.home": "Heimatímalínan þín er tóm! Skoðaðu {public} eða notaðu leitina til að komast í gang og finna annað fólk.", + "empty_column.home": "Heimatímalínan þín er tóm! Fylgstu með fleira fólki til að fylla hana. {suggestions}", "empty_column.home.suggestions": "Skoðaðu nokkrar tillögur", - "empty_column.list": "Það er ennþá ekki neitt á þessum lista. Þegar meðlimir á listanum senda inn nýjar stöðufærslur, munu þær birtast hér.", + "empty_column.list": "Það er ennþá ekki neitt á þessum lista. Þegar meðlimir á listanum senda inn nýjar færslur, munu þær birtast hér.", "empty_column.lists": "Þú ert ennþá ekki með neina lista. Þegar þú byrð til einhvern lista, munu hann birtast hér.", "empty_column.mutes": "Þú hefur ekki þaggað niður í neinum notendum ennþá.", "empty_column.notifications": "Þú ert ekki ennþá með neinar tilkynningar. Vertu í samskiptum við aðra til að umræður fari af stað.", @@ -217,40 +217,40 @@ "intervals.full.days": "{number, plural, one {# dagur} other {# dagar}}", "intervals.full.hours": "{number, plural, one {# klukkustund} other {# klukkustundir}}", "intervals.full.minutes": "{number, plural, one {# mínúta} other {# mínútur}}", - "keyboard_shortcuts.back": "að fara til baka", - "keyboard_shortcuts.blocked": "að opna lista yfir útilokaða notendur", - "keyboard_shortcuts.boost": "að endurbirta", - "keyboard_shortcuts.column": "að setja virkni á stöðufærslu í einum af dálkunum", - "keyboard_shortcuts.compose": "að setja virkni á textainnsetningarreit", + "keyboard_shortcuts.back": "Fara til baka", + "keyboard_shortcuts.blocked": "Opna lista yfir útilokaða notendur", + "keyboard_shortcuts.boost": "Endurbirta færslu", + "keyboard_shortcuts.column": "Setja virkni í dálk", + "keyboard_shortcuts.compose": "Setja virkni á textainnsetningarreit", "keyboard_shortcuts.description": "Lýsing", - "keyboard_shortcuts.direct": "að opna dálk með beinum skilaboðum", - "keyboard_shortcuts.down": "að fara neðar í listanum", - "keyboard_shortcuts.enter": "að opna stöðufærslu", - "keyboard_shortcuts.favourite": "Fíla þyt", - "keyboard_shortcuts.favourites": "Opna fílanir", - "keyboard_shortcuts.federated": "að opna sameiginlega tímalínu", + "keyboard_shortcuts.direct": "Opna dálk með beinum skilaboðum", + "keyboard_shortcuts.down": "Fara neðar í listanum", + "keyboard_shortcuts.enter": "Opna færslu", + "keyboard_shortcuts.favourite": "Eftirlætisfærsla", + "keyboard_shortcuts.favourites": "Opna eftirlætislista", + "keyboard_shortcuts.federated": "Opna sameiginlega tímalínu", "keyboard_shortcuts.heading": "Flýtileiðir á lyklaborði", - "keyboard_shortcuts.home": "að opna heimatímalínu", + "keyboard_shortcuts.home": "Opna heimatímalínu", "keyboard_shortcuts.hotkey": "Flýtilykill", - "keyboard_shortcuts.legend": "að birta þessa skýringu", - "keyboard_shortcuts.local": "að opna staðværa tímalínu", - "keyboard_shortcuts.mention": "að minnast á höfund", - "keyboard_shortcuts.muted": "að opna lista yfir þaggaða notendur", - "keyboard_shortcuts.my_profile": "að opna notandasniðið þitt", - "keyboard_shortcuts.notifications": "að opna tilkynningadálk", - "keyboard_shortcuts.open_media": "til að opna margmiðlunargögn", - "keyboard_shortcuts.pinned": "Opna lista yfir föst þyt", - "keyboard_shortcuts.profile": "að opna notandasnið höfundar", - "keyboard_shortcuts.reply": "að svara", - "keyboard_shortcuts.requests": "að opna lista yfir fylgjendabeiðnir", - "keyboard_shortcuts.search": "að setja virkni í leit", - "keyboard_shortcuts.spoilers": "til að birta/fela reit með aðvörun vegna efnis", - "keyboard_shortcuts.start": "að opna \"komast í gang\" dálk", - "keyboard_shortcuts.toggle_hidden": "að birta/fela texta á bak við aðvörun vegna efnis", - "keyboard_shortcuts.toggle_sensitivity": "að birta/fela myndir", - "keyboard_shortcuts.toot": "Hefja glænýtt þyt", - "keyboard_shortcuts.unfocus": "að taka virkni úr textainnsetningarreit eða leit", - "keyboard_shortcuts.up": "að fara ofar í listanum", + "keyboard_shortcuts.legend": "Birta þessa skýringu", + "keyboard_shortcuts.local": "Opna staðværa tímalínu", + "keyboard_shortcuts.mention": "Minnast á höfund", + "keyboard_shortcuts.muted": "Opna lista yfir þaggaða notendur", + "keyboard_shortcuts.my_profile": "Opna notandasniðið þitt", + "keyboard_shortcuts.notifications": "Opna tilkynningadálk", + "keyboard_shortcuts.open_media": "Opna margmiðlunargögn", + "keyboard_shortcuts.pinned": "Opna lista yfir festar færslur", + "keyboard_shortcuts.profile": "Opna notandasnið höfundar", + "keyboard_shortcuts.reply": "Svara færslu", + "keyboard_shortcuts.requests": "Opna lista yfir fylgjendabeiðnir", + "keyboard_shortcuts.search": "Setja virkni í leitarreit", + "keyboard_shortcuts.spoilers": "Birta/fela reit með aðvörun vegna efnis", + "keyboard_shortcuts.start": "Opna \"komast í gang\" dálk", + "keyboard_shortcuts.toggle_hidden": "Birta/fela texta á bak við aðvörun vegna efnis", + "keyboard_shortcuts.toggle_sensitivity": "Birta/fela myndir", + "keyboard_shortcuts.toot": "Byrja nýja færslu", + "keyboard_shortcuts.unfocus": "Taka virkni úr textainnsetningarreit eða leit", + "keyboard_shortcuts.up": "Fara ofar í listanum", "lightbox.close": "Loka", "lightbox.compress": "Þjappa myndskoðunarreit", "lightbox.expand": "Fletta út myndskoðunarreit", @@ -281,12 +281,12 @@ "navigation_bar.blocks": "Útilokaðir notendur", "navigation_bar.bookmarks": "Bókamerki", "navigation_bar.community_timeline": "Staðvær tímalína", - "navigation_bar.compose": "Semja nýtt þyt", + "navigation_bar.compose": "Semja nýja færslu", "navigation_bar.direct": "Bein skilaboð", "navigation_bar.discover": "Uppgötva", - "navigation_bar.domain_blocks": "Falin lén", + "navigation_bar.domain_blocks": "Útilokuð lén", "navigation_bar.edit_profile": "Breyta notandasniði", - "navigation_bar.favourites": "Fílanir", + "navigation_bar.favourites": "Eftirlæti", "navigation_bar.filters": "Þögguð orð", "navigation_bar.follow_requests": "Beiðnir um að fylgjast með", "navigation_bar.follows_and_followers": "Fylgist með og fylgjendur", @@ -296,22 +296,23 @@ "navigation_bar.logout": "Útskráning", "navigation_bar.mutes": "Þaggaðir notendur", "navigation_bar.personal": "Einka", - "navigation_bar.pins": "Föst þyt", + "navigation_bar.pins": "Festar færslur", "navigation_bar.preferences": "Kjörstillingar", "navigation_bar.public_timeline": "Sameiginleg tímalína", "navigation_bar.security": "Öryggi", - "notification.favourite": "{name} filaði stöðufærslu þína", + "notification.favourite": "{name} setti færslu þína í eftirlæti", "notification.follow": "{name} fylgist með þér", "notification.follow_request": "{name} hefur beðið um að fylgjast með þér", "notification.mention": "{name} minntist á þig", "notification.own_poll": "Könnuninni þinni er lokið", "notification.poll": "Könnun sem þú tókst þátt í er lokið", - "notification.reblog": "{name} endurbirti stöðufærsluna þína", + "notification.reblog": "{name} endurbirti færsluna þína", "notification.status": "{name} sendi inn rétt í þessu", + "notification.update": "{name} breytti færslu", "notifications.clear": "Hreinsa tilkynningar", "notifications.clear_confirmation": "Ertu viss um að þú viljir endanlega eyða öllum tilkynningunum þínum?", "notifications.column_settings.alert": "Tilkynningar á skjáborði", - "notifications.column_settings.favourite": "Fílanir:", + "notifications.column_settings.favourite": "Eftirlæti:", "notifications.column_settings.filter_bar.advanced": "Birta alla flokka", "notifications.column_settings.filter_bar.category": "Skyndisíustika", "notifications.column_settings.filter_bar.show_bar": "Birta síustikuna", @@ -323,12 +324,13 @@ "notifications.column_settings.reblog": "Endurbirtingar:", "notifications.column_settings.show": "Sýna í dálki", "notifications.column_settings.sound": "Spila hljóð", - "notifications.column_settings.status": "Ný þyt:", + "notifications.column_settings.status": "Nýjar færslur:", "notifications.column_settings.unread_notifications.category": "Ólesnar tilkynningar", "notifications.column_settings.unread_notifications.highlight": "Áherslulita ólesnar tilkynningar", + "notifications.column_settings.update": "Breytingar:", "notifications.filter.all": "Allt", "notifications.filter.boosts": "Endurbirtingar", - "notifications.filter.favourites": "Fílanir", + "notifications.filter.favourites": "Eftirlæti", "notifications.filter.follows": "Fylgist með", "notifications.filter.mentions": "Tilvísanir", "notifications.filter.polls": "Niðurstöður könnunar", @@ -352,7 +354,7 @@ "poll.votes": "{votes, plural, one {# atkvæði} other {# atkvæði}}", "poll_button.add_poll": "Bæta við könnun", "poll_button.remove_poll": "Fjarlægja könnun", - "privacy.change": "Aðlaga gagnaleynd stöðufærslu", + "privacy.change": "Aðlaga gagnaleynd færslu", "privacy.direct.long": "Senda einungis á notendur sem minnst er á", "privacy.direct.short": "Beint", "privacy.private.long": "Senda einungis á fylgjendur", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Hleð inn…", "regeneration_indicator.sublabel": "Verið er að útbúa heimastreymið þitt!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "Fyrir {number, plural, one {# degi} other {# dögum}} síðan", + "relative_time.full.hours": "Fyrir {number, plural, one {# klukkustund} other {# klukkustundum}} síðan", + "relative_time.full.just_now": "í þessu", + "relative_time.full.minutes": "Fyrir {number, plural, one {# mínútu} other {# mínútum}} síðan", + "relative_time.full.seconds": "Fyrir {number, plural, one {# sekúndu} other {# sekúndum}} síðan", "relative_time.hours": "{number}kl.", "relative_time.just_now": "núna", "relative_time.minutes": "{number}mín", "relative_time.seconds": "{number}sek", "relative_time.today": "í dag", "reply_indicator.cancel": "Hætta við", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "Annað", + "report.categories.spam": "Ruslpóstur", + "report.categories.violation": "Efnið brýtur gegn einni eða fleiri reglum netþjónsins", "report.forward": "Áframsenda til {target}", "report.forward_hint": "Notandaaðgangurinn er af öðrum vefþjóni. Á einnig að senda nafnlaust afrit af kærunni þangað?", "report.hint": "Kæran verður send á umsjónarmenn vefþjónsins þíns. Þú getur gefið skýringu hér fyrir neðan á því af hverju þú ert að kæra þennan notandaaðgang:", @@ -387,48 +389,48 @@ "report.target": "Kæri {target}", "search.placeholder": "Leita", "search_popout.search_format": "Snið ítarlegrar leitar", - "search_popout.tips.full_text": "Einfaldur texti skilar stöðufærslum sem þú hefur skrifað, fílað, endurbirt eða sem á þig hefur verið minnst í, ásamt samsvarandi birtingarnöfnum, notendanöfnum og myllumerkjum.", + "search_popout.tips.full_text": "Einfaldur texti skilar færslum sem þú hefur skrifað, sett í eftirlæti, endurbirt eða verið minnst á þig í, ásamt samsvarandi birtingarnöfnum, notendanöfnum og myllumerkjum.", "search_popout.tips.hashtag": "myllumerki", - "search_popout.tips.status": "stöðufærsla", + "search_popout.tips.status": "færsla", "search_popout.tips.text": "Einfaldur texti skilar samsvarandi birtingarnöfnum, notendanöfnum og myllumerkjum", "search_popout.tips.user": "notandi", "search_results.accounts": "Fólk", "search_results.hashtags": "Myllumerki", - "search_results.statuses": "Þyt", - "search_results.statuses_fts_disabled": "Að leita í efni þyta er ekki virk á þessum Mastodon-þjóni.", + "search_results.statuses": "Færslur", + "search_results.statuses_fts_disabled": "Að leita í efni færslna er ekki virkt á þessum Mastodon-þjóni.", "search_results.total": "{count, number} {count, plural, one {niðurstaða} other {niðurstöður}}", "status.admin_account": "Opna umsjónarviðmót fyrir @{name}", - "status.admin_status": "Opna þessa stöðufærslu í umsjónarviðmótinu", + "status.admin_status": "Opna þessa færslu í umsjónarviðmótinu", "status.block": "Útiloka @{name}", "status.bookmark": "Bókamerki", "status.cancel_reblog_private": "Taka úr endurbirtingu", "status.cannot_reblog": "Þessa færslu er ekki hægt að endurbirta", - "status.copy": "Afrita tengil í stöðufærslu", + "status.copy": "Afrita tengil í færslu", "status.delete": "Eyða", "status.detailed_status": "Nákvæm spjallþráðasýn", "status.direct": "Bein skilaboð @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Breyta", + "status.edited": "Breytt {date}", + "status.edited_x_times": "Breytt {count, plural, one {{count} sinni} other {{count} sinnum}}", "status.embed": "Ívefja", - "status.favourite": "Fílanir", + "status.favourite": "Eftirlæti", "status.filtered": "Síað", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} útbjó {date}", + "status.history.edited": "{name} breytti {date}", "status.load_more": "Hlaða inn meiru", "status.media_hidden": "Mynd er falin", "status.mention": "Minnast á @{name}", "status.more": "Meira", "status.mute": "Þagga niður í @{name}", "status.mute_conversation": "Þagga niður í samtali", - "status.open": "Útliða þessa stöðu", + "status.open": "Útliða þessa færslu", "status.pin": "Festa á notandasnið", - "status.pinned": "Fast þyt", + "status.pinned": "Fest færsla", "status.read_more": "Lesa meira", "status.reblog": "Endurbirting", "status.reblog_private": "Endurbirta til upphaflegra lesenda", "status.reblogged_by": "{name} endurbirti", - "status.reblogs.empty": "Enginn hefur ennþá endurbirt þetta þyt. Þegar einhver gerir það, mun sá birtast hér.", + "status.reblogs.empty": "Enginn hefur ennþá endurbirt þessa færslu. Þegar einhver gerir það, mun það birtast hér.", "status.redraft": "Eyða og enduvinna drög", "status.remove_bookmark": "Fjarlægja bókamerki", "status.reply": "Svara", @@ -459,7 +461,7 @@ "timeline_hint.remote_resource_not_displayed": "{resource} frá öðrum netþjónum er ekki birt.", "timeline_hint.resources.followers": "Fylgjendur", "timeline_hint.resources.follows": "Fylgist með", - "timeline_hint.resources.statuses": "Eldri þyt", + "timeline_hint.resources.statuses": "Eldri færslur", "trends.counter_by_accounts": "{count, plural, one {{counter} aðili} other {{counter} aðilar}} tala", "trends.trending_now": "Í umræðunni núna", "ui.beforeunload": "Drögin tapast ef þú ferð út úr Mastodon.", diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json index c02c84f09..a4847b77b 100644 --- a/app/javascript/mastodon/locales/it.json +++ b/app/javascript/mastodon/locales/it.json @@ -47,8 +47,8 @@ "account.unmute": "Riattiva @{name}", "account.unmute_notifications": "Riattiva le notifiche da @{name}", "account_note.placeholder": "Clicca per aggiungere una nota", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Tasso di ritenzione utente per giorno dopo la registrazione", + "admin.dashboard.monthly_retention": "Tasso di ritenzione utente per mese dopo la registrazione", "admin.dashboard.retention.average": "Media", "admin.dashboard.retention.cohort": "Mese di iscrizione", "admin.dashboard.retention.cohort_size": "Nuovi utenti", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Modifica sondaggio per consentire una singola scelta", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Salva modifiche", "compose_form.sensitive.hide": "Segna media come sensibile", "compose_form.sensitive.marked": "Questo media è contrassegnato come sensibile", "compose_form.sensitive.unmarked": "Questo media non è contrassegnato come sensibile", @@ -308,6 +308,7 @@ "notification.poll": "Un sondaggio in cui hai votato è terminato", "notification.reblog": "{name} ha condiviso il tuo post", "notification.status": "{name} ha appena pubblicato un post", + "notification.update": "{name} ha modificato un post", "notifications.clear": "Cancella notifiche", "notifications.clear_confirmation": "Vuoi davvero cancellare tutte le notifiche?", "notifications.column_settings.alert": "Notifiche desktop", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Nuovi post:", "notifications.column_settings.unread_notifications.category": "Notifiche non lette", "notifications.column_settings.unread_notifications.highlight": "Evidenzia notifiche non lette", + "notifications.column_settings.update": "Modifiche:", "notifications.filter.all": "Tutti", "notifications.filter.boosts": "Condivisioni", "notifications.filter.favourites": "Apprezzati", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Caricamento in corso…", "regeneration_indicator.sublabel": "Stiamo preparando il tuo home feed!", "relative_time.days": "{number}g", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# giorno} other {# giorni}} fa", + "relative_time.full.hours": "{number, plural, one {# ora} other {# ore}} fa", + "relative_time.full.just_now": "proprio ora", + "relative_time.full.minutes": "{number, plural, one {# minuto} other {# minuti}} fa", + "relative_time.full.seconds": "{number, plural, one {# secondo} other {# secondi}} fa", "relative_time.hours": "{number}o", "relative_time.just_now": "ora", "relative_time.minutes": "{number} minuti", "relative_time.seconds": "{number} secondi", "relative_time.today": "oggi", "reply_indicator.cancel": "Annulla", - "report.categories.other": "Other", + "report.categories.other": "Altro", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "Il contenuto viola una o più regole del server", "report.forward": "Inoltra a {target}", "report.forward_hint": "Questo account appartiene a un altro server. Mandare anche là una copia anonima del rapporto?", "report.hint": "La segnalazione sarà inviata ai moderatori del tuo server. Di seguito, puoi fornire il motivo per il quale stai segnalando questo account:", @@ -407,14 +409,14 @@ "status.delete": "Elimina", "status.detailed_status": "Vista conversazione dettagliata", "status.direct": "Messaggio privato @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Modifica", + "status.edited": "Modificato il {date}", + "status.edited_x_times": "Modificato {count, plural, one {{count} volta} other {{count} volte}}", "status.embed": "Incorpora", "status.favourite": "Apprezzato", "status.filtered": "Filtrato", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} ha creato {date}", + "status.history.edited": "{name} ha modificato {date}", "status.load_more": "Mostra di più", "status.media_hidden": "Allegato nascosto", "status.mention": "Nomina @{name}", diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json index a54922ef6..48766c80b 100644 --- a/app/javascript/mastodon/locales/ja.json +++ b/app/javascript/mastodon/locales/ja.json @@ -47,8 +47,8 @@ "account.unmute": "@{name}さんのミュートを解除", "account.unmute_notifications": "@{name}さんからの通知を受け取るようにする", "account_note.placeholder": "クリックしてメモを追加", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "サインアップ後の日ごとのユーザー継続率", + "admin.dashboard.monthly_retention": "サインアップ後の月ごとのユーザー継続率", "admin.dashboard.retention.average": "平均", "admin.dashboard.retention.cohort": "サインアップ月", "admin.dashboard.retention.cohort_size": "新しいユーザー", @@ -109,7 +109,7 @@ "compose_form.poll.switch_to_single": "単一選択に変更", "compose_form.publish": "トゥート", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "変更を保存", "compose_form.sensitive.hide": "メディアを閲覧注意にする", "compose_form.sensitive.marked": "メディアに閲覧注意が設定されています", "compose_form.sensitive.unmarked": "メディアに閲覧注意が設定されていません", @@ -313,6 +313,7 @@ "notification.poll": "アンケートが終了しました", "notification.reblog": "{name}さんがあなたの投稿をブーストしました", "notification.status": "{name}さんが投稿しました", + "notification.update": "{name} が投稿を編集しました", "notifications.clear": "通知を消去", "notifications.clear_confirmation": "本当に通知を消去しますか?", "notifications.column_settings.alert": "デスクトップ通知", @@ -331,6 +332,7 @@ "notifications.column_settings.status": "新しい投稿:", "notifications.column_settings.unread_notifications.category": "未読の通知:", "notifications.column_settings.unread_notifications.highlight": "未読の通知を強調表示", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "すべて", "notifications.filter.boosts": "ブースト", "notifications.filter.favourites": "お気に入り", @@ -370,20 +372,20 @@ "regeneration_indicator.label": "読み込み中…", "regeneration_indicator.sublabel": "ホームタイムラインは準備中です!", "relative_time.days": "{number}日前", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number} 日前", + "relative_time.full.hours": "{number} 時間前", + "relative_time.full.just_now": "今", + "relative_time.full.minutes": "{number} 分前", + "relative_time.full.seconds": "{number} 秒前", "relative_time.hours": "{number}時間前", "relative_time.just_now": "今", "relative_time.minutes": "{number}分前", "relative_time.seconds": "{number}秒前", "relative_time.today": "今日", "reply_indicator.cancel": "キャンセル", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "その他", + "report.categories.spam": "スパム", + "report.categories.violation": "サーバーのルールに違反", "report.forward": "{target} に転送する", "report.forward_hint": "このアカウントは別のサーバーに所属しています。通報内容を匿名で転送しますか?", "report.hint": "通報内容はあなたのサーバーのモデレーターへ送信されます。通報理由を入力してください。:", @@ -412,14 +414,14 @@ "status.delete": "削除", "status.detailed_status": "詳細な会話ビュー", "status.direct": "@{name}さんにダイレクトメッセージ", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "編集", + "status.edited": "{date} 編集済み", + "status.edited_x_times": "{count} 回編集", "status.embed": "埋め込み", "status.favourite": "お気に入り", "status.filtered": "フィルターされました", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name}さんが {date} に作成", + "status.history.edited": "{name}さんが {date} に編集", "status.load_more": "もっと見る", "status.media_hidden": "非表示のメディア", "status.mention": "@{name}さんに投稿", diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json index 12ff62dba..c6c177d58 100644 --- a/app/javascript/mastodon/locales/ka.json +++ b/app/javascript/mastodon/locales/ka.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name}-მა დაბუსტა თქვენი სტატუსი", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "შეტყობინებების გასუფთავება", "notifications.clear_confirmation": "დარწმუნებული ხართ, გსურთ სამუდამოდ წაშალოთ ყველა თქვენი შეტყობინება?", "notifications.column_settings.alert": "დესკტოპ შეტყობინებები", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json index f420ac45b..b575db516 100644 --- a/app/javascript/mastodon/locales/kab.json +++ b/app/javascript/mastodon/locales/kab.json @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Change poll to allow for a single choice", "compose_form.publish": "Jewweq", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Sekles ibeddilen", "compose_form.sensitive.hide": "Creḍ allal n teywalt d anafri", "compose_form.sensitive.marked": "Allal n teywalt yettwacreḍ d anafri", "compose_form.sensitive.unmarked": "Allal n teywalt ur yettwacreḍ ara d anafri", @@ -308,6 +308,7 @@ "notification.poll": "Tfukk tefrant ideg tettekkaḍ", "notification.reblog": "{name} yebḍa tajewwiqt-ik i tikelt-nniḍen", "notification.status": "{name} akken i d-yessufeɣ", + "notification.update": "{name} edited a post", "notifications.clear": "Sfeḍ tilɣa", "notifications.clear_confirmation": "Tebɣiḍ s tidet ad tekkseḍ akk tilɣa-inek·em i lebda?", "notifications.column_settings.alert": "Tilɣa n tnarit", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Tiẓenẓunin timaynutin:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Akk", "notifications.filter.boosts": "Seǧhed", "notifications.filter.favourites": "Ismenyifen", @@ -367,7 +369,7 @@ "relative_time.days": "{number}u", "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", + "relative_time.full.just_now": "tura kan", "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", "relative_time.hours": "{number}isr", @@ -377,7 +379,7 @@ "relative_time.today": "assa", "reply_indicator.cancel": "Sefsex", "report.categories.other": "Other", - "report.categories.spam": "Spam", + "report.categories.spam": "Aspam", "report.categories.violation": "Content violates one or more server rules", "report.forward": "Bren-it ɣeṛ {target}", "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?", @@ -407,8 +409,8 @@ "status.delete": "Kkes", "status.detailed_status": "Detailed conversation view", "status.direct": "Izen usrid i @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", + "status.edit": "Ẓreg", + "status.edited": "Tettwaẓreg deg {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Seddu", "status.favourite": "Rnu ɣer yismenyifen", diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json index 074ae5844..4fb5cb3d1 100644 --- a/app/javascript/mastodon/locales/kk.json +++ b/app/javascript/mastodon/locales/kk.json @@ -308,6 +308,7 @@ "notification.poll": "Бұл сауалнаманың мерзімі аяқталыпты", "notification.reblog": "{name} жазбаңызды бөлісті", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Ескертпелерді тазарт", "notifications.clear_confirmation": "Шынымен барлық ескертпелерді өшіресіз бе?", "notifications.column_settings.alert": "Үстел ескертпелері", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Барлығы", "notifications.filter.boosts": "Бөлісулер", "notifications.filter.favourites": "Таңдаулылар", diff --git a/app/javascript/mastodon/locales/kmr.json b/app/javascript/mastodon/locales/kmr.json index f45e305cd..2ae288581 100644 --- a/app/javascript/mastodon/locales/kmr.json +++ b/app/javascript/mastodon/locales/kmr.json @@ -47,8 +47,8 @@ "account.unmute": "@{name} Bêdeng bike", "account.unmute_notifications": "Agahdariyan ji @{name} bêdeng bike", "account_note.placeholder": "Bitikîne bo nîşeyekê tevlî bikî", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Rêjeya ragirtina bikarhêner bi roj piştî tomarkirinê", + "admin.dashboard.monthly_retention": "Rêjeya ragirtina bikarhêner bi meh piştî tomarkirinê", "admin.dashboard.retention.average": "Navîn", "admin.dashboard.retention.cohort": "Meha tomarkirinê", "admin.dashboard.retention.cohort_size": "Bikarhênerên nû", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Rapirsîyê biguherîne da ku mafê bidî tenê vebijêrkek", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Guhertinan tomar bike", "compose_form.sensitive.hide": "{count, plural, one {Medya wekî hestiyar nîşan bide} other {Medya wekî hestiyar nîşan bide}}", "compose_form.sensitive.marked": "{count, plural, one {Medya wekî hestiyar hate nîşan} other {Medya wekî hestiyar nîşan}}", "compose_form.sensitive.unmarked": "{count, plural, one {Medya wekî hestiyar nehatiye nîşan} other {Medya wekî hestiyar nehatiye nîşan}}", @@ -308,6 +308,7 @@ "notification.poll": "Rapirsiyeke ku te deng daye qediya", "notification.reblog": "{name} şandiya te bilind kir", "notification.status": "{name} niha şand", + "notification.update": "{name} şandiyek serrast kir", "notifications.clear": "Agahdariyan pak bike", "notifications.clear_confirmation": "Bi rastî tu dixwazî bi awayekî dawî hemû agahdariyên xwe pak bikî?", "notifications.column_settings.alert": "Agahdariyên sermaseyê", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Şandiyên nû:", "notifications.column_settings.unread_notifications.category": "Agahdariyên nexwendî", "notifications.column_settings.unread_notifications.highlight": "Agahiyên nexwendî nîşan bike", + "notifications.column_settings.update": "Serrastkirin:", "notifications.filter.all": "Hemû", "notifications.filter.boosts": "Bilindkirî", "notifications.filter.favourites": "Bijarte", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Tê barkirin…", "regeneration_indicator.sublabel": "Mala te da tê amedekirin!", "relative_time.days": "{number}r", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# roj} other {# roj}} berê", + "relative_time.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} berê", + "relative_time.full.just_now": "hema niha", + "relative_time.full.minutes": "{number, plural, one {# xulek} other {# xulek}} berê", + "relative_time.full.seconds": "{number, plural, one {# çirke} other {# çirke}} xulek", "relative_time.hours": "{number}d", "relative_time.just_now": "niha", "relative_time.minutes": "{number}x", "relative_time.seconds": "{number}ç", "relative_time.today": "îro", "reply_indicator.cancel": "Dev jê berde", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "Yên din", + "report.categories.spam": "Nexwestî (Spam)", + "report.categories.violation": "Naverok yek an çend rêbazên rajekar binpê dike", "report.forward": "Biçe bo {target}", "report.forward_hint": "Ajimêr ji rajekarek din da ne. Tu kopîyeka anonîm ya raporê bişînî li wur?", "report.hint": "Ev rapor yê rajekarê lihevkarên te ra were şandin. Tu dikarî şiroveyekê pêşkêş bikî bê ka tu çima vê ajimêrê jor radigîhînî:", @@ -407,14 +409,14 @@ "status.delete": "Jê bibe", "status.detailed_status": "Dîtina axaftina berfireh", "status.direct": "Peyama rasterast @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Serrast bike", + "status.edited": "Di {date} de hate serrastkirin", + "status.edited_x_times": "{count, plural, one {{count} car} other {{count} car}} hate serrastkirin", "status.embed": "Hedimandî", "status.favourite": "Bijarte", "status.filtered": "Parzûnkirî", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} {date} afirand", + "status.history.edited": "{name} {date} serrast kir", "status.load_more": "Bêtir bar bike", "status.media_hidden": "Medya veşartî ye", "status.mention": "Qal @{name} bike", @@ -451,9 +453,9 @@ "tabs_bar.local_timeline": "Herêmî", "tabs_bar.notifications": "Agahdarî", "tabs_bar.search": "Bigere", - "time_remaining.days": "{number, plural, one {# roj} other {# roj}} mayî", - "time_remaining.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} mayî", - "time_remaining.minutes": "{number, plural, one {# xulek} other {# xulek}} mayî", + "time_remaining.days": "{number, plural, one {# roj} other {# roj}} maye", + "time_remaining.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} maye", + "time_remaining.minutes": "{number, plural, one {# xulek} other {# xulek}} maye", "time_remaining.moments": "Demên mayî", "time_remaining.seconds": "{number, plural, one {# çirke} other {# çirke}} maye", "timeline_hint.remote_resource_not_displayed": "{resource} Ji rajekerên din nayê dîtin.", diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json index cc6c34e4a..e877f8eab 100644 --- a/app/javascript/mastodon/locales/kn.json +++ b/app/javascript/mastodon/locales/kn.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json index 613ef7600..b3aa2e6ab 100644 --- a/app/javascript/mastodon/locales/ko.json +++ b/app/javascript/mastodon/locales/ko.json @@ -47,8 +47,8 @@ "account.unmute": "@{name} 뮤트 해제", "account.unmute_notifications": "@{name}의 알림 뮤트 해제", "account_note.placeholder": "클릭해서 노트 추가", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "가입 후 일별 사용자 유지율", + "admin.dashboard.monthly_retention": "가입 후 월별 사용자 유지율", "admin.dashboard.retention.average": "평균", "admin.dashboard.retention.cohort": "가입한 달", "admin.dashboard.retention.cohort_size": "새로운 사용자", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "단일 선택 투표로 변경", "compose_form.publish": "뿌우", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "변경사항 저장", "compose_form.sensitive.hide": "미디어를 민감함으로 설정하기", "compose_form.sensitive.marked": "미디어가 열람주의로 설정되어 있습니다", "compose_form.sensitive.unmarked": "미디어가 열람주의로 설정 되어 있지 않습니다", @@ -308,6 +308,7 @@ "notification.poll": "당신이 참여 한 투표가 종료되었습니다", "notification.reblog": "{name} 님이 부스트 했습니다", "notification.status": "{name} 님이 방금 게시물을 올렸습니다", + "notification.update": "{name} 님이 게시물을 수정했습니다", "notifications.clear": "알림 지우기", "notifications.clear_confirmation": "정말로 알림을 삭제하시겠습니까?", "notifications.column_settings.alert": "데스크탑 알림", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "새 게시물:", "notifications.column_settings.unread_notifications.category": "읽지 않은 알림", "notifications.column_settings.unread_notifications.highlight": "읽지 않은 알림 강조", + "notifications.column_settings.update": "수정내역:", "notifications.filter.all": "모두", "notifications.filter.boosts": "부스트", "notifications.filter.favourites": "즐겨찾기", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "불러오는 중…", "regeneration_indicator.sublabel": "당신의 홈 피드가 준비되는 중입니다!", "relative_time.days": "{number}일 전", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number} 일 전", + "relative_time.full.hours": "{number} 시간 전", + "relative_time.full.just_now": "방금 전", + "relative_time.full.minutes": "{number} 분 전", + "relative_time.full.seconds": "{number} 초 전", "relative_time.hours": "{number}시간 전", "relative_time.just_now": "방금", "relative_time.minutes": "{number}분 전", "relative_time.seconds": "{number}초 전", "relative_time.today": "오늘", "reply_indicator.cancel": "취소", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "기타", + "report.categories.spam": "스팸", + "report.categories.violation": "컨텐츠가 한 개 이상의 서버 규칙을 위반합니다", "report.forward": "{target}에 포워드 됨", "report.forward_hint": "이 계정은 다른 서버에 있습니다. 익명화 된 사본을 해당 서버에도 전송할까요?", "report.hint": "신고는 당신의 서버 스태프에게 전송 됩니다. 왜 이 계정을 신고하는 지에 대한 설명을 아래에 작성할 수 있습니다:", @@ -407,14 +409,14 @@ "status.delete": "삭제", "status.detailed_status": "대화 자세히 보기", "status.direct": "@{name}에게 다이렉트 메시지", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "수정", + "status.edited": "{date}에 편집됨", + "status.edited_x_times": "{count}번 수정됨", "status.embed": "공유하기", "status.favourite": "즐겨찾기", "status.filtered": "필터로 걸러짐", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} 님이 {date}에 생성함", + "status.history.edited": "{name} 님이 {date}에 수정함", "status.load_more": "더 보기", "status.media_hidden": "미디어 숨겨짐", "status.mention": "@{name}에게 글쓰기", diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json index 36b2ffef1..331ab57f0 100644 --- a/app/javascript/mastodon/locales/ku.json +++ b/app/javascript/mastodon/locales/ku.json @@ -308,6 +308,7 @@ "notification.poll": "ڕاپرسییەک کە دەنگی پێداویت کۆتایی هات", "notification.reblog": "{name} نووسراوەکەتی دووبارە توتاند", "notification.status": "{name} تازە بڵاوکرایەوە", + "notification.update": "{name} edited a post", "notifications.clear": "ئاگانامەکان بسڕیەوە", "notifications.clear_confirmation": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی هەموو ئاگانامەکانت بسڕیتەوە?", "notifications.column_settings.alert": "ئاگانامەکانی پیشانگەرر ڕومێزی", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "توتەکانی نوێ:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "هەموو", "notifications.filter.boosts": "دووبارەتوتەکان", "notifications.filter.favourites": "دڵخوازەکان", diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json index c8638e56a..9a8c9685a 100644 --- a/app/javascript/mastodon/locales/kw.json +++ b/app/javascript/mastodon/locales/kw.json @@ -308,6 +308,7 @@ "notification.poll": "An sondyans may hwrussowgh ragleva a worfennas", "notification.reblog": "{name} a generthas agas post", "notification.status": "{name} a wrug nowydh postya", + "notification.update": "{name} edited a post", "notifications.clear": "Dilea gwarnyansow", "notifications.clear_confirmation": "Owgh hwi sur a vynnes dilea agas gwarnyansow oll yn fast?", "notifications.column_settings.alert": "Gwarnyansow pennskrin", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Postow nowydh:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Oll", "notifications.filter.boosts": "Kenerthow", "notifications.filter.favourites": "Re drudh", diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json index 1ed083f0c..c9f8f32d2 100644 --- a/app/javascript/mastodon/locales/lt.json +++ b/app/javascript/mastodon/locales/lt.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json index f8f61532a..955d2afa3 100644 --- a/app/javascript/mastodon/locales/lv.json +++ b/app/javascript/mastodon/locales/lv.json @@ -47,8 +47,8 @@ "account.unmute": "Noņemt apklusinājumu @{name}", "account.unmute_notifications": "Rādīt paziņojumus no lietotāja @{name}", "account_note.placeholder": "Noklikšķiniet, lai pievienotu piezīmi", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Lietotāju saglabāšanas rādītājs dienā pēc reģistrēšanās", + "admin.dashboard.monthly_retention": "Lietotāju saglabāšanas rādītājs mēnesī pēc reģistrēšanās", "admin.dashboard.retention.average": "Vidēji", "admin.dashboard.retention.cohort": "Reģistrēšanās mēnesis", "admin.dashboard.retention.cohort_size": "Jauni lietotāji", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Maini aptaujas veidu, lai atļautu vienu izvēli", "compose_form.publish": "Taurēt", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Saglabāt izmaiņas", "compose_form.sensitive.hide": "{count, plural, one {Atzīmēt mediju kā sensitīvu} other {Atzīmēt medijus kā sensitīvus}}", "compose_form.sensitive.marked": "{count, plural, one {Medijs ir atzīmēts kā sensitīvs} other {Mediji ir atzīmēti kā sensitīvi}}", "compose_form.sensitive.unmarked": "{count, plural, one {Medijs nav atzīmēts kā sensitīvs} other {Mediji nav atzīmēti kā sensitīvi}}", @@ -308,6 +308,7 @@ "notification.poll": "Aprauja, kurā tu piedalījies, ir pabeigta", "notification.reblog": "{name} paaugstināja tavu ziņu", "notification.status": "{name} tikko publicēja", + "notification.update": "{name} ir rediģējis rakstu", "notifications.clear": "Notīrīt paziņojumus", "notifications.clear_confirmation": "Vai tiešām vēlies neatgriezeniski notīrīt visus savus paziņojumus?", "notifications.column_settings.alert": "Darbvirsmas paziņojumi", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Jaunas ziņas:", "notifications.column_settings.unread_notifications.category": "Nelasītie paziņojumi", "notifications.column_settings.unread_notifications.highlight": "Iezīmēt nelasītos paziņojumus", + "notifications.column_settings.update": "Labojumi:", "notifications.filter.all": "Visi", "notifications.filter.boosts": "Palielinājumi", "notifications.filter.favourites": "Izlases", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Ielādē…", "regeneration_indicator.sublabel": "Tiek gatavota tava plūsma!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# diena} other {# dienas}} atpakaļ", + "relative_time.full.hours": "{number, plural, one {# stunda} other {# stundas}} atpakaļ", + "relative_time.full.just_now": "tikko", + "relative_time.full.minutes": "{number, plural, one {# minūte} other {# minūtes}} atpakaļ", + "relative_time.full.seconds": "{number, plural, one {# sekunde} other {# sekundes}} atpakaļ", "relative_time.hours": "{number}st", "relative_time.just_now": "tagad", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "šodien", "reply_indicator.cancel": "Atcelt", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "Citi", + "report.categories.spam": "Spams", + "report.categories.violation": "Saturs pārkāpj vienu vai vairākus servera noteikumus", "report.forward": "Pārsūtīt {target}", "report.forward_hint": "Konts ir no cita servera. Vai nosūtīt anonimizētu ziņojuma kopiju arī tam?", "report.hint": "Pārskats tiks nosūtīts tava servera moderatoriem. Tu vari pievienot paskaidrojumu, kādēļ tu ziņo par kontu:", @@ -407,14 +409,14 @@ "status.delete": "Dzēst", "status.detailed_status": "Detalizēts sarunas skats", "status.direct": "Privāta ziņa @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Rediģēt", + "status.edited": "Rediģēts {date}", + "status.edited_x_times": "Rediģēts {count, plural, one {{count} reize} other {{count} reizes}}", "status.embed": "Iestrādāt", "status.favourite": "Iecienītā", "status.filtered": "Filtrēts", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} izveidots {date}", + "status.history.edited": "{name} rediģēts {date}", "status.load_more": "Ielādēt vairāk", "status.media_hidden": "Medijs ir paslēpts", "status.mention": "Pieminēt @{name}", diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json index ae925b391..609232e7a 100644 --- a/app/javascript/mastodon/locales/mk.json +++ b/app/javascript/mastodon/locales/mk.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Сите", "notifications.filter.boosts": "Бустови", "notifications.filter.favourites": "Омилени", diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json index b17642b3c..e85a5ff75 100644 --- a/app/javascript/mastodon/locales/ml.json +++ b/app/javascript/mastodon/locales/ml.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} നിങ്ങളുടെ പോസ്റ്റ് ബൂസ്റ്റ് ചെയ്തു", "notification.status": "{name} ഇപ്പോൾ പോസ്റ്റുചെയ്തു", + "notification.update": "{name} edited a post", "notifications.clear": "അറിയിപ്പ് മായ്ക്കുക", "notifications.clear_confirmation": "നിങ്ങളുടെ എല്ലാ അറിയിപ്പുകളും ശാശ്വതമായി മായ്ക്കണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?", "notifications.column_settings.alert": "ഡെസ്ക്ടോപ്പ് അറിയിപ്പുകൾ", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "പുതിയ ടൂട്ടുകൾ:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "എല്ലാം", "notifications.filter.boosts": "ബൂസ്റ്റുകൾ", "notifications.filter.favourites": "പ്രിയപ്പെട്ടവ", diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json index 14e5d2de9..ee3e21bf8 100644 --- a/app/javascript/mastodon/locales/mr.json +++ b/app/javascript/mastodon/locales/mr.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json index 5db089d5a..c50e442c1 100644 --- a/app/javascript/mastodon/locales/ms.json +++ b/app/javascript/mastodon/locales/ms.json @@ -308,6 +308,7 @@ "notification.poll": "Sebuah undian yang anda undi telah tamat", "notification.reblog": "{name} menggalak hantaran anda", "notification.status": "{name} baru sahaja mengirim hantaran", + "notification.update": "{name} edited a post", "notifications.clear": "Buang pemberitahuan", "notifications.clear_confirmation": "Adakah anda pasti anda ingin membuang semua pemberitahuan anda secara kekal?", "notifications.column_settings.alert": "Pemberitahuan atas meja", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Hantaran baharu:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Semua", "notifications.filter.boosts": "Galakan", "notifications.filter.favourites": "Kegemaran", diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json index ec4e4aabd..f636d4d24 100644 --- a/app/javascript/mastodon/locales/nl.json +++ b/app/javascript/mastodon/locales/nl.json @@ -308,6 +308,7 @@ "notification.poll": "Een poll waaraan jij hebt meegedaan is beëindigd", "notification.reblog": "{name} boostte jouw toot", "notification.status": "{name} heeft zojuist een toot geplaatst", + "notification.update": "{name} edited a post", "notifications.clear": "Meldingen verwijderen", "notifications.clear_confirmation": "Weet je het zeker dat je al jouw meldingen wilt verwijderen?", "notifications.column_settings.alert": "Desktopmeldingen", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Nieuwe toots:", "notifications.column_settings.unread_notifications.category": "Ongelezen meldingen", "notifications.column_settings.unread_notifications.highlight": "Ongelezen meldingen markeren", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Alles", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favorieten", diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json index 17e1a4d25..d85cb3e20 100644 --- a/app/javascript/mastodon/locales/nn.json +++ b/app/javascript/mastodon/locales/nn.json @@ -308,6 +308,7 @@ "notification.poll": "Ei rundspørjing du har røysta i er ferdig", "notification.reblog": "{name} framheva statusen din", "notification.status": "{name} la nettopp ut", + "notification.update": "{name} edited a post", "notifications.clear": "Tøm varsel", "notifications.clear_confirmation": "Er du sikker på at du vil fjerna alle varsla dine for alltid?", "notifications.column_settings.alert": "Skrivebordsvarsel", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Nye tuter:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Framhevingar", "notifications.filter.favourites": "Favorittar", diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json index 0ede09267..2948a0586 100644 --- a/app/javascript/mastodon/locales/no.json +++ b/app/javascript/mastodon/locales/no.json @@ -308,6 +308,7 @@ "notification.poll": "En avstemning du har stemt på har avsluttet", "notification.reblog": "{name} fremhevde din status", "notification.status": "{name} la nettopp ut", + "notification.update": "{name} edited a post", "notifications.clear": "Fjern varsler", "notifications.clear_confirmation": "Er du sikker på at du vil fjerne alle dine varsler permanent?", "notifications.column_settings.alert": "Skrivebordsvarslinger", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Nye tuter:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Alle", "notifications.filter.boosts": "Fremhevinger", "notifications.filter.favourites": "Favoritter", diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json index 7e7b68f77..65ba8aeb6 100644 --- a/app/javascript/mastodon/locales/oc.json +++ b/app/javascript/mastodon/locales/oc.json @@ -308,6 +308,7 @@ "notification.poll": "Avètz participat a un sondatge que ven de s’acabar", "notification.reblog": "{name} a partejat vòstre estatut", "notification.status": "{name} ven de publicar", + "notification.update": "{name} edited a post", "notifications.clear": "Escafar", "notifications.clear_confirmation": "Volètz vertadièrament escafar totas vòstras las notificacions ?", "notifications.column_settings.alert": "Notificacions localas", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Tuts novèls :", "notifications.column_settings.unread_notifications.category": "Notificacions pas legidas", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Totas", "notifications.filter.boosts": "Partages", "notifications.filter.favourites": "Favorits", diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json index 2675da68c..5456eb88e 100644 --- a/app/javascript/mastodon/locales/pa.json +++ b/app/javascript/mastodon/locales/pa.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json index 07754475f..c33275866 100644 --- a/app/javascript/mastodon/locales/pl.json +++ b/app/javascript/mastodon/locales/pl.json @@ -109,7 +109,7 @@ "compose_form.poll.switch_to_single": "Pozwól na wybranie tylko jednej opcji", "compose_form.publish": "Wyślij", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Zapisz zmiany", "compose_form.sensitive.hide": "Oznacz multimedia jako wrażliwe", "compose_form.sensitive.marked": "Zawartość multimedia jest oznaczona jako wrażliwa", "compose_form.sensitive.unmarked": "Zawartość multimedialna nie jest oznaczona jako wrażliwa", @@ -313,6 +313,7 @@ "notification.poll": "Głosowanie w którym brałeś(-aś) udział zakończyło się", "notification.reblog": "{name} podbił(a) Twój wpis", "notification.status": "{name} właśnie utworzył(a) wpis", + "notification.update": "{name} edytował post", "notifications.clear": "Wyczyść powiadomienia", "notifications.clear_confirmation": "Czy na pewno chcesz bezpowrotnie usunąć wszystkie powiadomienia?", "notifications.column_settings.alert": "Powiadomienia na pulpicie", @@ -331,6 +332,7 @@ "notifications.column_settings.status": "Nowe wpisy:", "notifications.column_settings.unread_notifications.category": "Nieprzeczytane powiadomienia", "notifications.column_settings.unread_notifications.highlight": "Podświetl nieprzeczytane powiadomienia", + "notifications.column_settings.update": "Edycje:", "notifications.filter.all": "Wszystkie", "notifications.filter.boosts": "Podbicia", "notifications.filter.favourites": "Ulubione", @@ -370,20 +372,20 @@ "regeneration_indicator.label": "Ładuję…", "regeneration_indicator.sublabel": "Twoja oś czasu jest przygotowywana!", "relative_time.days": "{number} dni", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# dzień} few {# dni} many {# dni} other {# dni}} temu", + "relative_time.full.hours": "{number, plural, one {# godzinę} few {# godziny} many {# godzin} other {# godzin}} temu", + "relative_time.full.just_now": "przed chwilą", + "relative_time.full.minutes": "{number, plural, one {# minutę} few {# minuty} many {# minut} other {# minut}} temu", + "relative_time.full.seconds": "{number, plural, one {# sekundę} few {# sekundy} many {# sekund} other {# sekund}} temu", "relative_time.hours": "{number} godz.", "relative_time.just_now": "teraz", "relative_time.minutes": "{number} min.", "relative_time.seconds": "{number} s.", "relative_time.today": "dzisiaj", "reply_indicator.cancel": "Anuluj", - "report.categories.other": "Other", + "report.categories.other": "Inne", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "Zawartość narusza co najmniej jedną zasadę serwera", "report.forward": "Przekaż na {target}", "report.forward_hint": "To konto znajduje się na innej instancji. Czy chcesz wysłać anonimową kopię zgłoszenia rnież na nią?", "report.hint": "Zgłoszenie zostanie wysłane moderatorom Twojego serwera. Poniżej możesz też umieścić wyjaśnienie dlaczego zgłaszasz to konto:", @@ -412,8 +414,8 @@ "status.delete": "Usuń", "status.detailed_status": "Szczegółowy widok konwersacji", "status.direct": "Wyślij wiadomość bezpośrednią do @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", + "status.edit": "Edytuj", + "status.edited": "Edytowano {date}", "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", "status.embed": "Osadź", "status.favourite": "Dodaj do ulubionych", diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json index e61c3ef5a..be49f2b4e 100644 --- a/app/javascript/mastodon/locales/pt-BR.json +++ b/app/javascript/mastodon/locales/pt-BR.json @@ -308,6 +308,7 @@ "notification.poll": "Uma enquete que você votou terminou", "notification.reblog": "{name} deu boost no teu toot", "notification.status": "{name} acabou de tootar", + "notification.update": "{name} edited a post", "notifications.clear": "Limpar notificações", "notifications.clear_confirmation": "Você tem certeza de que deseja limpar todas as suas notificações?", "notifications.column_settings.alert": "Notificações no computador", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Novos toots:", "notifications.column_settings.unread_notifications.category": "Notificações não lidas", "notifications.column_settings.unread_notifications.highlight": "Destacar notificações não lidas", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Tudo", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favoritos", diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json index 988ecef3a..531265706 100644 --- a/app/javascript/mastodon/locales/pt-PT.json +++ b/app/javascript/mastodon/locales/pt-PT.json @@ -47,8 +47,8 @@ "account.unmute": "Não silenciar @{name}", "account.unmute_notifications": "Deixar de silenciar @{name}", "account_note.placeholder": "Clique para adicionar nota", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Taxa de retenção de utilizadores por dia após a inscrição", + "admin.dashboard.monthly_retention": "Taxa de retenção de utilizadores por mês após a inscrição", "admin.dashboard.retention.average": "Média", "admin.dashboard.retention.cohort": "Mês de inscrição", "admin.dashboard.retention.cohort_size": "Novos utilizadores", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Alterar a votação para permitir uma única escolha", "compose_form.publish": "Toot", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Guardar alterações", "compose_form.sensitive.hide": "Marcar media como sensível", "compose_form.sensitive.marked": "Media marcada como sensível", "compose_form.sensitive.unmarked": "Media não está marcada como sensível", @@ -308,6 +308,7 @@ "notification.poll": "Uma votação em que participaste chegou ao fim", "notification.reblog": "{name} partilhou a tua publicação", "notification.status": "{name} acabou de publicar", + "notification.update": "{name} editou uma publicação", "notifications.clear": "Limpar notificações", "notifications.clear_confirmation": "Queres mesmo limpar todas as notificações?", "notifications.column_settings.alert": "Notificações no ambiente de trabalho", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Novos toots:", "notifications.column_settings.unread_notifications.category": "Notificações não lidas", "notifications.column_settings.unread_notifications.highlight": "Destacar notificações não lidas", + "notifications.column_settings.update": "Edições:", "notifications.filter.all": "Todas", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favoritos", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "A carregar…", "regeneration_indicator.sublabel": "A tua página inicial está a ser preparada!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural,one {# dia} other {# dias}} atrás", + "relative_time.full.hours": "{number, plural,one {# hora}other {# horas}} atrás", + "relative_time.full.just_now": "agora mesmo", + "relative_time.full.minutes": "{number, plural,one {# minuto}other {# minutos}} atrás", + "relative_time.full.seconds": "{number, plural,one {# segundo} other {# segundos}} atrás", "relative_time.hours": "{number}h", "relative_time.just_now": "agora", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "hoje", "reply_indicator.cancel": "Cancelar", - "report.categories.other": "Other", + "report.categories.other": "Outro", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "O conteúdo viola uma ou mais regras do servidor", "report.forward": "Reenviar para {target}", "report.forward_hint": "A conta é de outro servidor. Enviar uma cópia anónima da denúncia para lá também?", "report.hint": "A denúncia será enviada para os moderadores do seu servidor. Pode fornecer, em baixo, uma explicação do motivo pelo qual está a denunciar esta conta:", @@ -407,14 +409,14 @@ "status.delete": "Eliminar", "status.detailed_status": "Vista de conversação detalhada", "status.direct": "Mensagem direta @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Editar", + "status.edited": "Editado em {date}", + "status.edited_x_times": "Editado {count, plural,one {{count} vez} other {{count} vezes}}", "status.embed": "Incorporar", "status.favourite": "Adicionar aos favoritos", "status.filtered": "Filtrada", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} criado em {date}", + "status.history.edited": "{name} editado em {date}", "status.load_more": "Carregar mais", "status.media_hidden": "Media escondida", "status.mention": "Mencionar @{name}", diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json index 15baeef12..1a6e19713 100644 --- a/app/javascript/mastodon/locales/ro.json +++ b/app/javascript/mastodon/locales/ro.json @@ -308,6 +308,7 @@ "notification.poll": "Un sondaj pentru care ai votat s-a încheiat", "notification.reblog": "{name} ți-a distribuit postarea", "notification.status": "{name} tocmai a postat", + "notification.update": "{name} edited a post", "notifications.clear": "Șterge notificările", "notifications.clear_confirmation": "Ești sigur că vrei să ștergi permanent toate notificările?", "notifications.column_settings.alert": "Notificări pe desktop", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Postări noi:", "notifications.column_settings.unread_notifications.category": "Notificări necitite", "notifications.column_settings.unread_notifications.highlight": "Evidențiază notificările necitite", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Toate", "notifications.filter.boosts": "Distribuiri", "notifications.filter.favourites": "Favorite", diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json index c414f9e7c..a0438ceb5 100644 --- a/app/javascript/mastodon/locales/ru.json +++ b/app/javascript/mastodon/locales/ru.json @@ -35,7 +35,7 @@ "account.never_active": "Никогда", "account.posts": "Посты", "account.posts_with_replies": "Посты и ответы", - "account.report": "Жалоба №{name}", + "account.report": "Пожаловаться на @{name}", "account.requested": "Ожидает подтверждения. Нажмите для отмены запроса", "account.share": "Поделиться профилем @{name}", "account.show_reblogs": "Показывать продвижения от @{name}", @@ -47,8 +47,8 @@ "account.unmute": "Убрать {name} из игнорируемых", "account.unmute_notifications": "Показывать уведомления от @{name}", "account_note.placeholder": "Текст заметки", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Уровень удержания пользователей после регистрации, в днях", + "admin.dashboard.monthly_retention": "Уровень удержания пользователей после регистрации, в месяцах", "admin.dashboard.retention.average": "Среднее", "admin.dashboard.retention.cohort": "Месяц регистрации", "admin.dashboard.retention.cohort_size": "Новые пользователи", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Переключить в режим выбора одного ответа", "compose_form.publish": "Запостить", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Сохранить", "compose_form.sensitive.hide": "{count, plural, one {Отметить медифайл как деликатный} other {Отметить медифайлы как деликатные}}", "compose_form.sensitive.marked": "Медиа{count, plural, =1 {файл отмечен} other {файлы отмечены}} как «деликатного характера»", "compose_form.sensitive.unmarked": "Медиа{count, plural, =1 {файл не отмечен} other {файлы не отмечены}} как «деликатного характера»", @@ -308,6 +308,7 @@ "notification.poll": "Опрос, в котором вы приняли участие, завершился", "notification.reblog": "{name} продвинул(а) ваш пост", "notification.status": "{name} только что запостил", + "notification.update": "{name} edited a post", "notifications.clear": "Очистить уведомления", "notifications.clear_confirmation": "Вы уверены, что хотите очистить все уведомления?", "notifications.column_settings.alert": "Уведомления на рабочем столе", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Новые посты:", "notifications.column_settings.unread_notifications.category": "Непрочитанные уведомления", "notifications.column_settings.unread_notifications.highlight": "Выделять непрочитанные уведомления", + "notifications.column_settings.update": "Изменения:", "notifications.filter.all": "Все", "notifications.filter.boosts": "Продвижения", "notifications.filter.favourites": "Отметки «избранного»", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Загрузка…", "regeneration_indicator.sublabel": "Один момент, мы подготавливаем вашу ленту!", "relative_time.days": "{number} д", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# день} many {# дней} other {# дня}} назад", + "relative_time.full.hours": "{number, plural, one {# час} many {# часов} other {# часа}} назад", + "relative_time.full.just_now": "только что", + "relative_time.full.minutes": "{number, plural, one {# минуту} many {# минут} other {# минуты}} назад", + "relative_time.full.seconds": "{number, plural, one {# секунду} many {# секунд} other {# секунды}} назад", "relative_time.hours": "{number} ч", "relative_time.just_now": "только что", "relative_time.minutes": "{number} мин", "relative_time.seconds": "{number} с", "relative_time.today": "сегодня", "reply_indicator.cancel": "Отмена", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "Другое", + "report.categories.spam": "Спам", + "report.categories.violation": "Содержимое нарушает одно или несколько правил узла", "report.forward": "Переслать в {target}", "report.forward_hint": "Эта учётная запись расположена на другом узле. Отправить туда анонимную копию вашей жалобы?", "report.hint": "Жалоба будет отправлена модераторам вашего узла. Вы также можете указать подробную причину жалобы ниже:", @@ -407,14 +409,14 @@ "status.delete": "Удалить", "status.detailed_status": "Подробный просмотр обсуждения", "status.direct": "Написать @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Изменить", + "status.edited": "Последнее изменение: {date}", + "status.edited_x_times": "{count, plural, one {{count} изменение} many {{count} изменений} other {{count} изменения}}", "status.embed": "Встроить на свой сайт", "status.favourite": "В избранное", "status.filtered": "Отфильтровано", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} создал {date}", + "status.history.edited": "{name} отредактировал {date}", "status.load_more": "Загрузить остальное", "status.media_hidden": "Файл скрыт", "status.mention": "Упомянуть @{name}", @@ -460,7 +462,7 @@ "timeline_hint.resources.followers": "подписчиков", "timeline_hint.resources.follows": "подписки", "timeline_hint.resources.statuses": "прошлые посты", - "trends.counter_by_accounts": "{count, plural, one {{counter} человек обсуждает} few {{counter} человека обсуждает} many {{counter} человек обсуждают} other {{counter} обсуждают}} ", + "trends.counter_by_accounts": "{count, plural, one {{counter} человек обсуждает} few {{counter} человека обсуждают} many {{counter} человек обсуждают} other {{counter} человека обсуждает}}", "trends.trending_now": "Самое актуальное", "ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.", "units.short.billion": "{count} млрд", diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json index a2a22e758..357a69187 100644 --- a/app/javascript/mastodon/locales/sa.json +++ b/app/javascript/mastodon/locales/sa.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json index 4f8f12357..467857136 100644 --- a/app/javascript/mastodon/locales/sc.json +++ b/app/javascript/mastodon/locales/sc.json @@ -308,6 +308,7 @@ "notification.poll": "Unu sondàgiu in su chi as votadu est acabbadu", "notification.reblog": "{name} at cumpartzidu sa publicatzione tua", "notification.status": "{name} at publicadu cosa", + "notification.update": "{name} edited a post", "notifications.clear": "Lìmpia notìficas", "notifications.clear_confirmation": "Seguru chi boles isboidare in manera permanente totu is notìficas tuas?", "notifications.column_settings.alert": "Notìficas de iscrivania", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Publicatziones noas:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Totus", "notifications.filter.boosts": "Cumpartziduras", "notifications.filter.favourites": "Preferidos", diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json index 40939f1b2..c90c785fb 100644 --- a/app/javascript/mastodon/locales/si.json +++ b/app/javascript/mastodon/locales/si.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "දැනුම්දීම් හිස්කරන්න", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "සියල්ල", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "ප්රියතමයන්", diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json index 34c3da043..f0833ff70 100644 --- a/app/javascript/mastodon/locales/sk.json +++ b/app/javascript/mastodon/locales/sk.json @@ -308,6 +308,7 @@ "notification.poll": "Anketa v ktorej si hlasoval/a sa skončila", "notification.reblog": "{name} zdieľal/a tvoj príspevok", "notification.status": "{name} práve uverejnil/a", + "notification.update": "{name} edited a post", "notifications.clear": "Vyčisti oboznámenia", "notifications.clear_confirmation": "Naozaj chceš nenávratne prečistiť všetky tvoje oboznámenia?", "notifications.column_settings.alert": "Oboznámenia na ploche", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Nové príspevky:", "notifications.column_settings.unread_notifications.category": "Neprečítané oboznámenia", "notifications.column_settings.unread_notifications.highlight": "Zdôrazni neprečítané oboznámenia", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Všetky", "notifications.filter.boosts": "Vyzdvihnutia", "notifications.filter.favourites": "Obľúbené", diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json index 212e9256c..f69d986fb 100644 --- a/app/javascript/mastodon/locales/sl.json +++ b/app/javascript/mastodon/locales/sl.json @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Spremenite anketo, da omogočite eno izbiro", "compose_form.publish": "Tutni", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Shrani spremembe", "compose_form.sensitive.hide": "Označi medij kot občutljiv", "compose_form.sensitive.marked": "Medij je označen kot občutljiv", "compose_form.sensitive.unmarked": "Medij ni označen kot občutljiv", @@ -308,6 +308,7 @@ "notification.poll": "Glasovanje, v katerem ste sodelovali, se je končalo", "notification.reblog": "{name} je spodbudil/a vaš status", "notification.status": "{name} je pravkar objavil/a", + "notification.update": "{name} edited a post", "notifications.clear": "Počisti obvestila", "notifications.clear_confirmation": "Ali ste prepričani, da želite trajno izbrisati vsa vaša obvestila?", "notifications.column_settings.alert": "Namizna obvestila", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Neprebrana obvestila", "notifications.column_settings.unread_notifications.highlight": "Poudari neprebrana obvestila", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Vse", "notifications.filter.boosts": "Spodbude", "notifications.filter.favourites": "Priljubljeni", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Nalaganje…", "regeneration_indicator.sublabel": "Vaš domači vir se pripravlja!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {pred # dnem} two {pred # dnevoma} few {pred # dnevi} other {pred # dnevi}}", + "relative_time.full.hours": "{number, plural, one {pred # uro} two {pred # urama} few {pred # urami} other {pred # urami}}", + "relative_time.full.just_now": "pravkar", + "relative_time.full.minutes": "{number, plural, one {pred # minuto} two {pred # minutama} few {pred # minutami} other {pred # minutami}}", + "relative_time.full.seconds": "{number, plural, one {pred # sekundo} two {pred # sekundama} few {pred # sekundami} other {pred # sekundami}}", "relative_time.hours": "{number}u", "relative_time.just_now": "zdaj", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "danes", "reply_indicator.cancel": "Prekliči", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "Drugo", + "report.categories.spam": "Neželeno", + "report.categories.violation": "Vsebina krši eno ali več pravil strežnika", "report.forward": "Posreduj do {target}", "report.forward_hint": "Račun je iz drugega strežnika. Pošljem anonimno kopijo poročila tudi na drugi strežnik?", "report.hint": "Poročilo bo poslano moderatorjem vašega vozlišča. Spodaj lahko navedete, zakaj prijavljate ta račun:", @@ -407,14 +409,14 @@ "status.delete": "Izbriši", "status.detailed_status": "Podroben pogled pogovora", "status.direct": "Neposredno sporočilo @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Uredi", + "status.edited": "Urejeno {date}", + "status.edited_x_times": "Urejeno {count, plural, one {#-krat} two {#-krat} few {#-krat} other {#-krat}}", "status.embed": "Vgradi", "status.favourite": "Priljubljen", "status.filtered": "Filtrirano", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name}: ustvarjeno {date}", + "status.history.edited": "{name}: urejeno {date}", "status.load_more": "Naloži več", "status.media_hidden": "Mediji so skriti", "status.mention": "Omeni @{name}", diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json index 2a9a12e17..fb6bbac75 100644 --- a/app/javascript/mastodon/locales/sq.json +++ b/app/javascript/mastodon/locales/sq.json @@ -47,8 +47,8 @@ "account.unmute": "Ktheji zërin @{name}", "account.unmute_notifications": "Hiqua ndalimin e shfaqjes njoftimeve nga @{name}", "account_note.placeholder": "Klikoni për të shtuar shënim", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Shkallë mbajtjeje përdoruesi, në ditë, pas regjistrimit", + "admin.dashboard.monthly_retention": "Shkallë mbajtjeje përdoruesi, në muaj, pas regjistrimit", "admin.dashboard.retention.average": "Mesatare", "admin.dashboard.retention.cohort": "Muaj regjistrimi", "admin.dashboard.retention.cohort_size": "Përdorues të rinj", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Ndrysho votimin për të lejuar vetëm një zgjedhje", "compose_form.publish": "Mesazh", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Ruaji ndryshimet", "compose_form.sensitive.hide": "{count, plural, one {Vëri shenjë medias si rezervat} other {Vëru shenjë mediave si rezervat}}", "compose_form.sensitive.marked": "{count, plural, one {Medias i është vënë shenjë rezervat} other {Mediave u është vënë shenjë si rezervat}}", "compose_form.sensitive.unmarked": "{count, plural, one {Media s’ka shenjë si rezervat} other {Mediat s’kanë shenja si rezervat}}", @@ -308,6 +308,7 @@ "notification.poll": "Ka përfunduar një pyetësor ku keni votuar", "notification.reblog": "{name} përforcoi mesazhin tuaj", "notification.status": "{name} sapo postoi", + "notification.update": "{name} përpunoi një postim", "notifications.clear": "Spastroji njoftimet", "notifications.clear_confirmation": "Jeni i sigurt se doni të spastrohen përgjithmonë krejt njoftimet tuaja?", "notifications.column_settings.alert": "Njoftime desktopi", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Mesazhe të rinj:", "notifications.column_settings.unread_notifications.category": "Njoftime të palexuara", "notifications.column_settings.unread_notifications.highlight": "Theksoji njoftimet e palexuara", + "notifications.column_settings.update": "Përpunime:", "notifications.filter.all": "Krejt", "notifications.filter.boosts": "Përforcime", "notifications.filter.favourites": "Të parapëlqyer", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Po ngarkohet…", "regeneration_indicator.sublabel": "Prurja juaj vetjake po përgatitet!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# ditë} other {# ditë}} më parë", + "relative_time.full.hours": "{number, plural, one {# orë} other {# orë}} më parë", + "relative_time.full.just_now": "mu tani", + "relative_time.full.minutes": "{number, plural, one {# minutë} other {# minuta}} më parë", + "relative_time.full.seconds": "{number, plural, one {# sekondë} other {# sekonda}} më parë", "relative_time.hours": "{number}o", "relative_time.just_now": "tani", "relative_time.minutes": "{number}m", "relative_time.seconds": "{number}s", "relative_time.today": "sot", "reply_indicator.cancel": "Anuloje", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "Tjetër", + "report.categories.spam": "I padëshiruar", + "report.categories.violation": "Lënda shkel një ose disa rregulla shërbyesi", "report.forward": "Përcillja {target}", "report.forward_hint": "Llogaria është nga një shërbyes tjetër. Të dërgohet edhe një kopje e anonimizuar e raportimit?", "report.hint": "Raportimi do t’u dërgohet moderatorëve të shërbyesit tuaj. Më poshtë mund të jepni një shpjegim se pse po e raportoni këtë llogari:", @@ -407,14 +409,14 @@ "status.delete": "Fshije", "status.detailed_status": "Pamje e hollësishme bisede", "status.direct": "Mesazh i drejtpërdrejtë për @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Përpunojeni", + "status.edited": "Përpunuar më {date}", + "status.edited_x_times": "Përpunuar {count, plural, one {{count} herë} other {{count} herë}}", "status.embed": "Trupëzim", "status.favourite": "I parapëlqyer", "status.filtered": "I filtruar", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} u krijua më {date}", + "status.history.edited": "{name} u përpunua më {date}", "status.load_more": "Ngarko më tepër", "status.media_hidden": "Me media të fshehur", "status.mention": "Përmendni @{name}", diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json index c12cad908..37fbd7666 100644 --- a/app/javascript/mastodon/locales/sr-Latn.json +++ b/app/javascript/mastodon/locales/sr-Latn.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} je podržao(la) Vaš status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Očisti obaveštenja", "notifications.clear_confirmation": "Da li ste sigurno da trajno želite da očistite Vaša obaveštenja?", "notifications.column_settings.alert": "Obaveštenja na radnoj površini", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json index fb94b0098..429d4c697 100644 --- a/app/javascript/mastodon/locales/sr.json +++ b/app/javascript/mastodon/locales/sr.json @@ -308,6 +308,7 @@ "notification.poll": "Завршена је анкета у којој сте гласали", "notification.reblog": "{name} је подржао/ла Ваш статус", "notification.status": "{name} управо објавио", + "notification.update": "{name} edited a post", "notifications.clear": "Очисти обавештења", "notifications.clear_confirmation": "Да ли сте сигурно да трајно желите да очистите Ваша обавештења?", "notifications.column_settings.alert": "Обавештења на радној површини", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Нови тутови:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Све", "notifications.filter.boosts": "Подршки", "notifications.filter.favourites": "Омиљене", diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json index 47d70fb54..ac3179df1 100644 --- a/app/javascript/mastodon/locales/sv.json +++ b/app/javascript/mastodon/locales/sv.json @@ -47,8 +47,8 @@ "account.unmute": "Sluta tysta @{name}", "account.unmute_notifications": "Återaktivera aviseringar från @{name}", "account_note.placeholder": "Klicka för att lägga till anteckning", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Användarlojalitet per dag efter registrering", + "admin.dashboard.monthly_retention": "Användarlojalitet per månad efter registrering", "admin.dashboard.retention.average": "Genomsnittlig", "admin.dashboard.retention.cohort": "Registreringsmånad", "admin.dashboard.retention.cohort_size": "Nya användare", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Ändra enkät för att tillåta ett enda val", "compose_form.publish": "Tut", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Spara ändringar", "compose_form.sensitive.hide": "Markera media som känsligt", "compose_form.sensitive.marked": "Media har markerats som känsligt", "compose_form.sensitive.unmarked": "Media är inte markerat som känsligt", @@ -308,6 +308,7 @@ "notification.poll": "En omröstning du röstat i har avslutats", "notification.reblog": "{name} knuffade din status", "notification.status": "{name} skrev just", + "notification.update": "{name} redigerade ett inlägg", "notifications.clear": "Rensa aviseringar", "notifications.clear_confirmation": "Är du säker på att du vill rensa alla dina aviseringar permanent?", "notifications.column_settings.alert": "Skrivbordsaviseringar", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Nya tutor:", "notifications.column_settings.unread_notifications.category": "O-lästa aviseringar", "notifications.column_settings.unread_notifications.highlight": "Markera o-lästa aviseringar", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Alla", "notifications.filter.boosts": "Knuffar", "notifications.filter.favourites": "Favoriter", @@ -365,19 +367,19 @@ "regeneration_indicator.label": "Laddar…", "regeneration_indicator.sublabel": "Ditt hemmaflöde förbereds!", "relative_time.days": "{number}d", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", + "relative_time.full.days": "{number, plural, one {# dag} other {# dagar}} sedan", + "relative_time.full.hours": "{number, plural, one {# timme} other {# timmar}} sedan", "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.minutes": "{number, plural, one {# minut} other {# minuter}} sedan", + "relative_time.full.seconds": "{number, plural, one {# sekund} other {# sekunder}} sedan", "relative_time.hours": "{number}tim", "relative_time.just_now": "nu", "relative_time.minutes": "{number}min", "relative_time.seconds": "{number}sek", "relative_time.today": "idag", "reply_indicator.cancel": "Ångra", - "report.categories.other": "Other", - "report.categories.spam": "Spam", + "report.categories.other": "Övrigt", + "report.categories.spam": "Skräppost", "report.categories.violation": "Content violates one or more server rules", "report.forward": "Vidarebefordra till {target}", "report.forward_hint": "Kontot är från en annan server. Skicka även en anonymiserad kopia av anmälan dit?", @@ -407,9 +409,9 @@ "status.delete": "Radera", "status.detailed_status": "Detaljerad samtalsvy", "status.direct": "Direktmeddela @{name}", - "status.edit": "Edit", + "status.edit": "Redigera", "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edited_x_times": "Redigerad {count, plural, one {{count} gång} other {{count} gånger}}", "status.embed": "Bädda in", "status.favourite": "Favorit", "status.filtered": "Filtrerat", diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json index 2675da68c..5456eb88e 100644 --- a/app/javascript/mastodon/locales/szl.json +++ b/app/javascript/mastodon/locales/szl.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json index 2e329f270..d624df36a 100644 --- a/app/javascript/mastodon/locales/ta.json +++ b/app/javascript/mastodon/locales/ta.json @@ -308,6 +308,7 @@ "notification.poll": "நீங்கள் வாக்களித்த வாக்கெடுப்பு முடிவடைந்தது", "notification.reblog": "{name} உங்கள் நிலை அதிகரித்தது", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "அறிவிப்புகளை அழிக்கவும்", "notifications.clear_confirmation": "உங்கள் எல்லா அறிவிப்புகளையும் நிரந்தரமாக அழிக்க விரும்புகிறீர்களா?", "notifications.column_settings.alert": "டெஸ்க்டாப் அறிவிப்புகள்", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "எல்லா", "notifications.filter.boosts": "மதிப்பை உயர்த்து", "notifications.filter.favourites": "விருப்பத்துக்குகந்த", diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json index 6ef519315..5fe5cfdea 100644 --- a/app/javascript/mastodon/locales/tai.json +++ b/app/javascript/mastodon/locales/tai.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json index b84ee23ec..2901689d1 100644 --- a/app/javascript/mastodon/locales/te.json +++ b/app/javascript/mastodon/locales/te.json @@ -308,6 +308,7 @@ "notification.poll": "మీరు పాల్గొనిన ఎన్సిక ముగిసినది", "notification.reblog": "{name} మీ స్టేటస్ ను బూస్ట్ చేసారు", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "ప్రకటనలను తుడిచివేయు", "notifications.clear_confirmation": "మీరు మీ అన్ని నోటిఫికేషన్లను శాశ్వతంగా తొలగించాలనుకుంటున్నారా?", "notifications.column_settings.alert": "డెస్క్టాప్ నోటిఫికేషన్లు", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "అన్నీ", "notifications.filter.boosts": "బూస్ట్లు", "notifications.filter.favourites": "ఇష్టాలు", diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json index 27bcbc4bb..bef3af46f 100644 --- a/app/javascript/mastodon/locales/th.json +++ b/app/javascript/mastodon/locales/th.json @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "เปลี่ยนการสำรวจความคิดเห็นเป็นอนุญาตตัวเลือกเดี่ยว", "compose_form.publish": "โพสต์", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "บันทึกการเปลี่ยนแปลง", "compose_form.sensitive.hide": "{count, plural, other {ทำเครื่องหมายสื่อว่าละเอียดอ่อน}}", "compose_form.sensitive.marked": "{count, plural, other {มีการทำเครื่องหมายสื่อว่าละเอียดอ่อน}}", "compose_form.sensitive.unmarked": "{count, plural, other {ไม่มีการทำเครื่องหมายสื่อว่าละเอียดอ่อน}}", @@ -132,7 +132,7 @@ "confirmations.redraft.confirm": "ลบแล้วร่างใหม่", "confirmations.redraft.message": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้แล้วร่างโพสต์ใหม่? รายการโปรดและการดันจะหายไป และการตอบกลับโพสต์ดั้งเดิมจะไม่มีความเกี่ยวพัน", "confirmations.reply.confirm": "ตอบกลับ", - "confirmations.reply.message": "การตอบกลับตอนนี้จะเขียนทับข้อความที่คุณกำลังเขียน คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?", + "confirmations.reply.message": "การตอบกลับในตอนนี้จะเขียนทับข้อความที่คุณกำลังเขียน คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?", "confirmations.unfollow.confirm": "เลิกติดตาม", "confirmations.unfollow.message": "คุณแน่ใจหรือไม่ว่าต้องการเลิกติดตาม {name}?", "conversation.delete": "ลบการสนทนา", @@ -308,6 +308,7 @@ "notification.poll": "การสำรวจความคิดเห็นที่คุณได้ลงคะแนนได้สิ้นสุดแล้ว", "notification.reblog": "{name} ได้ดันโพสต์ของคุณ", "notification.status": "{name} เพิ่งโพสต์", + "notification.update": "{name} ได้แก้ไขโพสต์", "notifications.clear": "ล้างการแจ้งเตือน", "notifications.clear_confirmation": "คุณแน่ใจหรือไม่ว่าต้องการล้างการแจ้งเตือนทั้งหมดของคุณอย่างถาวร?", "notifications.column_settings.alert": "การแจ้งเตือนบนเดสก์ท็อป", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "โพสต์ใหม่:", "notifications.column_settings.unread_notifications.category": "การแจ้งเตือนที่ยังไม่ได้อ่าน", "notifications.column_settings.unread_notifications.highlight": "เน้นการแจ้งเตือนที่ยังไม่ได้อ่าน", + "notifications.column_settings.update": "การแก้ไข:", "notifications.filter.all": "ทั้งหมด", "notifications.filter.boosts": "การดัน", "notifications.filter.favourites": "รายการโปรด", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "กำลังโหลด…", "regeneration_indicator.sublabel": "กำลังเตรียมฟีดหน้าแรกของคุณ!", "relative_time.days": "{number} วัน", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, other {# วัน}}ที่แล้ว", + "relative_time.full.hours": "{number, plural, other {# ชั่วโมง}}ที่แล้ว", + "relative_time.full.just_now": "เมื่อกี้นี้", + "relative_time.full.minutes": "{number, plural, other {# นาที}}ที่แล้ว", + "relative_time.full.seconds": "{number, plural, other {# วินาที}}ที่แล้ว", "relative_time.hours": "{number} ชั่วโมง", "relative_time.just_now": "ตอนนี้", "relative_time.minutes": "{number} นาที", "relative_time.seconds": "{number} วินาที", "relative_time.today": "วันนี้", "reply_indicator.cancel": "ยกเลิก", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "อื่น ๆ", + "report.categories.spam": "สแปม", + "report.categories.violation": "เนื้อหาละเมิดหนึ่งกฎของเซิร์ฟเวอร์หรือมากกว่า", "report.forward": "ส่งต่อไปยัง {target}", "report.forward_hint": "บัญชีมาจากเซิร์ฟเวอร์อื่น ส่งสำเนาของรายงานที่ไม่ระบุตัวตนไปที่นั่นด้วย?", "report.hint": "จะส่งรายงานไปยังผู้ควบคุมเซิร์ฟเวอร์ของคุณ คุณสามารถให้คำอธิบายเหตุผลที่คุณรายงานบัญชีนี้ได้ด้านล่าง:", @@ -407,14 +409,14 @@ "status.delete": "ลบ", "status.detailed_status": "มุมมองการสนทนาโดยละเอียด", "status.direct": "ส่งข้อความโดยตรงถึง @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "แก้ไข", + "status.edited": "แก้ไขเมื่อ {date}", + "status.edited_x_times": "แก้ไข {count, plural, other {{count} ครั้ง}}", "status.embed": "ฝัง", "status.favourite": "ชื่นชอบ", "status.filtered": "กรองอยู่", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} ได้สร้างเมื่อ {date}", + "status.history.edited": "{name} ได้แก้ไขเมื่อ {date}", "status.load_more": "โหลดเพิ่มเติม", "status.media_hidden": "ซ่อนสื่ออยู่", "status.mention": "กล่าวถึง @{name}", diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json index a8c602caa..3d67b62e9 100644 --- a/app/javascript/mastodon/locales/tr.json +++ b/app/javascript/mastodon/locales/tr.json @@ -47,8 +47,8 @@ "account.unmute": "@{name} adlı kişinin sesini aç", "account.unmute_notifications": "@{name} adlı kişinin bildirimlerini aç", "account_note.placeholder": "Not eklemek için tıklayın", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Kayıttan sonra günlük kullanıcı saklama oranı", + "admin.dashboard.monthly_retention": "Kayıttan sonra aylık kullanıcı saklama oranı", "admin.dashboard.retention.average": "Ortalama", "admin.dashboard.retention.cohort": "Kayıt ayı", "admin.dashboard.retention.cohort_size": "Yeni kullanıcılar", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Tek bir seçeneğe izin vermek için anketi değiştir", "compose_form.publish": "Tootla", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Değişiklikleri kaydet", "compose_form.sensitive.hide": "{count, plural, one {Medyayı hassas olarak işaretle} other {Medyayı hassas olarak işaretle}}", "compose_form.sensitive.marked": "{count, plural, one {Medya hassas olarak işaretlendi} other {Medya hassas olarak işaretlendi}}", "compose_form.sensitive.unmarked": "{count, plural, one {Medya hassas olarak işaretlenmemiş} other {Medya hassas olarak işaretlenmemiş}}", @@ -308,6 +308,7 @@ "notification.poll": "Oy verdiğiniz bir anket sona erdi", "notification.reblog": "{name} gönderini teşvik etti", "notification.status": "{name} az önce gönderdi", + "notification.update": "{name} bir gönderiyi düzenledi", "notifications.clear": "Bildirimleri temizle", "notifications.clear_confirmation": "Tüm bildirimlerinizi kalıcı olarak temizlemek ister misiniz?", "notifications.column_settings.alert": "Masaüstü bildirimleri", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Yeni gönderiler:", "notifications.column_settings.unread_notifications.category": "Okunmamış bildirimler", "notifications.column_settings.unread_notifications.highlight": "Okunmamış bildirimleri öne çıkar", + "notifications.column_settings.update": "Düzenlemeler:", "notifications.filter.all": "Tümü", "notifications.filter.boosts": "Boostlar", "notifications.filter.favourites": "Beğeniler", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Yükleniyor…", "regeneration_indicator.sublabel": "Ana akışın hazırlanıyor!", "relative_time.days": "{number}g", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# gün} other {# gün}} önce", + "relative_time.full.hours": "{number, plural, one {# saat} other {# saat}} önce", + "relative_time.full.just_now": "şimdi", + "relative_time.full.minutes": "{number, plural, one {# dakika} other {# dakika}} önce", + "relative_time.full.seconds": "{number, plural, one {# saniye} other {# saniye}} önce", "relative_time.hours": "{number}sa", "relative_time.just_now": "şimdi", "relative_time.minutes": "{number}dk", "relative_time.seconds": "{number}sn", "relative_time.today": "bugün", "reply_indicator.cancel": "İptal", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "Diğer", + "report.categories.spam": "İstenmeyen", + "report.categories.violation": "İçerik bir veya daha fazla sunucu kuralını ihlal ediyor", "report.forward": "{target} ilet", "report.forward_hint": "Hesap başka bir sunucudan. Raporun anonim bir kopyası da oraya gönderilsin mi?", "report.hint": "Bu rapor sunucu moderatörlerine gönderilecek. Bu hesabı neden bildirdiğiniz hakkında bilgi verebirsiniz:", @@ -407,14 +409,14 @@ "status.delete": "Sil", "status.detailed_status": "Ayrıntılı sohbet görünümü", "status.direct": "@{name} adlı kişiye direkt mesaj", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Düzenle", + "status.edited": "{date} tarihinde düzenlenmiş", + "status.edited_x_times": "{count, plural, one {{count} kez} other {{count} kez}} düzenlendi", "status.embed": "Gömülü", "status.favourite": "Beğen", "status.filtered": "Filtrelenmiş", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} oluşturdu {date}", + "status.history.edited": "{name} düzenledi {date}", "status.load_more": "Daha fazlasını yükle", "status.media_hidden": "Medya gizli", "status.mention": "@{name} kişisinden bahset", diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json index e66a7d4e1..464a65370 100644 --- a/app/javascript/mastodon/locales/tt.json +++ b/app/javascript/mastodon/locales/tt.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "Бөтенесе", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json index 2675da68c..5456eb88e 100644 --- a/app/javascript/mastodon/locales/ug.json +++ b/app/javascript/mastodon/locales/ug.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "Clear notifications", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json index 5adbd832b..4414d6741 100644 --- a/app/javascript/mastodon/locales/uk.json +++ b/app/javascript/mastodon/locales/uk.json @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Перемкнути у режим вибору однієї відповіді", "compose_form.publish": "Дмухнути", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Зберегти зміни", "compose_form.sensitive.hide": "{count, plural, one {Позначити медіа делікатним} other {Позначити медіа делікатними}}", "compose_form.sensitive.marked": "{count, plural, one {Медіа позначене делікатним} other {Медіа позначені делікатними}}", "compose_form.sensitive.unmarked": "{count, plural, one {Медіа не позначене делікатним} other {Медіа не позначені делікатними}}", @@ -308,6 +308,7 @@ "notification.poll": "Опитування, у якому ви голосували, закінчилося", "notification.reblog": "{name} передмухнув(-ла) Ваш допис", "notification.status": "{name} щойно дописує", + "notification.update": "{name} змінює допис", "notifications.clear": "Очистити сповіщення", "notifications.clear_confirmation": "Ви впевнені, що хочете назавжди видалити всі сповіщеня?", "notifications.column_settings.alert": "Сповіщення на комп'ютері", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Нові дмухи:", "notifications.column_settings.unread_notifications.category": "Непрочитані сповіщення", "notifications.column_settings.unread_notifications.highlight": "Виділити непрочитані сповіщення", + "notifications.column_settings.update": "Зміни:", "notifications.filter.all": "Усі", "notifications.filter.boosts": "Передмухи", "notifications.filter.favourites": "Улюблені", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Завантаження…", "regeneration_indicator.sublabel": "Ваша домашня стрічка готується!", "relative_time.days": "{number}д", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# день} few {# дні} other {# днів}} тому", + "relative_time.full.hours": "{number, plural, one {# година} few {# години} other {# годин}} тому", + "relative_time.full.just_now": "щойно", + "relative_time.full.minutes": "{number, plural, one {# хвилина} few {# хвилини} other {# хвилин}} тому", + "relative_time.full.seconds": "{number, plural, one {# секунда} few {# секунди} other {# секунд}} тому", "relative_time.hours": "{number}г", "relative_time.just_now": "щойно", "relative_time.minutes": "{number}х", "relative_time.seconds": "{number}с", "relative_time.today": "сьогодні", "reply_indicator.cancel": "Відмінити", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "Інше", + "report.categories.spam": "Спам", + "report.categories.violation": "Контент порушує одне або кілька правил сервера", "report.forward": "Надіслати до {target}", "report.forward_hint": "Це акаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?", "report.hint": "Скаргу буде відправлено модераторам Вашого сайту. Ви можете надати їм пояснення, чому ви скаржитесь на акаунт нижче:", @@ -407,14 +409,14 @@ "status.delete": "Видалити", "status.detailed_status": "Детальний вигляд бесіди", "status.direct": "Пряме повідомлення до @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Редагувати", + "status.edited": "Відредаговано {date}", + "status.edited_x_times": "Відредаговано {count, plural, one {{count} раз} few {{count} рази} many {{counter} разів} other {{counter} разів}}", "status.embed": "Вбудувати", "status.favourite": "Подобається", "status.filtered": "Відфільтровано", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} створює {date}", + "status.history.edited": "{name} змінює {date}", "status.load_more": "Завантажити більше", "status.media_hidden": "Медіа приховано", "status.mention": "Згадати @{name}", diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json index e029f074c..75d99bf4e 100644 --- a/app/javascript/mastodon/locales/ur.json +++ b/app/javascript/mastodon/locales/ur.json @@ -308,6 +308,7 @@ "notification.poll": "آپ کا ووٹ دیا گیا ایک پول ختم ہو گیا ہے", "notification.reblog": "{name} boosted your status", "notification.status": "{name} نے ابھی ابھی پوسٹ کیا", + "notification.update": "{name} edited a post", "notifications.clear": "اطلاعات ہٹائیں", "notifications.clear_confirmation": "کیا آپ واقعی اپنی تمام اطلاعات کو صاف کرنا چاہتے ہیں؟", "notifications.column_settings.alert": "ڈیسک ٹاپ اطلاعات", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "All", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json index f5620638a..588721073 100644 --- a/app/javascript/mastodon/locales/vi.json +++ b/app/javascript/mastodon/locales/vi.json @@ -47,8 +47,8 @@ "account.unmute": "Bỏ ẩn @{name}", "account.unmute_notifications": "Mở lại thông báo từ @{name}", "account_note.placeholder": "Nhấn để thêm", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "Tỉ lệ người dùng sau đăng ký ở lại theo ngày", + "admin.dashboard.monthly_retention": "Tỉ lệ người dùng sau đăng ký ở lại theo tháng", "admin.dashboard.retention.average": "Trung bình", "admin.dashboard.retention.cohort": "Đăng ký tháng", "admin.dashboard.retention.cohort_size": "Người dùng mới", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "Chỉ cho phép chọn duy nhất một lựa chọn", "compose_form.publish": "Đăng tút", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "Lưu thay đổi", "compose_form.sensitive.hide": "{count, plural, other {Đánh dấu nội dung nhạy cảm}}", "compose_form.sensitive.marked": "{count, plural, other {Nội dung này nhạy cảm}}", "compose_form.sensitive.unmarked": "{count, plural, other {Nội dung này bình thường}}", @@ -308,6 +308,7 @@ "notification.poll": "Cuộc bình chọn đã kết thúc", "notification.reblog": "{name} chia sẻ tút của bạn", "notification.status": "{name} vừa đăng", + "notification.update": "{name} đã viết lại một tút", "notifications.clear": "Xóa hết thông báo", "notifications.clear_confirmation": "Bạn thật sự muốn xóa vĩnh viễn tất cả thông báo của mình?", "notifications.column_settings.alert": "Thông báo trên máy tính", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "Tút mới:", "notifications.column_settings.unread_notifications.category": "Thông báo chưa đọc", "notifications.column_settings.unread_notifications.highlight": "Nổi bật thông báo chưa đọc", + "notifications.column_settings.update": "Lượt sửa:", "notifications.filter.all": "Toàn bộ", "notifications.filter.boosts": "Chia sẻ", "notifications.filter.favourites": "Thích", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "Đang tải…", "regeneration_indicator.sublabel": "Bảng tin của bạn đang được cập nhật!", "relative_time.days": "{number} ngày", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, other {# ngày}} trước", + "relative_time.full.hours": "{number, plural, other {# giờ}} trước", + "relative_time.full.just_now": "vừa xong", + "relative_time.full.minutes": "{number, plural, other {# phút}} trước", + "relative_time.full.seconds": "{number, plural, other {# giây}} trước", "relative_time.hours": "{number} giờ", "relative_time.just_now": "vừa xong", "relative_time.minutes": "{number} phút", "relative_time.seconds": "{number}s", "relative_time.today": "hôm nay", "reply_indicator.cancel": "Hủy bỏ", - "report.categories.other": "Other", + "report.categories.other": "Khác", "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.violation": "Vi phạm quy tắc máy chủ", "report.forward": "Chuyển đến {target}", "report.forward_hint": "Người này thuộc máy chủ khác. Gửi một báo cáo ẩn danh tới máy chủ đó?", "report.hint": "Hãy cho quản trị viên biết lý do vì sao bạn báo cáo người này:", @@ -407,14 +409,14 @@ "status.delete": "Xóa", "status.detailed_status": "Xem chi tiết thêm", "status.direct": "Nhắn tin @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "Sửa", + "status.edited": "Đã sửa {date}", + "status.edited_x_times": "Đã sửa {count, plural, other {{count} lần}}", "status.embed": "Nhúng", "status.favourite": "Thích", "status.filtered": "Bộ lọc", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} tạo lúc {date}", + "status.history.edited": "{name} sửa lúc {date}", "status.load_more": "Xem thêm", "status.media_hidden": "Đã ẩn", "status.mention": "Nhắc đến @{name}", diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json index bc9b8bc83..f34772abe 100644 --- a/app/javascript/mastodon/locales/zgh.json +++ b/app/javascript/mastodon/locales/zgh.json @@ -308,6 +308,7 @@ "notification.poll": "A poll you have voted in has ended", "notification.reblog": "{name} boosted your status", "notification.status": "{name} just posted", + "notification.update": "{name} edited a post", "notifications.clear": "ⵙⴼⴹ ⵜⵉⵏⵖⵎⵉⵙⵉⵏ", "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?", "notifications.column_settings.alert": "Desktop notifications", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "New toots:", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "ⴰⴽⴽⵯ", "notifications.filter.boosts": "Boosts", "notifications.filter.favourites": "Favourites", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index cb971126e..56dca56a6 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -47,8 +47,8 @@ "account.unmute": "不再隐藏 @{name}", "account.unmute_notifications": "不再隐藏来自 @{name} 的通知", "account_note.placeholder": "点击添加备注", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "注册后用户留存率(按日计算)", + "admin.dashboard.monthly_retention": "注册后用户留存率(按月计算)", "admin.dashboard.retention.average": "平均", "admin.dashboard.retention.cohort": "注册月", "admin.dashboard.retention.cohort_size": "新用户", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "将投票改为单选", "compose_form.publish": "嘟嘟", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "保存更改", "compose_form.sensitive.hide": "标记媒体为敏感内容", "compose_form.sensitive.marked": "媒体已被标记为敏感内容", "compose_form.sensitive.unmarked": "媒体未被标记为敏感内容", @@ -308,6 +308,7 @@ "notification.poll": "你参与的一个投票已经结束", "notification.reblog": "{name} 转嘟了你的嘟文", "notification.status": "{name} 刚刚发嘟", + "notification.update": "{name} 编辑了嘟文", "notifications.clear": "清空通知列表", "notifications.clear_confirmation": "你确定要永久清空通知列表吗?", "notifications.column_settings.alert": "桌面通知", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "新嘟文:", "notifications.column_settings.unread_notifications.category": "未读通知", "notifications.column_settings.unread_notifications.highlight": "高亮显示未读通知", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "全部", "notifications.filter.boosts": "转嘟", "notifications.filter.favourites": "喜欢", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "加载中……", "regeneration_indicator.sublabel": "你的主页动态正在准备中!", "relative_time.days": "{number}天", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# 天} other {# 天}}前", + "relative_time.full.hours": "{number, plural, one {# 小时} other {# 小时}}前", + "relative_time.full.just_now": "刚刚", + "relative_time.full.minutes": "{number, plural, one {# 分钟} other {# 分钟}}前", + "relative_time.full.seconds": "{number, plural, one {# 秒} other {# 秒}}前", "relative_time.hours": "{number}时", "relative_time.just_now": "刚刚", "relative_time.minutes": "{number}分", "relative_time.seconds": "{number}秒", "relative_time.today": "今天", "reply_indicator.cancel": "取消", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "其他", + "report.categories.spam": "垃圾信息", + "report.categories.violation": "内容违反一条或多条服务器规则", "report.forward": "转发举报至 {target}", "report.forward_hint": "这名用户来自另一个服务器。是否要向那个服务器发送一条匿名的举报?", "report.hint": "举报将会发送给你所在服务器的监察员。你可以在下面填写举报该用户的理由:", @@ -407,14 +409,14 @@ "status.delete": "删除", "status.detailed_status": "对话详情", "status.direct": "发送私信给 @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "编辑", + "status.edited": "编辑于 {date}", + "status.edited_x_times": "共编辑 {count, plural, one {{count} 次} other {{count} 次}}", "status.embed": "嵌入", "status.favourite": "喜欢", "status.filtered": "已过滤", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} 创建于 {date}", + "status.history.edited": "{name} 编辑于 {date}", "status.load_more": "加载更多", "status.media_hidden": "已隐藏的媒体内容", "status.mention": "提及 @{name}", diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json index bd6666b15..1f06f7fc6 100644 --- a/app/javascript/mastodon/locales/zh-HK.json +++ b/app/javascript/mastodon/locales/zh-HK.json @@ -308,6 +308,7 @@ "notification.poll": "你參與過的一個投票已經結束", "notification.reblog": "{name} 轉推你的文章", "notification.status": "{name} 剛發表了文章", + "notification.update": "{name} edited a post", "notifications.clear": "清空通知紀錄", "notifications.clear_confirmation": "你確定要清空通知紀錄嗎?", "notifications.column_settings.alert": "顯示桌面通知", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "新的文章", "notifications.column_settings.unread_notifications.category": "Unread notifications", "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications", + "notifications.column_settings.update": "Edits:", "notifications.filter.all": "全部", "notifications.filter.boosts": "轉推", "notifications.filter.favourites": "最愛", diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json index 60f4bc2f4..3f89737d4 100644 --- a/app/javascript/mastodon/locales/zh-TW.json +++ b/app/javascript/mastodon/locales/zh-TW.json @@ -47,8 +47,8 @@ "account.unmute": "取消靜音 @{name}", "account.unmute_notifications": "重新接收來自 @{name} 的通知", "account_note.placeholder": "按此添加備注", - "admin.dashboard.daily_retention": "User retention rate by day after sign-up", - "admin.dashboard.monthly_retention": "User retention rate by month after sign-up", + "admin.dashboard.daily_retention": "註冊後使用者存留率(日)", + "admin.dashboard.monthly_retention": "註冊後使用者存留率(月)", "admin.dashboard.retention.average": "平均", "admin.dashboard.retention.cohort": "註冊月份", "admin.dashboard.retention.cohort_size": "新使用者", @@ -105,7 +105,7 @@ "compose_form.poll.switch_to_single": "變更投票為允許單一選項", "compose_form.publish": "嘟出去", "compose_form.publish_loud": "{publish}!", - "compose_form.save_changes": "Save changes", + "compose_form.save_changes": "儲存變更", "compose_form.sensitive.hide": "標記媒體為敏感內容", "compose_form.sensitive.marked": "此媒體被標記為敏感內容", "compose_form.sensitive.unmarked": "此媒體未被標記為敏感內容", @@ -308,6 +308,7 @@ "notification.poll": "您曾投過的投票已經結束", "notification.reblog": "{name} 轉嘟了您的嘟文", "notification.status": "{name} 剛剛嘟文", + "notification.update": "{name} 編輯了嘟文", "notifications.clear": "清除通知", "notifications.clear_confirmation": "確定要永久清除您的通知嗎?", "notifications.column_settings.alert": "桌面通知", @@ -326,6 +327,7 @@ "notifications.column_settings.status": "新嘟文:", "notifications.column_settings.unread_notifications.category": "未讀通知", "notifications.column_settings.unread_notifications.highlight": "突顯未讀通知", + "notifications.column_settings.update": "編輯:", "notifications.filter.all": "全部", "notifications.filter.boosts": "轉嘟", "notifications.filter.favourites": "最愛", @@ -365,20 +367,20 @@ "regeneration_indicator.label": "載入中…", "regeneration_indicator.sublabel": "您的主頁時間軸正在準備中!", "relative_time.days": "{number} 天", - "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago", - "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago", - "relative_time.full.just_now": "just now", - "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago", - "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago", + "relative_time.full.days": "{number, plural, one {# 天} other {# 天}}前", + "relative_time.full.hours": "{number, plural, one {# 小時} other {# 小時}}前", + "relative_time.full.just_now": "剛剛", + "relative_time.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}前", + "relative_time.full.seconds": "{number, plural, one {# 秒} other {# 秒}}前", "relative_time.hours": "{number}小時前", "relative_time.just_now": "剛剛", "relative_time.minutes": "{number} 分前", "relative_time.seconds": "{number} 秒", "relative_time.today": "今天", "reply_indicator.cancel": "取消", - "report.categories.other": "Other", - "report.categories.spam": "Spam", - "report.categories.violation": "Content violates one or more server rules", + "report.categories.other": "其他", + "report.categories.spam": "垃圾訊息", + "report.categories.violation": "內容違反一項或多項伺服器條款", "report.forward": "轉寄到 {target}", "report.forward_hint": "這個帳戶屬於其他伺服器。要像該伺服器發送匿名的檢舉訊息嗎?", "report.hint": "這項訊息會發送到您伺服器的管理員。您可以提供檢舉這個帳戶的理由:", @@ -407,14 +409,14 @@ "status.delete": "刪除", "status.detailed_status": "詳細的對話內容", "status.direct": "發送私訊給 @{name}", - "status.edit": "Edit", - "status.edited": "Edited {date}", - "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}", + "status.edit": "編輯", + "status.edited": "編輯於 {date}", + "status.edited_x_times": "已編輯 {count, plural, one {{count} 次} other {{count} 次}}", "status.embed": "內嵌", "status.favourite": "最愛", "status.filtered": "已過濾", - "status.history.created": "{name} created {date}", - "status.history.edited": "{name} edited {date}", + "status.history.created": "{name} 於 {date} 建立", + "status.history.edited": "{name} 於 {date} 修改", "status.load_more": "載入更多", "status.media_hidden": "隱藏媒體內容", "status.mention": "提及 @{name}", diff --git a/app/javascript/mastodon/reducers/index.js b/app/javascript/mastodon/reducers/index.js index af2ef595e..0219d8a5e 100644 --- a/app/javascript/mastodon/reducers/index.js +++ b/app/javascript/mastodon/reducers/index.js @@ -17,7 +17,7 @@ import status_lists from './status_lists'; import mutes from './mutes'; import blocks from './blocks'; import boosts from './boosts'; -import reports from './reports'; +import rules from './rules'; import contexts from './contexts'; import compose from './compose'; import search from './search'; @@ -61,7 +61,7 @@ const reducers = { mutes, blocks, boosts, - reports, + rules, contexts, compose, search, diff --git a/app/javascript/mastodon/reducers/reports.js b/app/javascript/mastodon/reducers/reports.js deleted file mode 100644 index 21ae6f93f..000000000 --- a/app/javascript/mastodon/reducers/reports.js +++ /dev/null @@ -1,64 +0,0 @@ -import { - REPORT_INIT, - REPORT_SUBMIT_REQUEST, - REPORT_SUBMIT_SUCCESS, - REPORT_SUBMIT_FAIL, - REPORT_CANCEL, - REPORT_STATUS_TOGGLE, - REPORT_COMMENT_CHANGE, - REPORT_FORWARD_CHANGE, -} from '../actions/reports'; -import { Map as ImmutableMap, Set as ImmutableSet } from 'immutable'; - -const initialState = ImmutableMap({ - new: ImmutableMap({ - isSubmitting: false, - account_id: null, - status_ids: ImmutableSet(), - comment: '', - forward: false, - }), -}); - -export default function reports(state = initialState, action) { - switch(action.type) { - case REPORT_INIT: - return state.withMutations(map => { - map.setIn(['new', 'isSubmitting'], false); - map.setIn(['new', 'account_id'], action.account.get('id')); - - if (state.getIn(['new', 'account_id']) !== action.account.get('id')) { - map.setIn(['new', 'status_ids'], action.status ? ImmutableSet([action.status.getIn(['reblog', 'id'], action.status.get('id'))]) : ImmutableSet()); - map.setIn(['new', 'comment'], ''); - } else if (action.status) { - map.updateIn(['new', 'status_ids'], ImmutableSet(), set => set.add(action.status.getIn(['reblog', 'id'], action.status.get('id')))); - } - }); - case REPORT_STATUS_TOGGLE: - return state.updateIn(['new', 'status_ids'], ImmutableSet(), set => { - if (action.checked) { - return set.add(action.statusId); - } - - return set.remove(action.statusId); - }); - case REPORT_COMMENT_CHANGE: - return state.setIn(['new', 'comment'], action.comment); - case REPORT_FORWARD_CHANGE: - return state.setIn(['new', 'forward'], action.forward); - case REPORT_SUBMIT_REQUEST: - return state.setIn(['new', 'isSubmitting'], true); - case REPORT_SUBMIT_FAIL: - return state.setIn(['new', 'isSubmitting'], false); - case REPORT_CANCEL: - case REPORT_SUBMIT_SUCCESS: - return state.withMutations(map => { - map.setIn(['new', 'account_id'], null); - map.setIn(['new', 'status_ids'], ImmutableSet()); - map.setIn(['new', 'comment'], ''); - map.setIn(['new', 'isSubmitting'], false); - }); - default: - return state; - } -}; diff --git a/app/javascript/mastodon/reducers/rules.js b/app/javascript/mastodon/reducers/rules.js new file mode 100644 index 000000000..c1180b520 --- /dev/null +++ b/app/javascript/mastodon/reducers/rules.js @@ -0,0 +1,13 @@ +import { RULES_FETCH_SUCCESS } from 'mastodon/actions/rules'; +import { List as ImmutableList, fromJS } from 'immutable'; + +const initialState = ImmutableList(); + +export default function rules(state = initialState, action) { + switch (action.type) { + case RULES_FETCH_SUCCESS: + return fromJS(action.rules); + default: + return state; + } +} diff --git a/app/javascript/mastodon/reducers/settings.js b/app/javascript/mastodon/reducers/settings.js index 5146abe98..39639f3dc 100644 --- a/app/javascript/mastodon/reducers/settings.js +++ b/app/javascript/mastodon/reducers/settings.js @@ -37,6 +37,7 @@ const initialState = ImmutableMap({ poll: false, status: false, update: false, + 'admin.sign_up': false, }), quickFilter: ImmutableMap({ @@ -57,6 +58,7 @@ const initialState = ImmutableMap({ poll: true, status: true, update: true, + 'admin.sign_up': true, }), sounds: ImmutableMap({ @@ -68,6 +70,7 @@ const initialState = ImmutableMap({ poll: true, status: true, update: true, + 'admin.sign_up': true, }), }), diff --git a/app/javascript/mastodon/service_worker/web_push_locales.js b/app/javascript/mastodon/service_worker/web_push_locales.js index 807a1bcb9..7d713cd37 100644 --- a/app/javascript/mastodon/service_worker/web_push_locales.js +++ b/app/javascript/mastodon/service_worker/web_push_locales.js @@ -22,6 +22,7 @@ filenames.forEach(filename => { 'notification.poll': full['notification.poll'] || '', 'notification.status': full['notification.status'] || '', 'notification.update': full['notification.update'] || '', + 'notification.admin.sign_up': full['notification.admin.sign_up'] || '', 'status.show_more': full['status.show_more'] || '', 'status.reblog': full['status.reblog'] || '', diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js index 7ebe8b4d0..be467a8e2 100644 --- a/app/javascript/packs/public.js +++ b/app/javascript/packs/public.js @@ -151,13 +151,7 @@ function main() { }); delegate(document, '.sidebar__toggle__icon', 'click', () => { - const target = document.querySelector('.sidebar ul'); - - if (target.style.display === 'block') { - target.style.display = 'none'; - } else { - target.style.display = 'block'; - } + document.querySelector('.sidebar ul').classList.toggle('visible'); }); // Empty the honeypot fields in JS in case something like an extension diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 66ce92ce2..a1b99636c 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -322,6 +322,10 @@ $content-width: 840px; & > ul { display: none; + + &.visible { + display: block; + } } ul a, @@ -594,12 +598,16 @@ body, } .log-entry { + display: block; line-height: 20px; padding: 15px; padding-left: 15px * 2 + 40px; background: $ui-base-color; border-bottom: 1px solid darken($ui-base-color, 8%); position: relative; + text-decoration: none; + color: $darker-text-color; + font-size: 14px; &:first-child { border-top-left-radius: 4px; @@ -612,15 +620,12 @@ body, border-bottom: 0; } - &:hover { + &:hover, + &:focus, + &:active { background: lighten($ui-base-color, 4%); } - &__header { - color: $darker-text-color; - font-size: 14px; - } - &__avatar { position: absolute; left: 15px; @@ -1278,6 +1283,30 @@ a.sparkline { background: linear-gradient(to left, $ui-base-color, transparent); pointer-events: none; } + + a { + color: $secondary-text-color; + text-decoration: none; + unicode-bidi: isolate; + + &:hover { + text-decoration: underline; + + .fa { + color: lighten($dark-text-color, 7%); + } + } + + &.mention { + &:hover { + text-decoration: none; + + span { + text-decoration: underline; + } + } + } + } } &__actions { @@ -1467,3 +1496,75 @@ a.sparkline { } } } + +.strike-card { + padding: 15px; + border-radius: 4px; + background: $ui-base-color; + font-size: 15px; + line-height: 20px; + word-wrap: break-word; + font-weight: 400; + color: $primary-text-color; + + p { + margin-bottom: 20px; + unicode-bidi: plaintext; + + &:last-child { + margin-bottom: 0; + } + + strong { + font-weight: 700; + } + } + + &__rules { + list-style: disc; + padding-left: 15px; + margin-bottom: 20px; + color: $darker-text-color; + + &:last-child { + margin-bottom: 0; + } + + &__text { + color: $primary-text-color; + } + } + + &__statuses-list { + border-radius: 4px; + border: 1px solid darken($ui-base-color, 8%); + font-size: 13px; + line-height: 18px; + overflow: hidden; + + &__item { + padding: 16px; + background: lighten($ui-base-color, 2%); + border-bottom: 1px solid darken($ui-base-color, 8%); + + &:last-child { + border-bottom: 0; + } + + &__meta { + color: $darker-text-color; + } + + a { + color: inherit; + text-decoration: none; + + &:hover, + &:focus, + &:active { + text-decoration: underline; + } + } + } + } +} diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index 5304bec34..108bf68a5 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -50,16 +50,14 @@ cursor: pointer; display: inline-block; font-family: inherit; - font-size: 14px; + font-size: 17px; font-weight: 500; - height: 36px; letter-spacing: 0; - line-height: 36px; + line-height: 22px; overflow: hidden; - padding: 0 16px; + padding: 7px 18px; position: relative; text-align: center; - text-transform: uppercase; text-decoration: none; text-overflow: ellipsis; transition: all 100ms ease-in; @@ -100,17 +98,6 @@ outline: 0 !important; } - &.button-primary, - &.button-alternative, - &.button-secondary, - &.button-alternative-2 { - font-size: 16px; - line-height: 36px; - height: auto; - text-transform: none; - padding: 4px 16px; - } - &.button-alternative { color: $inverted-text-color; background: $ui-primary-color; @@ -135,7 +122,7 @@ &.button-secondary { color: $darker-text-color; background: transparent; - padding: 3px 15px; + padding: 6px 17px; border: 1px solid $ui-primary-color; &:active, @@ -1114,42 +1101,39 @@ font-size: 15px; } -.status-check-box { - border-bottom: 1px solid $ui-secondary-color; - display: flex; +.status-check-box__status { + display: block; + box-sizing: border-box; + width: 100%; + padding: 0 10px; - .status-check-box__status { - margin: 10px 0 10px 10px; - flex: 1; - overflow: hidden; + .detailed-status__display-name { + color: lighten($inverted-text-color, 16%); - .media-gallery { - max-width: 250px; + span { + display: inline; } - .status__content { - padding: 0; - white-space: normal; + &:hover strong { + text-decoration: none; } + } - .video-player, - .audio-player { - margin-top: 8px; - max-width: 250px; - } + .media-gallery, + .audio-player, + .video-player { + margin-top: 8px; + max-width: 250px; + } - .media-gallery__item-thumbnail { - cursor: default; - } + .status__content { + padding: 0; + white-space: normal; } -} -.status-check-box-toggle { - align-items: center; - display: flex; - flex: 0 0 auto; - justify-content: center; - padding: 10px; + .media-gallery__item-thumbnail { + cursor: default; + } } .status__prepend { @@ -5103,6 +5087,192 @@ a.status-card.compact:hover { max-width: 700px; } +.report-dialog-modal { + max-width: 90vw; + width: 480px; + height: 80vh; + background: lighten($ui-secondary-color, 8%); + color: $inverted-text-color; + border-radius: 8px; + overflow: hidden; + position: relative; + flex-direction: column; + display: flex; + + &__container { + box-sizing: border-box; + border-top: 1px solid $ui-secondary-color; + padding: 20px; + flex-grow: 1; + display: flex; + flex-direction: column; + min-height: 0; + overflow: auto; + } + + &__title { + font-size: 28px; + line-height: 33px; + font-weight: 700; + margin-bottom: 15px; + + @media screen and (max-height: 800px) { + font-size: 22px; + } + } + + &__subtitle { + font-size: 17px; + font-weight: 600; + line-height: 22px; + margin-bottom: 4px; + } + + &__lead { + font-size: 17px; + line-height: 22px; + color: lighten($inverted-text-color, 16%); + margin-bottom: 30px; + } + + &__actions { + margin-top: 30px; + display: flex; + + .button { + flex: 1 1 auto; + } + } + + &__statuses { + flex-grow: 1; + min-height: 0; + overflow: auto; + } + + .status__content a { + color: $highlight-text-color; + } + + .status__content, + .status__content p { + color: $inverted-text-color; + } + + .dialog-option .poll__input { + border-color: $inverted-text-color; + color: $ui-secondary-color; + display: inline-flex; + align-items: center; + justify-content: center; + + svg { + width: 8px; + height: auto; + } + + &:active, + &:focus, + &:hover { + border-color: lighten($inverted-text-color, 15%); + border-width: 4px; + } + + &.active { + border-color: $inverted-text-color; + background: $inverted-text-color; + } + } + + .poll__option.dialog-option { + padding: 15px 0; + flex: 0 0 auto; + border-bottom: 1px solid $ui-secondary-color; + + &:last-child { + border-bottom: 0; + } + + & > .poll__option__text { + font-size: 13px; + color: lighten($inverted-text-color, 16%); + + strong { + font-size: 17px; + font-weight: 500; + line-height: 22px; + color: $inverted-text-color; + display: block; + margin-bottom: 4px; + + &:last-child { + margin-bottom: 0; + } + } + } + } + + .flex-spacer { + background: transparent; + } + + &__textarea { + display: block; + box-sizing: border-box; + width: 100%; + margin: 0; + color: $inverted-text-color; + background: $simple-background-color; + padding: 10px; + font-family: inherit; + font-size: 17px; + line-height: 22px; + resize: vertical; + border: 0; + outline: 0; + border-radius: 4px; + margin: 20px 0; + + &::placeholder { + color: $dark-text-color; + } + + &:focus { + outline: 0; + } + } + + &__toggle { + display: flex; + align-items: center; + + & > span { + font-size: 17px; + font-weight: 500; + margin-left: 10px; + } + } + + .button.button-secondary { + border-color: $inverted-text-color; + color: $inverted-text-color; + flex: 0 0 auto; + + &:hover, + &:focus, + &:active { + border-color: lighten($inverted-text-color, 15%); + color: lighten($inverted-text-color, 15%); + } + } + + hr { + border: 0; + background: transparent; + margin: 15px 0; + } +} + .report-modal__container { display: flex; border-top: 1px solid $ui-secondary-color; diff --git a/app/javascript/styles/mastodon/footer.scss b/app/javascript/styles/mastodon/footer.scss index 00d290883..073ebda7e 100644 --- a/app/javascript/styles/mastodon/footer.scss +++ b/app/javascript/styles/mastodon/footer.scss @@ -90,6 +90,20 @@ .column-4 { display: none; } + + .column-2 h4 { + display: none; + } + } + } + + .legal-xs { + display: none; + text-align: center; + padding-top: 20px; + + @media screen and (max-width: $no-gap-breakpoint) { + display: block; } } @@ -105,7 +119,8 @@ } } - ul a { + ul a, + .legal-xs a { text-decoration: none; color: lighten($ui-base-color, 34%); diff --git a/app/lib/activitypub/activity/announce.rb b/app/lib/activitypub/activity/announce.rb index 1f9319290..12fad8da4 100644 --- a/app/lib/activitypub/activity/announce.rb +++ b/app/lib/activitypub/activity/announce.rb @@ -8,6 +8,7 @@ class ActivityPub::Activity::Announce < ActivityPub::Activity original_status = status_from_object return reject_payload! if original_status.nil? || !announceable?(original_status) + return if requested_through_relay? @status = Status.find_by(account: @account, reblog: original_status) diff --git a/app/lib/admin/metrics/dimension/base_dimension.rb b/app/lib/admin/metrics/dimension/base_dimension.rb index 5872c22cb..bd2e4ecec 100644 --- a/app/lib/admin/metrics/dimension/base_dimension.rb +++ b/app/lib/admin/metrics/dimension/base_dimension.rb @@ -1,23 +1,34 @@ # frozen_string_literal: true class Admin::Metrics::Dimension::BaseDimension + CACHE_TTL = 5.minutes.freeze + def self.with_params? false end + attr_reader :loaded + + alias loaded? loaded + def initialize(start_at, end_at, limit, params) @start_at = start_at&.to_datetime @end_at = end_at&.to_datetime @limit = limit&.to_i @params = params + @loaded = false end def key raise NotImplementedError end + def cache_key + ["metrics/dimension/#{key}", @start_at, @end_at, @limit, canonicalized_params].join(';') + end + def data - raise NotImplementedError + load end def self.model_name @@ -30,11 +41,28 @@ class Admin::Metrics::Dimension::BaseDimension protected + def load + unless loaded? + @values = Rails.cache.fetch(cache_key, expires_in: CACHE_TTL) { perform_query } + @loaded = true + end + + @values + end + + def perform_query + raise NotImplementedError + end + def time_period (@start_at..@end_at) end def params - raise NotImplementedError + {} + end + + def canonicalized_params + params.to_h.to_a.sort_by { |k, _v| k.to_s }.map { |k, v| "#{k}=#{v}" }.join(';') end end diff --git a/app/lib/admin/metrics/dimension/languages_dimension.rb b/app/lib/admin/metrics/dimension/languages_dimension.rb index 1cc5f4120..f1cf82cf2 100644 --- a/app/lib/admin/metrics/dimension/languages_dimension.rb +++ b/app/lib/admin/metrics/dimension/languages_dimension.rb @@ -7,7 +7,9 @@ class Admin::Metrics::Dimension::LanguagesDimension < Admin::Metrics::Dimension: 'languages' end - def data + protected + + def perform_query sql = <<-SQL.squish SELECT locale, count(*) AS value FROM users diff --git a/app/lib/admin/metrics/dimension/servers_dimension.rb b/app/lib/admin/metrics/dimension/servers_dimension.rb index 3e80b6625..91bcce655 100644 --- a/app/lib/admin/metrics/dimension/servers_dimension.rb +++ b/app/lib/admin/metrics/dimension/servers_dimension.rb @@ -5,7 +5,9 @@ class Admin::Metrics::Dimension::ServersDimension < Admin::Metrics::Dimension::B 'servers' end - def data + protected + + def perform_query sql = <<-SQL.squish SELECT accounts.domain, count(*) AS value FROM statuses diff --git a/app/lib/admin/metrics/dimension/software_versions_dimension.rb b/app/lib/admin/metrics/dimension/software_versions_dimension.rb index 34917404d..816615f99 100644 --- a/app/lib/admin/metrics/dimension/software_versions_dimension.rb +++ b/app/lib/admin/metrics/dimension/software_versions_dimension.rb @@ -7,12 +7,12 @@ class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dim 'software_versions' end - def data + protected + + def perform_query [mastodon_version, ruby_version, postgresql_version, redis_version] end - private - def mastodon_version value = Mastodon::Version.to_s diff --git a/app/lib/admin/metrics/dimension/sources_dimension.rb b/app/lib/admin/metrics/dimension/sources_dimension.rb index a9f061809..122807cdc 100644 --- a/app/lib/admin/metrics/dimension/sources_dimension.rb +++ b/app/lib/admin/metrics/dimension/sources_dimension.rb @@ -5,7 +5,9 @@ class Admin::Metrics::Dimension::SourcesDimension < Admin::Metrics::Dimension::B 'sources' end - def data + protected + + def perform_query sql = <<-SQL.squish SELECT oauth_applications.name, count(*) AS value FROM users diff --git a/app/lib/admin/metrics/dimension/space_usage_dimension.rb b/app/lib/admin/metrics/dimension/space_usage_dimension.rb index aa00a2e18..5867c5bab 100644 --- a/app/lib/admin/metrics/dimension/space_usage_dimension.rb +++ b/app/lib/admin/metrics/dimension/space_usage_dimension.rb @@ -8,12 +8,12 @@ class Admin::Metrics::Dimension::SpaceUsageDimension < Admin::Metrics::Dimension 'space_usage' end - def data + protected + + def perform_query [postgresql_size, redis_size, media_size] end - private - def postgresql_size value = ActiveRecord::Base.connection.execute('SELECT pg_database_size(current_database())').first['pg_database_size'] diff --git a/app/lib/admin/metrics/dimension/tag_languages_dimension.rb b/app/lib/admin/metrics/dimension/tag_languages_dimension.rb index afbc8cde8..e1349c229 100644 --- a/app/lib/admin/metrics/dimension/tag_languages_dimension.rb +++ b/app/lib/admin/metrics/dimension/tag_languages_dimension.rb @@ -11,7 +11,9 @@ class Admin::Metrics::Dimension::TagLanguagesDimension < Admin::Metrics::Dimensi 'tag_languages' end - def data + protected + + def perform_query sql = <<-SQL.squish SELECT COALESCE(statuses.language, 'und') AS language, count(*) AS value FROM statuses @@ -28,8 +30,6 @@ class Admin::Metrics::Dimension::TagLanguagesDimension < Admin::Metrics::Dimensi rows.map { |row| { key: row['language'], human_key: standard_locale_name(row['language']), value: row['value'].to_s } } end - private - def params @params.permit(:id) end diff --git a/app/lib/admin/metrics/dimension/tag_servers_dimension.rb b/app/lib/admin/metrics/dimension/tag_servers_dimension.rb index 12c5980d7..7ddf3378c 100644 --- a/app/lib/admin/metrics/dimension/tag_servers_dimension.rb +++ b/app/lib/admin/metrics/dimension/tag_servers_dimension.rb @@ -9,7 +9,9 @@ class Admin::Metrics::Dimension::TagServersDimension < Admin::Metrics::Dimension 'tag_servers' end - def data + protected + + def perform_query sql = <<-SQL.squish SELECT accounts.domain, count(*) AS value FROM statuses @@ -27,8 +29,6 @@ class Admin::Metrics::Dimension::TagServersDimension < Admin::Metrics::Dimension rows.map { |row| { key: row['domain'] || Rails.configuration.x.local_domain, human_key: row['domain'] || Rails.configuration.x.local_domain, value: row['value'].to_s } } end - private - def params @params.permit(:id) end diff --git a/app/lib/admin/metrics/measure/active_users_measure.rb b/app/lib/admin/metrics/measure/active_users_measure.rb index 513189780..e6f09d4bc 100644 --- a/app/lib/admin/metrics/measure/active_users_measure.rb +++ b/app/lib/admin/metrics/measure/active_users_measure.rb @@ -5,20 +5,20 @@ class Admin::Metrics::Measure::ActiveUsersMeasure < Admin::Metrics::Measure::Bas 'active_users' end - def total + protected + + def perform_total_query activity_tracker.sum(time_period.first, time_period.last) end - def previous_total + def perform_previous_total_query activity_tracker.sum(previous_time_period.first, previous_time_period.last) end - def data + def perform_data_query activity_tracker.get(time_period.first, time_period.last).map { |date, value| { date: date.to_time(:utc).iso8601, value: value.to_s } } end - protected - def activity_tracker @activity_tracker ||= ActivityTracker.new('activity:logins', :unique) end diff --git a/app/lib/admin/metrics/measure/base_measure.rb b/app/lib/admin/metrics/measure/base_measure.rb index 0107ffd9c..ed1df9c7d 100644 --- a/app/lib/admin/metrics/measure/base_measure.rb +++ b/app/lib/admin/metrics/measure/base_measure.rb @@ -1,14 +1,25 @@ # frozen_string_literal: true class Admin::Metrics::Measure::BaseMeasure + CACHE_TTL = 5.minutes.freeze + def self.with_params? false end + attr_reader :loaded + + alias loaded? loaded + def initialize(start_at, end_at, params) @start_at = start_at&.to_datetime @end_at = end_at&.to_datetime @params = params + @loaded = false + end + + def cache_key + ["metrics/measure/#{key}", @start_at, @end_at, canonicalized_params].join(';') end def key @@ -16,15 +27,15 @@ class Admin::Metrics::Measure::BaseMeasure end def total - raise NotImplementedError + load[:total] end def previous_total - raise NotImplementedError + load[:previous_total] end def data - raise NotImplementedError + load[:data] end def self.model_name @@ -37,6 +48,35 @@ class Admin::Metrics::Measure::BaseMeasure protected + def load + unless loaded? + @values = Rails.cache.fetch(cache_key, expires_in: CACHE_TTL) { perform_queries }.with_indifferent_access + @loaded = true + end + + @values + end + + def perform_queries + { + total: perform_total_query, + previous_total: perform_previous_total_query, + data: perform_data_query, + } + end + + def perform_total_query + raise NotImplementedError + end + + def perform_previous_total_query + raise NotImplementedError + end + + def perform_data_query + raise NotImplementedError + end + def time_period (@start_at..@end_at) end @@ -50,6 +90,10 @@ class Admin::Metrics::Measure::BaseMeasure end def params - raise NotImplementedError + {} + end + + def canonicalized_params + params.to_h.to_a.sort_by { |k, _v| k.to_s }.map { |k, v| "#{k}=#{v}" }.join(';') end end diff --git a/app/lib/admin/metrics/measure/interactions_measure.rb b/app/lib/admin/metrics/measure/interactions_measure.rb index b928fdb8f..7a2b7e0fa 100644 --- a/app/lib/admin/metrics/measure/interactions_measure.rb +++ b/app/lib/admin/metrics/measure/interactions_measure.rb @@ -5,20 +5,20 @@ class Admin::Metrics::Measure::InteractionsMeasure < Admin::Metrics::Measure::Ba 'interactions' end - def total + protected + + def perform_total_query activity_tracker.sum(time_period.first, time_period.last) end - def previous_total + def perform_previous_total_query activity_tracker.sum(previous_time_period.first, previous_time_period.last) end - def data + def perform_data_query activity_tracker.get(time_period.first, time_period.last).map { |date, value| { date: date.to_time(:utc).iso8601, value: value.to_s } } end - protected - def activity_tracker @activity_tracker ||= ActivityTracker.new('activity:interactions', :basic) end diff --git a/app/lib/admin/metrics/measure/new_users_measure.rb b/app/lib/admin/metrics/measure/new_users_measure.rb index b31679ad3..71191f1a2 100644 --- a/app/lib/admin/metrics/measure/new_users_measure.rb +++ b/app/lib/admin/metrics/measure/new_users_measure.rb @@ -5,15 +5,17 @@ class Admin::Metrics::Measure::NewUsersMeasure < Admin::Metrics::Measure::BaseMe 'new_users' end - def total + protected + + def perform_total_query User.where(created_at: time_period).count end - def previous_total + def perform_previous_total_query User.where(created_at: previous_time_period).count end - def data + def perform_data_query sql = <<-SQL.squish SELECT axis.*, ( WITH new_users AS ( diff --git a/app/lib/admin/metrics/measure/opened_reports_measure.rb b/app/lib/admin/metrics/measure/opened_reports_measure.rb index 9acc2c33d..4b80a0c8c 100644 --- a/app/lib/admin/metrics/measure/opened_reports_measure.rb +++ b/app/lib/admin/metrics/measure/opened_reports_measure.rb @@ -5,15 +5,17 @@ class Admin::Metrics::Measure::OpenedReportsMeasure < Admin::Metrics::Measure::B 'opened_reports' end - def total + protected + + def perform_total_query Report.where(created_at: time_period).count end - def previous_total + def perform_previous_total_query Report.where(created_at: previous_time_period).count end - def data + def perform_data_query sql = <<-SQL.squish SELECT axis.*, ( WITH new_reports AS ( diff --git a/app/lib/admin/metrics/measure/resolved_reports_measure.rb b/app/lib/admin/metrics/measure/resolved_reports_measure.rb index 00cb24f7e..4ab746c8f 100644 --- a/app/lib/admin/metrics/measure/resolved_reports_measure.rb +++ b/app/lib/admin/metrics/measure/resolved_reports_measure.rb @@ -5,15 +5,17 @@ class Admin::Metrics::Measure::ResolvedReportsMeasure < Admin::Metrics::Measure: 'resolved_reports' end - def total + protected + + def perform_total_query Report.resolved.where(action_taken_at: time_period).count end - def previous_total + def perform_previous_total_query Report.resolved.where(action_taken_at: previous_time_period).count end - def data + def perform_data_query sql = <<-SQL.squish SELECT axis.*, ( WITH resolved_reports AS ( diff --git a/app/lib/admin/metrics/measure/tag_accounts_measure.rb b/app/lib/admin/metrics/measure/tag_accounts_measure.rb index ef773081b..8f4512efe 100644 --- a/app/lib/admin/metrics/measure/tag_accounts_measure.rb +++ b/app/lib/admin/metrics/measure/tag_accounts_measure.rb @@ -9,20 +9,20 @@ class Admin::Metrics::Measure::TagAccountsMeasure < Admin::Metrics::Measure::Bas 'tag_accounts' end - def total + protected + + def perform_total_query tag.history.aggregate(time_period).accounts end - def previous_total + def perform_previous_total_query tag.history.aggregate(previous_time_period).accounts end - def data + def perform_data_query time_period.map { |date| { date: date.to_time(:utc).iso8601, value: tag.history.get(date).accounts.to_s } } end - protected - def tag @tag ||= Tag.find(params[:id]) end diff --git a/app/lib/admin/metrics/measure/tag_servers_measure.rb b/app/lib/admin/metrics/measure/tag_servers_measure.rb index cc064f63f..11f229602 100644 --- a/app/lib/admin/metrics/measure/tag_servers_measure.rb +++ b/app/lib/admin/metrics/measure/tag_servers_measure.rb @@ -9,15 +9,17 @@ class Admin::Metrics::Measure::TagServersMeasure < Admin::Metrics::Measure::Base 'tag_servers' end - def total + protected + + def perform_total_query tag.statuses.where('statuses.id BETWEEN ? AND ?', Mastodon::Snowflake.id_at(@start_at, with_random: false), Mastodon::Snowflake.id_at(@end_at, with_random: false)).joins(:account).count('distinct accounts.domain') end - def previous_total + def perform_previous_total_query tag.statuses.where('statuses.id BETWEEN ? AND ?', Mastodon::Snowflake.id_at(@start_at - length_of_period, with_random: false), Mastodon::Snowflake.id_at(@end_at - length_of_period, with_random: false)).joins(:account).count('distinct accounts.domain') end - def data + def perform_data_query sql = <<-SQL.squish SELECT axis.*, ( SELECT count(distinct accounts.domain) AS value @@ -38,8 +40,6 @@ class Admin::Metrics::Measure::TagServersMeasure < Admin::Metrics::Measure::Base rows.map { |row| { date: row['day'], value: row['value'].to_s } } end - protected - def tag @tag ||= Tag.find(params[:id]) end diff --git a/app/lib/admin/metrics/measure/tag_uses_measure.rb b/app/lib/admin/metrics/measure/tag_uses_measure.rb index b7667bc6c..bce86b89f 100644 --- a/app/lib/admin/metrics/measure/tag_uses_measure.rb +++ b/app/lib/admin/metrics/measure/tag_uses_measure.rb @@ -9,20 +9,20 @@ class Admin::Metrics::Measure::TagUsesMeasure < Admin::Metrics::Measure::BaseMea 'tag_uses' end - def total + protected + + def perform_total_query tag.history.aggregate(time_period).uses end - def previous_total + def perform_previous_total_query tag.history.aggregate(previous_time_period).uses end - def data + def perform_data_query time_period.map { |date| { date: date.to_time(:utc).iso8601, value: tag.history.get(date).uses.to_s } } end - protected - def tag @tag ||= Tag.find(params[:id]) end diff --git a/app/lib/admin/metrics/retention.rb b/app/lib/admin/metrics/retention.rb index 0179a6e28..f6135ac1e 100644 --- a/app/lib/admin/metrics/retention.rb +++ b/app/lib/admin/metrics/retention.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class Admin::Metrics::Retention + CACHE_TTL = 5.minutes.freeze + class Cohort < ActiveModelSerializers::Model attributes :period, :frequency, :data end @@ -9,13 +11,37 @@ class Admin::Metrics::Retention attributes :date, :rate, :value end + attr_reader :loaded + + alias loaded? loaded + def initialize(start_at, end_at, frequency) @start_at = start_at&.to_date @end_at = end_at&.to_date @frequency = %w(day month).include?(frequency) ? frequency : 'day' + @loaded = false + end + + def cache_key + ['metrics/retention', @start_at, @end_at, @frequency].join(';') end def cohorts + load + end + + protected + + def load + unless loaded? + @values = Rails.cache.fetch(cache_key, expires_in: CACHE_TTL) { perform_query } + @loaded = true + end + + @values + end + + def perform_query sql = <<-SQL.squish SELECT axis.*, ( WITH new_users AS ( diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb index 0713aa471..2c16689bd 100644 --- a/app/lib/feed_manager.rb +++ b/app/lib/feed_manager.rb @@ -499,7 +499,7 @@ class FeedManager return false if active_filters.empty? - combined_regex = active_filters.reduce { |memo, obj| Regexp.union(memo, obj) } + combined_regex = Regexp.union(active_filters) status = status.reblog if status.reblog? combined_text = [ @@ -549,7 +549,7 @@ class FeedManager end else # A reblog may reach earlier than the original status because of the - # delay of the worker deliverying the original status, the late addition + # delay of the worker delivering the original status, the late addition # by merging timelines, and other reasons. # If such a reblog already exists, just do not re-insert it into the feed. return false unless redis.zscore(reblog_key, status.id).nil? diff --git a/app/lib/search_query_transformer.rb b/app/lib/search_query_transformer.rb index e07ebfffe..c685d7b6f 100644 --- a/app/lib/search_query_transformer.rb +++ b/app/lib/search_query_transformer.rb @@ -2,19 +2,21 @@ class SearchQueryTransformer < Parslet::Transform class Query - attr_reader :should_clauses, :must_not_clauses, :must_clauses + attr_reader :should_clauses, :must_not_clauses, :must_clauses, :filter_clauses def initialize(clauses) grouped = clauses.chunk(&:operator).to_h @should_clauses = grouped.fetch(:should, []) @must_not_clauses = grouped.fetch(:must_not, []) @must_clauses = grouped.fetch(:must, []) + @filter_clauses = grouped.fetch(:filter, []) end def apply(search) should_clauses.each { |clause| search = search.query.should(clause_to_query(clause)) } must_clauses.each { |clause| search = search.query.must(clause_to_query(clause)) } must_not_clauses.each { |clause| search = search.query.must_not(clause_to_query(clause)) } + filter_clauses.each { |clause| search = search.filter(**clause_to_filter(clause)) } search.query.minimum_should_match(1) end @@ -30,6 +32,15 @@ class SearchQueryTransformer < Parslet::Transform raise "Unexpected clause type: #{clause}" end end + + def clause_to_filter(clause) + case clause + when PrefixClause + { term: { clause.filter => clause.term } } + else + raise "Unexpected clause type: #{clause}" + end + end end class Operator @@ -69,11 +80,33 @@ class SearchQueryTransformer < Parslet::Transform end end + class PrefixClause + attr_reader :filter, :operator, :term + + def initialize(prefix, term) + @operator = :filter + case prefix + when 'from' + @filter = :account_id + username, domain = term.split('@') + account = Account.find_remote(username, domain) + + raise "Account not found: #{term}" unless account + + @term = account.id + else + raise "Unknown prefix: #{prefix}" + end + end + end + rule(clause: subtree(:clause)) do prefix = clause[:prefix][:term].to_s if clause[:prefix] operator = clause[:operator]&.to_s - if clause[:term] + if clause[:prefix] + PrefixClause.new(prefix, clause[:term].to_s) + elsif clause[:term] TermClause.new(prefix, operator, clause[:term].to_s) elsif clause[:shortcode] TermClause.new(prefix, operator, ":#{clause[:term]}:") diff --git a/app/lib/video_metadata_extractor.rb b/app/lib/video_metadata_extractor.rb index 03e40f923..2896620cb 100644 --- a/app/lib/video_metadata_extractor.rb +++ b/app/lib/video_metadata_extractor.rb @@ -2,7 +2,7 @@ class VideoMetadataExtractor attr_reader :duration, :bitrate, :video_codec, :audio_codec, - :colorspace, :width, :height, :frame_rate + :colorspace, :width, :height, :frame_rate, :r_frame_rate def initialize(path) @path = path @@ -42,6 +42,7 @@ class VideoMetadataExtractor @width = video_stream[:width] @height = video_stream[:height] @frame_rate = video_stream[:avg_frame_rate] == '0/0' ? nil : Rational(video_stream[:avg_frame_rate]) + @r_frame_rate = video_stream[:r_frame_rate] == '0/0' ? nil : Rational(video_stream[:r_frame_rate]) end if (audio_stream = audio_streams.first) diff --git a/app/mailers/admin_mailer.rb b/app/mailers/admin_mailer.rb index b23bd1296..a9d00c000 100644 --- a/app/mailers/admin_mailer.rb +++ b/app/mailers/admin_mailer.rb @@ -15,6 +15,16 @@ class AdminMailer < ApplicationMailer end end + def new_appeal(recipient, appeal) + @appeal = appeal + @me = recipient + @instance = Rails.configuration.x.local_domain + + locale_for_account(@me) do + mail to: @me.user_email, subject: I18n.t('admin_mailer.new_appeal.subject', instance: @instance, username: @appeal.account.username) + end + end + def new_pending_account(recipient, user) @account = user.account @me = recipient diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index 5221a4892..1a823328c 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -169,7 +169,27 @@ class UserMailer < Devise::Mailer I18n.with_locale(@resource.locale || I18n.default_locale) do mail to: @resource.email, subject: I18n.t("user_mailer.warning.subject.#{@warning.action}", acct: "@#{user.account.local_username_and_domain}"), - reply_to: Setting.site_contact_email + reply_to: ENV['SMTP_REPLY_TO'] + end + end + + def appeal_approved(user, appeal) + @resource = user + @instance = Rails.configuration.x.local_domain + @appeal = appeal + + I18n.with_locale(@resource.locale || I18n.default_locale) do + mail to: @resource.email, subject: I18n.t('user_mailer.appeal_approved.subject', date: l(@appeal.created_at)) + end + end + + def appeal_rejected(user, appeal) + @resource = user + @instance = Rails.configuration.x.local_domain + @appeal = appeal + + I18n.with_locale(@resource.locale || I18n.default_locale) do + mail to: @resource.email, subject: I18n.t('user_mailer.appeal_rejected.subject', date: l(@appeal.created_at)) end end @@ -186,7 +206,7 @@ class UserMailer < Devise::Mailer I18n.with_locale(@resource.locale || I18n.default_locale) do mail to: @resource.email, subject: I18n.t('user_mailer.sign_in_token.subject'), - reply_to: Setting.site_contact_email + reply_to: ENV['SMTP_REPLY_TO'] end end end diff --git a/app/models/account.rb b/app/models/account.rb index e41fdf003..8f6663e7c 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -274,6 +274,10 @@ class Account < ApplicationRecord true end + def previous_strikes_count + strikes.where(overruled_at: nil).count + end + def keypair @keypair ||= OpenSSL::PKey::RSA.new(private_key || public_key) end diff --git a/app/models/account_filter.rb b/app/models/account_filter.rb index dcb174122..9da1522dd 100644 --- a/app/models/account_filter.rb +++ b/app/models/account_filter.rb @@ -24,6 +24,8 @@ class AccountFilter scope = Account.includes(:account_stat, user: [:ips, :invite_request]).without_instance_actor.reorder(nil) params.each do |key, value| + next if key.to_s == 'page' + scope.merge!(scope_for(key, value.to_s.strip)) if value.present? end @@ -49,7 +51,7 @@ class AccountFilter when 'email' accounts_with_users.merge(User.matches_email(value)) when 'ip' - valid_ip?(value) ? accounts_with_users.merge(User.matches_ip(value)) : Account.none + valid_ip?(value) ? accounts_with_users.merge(User.matches_ip(value).group('users.id, accounts.id')) : Account.none when 'invited_by' invited_by_scope(value) when 'order' diff --git a/app/models/account_warning.rb b/app/models/account_warning.rb index fc0d988fd..05d01942d 100644 --- a/app/models/account_warning.rb +++ b/app/models/account_warning.rb @@ -12,6 +12,7 @@ # updated_at :datetime not null # report_id :bigint(8) # status_ids :string is an Array +# overruled_at :datetime # class AccountWarning < ApplicationRecord @@ -28,12 +29,17 @@ class AccountWarning < ApplicationRecord belongs_to :target_account, class_name: 'Account', inverse_of: :strikes belongs_to :report, optional: true - has_one :appeal, dependent: :destroy + has_one :appeal, dependent: :destroy, inverse_of: :strike scope :latest, -> { order(id: :desc) } scope :custom, -> { where.not(text: '') } + scope :active, -> { where(overruled_at: nil).or(where('account_warnings.overruled_at >= ?', 30.days.ago)) } def statuses Status.with_discarded.where(id: status_ids || []) end + + def overruled? + overruled_at.present? + end end diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb index 12136223b..0f2f712a2 100644 --- a/app/models/admin/action_log_filter.rb +++ b/app/models/admin/action_log_filter.rb @@ -8,6 +8,8 @@ class Admin::ActionLogFilter ).freeze ACTION_TYPE_MAP = { + approve_appeal: { target_type: 'Appeal', action: 'approve' }.freeze, + reject_appeal: { target_type: 'Appeal', action: 'reject' }.freeze, assigned_to_self_report: { target_type: 'Report', action: 'assigned_to_self' }.freeze, change_email_user: { target_type: 'User', action: 'change_email' }.freeze, confirm_user: { target_type: 'User', action: 'confirm' }.freeze, diff --git a/app/models/admin/appeal_filter.rb b/app/models/admin/appeal_filter.rb new file mode 100644 index 000000000..b163d2e56 --- /dev/null +++ b/app/models/admin/appeal_filter.rb @@ -0,0 +1,49 @@ +# frozen_string_literal: true + +class Admin::AppealFilter + KEYS = %i( + status + ).freeze + + attr_reader :params + + def initialize(params) + @params = params + end + + def results + scope = Appeal.order(id: :desc) + + params.each do |key, value| + next if %w(page).include?(key.to_s) + + scope.merge!(scope_for(key, value.to_s.strip)) if value.present? + end + + scope + end + + private + + def scope_for(key, value) + case key.to_s + when 'status' + status_scope(value) + else + raise "Unknown filter: #{key}" + end + end + + def status_scope(value) + case value + when 'approved' + Appeal.approved + when 'rejected' + Appeal.rejected + when 'pending' + Appeal.pending + else + raise "Unknown status: #{value}" + end + end +end diff --git a/app/models/admin/status_filter.rb b/app/models/admin/status_filter.rb index ce5bb5f46..4fba612a6 100644 --- a/app/models/admin/status_filter.rb +++ b/app/models/admin/status_filter.rb @@ -31,7 +31,7 @@ class Admin::StatusFilter def scope_for(key, value) case key.to_s when 'media' - Status.joins(:media_attachments).merge(@account.media_attachments.reorder(nil)).group(:id) + Status.joins(:media_attachments).merge(@account.media_attachments.reorder(nil)).group(:id).reorder('statuses.id desc') when 'id' Status.where(id: value) else diff --git a/app/models/appeal.rb b/app/models/appeal.rb new file mode 100644 index 000000000..1f32cfa8b --- /dev/null +++ b/app/models/appeal.rb @@ -0,0 +1,60 @@ +# frozen_string_literal: true + +# == Schema Information +# +# Table name: appeals +# +# id :bigint(8) not null, primary key +# account_id :bigint(8) not null +# account_warning_id :bigint(8) not null +# text :text default(""), not null +# approved_at :datetime +# approved_by_account_id :bigint(8) +# rejected_at :datetime +# rejected_by_account_id :bigint(8) +# created_at :datetime not null +# updated_at :datetime not null +# +class Appeal < ApplicationRecord + MAX_STRIKE_AGE = 20.days + + belongs_to :account + belongs_to :strike, class_name: 'AccountWarning', foreign_key: 'account_warning_id' + belongs_to :approved_by_account, class_name: 'Account', optional: true + belongs_to :rejected_by_account, class_name: 'Account', optional: true + + validates :text, presence: true, length: { maximum: 2_000 } + validates :account_warning_id, uniqueness: true + + validate :validate_time_frame, on: :create + + scope :approved, -> { where.not(approved_at: nil) } + scope :rejected, -> { where.not(rejected_at: nil) } + scope :pending, -> { where(approved_at: nil, rejected_at: nil) } + + def pending? + !approved? && !rejected? + end + + def approved? + approved_at.present? + end + + def rejected? + rejected_at.present? + end + + def approve!(current_account) + update!(approved_at: Time.now.utc, approved_by_account: current_account) + end + + def reject!(current_account) + update!(rejected_at: Time.now.utc, rejected_by_account: current_account) + end + + private + + def validate_time_frame + errors.add(:base, I18n.t('strikes.errors.too_late')) if strike.created_at < MAX_STRIKE_AGE.ago + end +end diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 9eaacdc03..4b38d729e 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -38,6 +38,12 @@ class MediaAttachment < ApplicationRecord MAX_DESCRIPTION_LENGTH = 1_500 + IMAGE_LIMIT = (ENV['MAX_IMAGE_SIZE'] || 10.megabytes).to_i + VIDEO_LIMIT = (ENV['MAX_VIDEO_SIZE'] || 40.megabytes).to_i + + MAX_VIDEO_MATRIX_LIMIT = 2_304_000 # 1920x1200px + MAX_VIDEO_FRAME_RATE = 60 + IMAGE_FILE_EXTENSIONS = %w(.jpg .jpeg .png .gif).freeze VIDEO_FILE_EXTENSIONS = %w(.webm .mp4 .m4v .mov).freeze AUDIO_FILE_EXTENSIONS = %w(.ogg .oga .mp3 .wav .flac .opus .aac .m4a .3gp .wma).freeze @@ -75,6 +81,7 @@ class MediaAttachment < ApplicationRecord VIDEO_FORMAT = { format: 'mp4', content_type: 'video/mp4', + vfr_frame_rate_threshold: MAX_VIDEO_FRAME_RATE, convert_options: { output: { 'loglevel' => 'fatal', @@ -152,12 +159,6 @@ class MediaAttachment < ApplicationRecord all: '-quality 90 -strip +set modify-date +set create-date', }.freeze - IMAGE_LIMIT = (ENV['MAX_IMAGE_SIZE'] || 10.megabytes).to_i - VIDEO_LIMIT = (ENV['MAX_VIDEO_SIZE'] || 40.megabytes).to_i - - MAX_VIDEO_MATRIX_LIMIT = 2_304_000 # 1920x1200px - MAX_VIDEO_FRAME_RATE = 60 - belongs_to :account, inverse_of: :media_attachments, optional: true belongs_to :status, inverse_of: :media_attachments, optional: true belongs_to :scheduled_status, inverse_of: :media_attachments, optional: true diff --git a/app/models/notification.rb b/app/models/notification.rb index c14eb8a7e..9bf296386 100644 --- a/app/models/notification.rb +++ b/app/models/notification.rb @@ -36,6 +36,7 @@ class Notification < ApplicationRecord favourite poll update + admin.sign_up ).freeze TARGET_STATUS_INCLUDES_BY_TYPE = { @@ -63,13 +64,10 @@ class Notification < ApplicationRecord scope :without_suspended, -> { joins(:from_account).merge(Account.without_suspended) } scope :browserable, ->(exclude_types = [], account_id = nil) { - types = TYPES - exclude_types.map(&:to_sym) - - if account_id.nil? - where(type: types) - else - where(type: types, from_account_id: account_id) - end + scope = all + scope = where(from_account_id: account_id) if account_id.present? + scope = scope.where(type: TYPES - exclude_types.map(&:to_sym)) unless exclude_types.empty? + scope } def type @@ -142,6 +140,8 @@ class Notification < ApplicationRecord self.from_account_id = activity&.account_id when 'Mention' self.from_account_id = activity&.status&.account_id + when 'Account' + self.from_account_id = activity&.id end end end diff --git a/app/models/user.rb b/app/models/user.rb index ee20e293e..a21e96ae5 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -111,7 +111,7 @@ class User < ApplicationRecord scope :inactive, -> { where(arel_table[:current_sign_in_at].lt(ACTIVE_DURATION.ago)) } scope :active, -> { confirmed.where(arel_table[:current_sign_in_at].gteq(ACTIVE_DURATION.ago)).joins(:account).where(accounts: { suspended_at: nil }) } scope :matches_email, ->(value) { where(arel_table[:email].matches("#{value}%")) } - scope :matches_ip, ->(value) { left_joins(:ips).where('user_ips.ip <<= ?', value) } + scope :matches_ip, ->(value) { left_joins(:ips).where('user_ips.ip <<= ?', value).group('users.id') } scope :emailable, -> { confirmed.enabled.joins(:account).merge(Account.searchable) } before_validation :sanitize_languages @@ -265,6 +265,10 @@ class User < ApplicationRecord settings.notification_emails['pending_account'] end + def allows_appeal_emails? + settings.notification_emails['appeal'] + end + def allows_trending_tag_emails? settings.notification_emails['trending_tag'] end diff --git a/app/policies/account_warning_policy.rb b/app/policies/account_warning_policy.rb new file mode 100644 index 000000000..65707dfa7 --- /dev/null +++ b/app/policies/account_warning_policy.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class AccountWarningPolicy < ApplicationPolicy + def show? + target? || staff? + end + + def appeal? + target? && record.created_at >= Appeal::MAX_STRIKE_AGE.ago + end + + private + + def target? + record.target_account_id == current_account&.id + end +end diff --git a/app/policies/appeal_policy.rb b/app/policies/appeal_policy.rb new file mode 100644 index 000000000..a25187172 --- /dev/null +++ b/app/policies/appeal_policy.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class AppealPolicy < ApplicationPolicy + def index? + staff? + end + + def approve? + record.pending? && staff? + end + + alias reject? approve? +end diff --git a/app/services/appeal_service.rb b/app/services/appeal_service.rb new file mode 100644 index 000000000..1397c50f5 --- /dev/null +++ b/app/services/appeal_service.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class AppealService < BaseService + def call(strike, text) + @strike = strike + @text = text + + create_appeal! + notify_staff! + + @appeal + end + + private + + def create_appeal! + @appeal = @strike.create_appeal!( + text: @text, + account: @strike.target_account + ) + end + + def notify_staff! + User.staff.includes(:account).each do |u| + AdminMailer.new_appeal(u.account, @appeal).deliver_later if u.allows_appeal_emails? + end + end +end diff --git a/app/services/approve_appeal_service.rb b/app/services/approve_appeal_service.rb new file mode 100644 index 000000000..f76bf8943 --- /dev/null +++ b/app/services/approve_appeal_service.rb @@ -0,0 +1,74 @@ +# frozen_string_literal: true + +class ApproveAppealService < BaseService + def call(appeal, current_account) + @appeal = appeal + @strike = appeal.strike + @current_account = current_account + + ApplicationRecord.transaction do + undo_strike_action! + mark_strike_as_appealed! + end + + queue_workers! + notify_target_account! + end + + private + + def target_account + @strike.target_account + end + + def undo_strike_action! + case @strike.action + when 'disable' + undo_disable! + when 'delete_statuses' + undo_delete_statuses! + when 'sensitive' + undo_sensitive! + when 'silence' + undo_silence! + when 'suspend' + undo_suspend! + end + end + + def mark_strike_as_appealed! + @appeal.approve!(@current_account) + @strike.touch(:overruled_at) + end + + def undo_disable! + target_account.user.enable! + end + + def undo_delete_statuses! + # Cannot be undone + end + + def undo_sensitive! + target_account.unsensitize! + end + + def undo_silence! + target_account.unsilence! + end + + def undo_suspend! + target_account.unsuspend! + end + + def queue_workers! + case @strike.action + when 'suspend' + Admin::UnsuspensionWorker.perform_async(target_account.id) + end + end + + def notify_target_account! + UserMailer.appeal_approved(target_account.user, @appeal).deliver_later + end +end diff --git a/app/services/bootstrap_timeline_service.rb b/app/services/bootstrap_timeline_service.rb index e1a1b98c3..312c163e4 100644 --- a/app/services/bootstrap_timeline_service.rb +++ b/app/services/bootstrap_timeline_service.rb @@ -5,6 +5,7 @@ class BootstrapTimelineService < BaseService @source_account = source_account autofollow_inviter! + notify_staff! end private @@ -14,4 +15,10 @@ class BootstrapTimelineService < BaseService FollowService.new.call(@source_account, @source_account.user.invite.user.account) end + + def notify_staff! + User.staff.includes(:account).find_each do |user| + NotifyService.new.call(user.account, :'admin.sign_up', @source_account) + end + end end diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb index 94dc6389f..239ab9b93 100644 --- a/app/services/fetch_link_card_service.rb +++ b/app/services/fetch_link_card_service.rb @@ -2,7 +2,7 @@ class FetchLinkCardService < BaseService URL_PATTERN = %r{ - (#{Twitter::TwitterText::Regex[:valid_url_preceding_chars]}) # $1 preceeding chars + (#{Twitter::TwitterText::Regex[:valid_url_preceding_chars]}) # $1 preceding chars ( # $2 URL (https?:\/\/) # $3 Protocol (required) (#{Twitter::TwitterText::Regex[:valid_domain]}) # $4 Domain(s) diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb index 039e007f5..b1f9fd755 100644 --- a/app/services/notify_service.rb +++ b/app/services/notify_service.rb @@ -22,34 +22,6 @@ class NotifyService < BaseService FeedManager.instance.filter?(:mentions, @notification.mention.status, @recipient) end - def blocked_status? - false - end - - def blocked_favourite? - false - end - - def blocked_follow? - false - end - - def blocked_reblog? - false - end - - def blocked_follow_request? - false - end - - def blocked_poll? - false - end - - def blocked_update? - false - end - def following_sender? return @following_sender if defined?(@following_sender) @following_sender = @recipient.following?(@notification.from_account) || @recipient.requested?(@notification.from_account) @@ -71,7 +43,7 @@ class NotifyService < BaseService message? && @notification.target_status.direct_visibility? end - # Returns true if the sender has been mentionned by the recipient up the thread + # Returns true if the sender has been mentioned by the recipient up the thread def response_to_recipient? return false if @notification.target_status.in_reply_to_id.nil? @@ -149,15 +121,15 @@ class NotifyService < BaseService return blocked if message? && from_staff? - blocked ||= domain_blocking? # Skip for domain blocked accounts - blocked ||= @recipient.blocking?(@notification.from_account) # Skip for blocked accounts + blocked ||= domain_blocking? + blocked ||= @recipient.blocking?(@notification.from_account) blocked ||= @recipient.muting_notifications?(@notification.from_account) - blocked ||= hellbanned? # Hellban - blocked ||= optional_non_follower? # Options - blocked ||= optional_non_following? # Options - blocked ||= optional_non_following_and_direct? # Options + blocked ||= hellbanned? + blocked ||= optional_non_follower? + blocked ||= optional_non_following? + blocked ||= optional_non_following_and_direct? blocked ||= conversation_muted? - blocked ||= send("blocked_#{@notification.type}?") # Type-dependent filters + blocked ||= blocked_mention? if @notification.type == :mention blocked end diff --git a/app/views/admin/account_moderation_notes/_account_moderation_note.html.haml b/app/views/admin/account_moderation_notes/_account_moderation_note.html.haml deleted file mode 100644 index 432fb79a6..000000000 --- a/app/views/admin/account_moderation_notes/_account_moderation_note.html.haml +++ /dev/null @@ -1,7 +0,0 @@ -.speech-bubble - .speech-bubble__bubble - = simple_format(h(account_moderation_note.content)) - .speech-bubble__owner - = admin_account_link_to account_moderation_note.account - %time.formatted{ datetime: account_moderation_note.created_at.iso8601 }= l account_moderation_note.created_at - = table_link_to 'trash', t('admin.account_moderation_notes.delete'), admin_account_moderation_note_path(account_moderation_note), method: :delete if can?(:destroy, account_moderation_note) diff --git a/app/views/admin/account_warnings/_account_warning.html.haml b/app/views/admin/account_warnings/_account_warning.html.haml index 8c9c9679c..1462e76d0 100644 --- a/app/views/admin/account_warnings/_account_warning.html.haml +++ b/app/views/admin/account_warnings/_account_warning.html.haml @@ -1,6 +1,25 @@ -.speech-bubble.warning - .speech-bubble__bubble - = Formatter.instance.linkify(account_warning.text) - .speech-bubble__owner - = admin_account_link_to account_warning.account - %time.formatted{ datetime: account_warning.created_at.iso8601 }= l account_warning.created_at += link_to disputes_strike_path(account_warning), class: 'log-entry' do + .log-entry__header + .log-entry__avatar + .indicator-icon{ class: account_warning.overruled? ? 'success' : 'failure' } + = fa_icon 'warning' + .log-entry__content + .log-entry__title + = t(account_warning.action, scope: 'admin.strikes.actions', name: content_tag(:span, account_warning.account.username, class: 'username'), target: content_tag(:span, account_warning.target_account.acct, class: 'target')).html_safe + .log-entry__timestamp + %time.formatted{ datetime: account_warning.created_at.iso8601 } + = l(account_warning.created_at) + + - if account_warning.report_id.present? + · + = t('admin.reports.report', id: account_warning.report_id) + + - if account_warning.overruled? + · + %span.positive-hint= t('admin.strikes.appeal_approved') + - elsif account_warning.appeal&.pending? + · + %span.warning-hint= t('admin.strikes.appeal_pending') + - elsif account_warning.appeal&.rejected? + · + %span.negative-hint= t('admin.strikes.appeal_rejected') diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml index f3853d629..9a1f07a06 100644 --- a/app/views/admin/accounts/show.html.haml +++ b/app/views/admin/accounts/show.html.haml @@ -246,18 +246,29 @@ %hr.spacer/ - unless @warnings.empty? - = render @warnings + + %h3= t 'admin.accounts.previous_strikes' + + %p= t('admin.accounts.previous_strikes_description_html', count: @account.previous_strikes_count) + + .account-strikes + = render @warnings %hr.spacer/ - = render @moderation_notes + %h3= t 'admin.reports.notes.title' - = simple_form_for @account_moderation_note, url: admin_account_moderation_notes_path do |f| - = render 'shared/error_messages', object: @account_moderation_note + %p= t 'admin.reports.notes_description_html' - = f.input :content, placeholder: t('admin.reports.notes.placeholder'), rows: 6 + .report-notes + = render partial: 'admin/report_notes/report_note', collection: @moderation_notes + + = simple_form_for @account_moderation_note, url: admin_account_moderation_notes_path do |f| = f.hidden_field :target_account_id + .field-group + = f.input :content, placeholder: t('admin.reports.notes.placeholder'), rows: 6 + .actions = f.button :button, t('admin.account_moderation_notes.create'), type: :submit diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml index 2ee13b9e2..66e0c0251 100644 --- a/app/views/admin/dashboard/index.html.haml +++ b/app/views/admin/dashboard/index.html.haml @@ -16,10 +16,10 @@ .dashboard .dashboard__item - = react_admin_component :counter, measure: 'new_users', start_at: @time_period.first, end_at: @time_period.last, label: t('admin.dashboard.new_users'), href: admin_accounts_path + = react_admin_component :counter, measure: 'new_users', start_at: @time_period.first, end_at: @time_period.last, label: t('admin.dashboard.new_users'), href: admin_accounts_path(origin: 'local') .dashboard__item - = react_admin_component :counter, measure: 'active_users', start_at: @time_period.first, end_at: @time_period.last, label: t('admin.dashboard.active_users'), href: admin_accounts_path + = react_admin_component :counter, measure: 'active_users', start_at: @time_period.first, end_at: @time_period.last, label: t('admin.dashboard.active_users'), href: admin_accounts_path(origin: 'local') .dashboard__item = react_admin_component :counter, measure: 'interactions', start_at: @time_period.first, end_at: @time_period.last, label: t('admin.dashboard.interactions') @@ -43,6 +43,9 @@ %span= t('admin.dashboard.pending_tags_html', count: @pending_tags_count) = fa_icon 'chevron-right fw' + = link_to admin_disputes_appeals_path(status: 'pending'), class: 'dashboard__quick-access' do + %span= t('admin.dashboard.pending_appeals_html', count: @pending_appeals_count) + = fa_icon 'chevron-right fw' .dashboard__item = react_admin_component :dimension, dimension: 'sources', start_at: @time_period.first, end_at: @time_period.last, limit: 8, label: t('admin.dashboard.sources') diff --git a/app/views/admin/disputes/appeals/_appeal.html.haml b/app/views/admin/disputes/appeals/_appeal.html.haml new file mode 100644 index 000000000..02b8777e1 --- /dev/null +++ b/app/views/admin/disputes/appeals/_appeal.html.haml @@ -0,0 +1,21 @@ += link_to disputes_strike_path(appeal.strike), class: ['log-entry', appeal.approved? && 'log-entry--inactive'] do + .log-entry__header + .log-entry__avatar + = image_tag appeal.account.avatar.url(:original), alt: '', width: 40, height: 40, class: 'avatar' + .log-entry__content + .log-entry__title + = t(appeal.strike.action, scope: 'admin.strikes.actions', name: content_tag(:span, appeal.strike.account.username, class: 'username'), target: content_tag(:span, appeal.account.acct, class: 'target')).html_safe + .log-entry__timestamp + %time.formatted{ datetime: appeal.strike.created_at.iso8601 } + = l(appeal.strike.created_at) + + - if appeal.strike.report_id.present? + · + = t('admin.reports.title', id: appeal.strike.report_id) + · + - if appeal.approved? + %span.positive-hint= t('admin.strikes.appeal_approved') + - elsif appeal.rejected? + %span.negative-hint= t('admin.strikes.appeal_rejected') + - else + %span.warning-hint= t('admin.strikes.appeal_pending') diff --git a/app/views/admin/disputes/appeals/index.html.haml b/app/views/admin/disputes/appeals/index.html.haml new file mode 100644 index 000000000..42e9c4b1d --- /dev/null +++ b/app/views/admin/disputes/appeals/index.html.haml @@ -0,0 +1,19 @@ +- content_for :page_title do + = t('admin.disputes.appeals.title') + +.filters + .filter-subset + %strong= t('admin.tags.review') + %ul + %li= filter_link_to safe_join([t('admin.accounts.moderation.pending'), "(#{Appeal.pending.count})"], ' '), status: 'pending' + %li= filter_link_to t('admin.trends.approved'), status: 'approved' + %li= filter_link_to t('admin.trends.rejected'), status: 'rejected' + +- if @appeals.empty? + %div.muted-hint.center-text + = t 'admin.disputes.appeals.empty' +- else + .announcements-list + = render partial: 'appeal', collection: @appeals + += paginate @appeals diff --git a/app/views/admin/report_notes/_report_note.html.haml b/app/views/admin/report_notes/_report_note.html.haml index 428b6cf59..f9d57c2ae 100644 --- a/app/views/admin/report_notes/_report_note.html.haml +++ b/app/views/admin/report_notes/_report_note.html.haml @@ -3,7 +3,7 @@ .report-notes__item__header %span.username - = link_to display_name(report_note.account), admin_account_path(report_note.account_id) + = link_to report_note.account.username, admin_account_path(report_note.account_id) %time{ datetime: report_note.created_at.iso8601, title: l(report_note.created_at) } - if report_note.created_at.today? = t('admin.report_notes.today_at', time: l(report_note.created_at, format: :time)) diff --git a/app/views/admin/reports/show.html.haml b/app/views/admin/reports/show.html.haml index 018a0c54a..abcbec949 100644 --- a/app/views/admin/reports/show.html.haml +++ b/app/views/admin/reports/show.html.haml @@ -53,7 +53,7 @@ .report-header__details__item__header %strong= t('admin.accounts.strikes') .report-header__details__item__content - = @report.target_account.strikes.count + = @report.target_account.previous_strikes_count .report-header__details .report-header__details__item diff --git a/app/views/admin_mailer/new_appeal.text.erb b/app/views/admin_mailer/new_appeal.text.erb new file mode 100644 index 000000000..db4529eb7 --- /dev/null +++ b/app/views/admin_mailer/new_appeal.text.erb @@ -0,0 +1,9 @@ +<%= raw t('application_mailer.salutation', name: display_name(@me)) %> + +<%= raw t('admin_mailer.new_appeal.body', target: @appeal.account.username, action_taken_by: @appeal.strike.account.username, date: l(@appeal.strike.created_at), type: t(@appeal.strike.action, scope: 'admin_mailer.new_appeal.actions')) %> + +> <%= raw word_wrap(@appeal.text, break_sequence: "\n> ") %> + +<%= raw t('admin_mailer.new_appeal.next_steps') %> + +<%= raw t('application_mailer.view')%> <%= disputes_strike_url(@appeal.strike) %> diff --git a/app/views/admin_mailer/new_trending_tags.text.erb b/app/views/admin_mailer/new_trending_tags.text.erb index 5051e8a96..9ea31fa7c 100644 --- a/app/views/admin_mailer/new_trending_tags.text.erb +++ b/app/views/admin_mailer/new_trending_tags.text.erb @@ -13,4 +13,4 @@ <%= t('admin_mailer.new_trending_tags.no_approved_tags') %> <% end %> -<%= raw t('application_mailer.view')%> <%= admin_trends_tags_url(pending_review: '1') %> +<%= raw t('application_mailer.view')%> <%= admin_trends_tags_url(status: 'pending_review') %> diff --git a/app/views/auth/registrations/_account_warning.html.haml b/app/views/auth/registrations/_account_warning.html.haml new file mode 100644 index 000000000..40e7e1296 --- /dev/null +++ b/app/views/auth/registrations/_account_warning.html.haml @@ -0,0 +1,20 @@ += link_to disputes_strike_path(account_warning), class: 'log-entry' do + .log-entry__header + .log-entry__avatar + .indicator-icon{ class: account_warning.overruled? ? 'success' : 'failure' } + = fa_icon 'warning' + .log-entry__content + .log-entry__title + = t('disputes.strikes.title', action: t(account_warning.action, scope: 'disputes.strikes.title_actions'), date: l(account_warning.created_at.to_date)) + .log-entry__timestamp + %time.formatted{ datetime: account_warning.created_at.iso8601 }= l(account_warning.created_at) + + - if account_warning.overruled? + · + %span.positive-hint= t('disputes.strikes.your_appeal_approved') + - elsif account_warning.appeal&.pending? + · + %span.warning-hint= t('disputes.strikes.your_appeal_pending') + - elsif account_warning.appeal&.rejected? + · + %span.negative-hint= t('disputes.strikes.your_appeal_rejected') diff --git a/app/views/auth/registrations/_status.html.haml b/app/views/auth/registrations/_status.html.haml index 47112dae0..3546510b2 100644 --- a/app/views/auth/registrations/_status.html.haml +++ b/app/views/auth/registrations/_status.html.haml @@ -1,22 +1,17 @@ +- if !@user.confirmed? + .flash-message.warning + = t('auth.status.confirming') + = link_to t('auth.didnt_get_confirmation'), new_user_confirmation_path +- elsif !@user.approved? + .flash-message.warning + = t('auth.status.pending') +- elsif @user.account.moved_to_account_id.present? + .flash-message.warning + = t('auth.status.redirecting_to', acct: @user.account.moved_to_account.acct) + = link_to t('migrations.cancel'), settings_migration_path + %h3= t('auth.status.account_status') -.simple_form - %p.hint - - if @user.account.suspended? - %span.negative-hint= t('user_mailer.warning.explanation.suspend') - - elsif @user.disabled? - %span.negative-hint= t('user_mailer.warning.explanation.disable') - - elsif @user.account.silenced? - %span.warning-hint= t('user_mailer.warning.explanation.silence') - - elsif !@user.confirmed? - %span.warning-hint= t('auth.status.confirming') - = link_to t('auth.didnt_get_confirmation'), new_user_confirmation_path - - elsif !@user.approved? - %span.warning-hint= t('auth.status.pending') - - elsif @user.account.moved_to_account_id.present? - %span.positive-hint= t('auth.status.redirecting_to', acct: @user.account.moved_to_account.acct) - = link_to t('migrations.cancel'), settings_migration_path - - else - %span.positive-hint= t('auth.status.functional') += render partial: 'account_warning', collection: @strikes %hr.spacer/ diff --git a/app/views/disputes/strikes/show.html.haml b/app/views/disputes/strikes/show.html.haml new file mode 100644 index 000000000..7248b2574 --- /dev/null +++ b/app/views/disputes/strikes/show.html.haml @@ -0,0 +1,128 @@ +- content_for :page_title do + = t('disputes.strikes.title', action: t(@strike.action, scope: 'disputes.strikes.title_actions'), date: l(@strike.created_at.to_date)) + +- content_for :heading_actions do + - if @appeal.persisted? + = link_to t('admin.accounts.approve'), approve_admin_disputes_appeal_path(@appeal), method: :post, class: 'button' if can?(:approve, @appeal) + = link_to t('admin.accounts.reject'), reject_admin_disputes_appeal_path(@appeal), method: :post, class: 'button button--destructive' if can?(:reject, @appeal) + +- if @strike.overruled? + %p.hint + %span.positive-hint + = fa_icon 'check' + = ' ' + = t 'disputes.strikes.appeal_approved' +- elsif @appeal.persisted? && @appeal.rejected? + %p.hint + %span.negative-hint + = fa_icon 'times' + = ' ' + = t 'disputes.strikes.appeal_rejected' + +.report-header + .report-header__card + .strike-card + - unless @strike.none_action? + %p= t "user_mailer.warning.explanation.#{@strike.action}", instance: Rails.configuration.x.local_domain + + - unless @strike.text.blank? + = Formatter.instance.linkify(@strike.text) + + - if @strike.report && !@strike.report.other? + %p + %strong= t('user_mailer.warning.reason') + = t("user_mailer.warning.categories.#{@strike.report.category}") + + - if @strike.report.violation? && @strike.report.rule_ids.present? + %ul.strike-card__rules + - @strike.report.rules.each do |rule| + %li + %span.strike-card__rules__text= rule.text + + - if @strike.status_ids.present? && !@strike.status_ids.empty? + %p + %strong= t('user_mailer.warning.statuses') + + .strike-card__statuses-list + - status_map = @strike.statuses.includes(:application, :media_attachments).index_by(&:id) + + - @strike.status_ids.each do |status_id| + .strike-card__statuses-list__item + - if (status = status_map[status_id.to_i]) + .one-liner + = link_to short_account_status_url(@strike.target_account, status_id), class: 'emojify' do + = one_line_preview(status) + + - status.media_attachments.each do |media_attachment| + %abbr{ title: media_attachment.description } + = fa_icon 'link' + = media_attachment.file_file_name + .strike-card__statuses-list__item__meta + %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at) + · + = status.application.name + - else + .one-liner= t('disputes.strikes.status', id: status_id) + .strike-card__statuses-list__item__meta + = t('disputes.strikes.status_removed') + + .report-header__details + .report-header__details__item + .report-header__details__item__header + %strong= t('disputes.strikes.created_at') + .report-header__details__item__content + %time.formatted{ datetime: @strike.created_at.iso8601, title: l(@strike.created_at) }= l(@strike.created_at) + .report-header__details__item + .report-header__details__item__header + %strong= t('disputes.strikes.recipient') + .report-header__details__item__content + = link_to @strike.target_account.username, can?(:show, @strike.target_account) ? admin_account_path(@strike.target_account_id) : ActivityPub::TagManager.instance.url_for(@strike.target_account), class: 'table-action-link' + .report-header__details__item + .report-header__details__item__header + %strong= t('disputes.strikes.action_taken') + .report-header__details__item__content + - if @strike.overruled? + %del= t(@strike.action, scope: 'user_mailer.warning.title') + - else + = t(@strike.action, scope: 'user_mailer.warning.title') + - if @strike.report && can?(:show, @strike.report) + .report-header__details__item + .report-header__details__item__header + %strong= t('disputes.strikes.associated_report') + .report-header__details__item__content + = link_to t('admin.reports.report', id: @strike.report.id), admin_report_path(@strike.report), class: 'table-action-link' + - if @appeal.persisted? + .report-header__details__item + .report-header__details__item__header + %strong= t('disputes.strikes.appeal_submitted_at') + .report-header__details__item__content + %time.formatted{ datetime: @appeal.created_at.iso8601, title: l(@appeal.created_at) }= l(@appeal.created_at) +%hr.spacer/ + +- if @appeal.persisted? + %h3= t('disputes.strikes.appeal') + + .report-notes + .report-notes__item + = image_tag @appeal.account.avatar.url, class: 'report-notes__item__avatar' + + .report-notes__item__header + %span.username + = link_to @appeal.account.username, can?(:show, @appeal.account) ? admin_account_path(@appeal.account_id) : short_account_url(@appeal.account) + %time{ datetime: @appeal.created_at.iso8601, title: l(@appeal.created_at) } + - if @appeal.created_at.today? + = t('admin.report_notes.today_at', time: l(@appeal.created_at, format: :time)) + - else + = l @appeal.created_at.to_date + + .report-notes__item__content + = simple_format(h(@appeal.text)) +- elsif can?(:appeal, @strike) + %h3= t('disputes.strikes.appeals.submit') + + = simple_form_for(@appeal, url: disputes_strike_appeal_path(@strike)) do |f| + .fields-group + = f.input :text, wrapper: :with_label, input_html: { maxlength: 500 } + + .actions + = f.button :button, t('disputes.strikes.appeals.submit'), type: :submit diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml index 61198171d..1a789cef8 100644 --- a/app/views/layouts/public.html.haml +++ b/app/views/layouts/public.html.haml @@ -53,5 +53,9 @@ %ul %li= link_to t('about.source_code'), Mastodon::Version.source_url %li= link_to t('about.apps'), 'https://joinmastodon.org/apps' + .legal-xs + = link_to "v#{Mastodon::Version.to_s}", Mastodon::Version.source_url + · + = link_to t('about.privacy_policy'), terms_path = render template: 'layouts/application' diff --git a/app/views/settings/preferences/notifications/show.html.haml b/app/views/settings/preferences/notifications/show.html.haml index d7cc1ed5d..223e5d740 100644 --- a/app/views/settings/preferences/notifications/show.html.haml +++ b/app/views/settings/preferences/notifications/show.html.haml @@ -21,6 +21,7 @@ - if current_user.staff? = ff.input :report, as: :boolean, wrapper: :with_label + = ff.input :appeal, as: :boolean, wrapper: :with_label = ff.input :pending_account, as: :boolean, wrapper: :with_label = ff.input :trending_tag, as: :boolean, wrapper: :with_label diff --git a/app/views/statuses/_detailed_status.html.haml b/app/views/statuses/_detailed_status.html.haml index cd5ed52af..1922f53ce 100644 --- a/app/views/statuses/_detailed_status.html.haml +++ b/app/views/statuses/_detailed_status.html.haml @@ -49,7 +49,7 @@ %span.detailed-status__visibility-icon = visibility_icon status · - - if status.application && @account.user&.setting_show_application + - if status.application && status.account.user&.setting_show_application - if status.application.website.blank? %strong.detailed-status__application= status.application.name - else diff --git a/app/views/user_mailer/appeal_approved.html.haml b/app/views/user_mailer/appeal_approved.html.haml new file mode 100644 index 000000000..962cab2e2 --- /dev/null +++ b/app/views/user_mailer/appeal_approved.html.haml @@ -0,0 +1,59 @@ +%table.email-table{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.email-body + .email-container + %table.content-section{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.content-cell.hero + .email-row + .col-6 + %table.column{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.column-cell.text-center.padded + %table.hero-icon{ align: 'center', cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td + = image_tag full_pack_url('media/images/mailer/icon_done.png'), alt: '' + + %h1= t 'user_mailer.appeal_approved.title' + +%table.email-table{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.email-body + .email-container + %table.content-section{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.content-cell.content-start + .email-row + .col-6 + %table.column{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.column-cell.text-center + %p= t 'user_mailer.appeal_approved.explanation', appeal_date: l(@appeal.created_at), strike_date: l(@appeal.strike.created_at) + +%table.email-table{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.email-body + .email-container + %table.content-section{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.content-cell + %table.column{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.column-cell.button-cell + %table.button{ align: 'center', cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.button-primary + = link_to root_url do + %span= t 'user_mailer.appeal_approved.action' diff --git a/app/views/user_mailer/appeal_approved.text.erb b/app/views/user_mailer/appeal_approved.text.erb new file mode 100644 index 000000000..290fa24c3 --- /dev/null +++ b/app/views/user_mailer/appeal_approved.text.erb @@ -0,0 +1,7 @@ +<%= t 'user_mailer.appeal_approved.title' %> + +=== + +<%= t 'user_mailer.appeal_approved.explanation', appeal_date: l(@appeal.created_at), strike_date: l(@appeal.strike.created_at) %> + +=> <%= root_url %> diff --git a/app/views/user_mailer/appeal_rejected.html.haml b/app/views/user_mailer/appeal_rejected.html.haml new file mode 100644 index 000000000..75cd9d023 --- /dev/null +++ b/app/views/user_mailer/appeal_rejected.html.haml @@ -0,0 +1,59 @@ +%table.email-table{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.email-body + .email-container + %table.content-section{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.content-cell.hero + .email-row + .col-6 + %table.column{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.column-cell.text-center.padded + %table.hero-icon{ align: 'center', cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td + = image_tag full_pack_url('media/images/mailer/icon_warning.png'), alt: '' + + %h1= t 'user_mailer.appeal_rejected.title' + +%table.email-table{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.email-body + .email-container + %table.content-section{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.content-cell.content-start + .email-row + .col-6 + %table.column{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.column-cell.text-center + %p= t 'user_mailer.appeal_rejected.explanation', appeal_date: l(@appeal.created_at), strike_date: l(@appeal.strike.created_at) + +%table.email-table{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.email-body + .email-container + %table.content-section{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.content-cell + %table.column{ cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.column-cell.button-cell + %table.button{ align: 'center', cellspacing: 0, cellpadding: 0 } + %tbody + %tr + %td.button-primary + = link_to root_url do + %span= t 'user_mailer.appeal_approved.action' diff --git a/app/views/user_mailer/appeal_rejected.text.erb b/app/views/user_mailer/appeal_rejected.text.erb new file mode 100644 index 000000000..f47a76818 --- /dev/null +++ b/app/views/user_mailer/appeal_rejected.text.erb @@ -0,0 +1,7 @@ +<%= t 'user_mailer.appeal_rejected.title' %> + +=== + +<%= t 'user_mailer.appeal_rejected.explanation', appeal_date: l(@appeal.created_at), strike_date: l(@appeal.strike.created_at) %> + +=> <%= root_url %> diff --git a/app/views/user_mailer/warning.html.haml b/app/views/user_mailer/warning.html.haml index bda1fef6c..b308e18f7 100644 --- a/app/views/user_mailer/warning.html.haml +++ b/app/views/user_mailer/warning.html.haml @@ -77,8 +77,8 @@ %tbody %tr %td.button-primary - = link_to about_more_url do - %span= t 'user_mailer.warning.review_server_policies' + = link_to disputes_strike_url(@warning) do + %span= t 'user_mailer.warning.appeal' %table.email-table{ cellspacing: 0, cellpadding: 0 } %tbody @@ -95,4 +95,4 @@ %tbody %tr %td.column-cell.text-center - %p= t 'user_mailer.warning.get_in_touch', instance: @instance + %p= t 'user_mailer.warning.appeal_description', instance: @instance diff --git a/config/brakeman.ignore b/config/brakeman.ignore index 4245b7192..6ffe12ae0 100644 --- a/config/brakeman.ignore +++ b/config/brakeman.ignore @@ -3,31 +3,11 @@ { "warning_type": "SQL Injection", "warning_code": 0, - "fingerprint": "04dbbc249b989db2e0119bbb0f59c9818e12889d2b97c529cdc0b1526002ba4b", - "check_name": "SQL", - "message": "Possible SQL injection", - "file": "app/models/report.rb", - "line": 113, - "link": "https://brakemanscanner.org/docs/warning_types/sql_injection/", - "code": "Admin::ActionLog.from(\"(#{[Admin::ActionLog.where(:target_type => \"Report\", :target_id => id, :created_at => ((created_at..updated_at))).unscope(:order), Admin::ActionLog.where(:target_type => \"Account\", :target_id => target_account_id, :created_at => ((created_at..updated_at))).unscope(:order), Admin::ActionLog.where(:target_type => \"Status\", :target_id => status_ids, :created_at => ((created_at..updated_at))).unscope(:order)].map do\n \"(#{query.to_sql})\"\n end.join(\" UNION ALL \")}) AS admin_action_logs\")", - "render_path": null, - "location": { - "type": "method", - "class": "Report", - "method": "history" - }, - "user_input": "Admin::ActionLog.where(:target_type => \"Status\", :target_id => status_ids, :created_at => ((created_at..updated_at))).unscope(:order)", - "confidence": "High", - "note": "" - }, - { - "warning_type": "SQL Injection", - "warning_code": 0, "fingerprint": "19df3740b8d02a9fe0eb52c939b4b87d3a2a591162a6adfa8d64e9c26aeebe6d", "check_name": "SQL", "message": "Possible SQL injection", "file": "app/models/status.rb", - "line": 100, + "line": 104, "link": "https://brakemanscanner.org/docs/warning_types/sql_injection/", "code": "result.joins(\"INNER JOIN statuses_tags t#{id} ON t#{id}.status_id = statuses.id AND t#{id}.tag_id = #{id}\")", "render_path": null, @@ -107,7 +87,7 @@ "check_name": "PermitAttributes", "message": "Potentially dangerous key allowed for mass assignment", "file": "app/controllers/api/v1/admin/reports_controller.rb", - "line": 78, + "line": 90, "link": "https://brakemanscanner.org/docs/warning_types/mass_assignment/", "code": "params.permit(:resolved, :account_id, :target_account_id)", "render_path": null, @@ -141,6 +121,36 @@ "note": "" }, { + "warning_type": "Cross-Site Scripting", + "warning_code": 2, + "fingerprint": "afad51718ae373b2f19d2513029fd2afccf58b9148e475934bc6a162ee33c352", + "check_name": "CrossSiteScripting", + "message": "Unescaped model attribute", + "file": "app/views/admin/disputes/appeals/_appeal.html.haml", + "line": 7, + "link": "https://brakemanscanner.org/docs/warning_types/cross_site_scripting", + "code": "t((Unresolved Model).new.strike.action, :scope => \"admin.strikes.actions\", :name => content_tag(:span, (Unresolved Model).new.strike.account.username, :class => \"username\"), :target => content_tag(:span, (Unresolved Model).new.account.acct, :class => \"target\"))", + "render_path": [ + { + "type": "template", + "name": "admin/disputes/appeals/index", + "line": 16, + "file": "app/views/admin/disputes/appeals/index.html.haml", + "rendered": { + "name": "admin/disputes/appeals/_appeal", + "file": "app/views/admin/disputes/appeals/_appeal.html.haml" + } + } + ], + "location": { + "type": "template", + "template": "admin/disputes/appeals/_appeal" + }, + "user_input": "(Unresolved Model).new.strike", + "confidence": "Weak", + "note": "" + }, + { "warning_type": "Redirect", "warning_code": 18, "fingerprint": "ba568ac09683f98740f663f3d850c31785900215992e8c090497d359a2563d50", @@ -194,7 +204,7 @@ { "type": "template", "name": "admin/trends/links/index", - "line": 37, + "line": 39, "file": "app/views/admin/trends/links/index.html.haml", "rendered": { "name": "admin/trends/links/_preview_card", @@ -213,13 +223,13 @@ { "warning_type": "Mass Assignment", "warning_code": 105, - "fingerprint": "e867661b2c9812bc8b75a5df12b28e2a53ab97015de0638b4e732fe442561b28", + "fingerprint": "f9de0ca4b04ae4b51b74d98db14dcbb6dae6809e627b58e711019cf9b4a47866", "check_name": "PermitAttributes", "message": "Potentially dangerous key allowed for mass assignment", "file": "app/controllers/api/v1/reports_controller.rb", "line": 36, "link": "https://brakemanscanner.org/docs/warning_types/mass_assignment/", - "code": "params.permit(:account_id, :comment, :forward, :status_ids => ([]))", + "code": "params.permit(:account_id, :comment, :category, :forward, :status_ids => ([]), :rule_ids => ([]))", "render_path": null, "location": { "type": "method", @@ -231,6 +241,6 @@ "note": "" } ], - "updated": "2021-11-14 05:26:09 +0100", - "brakeman_version": "5.1.2" + "updated": "2022-02-13 02:24:12 +0100", + "brakeman_version": "5.2.1" } diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml index 3db1bc602..84f5d6666 100644 --- a/config/i18n-tasks.yml +++ b/config/i18n-tasks.yml @@ -62,6 +62,7 @@ ignore_unused: - 'themes.*' - 'statuses.attached.*' - 'move_handler.carry_{mutes,blocks}_over_text' + - 'notification_mailer.*' ignore_inconsistent_interpolations: - '*.one' diff --git a/config/initializers/preload_link_headers.rb b/config/initializers/preload_link_headers.rb index 9f21c45ec..364a7cc1b 100644 --- a/config/initializers/preload_link_headers.rb +++ b/config/initializers/preload_link_headers.rb @@ -2,7 +2,7 @@ # in the Links header per default. # In our case, that will bloat headers too much and potentially cause -# issues with reverse proxies. Furhermore, we don't need those links, +# issues with reverse proxies. Furthermore, we don't need those links, # as we already output them as HTML link tags. Rails.application.config.action_view.preload_links_header = false diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb index 964d4266d..c3733e377 100644 --- a/config/initializers/rack_attack.rb +++ b/config/initializers/rack_attack.rb @@ -82,7 +82,12 @@ class Rack::Attack end throttle('throttle_sign_up_attempts/ip', limit: 25, period: 5.minutes) do |req| - req.remote_ip if req.post? && req.path == '/auth' + if req.post? && req.path == '/auth' + addr = req.remote_ip + addr = IPAddr.new(addr) if addr.is_a?(String) + addr = addr.mask(64) if addr.ipv6? + addr.to_s + end end throttle('throttle_password_resets/ip', limit: 25, period: 5.minutes) do |req| diff --git a/config/locales/activerecord.is.yml b/config/locales/activerecord.is.yml index cdd803318..8ecb02e74 100644 --- a/config/locales/activerecord.is.yml +++ b/config/locales/activerecord.is.yml @@ -24,7 +24,7 @@ is: status: attributes: reblog: - taken: af stöðu er þegar fyrirliggjandi + taken: af færslum er þegar fyrirliggjandi user: attributes: email: diff --git a/config/locales/activerecord.lv.yml b/config/locales/activerecord.lv.yml index f3524811b..ad9fa6604 100644 --- a/config/locales/activerecord.lv.yml +++ b/config/locales/activerecord.lv.yml @@ -3,7 +3,7 @@ lv: activerecord: attributes: poll: - expires_at: Gala termiņš + expires_at: Deadline options: Izvēles user: agreement: Pakalpojuma līgums diff --git a/config/locales/ar.yml b/config/locales/ar.yml index c54fecac1..4501b39e8 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -1,7 +1,7 @@ --- ar: about: - about_hashtag_html: هذه تبويقات متاحة للجمهور تحتوي على الكلمات الدلالية <strong>#%{hashtag}</strong>. يمكنك التفاعل معها إن كان لديك حساب في أي مكان على الفديفرس. + about_hashtag_html: هذه منشورات متاحة للجمهور تحتوي على الكلمات الدلالية <strong>#%{hashtag}</strong>. يمكنك التفاعل معها إن كان لديك حساب في أي مكان على الفديفرس. about_mastodon_html: 'شبكة التواصل الإجتماعية المستقبَليّة: مِن دون إعلانات ، غير خاضعة لرقابة الشركات ، تصميم أخلاقي ولامركزية! بياناتكم مِلك لكم مع ماستدون!' about_this: عن مثيل الخادم هذا active_count_after: نشط @@ -88,14 +88,14 @@ ar: pin_errors: following: يجب أن تكون مِن متابعي حساب الشخص الذي تريد إبرازه posts: - few: تبويقات - many: تبويقات - one: تبويق - other: تبويقات - two: تبويقات - zero: تبويقات - posts_tab_heading: تبويقات - posts_with_replies: التبويقات و الردود + few: منشورات + many: منشورات + one: منشور واحد + other: منشور + two: منشورَيْن + zero: منشور + posts_tab_heading: المنشورات + posts_with_replies: المنشورات والردود roles: admin: المدير bot: روبوت @@ -110,7 +110,6 @@ ar: account_moderation_notes: create: اترك ملاحظة created_msg: تم إنشاء ملاحظة الإشراف بنجاح! - delete: حذف destroyed_msg: تم تدمير ملاحظة الإشراف بنجاح! accounts: add_email_domain_block: حظر نطاق بريد إلكتروني @@ -220,14 +219,15 @@ ar: silence: كتم silenced: تم كتمه statuses: المنشورات - strikes: الضربات السابقة + strikes: العقوبات السابقة subscribe: اشترك + suspend: علّق الحساب suspended: تم تعليقه suspension_irreversible: تم حذف بيانات هذا الحساب بشكل لا رجعة فيه، يمكنك إلغاء تعليق الحساب لجعله قابلا للاستخدام، ولكنه لن يسترد أي بيانات كانت لديه سابقاً. suspension_reversible_hint_html: تم تعليق الحساب، وسيتم إزالة البيانات بالكامل في %{date}، حتى ذلك الحين، يمكن استعادة الحساب دون أي آثار سلبية أي كما أنه لم يحدث أي شيء، إذا كنت ترغب في حذف جميع بيانات الحساب الآن، فيمكنك فعل ذلك أدناه. title: الحسابات unblock_email: إلغاء حظر عنوان البريد الإلكتروني - unblocked_email_msg: تم إلغاء حظر عنوان البريد الإلكتروني %{username} بنجاح + unblocked_email_msg: تم إلغاء حظر عنوان البريد الإلكتروني لـ %{username} بنجاح unconfirmed_email: البريد الإلكتروني غير مؤكد undo_sensitized: التراجع عن حساسية undo_silenced: رفع الصمت @@ -441,13 +441,6 @@ ar: silence: تم كتمه suspend: تم تعليقه show: - affected_accounts: - few: "%{count} حسابات معنية في قاعدة البيانات" - many: "%{count} حسابات معنية في قاعدة البيانات" - one: حساب واحد %{count} معني في قاعدة البيانات - other: "%{count} حسابات معنية في قاعدة البيانات" - two: حسابين %{count} معنيين في قاعدة البيانات - zero: "%{count} حسابات معنية في قاعدة البيانات" retroactive: silence: إلغاء الكتم عن كافة الحسابات المتواجدة على هذا النطاق suspend: إلغاء التعليق المفروض على كافة حسابات هذا النطاق @@ -500,19 +493,13 @@ ar: delivery_error_days: أيام أخطاء التوصيل delivery_error_hint: إذا كان التوصيل غير ممكناً لـ%{count} يوم، فستوضع عليها علامة {غير قابلة للتسليم} تلقائياً. empty: لم يتم العثور على نطاقات. - known_accounts: - few: "%{count} حسابات معروفة" - many: "%{count} حسابات معروفة" - one: حساب معروف %{count} - other: "%{count} حسابات معروفة" - two: "%{count} حسابات معروفة" - zero: "%{count} حسابات معروفة" moderation: all: كافتها limited: محدود title: الإشراف private_comment: تعليق خاص public_comment: تعليق للعلن + purge: تطهير title: الفديرالية total_blocked_by_us: المحجوبة مِن طرفنا total_followed_by_them: يُتابِعونها @@ -551,7 +538,7 @@ ar: disable: تعطيل disabled: مُعطَّل enable: تشغيل - enable_hint: عندما تقوم بتنشيط هذه الميزة، سوف يشترك خادومكم في جميع التبويقات القادمة مِن هذا المُرحِّل و سيشرع كذلك بإرسال كافة التبويقات العمومية إليه. + enable_hint: عندما تقوم بتنشيط هذه الميزة، سوف يشترك خادومكم في جميع المنشورات القادمة مِن هذا المُرحِّل و سيشرع كذلك بإرسال كافة المنشورات العمومية إليه. enabled: مُشغَّل inbox_url: رابط المُرحّل pending: في انتظار تسريح المُرحِّل @@ -575,6 +562,7 @@ ar: zero: "%{count} ملاحظات" action_log: سجل المراجعة action_taken_by: تم اتخاذ الإجراء مِن طرف + add_to_report: أضف المزيد إلى التقرير are_you_sure: هل أنت متأكد ؟ assign_to_self: عين لي assigned: تعين رئيس @@ -583,7 +571,7 @@ ar: comment: none: لا شيء created_at: ذكرت - delete_and_resolve: حذف وحسم + delete_and_resolve: احذف المنشورات forwarded: أُعيد توجيهه forwarded_to: أُعيد توجيهه إلى %{domain} mark_as_resolved: اعتبار الشكوى كمحلولة @@ -602,6 +590,7 @@ ar: reported_by: أبلغ عنه من طرف resolved: معالجة resolved_msg: تم حل تقرير بنجاح! + skip_to_actions: تخطي إلى الإجراءات status: الحالة statuses: المحتوى المبلغ عنه target_origin: مصدر الحساب المبلغ عنه @@ -742,6 +731,7 @@ ar: disallow: رفض الرابط disallow_provider: عدم السماح للناشر title: الروابط المتداولة + usage_comparison: تمت مشاركته %{today} مرات اليوم، مقارنة بـ %{yesterday} بالأمس pending_review: في انتظار المراجعة preview_card_providers: title: الناشرون @@ -758,7 +748,12 @@ ar: not_listable: لن يتم اقتراحه not_trendable: لن يظهر في المتداولة not_usable: لا يمكن استخدامه + peaked_on_and_decaying: بلغ ذروته في %{date}، في تراجع الآن title: الوسوم المتداولة + trendable: السماح بالظهور تحت المتداولة + trending_rank: 'المتداولة #%{rank}' + usable: يمكن استخدامه + usage_comparison: تم استخدامه %{today} مرات اليوم، مقارنة بـ %{yesterday} بالأمس title: المتداوَلة warning_presets: add_new: إضافة واحد جديد @@ -792,7 +787,7 @@ ar: guide_link: https://crowdin.com/project/mastodon guide_link_text: يمكن للجميع المساهمة. sensitive_content: المحتوى الحساس - toot_layout: تصميم التبويق + toot_layout: شكل المنشور application_mailer: notification_preferences: تعديل خيارات البريد الإلكتروني salutation: "%{name}،" @@ -847,7 +842,6 @@ ar: status: account_status: حالة الحساب confirming: في انتظار اكتمال تأكيد البريد الإلكتروني. - functional: حسابك جاهز. pending: إن طلبك قيد المراجعة من قبل فريقنا. قد يستغرق هذا بعض الوقت. سوف تتلقى بريدا إلكترونيا إذا تمت الموافقة على طلبك. redirecting_to: حسابك غير نشط لأنه تم تحويله حاليا إلى %{acct}. too_fast: تم إرسال النموذج بسرعة كبيرة، حاول مرة أخرى. @@ -937,7 +931,7 @@ ar: archive_takeout: date: التاريخ download: تنزيل نسخة لحسابك - hint_html: بإمكانك طلب نسخة كاملة لـ <strong>كافة تبويقاتك و الوسائط التي قمت بنشرها</strong>. البيانات المُصدَّرة ستكون محفوظة على شكل نسق ActivityPub و باستطاعتك قراءتها بأي برنامج يدعم هذا النسق. يُمكنك طلب نسخة كل 7 أيام. + hint_html: بإمكانك طلب نسخة كاملة لـ <strong>كافة منشوراتك والوسائط التي قمت بنشرها</strong>. البيانات المُصدَّرة ستكون محفوظة على شكل نسق ActivityPub و باستطاعتك قراءتها بأي برنامج يدعم هذا النسق. يُمكنك طلب نسخة كل 7 أيام. in_progress: جارٍ انشاء نسخة لبيانات حسابك… request: اطلب نسخة مِن حسابك size: الحجم @@ -1140,6 +1134,8 @@ ar: title: ترقية جديدة status: subject: "%{name} نشر للتو" + update: + subject: قام %{name} بتحرير منشور notifications: email_events: الأحداث للإشعارات عبر البريد الإلكتروني email_events_hint: 'اختر الأحداث التي تريد أن تصِلَك اشعارات عنها:' @@ -1181,7 +1177,7 @@ ar: too_many_options: لا يمكنه أن يحتوي أكثر مِن %{max} عناصر preferences: other: إعدادات أخرى - posting_defaults: التفضيلات الافتراضية لنشر التبويقات + posting_defaults: التفضيلات الافتراضية للنشر public_timelines: الخيوط الزمنية العامة reactions: errors: @@ -1214,16 +1210,16 @@ ar: remote_interaction: favourite: proceed: المواصلة إلى المفضلة - prompt: 'ترغب في إضافة هذا التبويق إلى مفضلتك:' + prompt: 'ترغب في إضافة هذا المنشور إلى مفضلتك:' reblog: proceed: المواصلة إلى الترقية - prompt: 'ترغب في ترقية هذا التبويق:' + prompt: 'ترغب في مشاركة هذا المنشور:' reply: proceed: المواصلة إلى الرد - prompt: 'ترغب في الرد على هذا التبويق:' + prompt: 'ترغب في الرد على هذا المنشور:' scheduled_statuses: - over_daily_limit: لقد تجاوزتَ حد الـ %{limit} تبويقات مُبَرمَجة المسموح بها لذلك اليوم - over_total_limit: لقد بلغت حد الـ %{limit} مِن التبويقات المبرمَجة + over_daily_limit: لقد تجاوزتَ حد الـ %{limit} منشورات مُبَرمَجة مسموح بها اليوم + over_total_limit: لقد بلغت حد الـ %{limit} مِن المنشورات المبرمَجة too_soon: يجب أن يكون تاريخ البرمجة في المستقبَل sessions: activity: آخر نشاط @@ -1315,6 +1311,7 @@ ar: zero: "%{count} فيديوهات" boosted_from_html: تم إعادة ترقيته مِن %{acct_link} content_warning: 'تحذير عن المحتوى: %{warning}' + default_language: نفس لغة الواجهة disallowed_hashtags: few: 'يحتوي على وسوم غير مسموح بها: %{tags}' many: 'يحتوي على وسوم غير مسموح بها: %{tags}' @@ -1322,13 +1319,14 @@ ar: other: 'يحتوي على وسوم غير مسموح بها: %{tags}' two: 'يحتوي على وسوم غير مسموح بها: %{tags}' zero: 'يحتوي على وسوم غير مسموح بها: %{tags}' + edited_at: عُدّل في %{date} errors: in_reply_not_found: إنّ المنشور الذي تحاول الرد عليه غير موجود على ما يبدو. open_in_web: افتح في الويب over_character_limit: تم تجاوز حد الـ %{max} حرف المسموح بها pin_errors: - limit: لقد بلغت الحد الأقصى للتبويقات المدبسة - ownership: لا يمكن تدبيس تبويق نشره شخص آخر + limit: لقد بلغت الحد الأقصى للمنشورات المثبتة + ownership: لا يمكن تثبيت منشور نشره شخص آخر reblog: لا يمكن تثبيت ترقية poll: total_people: @@ -1366,7 +1364,7 @@ ar: exceptions: الاستثناءات explanation: لأن حذف المشاركات عملية مكلفة، يتم ذلك ببطء مع مرور الوقت عندما يكون الخادم غير مشغول. لهذا السبب، يمكن حذف مشاركاتك بعد فترة من بلوغها عتبة السن. ignore_favs: تجاهل المفضلة - ignore_reblogs: تجاهل التعزيزات + ignore_reblogs: تجاهل المشاركات interaction_exceptions: الاستثناءات المبنية على التفاعلات interaction_exceptions_explanation: لاحظ أنه لا يوجد ضمان لحذف الوظائف إذا كانت أقل من عتبة التعزيز المفضلة بعد أن تكون قد ذهبت إليها. keep_direct: الاحتفاظ بالرسائل المباشرة @@ -1393,9 +1391,9 @@ ar: min_favs: إبقاء المشاركات المفضلة أكثر من min_favs_hint: لم تقوم بحذف أي من المشاركات الخاصة بك التي حصلت على أكثر من هذه الكمية من المفضلة. اتركه فارغاً لحذف المشاركات بغض النظر عن عدد المفضلات لديها min_reblogs: إبقاء المشاركات المعززة أكثر من - min_reblogs_hint: لم تقم بحذف أي من مشاركاتك التي تم تعزيزها أكثر من هذا العدد من المرات. اتركه فارغاً لحذف المشاركات بغض النظر عن عدد تعزيزاتها + min_reblogs_hint: لن تُحذف أي من منشوراتك التي أعيد مشاركتها أكثر من هذا العدد من المرات. اتركه فارغاً لحذف المنشورات بغض النظر عن عدد إعادات المشاركة stream_entries: - pinned: تبويق مثبّت + pinned: منشور مثبّت reblogged: رقّاه sensitive_content: محتوى حساس tags: @@ -1492,6 +1490,7 @@ ar: formats: default: "%b %d, %Y, %H:%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: إضافة disable: تعطيل @@ -1522,16 +1521,21 @@ ar: categories: spam: مزعج violation: ينتهك المحتوى المبادئ التوجيهية التالية للمجتمع + explanation: + sensitive: من الآن فصاعدا، سيتم وضع علامة على جميع ملفات الوسائط التي يتم تحميلها على أنها حساسة وستكون مخفية خلف تحذير يُنقر. + silence: لا يزال بإمكانك استخدام حسابك ولكن فقط الأشخاص الذين يتابعونك فقط يمكنهم رؤية منشوراتك على هذا الخادم، وقد يتم استبعادك من ميزات الاكتشاف المختلفة. قد يتبعك آخرون على كل حال يدوياً. + get_in_touch: إذا كنت تعتقد أن هذا خطأ، يمكنك الرد على هذا البريد الإلكتروني للتواصل مع فريق %{instance}. reason: 'السبب:' - review_server_policies: مراجعة شروط السيرفر subject: disable: تم تجميد حسابك %{acct} none: تحذير إلى %{acct} silence: إنّ حسابك %{acct} محدود suspend: لقد تم تعليق حسابك %{acct} title: + delete_statuses: منشورات محذوفة disable: الحساب مُجمَّد none: تحذير + sensitive: الوسائط المخفية silence: الحساب محدود suspend: الحساب مُعلَّق welcome: diff --git a/config/locales/bg.yml b/config/locales/bg.yml index f97d6508f..ba0d2e4a5 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -85,7 +85,6 @@ bg: account_moderation_notes: create: Оставяне на бележка created_msg: Бележката за модерация е създадена успешно! - delete: Изтриване accounts: add_email_domain_block: Блокиране на имейл домейн approve: Одобряване diff --git a/config/locales/bn.yml b/config/locales/bn.yml index dd3eb91d9..5d7f89a70 100644 --- a/config/locales/bn.yml +++ b/config/locales/bn.yml @@ -89,7 +89,6 @@ bn: account_moderation_notes: create: কিছু লিখুন created_msg: প্রশাসনবস্তুত লেখাটি সঠিকভাবে তৈরী হয়েছে! - delete: মুছে ফেলা destroyed_msg: প্রশাসনবস্তুত লেখাটি সঠিকভাবে মুছে ফেলা হয়েছে! accounts: add_email_domain_block: নিষিদ্ধ করা ই-মেইল ডোমেইন diff --git a/config/locales/br.yml b/config/locales/br.yml index 31b8e2c47..5d482b503 100644 --- a/config/locales/br.yml +++ b/config/locales/br.yml @@ -3,6 +3,7 @@ br: about: about_this: Diàr-benn active_count_after: oberiant + api: API apps: Arloadoù pellgomz apps_platforms: Ober get Mastodoñ àr iOS, Android ha savennoù arall contact: Darempred @@ -51,8 +52,6 @@ br: unavailable: Profil dihegerz unfollow: Diheuliañ admin: - account_moderation_notes: - delete: Dilemel accounts: by_domain: Domani change_email: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index a3aa1fb92..6cec7b3f8 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -94,7 +94,6 @@ ca: account_moderation_notes: create: Crea nota created_msg: La nota de moderació s'ha creat correctament! - delete: Suprimeix destroyed_msg: Nota de moderació destruïda amb èxit! accounts: add_email_domain_block: Afegir el domini de correu a la llista negra @@ -163,6 +162,11 @@ ca: not_subscribed: No subscrit pending: Revisió pendent perform_full_suspension: Suspèn + previous_strikes: Accions anteriors + previous_strikes_description_html: + one: Aquest compte té <strong>una</strong> acció. + other: Aquest compte té <strong>%{count}</strong> accions. + zero: Aquest compte està <strong>al dia</strong>. promote: Promociona protocol: Protocol public: Públic @@ -206,6 +210,7 @@ ca: statuses: Tuts strikes: Accions anteriors subscribe: Subscriu + suspend: Suspèn suspended: Suspès suspension_irreversible: Les dades d’aquest compte s’han suprimit irreversiblament. Pots desfer la suspensió del compte per a fer-lo usable però això no recuperarà les dades si és que en tenia. suspension_reversible_hint_html: El compte ha estat suspès i les dades seran totalment suprimides el %{date}. Fins llavors, el compte pot ser restaurat sense problemes. Si vols suprimir immediatament totes les dades del compte, ho pots fer a continuació. @@ -226,6 +231,7 @@ ca: whitelisted: Llista blanca action_logs: action_types: + approve_appeal: Aprova Apel·lació approve_user: Aprova l'usuari assigned_to_self_report: Assigna l'informe change_email_user: Canvia l'adreça electrònica per l'usuari @@ -257,6 +263,7 @@ ca: enable_user: Activa l'usuari memorialize_account: Memoritza el compte promote_user: Promou l'usuari + reject_appeal: Rebutja Apel·lació reject_user: Rebutja l'usuari remove_avatar_user: Eliminar avatar reopen_report: Reobre l'informe @@ -275,6 +282,7 @@ ca: update_domain_block: Actualitza el Bloqueig de Domini update_status: Actualitza l'estat actions: + approve_appeal_html: "%{name} ha aprovat l'apel·lació a la decisió de moderació de %{target}" approve_user_html: "%{name} ha aprovat el registre de %{target}" assigned_to_self_report_html: "%{name} han assignat l'informe %{target} a ells mateixos" change_email_user_html: "%{name} ha canviat l'adreça de correu electrònic del usuari %{target}" @@ -306,6 +314,7 @@ ca: enable_user_html: "%{name} ha activat l'accés del usuari %{target}" memorialize_account_html: "%{name} ha convertit el compte %{target} en una pàgina de memorial" promote_user_html: "%{name} ha promogut l'usuari %{target}" + reject_appeal_html: "%{name} ha rebutjat l'apel·lació a la decisió de moderació de %{target}" reject_user_html: "%{name} ha rebutjat el registre de %{target}" remove_avatar_user_html: "%{name} ha eliminat l'avatar de %{target}" reopen_report_html: "%{name} ha reobert l'informe %{target}" @@ -384,14 +393,17 @@ ca: media_storage: Mèdia new_users: usuaris nous opened_reports: informes oberts + pending_appeals_html: + one: "<strong>%{count}</strong> apel·lació pendent" + other: "<strong>%{count}</strong> apel·lacions pendents" pending_reports_html: - one: "<strong>1</strong> informe pendent" + one: "<strong>%{count}</strong> informe pendent" other: "<strong>%{count}</strong> informes pendents" pending_tags_html: - one: "<strong>1</strong> etiqueta pendent" + one: "<strong>%{count}</strong> etiqueta pendent" other: "<strong>%{count}</strong> etiquetes pendents" pending_users_html: - one: "<strong>1</strong> usuari pendent" + one: "<strong>%{count}</strong> usuari pendent" other: "<strong>%{count}</strong> usuaris pendents" resolved_reports: informes resolts software: Programari @@ -401,6 +413,10 @@ ca: top_languages: Idiomes més actius top_servers: Servidors més actius website: Lloc web + disputes: + appeals: + empty: Cap apel·lació trobada. + title: Apel·lacions domain_allows: add_new: Dominis autoritzats created_msg: El domini ha estat correctament autoritzat @@ -441,6 +457,7 @@ ca: affected_accounts: one: Un compte afectat en la base de dades other: "%{count} comptes afectats en la base de dades" + zero: Cap compte afectat en la base de dades retroactive: silence: Desfés el silenci a tots els comptes existents d'aquest domini suspend: Desfés la suspensió de tots els comptes d'aquest domini @@ -494,6 +511,7 @@ ca: known_accounts: one: "%{count} compte conegut" other: "%{count} comptes coneguts" + zero: Cap compte conegut moderation: all: Totes limited: Limitades @@ -560,10 +578,12 @@ ca: action_log: Registre d'auditoria action_taken_by: Mesures adoptades per actions: + delete_description_html: Les publicacions reportades seran eliminades i un cop serà gravat per ajudar-te a escalar en futures infraccions des d'el mateix compte. other_description_html: Veu més opcions controlant el comportament del compte i personalitza la comunicació al compte reportat. + resolve_description_html: No serà presa cap acció contra el compte reportat, cap cop serà gravat i l'informe es tancarà. silence_description_html: El perfil serà visible només per aquells que ja el seguien o en cerca manual, limitant severament el seu alcanç. Sempre pot ser revertit. suspend_description_html: El perfil i tot el seu contingut esdevindrà inaccessible fins que sigui eventualment esborrat. Interactuar amb el compte serà impossible. Reversible dins de 30 dies. - actions_description_html: 'Si treien el contingut ofensiu de dalt és insuficient:' + actions_description_html: Decideix quina acció a prendre per a resoldre aquest informe. Si prens un acció punitiva contra el compte reportat, se li enviarà una notificació per correu electrònic, excepte quan la categoria <strong>Spam</strong> és seleccionada. add_to_report: Afegir més al informe are_you_sure: N'estàs segur? assign_to_self: Assignar-me @@ -575,7 +595,7 @@ ca: none: Cap comment_description_html: 'Per a donar més informació, %{name} ha escrit:' created_at: Reportat - delete_and_resolve: Esborra i resol + delete_and_resolve: Esborra les publicacions forwarded: Reenviat forwarded_to: Reenviat a %{domain} mark_as_resolved: Marca com a resolt @@ -589,12 +609,14 @@ ca: placeholder: Descriu les accions que s'han pres o qualsevol altra actualització relacionada… title: Notes notes_description_html: Veu i deixa notes als altres moderadors i a tu mateix + quick_actions_description_html: 'Pren una acció ràpida o desplaça''t avall per a veure el contingut reportat:' reopen: Reobre l'informe report: 'Informe #%{id}' reported_account: Compte reportat reported_by: Reportat per resolved: Resolt resolved_msg: Informe resolt amb èxit! + skip_to_actions: Salta a les accions status: Estat statuses: Contingut reportat statuses_description_html: El contingut ofensiu serà citat en comunicació amb el compte reportat @@ -715,6 +737,16 @@ ca: no_status_selected: No s’han canviat els estatus perquè cap no ha estat seleccionat title: Estats del compte with_media: Amb contingut multimèdia + strikes: + actions: + delete_statuses: "%{name} ha eliminat les publicacions de %{target}" + disable: "%{name} ha congelat el compte de %{target}" + none: "%{name} ha enviat un avís a %{target}" + sensitive: "%{name} ha marcat el compte de %{target} com a sensible" + silence: "%{name} ha limitat el compte de %{target}" + suspend: "%{name} ha suspès el compte de %{target}" + appeal_approved: Apel·lat + appeal_pending: Apel·lació pendent system_checks: database_schema_check: message_html: Hi ha pendents migracions de la base de dades. Si us plau executa-les per a assegurar que l'aplicació es comporta com s'espera @@ -739,6 +771,7 @@ ca: shared_by_over_week: one: Compartit per un usuari en la darrera setmana other: Compartit per %{count} usuaris en la darrera setmana + zero: Compartit per ningú en la darrera setmana title: Enllaços en tendència usage_comparison: Compartit %{today} vegades avui, comparat amb %{yesterday} d'ahir pending_review: Revisió pendent @@ -768,6 +801,7 @@ ca: used_by_over_week: one: Emprat per un usuari en la darrera setmana other: Emprat per %{count} usuaris en la darrera setmana + zero: Emprat per ningú en la darrera setmana title: Tendència warning_presets: add_new: Afegir-ne un de nou @@ -776,6 +810,17 @@ ca: empty: Encara no has definit cap preavís. title: Gestiona les configuracions predefinides dels avisos admin_mailer: + new_appeal: + actions: + delete_statuses: eliminar les seves publicacions + disable: congelar els seus comptes + none: un avís + sensitive: marcar els seus comptes com a sensibles + silence: limitar els seus comptes + suspend: suspendre els seus comptes + body: "%{target} està apel·lant una decisió de moderació de %{action_taken_by} el %{date}, del tipus %{type}. Han escrit:" + next_steps: Pots aprovar l'apel·lació per a desfer la decisió de moderació o ignorar-la. + subject: "%{username} està apel·lant una decisió de moderació a %{instance}" new_pending_account: body: A continuació trobaràs els detalls del compte nou. Pots aprovar o rebutjar aquest registre. subject: Nou compte per a revisar a %{instance} (%{username}) @@ -866,7 +911,6 @@ ca: status: account_status: Estat del compte confirming: Esperant que es completi la confirmació del correu electrònic. - functional: El teu compte està completament operatiu. pending: La vostra sol·licitud està pendent de revisió pel nostre personal. Això pot trigar una mica. Rebreu un correu electrònic quan sigui aprovada. redirecting_to: El teu compte és inactiu perquè actualment està redirigint a %{acct}. too_fast: Formulari enviat massa ràpid, torna a provar-ho. @@ -932,6 +976,32 @@ ca: directory: Directori de perfils explanation: Descobreix usuaris segons els teus interessos explore_mastodon: Explora %{title} + disputes: + strikes: + action_taken: Acció presa + appeal: Apel·lació + appeal_approved: L'acció ha estat apel·lada amb èxit i ja no és vàlida + appeal_rejected: L'apel·lació ha estat rebutjada + appeal_submitted_at: Apel·lació tramesa + appealed_msg: La teva apel·lació ha estat emesa. Si és aprovada, seràs notificat. + appeals: + submit: Apel·lació emesa + associated_report: Informe associat + created_at: Datada + recipient: Dirigida a + status: 'Publicació #%{id}' + status_removed: Publicació ja esborrada del sistema + title: "%{action} del %{date}" + title_actions: + delete_statuses: Eliminació de publicació + disable: Congelació del compte + none: Avís + sensitive: Marcant com a sensible el compte + silence: Limitació del compte + suspend: Suspensió del compte + your_appeal_approved: La teva apel·lació s'ha aprovat + your_appeal_pending: Has tramés una apel·lació + your_appeal_rejected: La teva apel·lació ha estat rebutjada domain_validator: invalid_domain: no es un nom de domini vàlid errors: @@ -1143,6 +1213,8 @@ ca: title: Nou impuls status: subject: "%{name} ha publicat" + update: + subject: "%{name} ha editat una publicació" notifications: email_events: Esdeveniments per a notificacions de correu electrònic email_events_hint: 'Selecciona els esdeveniments per als quals vols rebre notificacions:' @@ -1493,6 +1565,15 @@ ca: recovery_instructions_html: Si mai perds l'accés al teu telèfon pots utilitzar un dels codis de recuperació a continuació per a recuperar l'accés al teu compte. <strong>Cal mantenir els codis de recuperació en lloc segur</strong>. Per exemple, imprimint-los i guardar-los amb altres documents importants. webauthn: Claus de seguretat user_mailer: + appeal_approved: + action: Ves al teu compte + explanation: La apel·lació a la acció contra el teu compte del %{strike_date} que has tramés el %{appeal_date} ha estat aprovada. El teu compte està un cop més al dia. + subject: La teva apel·lació de %{date} ha estat aprovada + title: Apel·lació aprovada + appeal_rejected: + explanation: La apel·lació a la acció contra el teu compte del %{strike_date} que has tramés el %{appeal_date} ha estat rebutjada. + subject: La teva apel·lació del %{date} ha estat rebutjada + title: Apel·lació rebutjada backup_ready: explanation: Has sol·licitat una copia completa del teu compte Mastodon. Ara ja està a punt per a descàrrega! subject: El teu arxiu està preparat per a descàrrega @@ -1504,6 +1585,8 @@ ca: subject: Si us plau confirma l’intent d’inici de sessió title: Intent d’inici de sessió warning: + appeal: Trametre una apel·lació + appeal_description: Si creus que això és un error pots emetre una apel·lació al equip de %{instance}. categories: spam: Contingut brossa violation: El contingut viola les següents guies de la comunitat @@ -1515,7 +1598,6 @@ ca: suspend: Ja no pots utilitzar el teu compte i el teu perfil i altres dades ja no son accessibles. Encara pots iniciar sessió per a demanar una copia de les teves dades fins que siguin totalment eliminades als 30 dies però es mantindran les dades bàsiques per evitar que esquivis la suspensió. get_in_touch: Si tu creus que això és un error pots respondre aquest correu electrònic per a contactar amb l'equip de %{instance}. reason: 'Raó:' - review_server_policies: Revisa les polítiques del servidor statuses: 'Publicacions que han estat trobades com a violació:' subject: delete_statuses: Les teves publicacions de %{acct} han estat esborrades diff --git a/config/locales/co.yml b/config/locales/co.yml index 1128caca9..8a6051d05 100644 --- a/config/locales/co.yml +++ b/config/locales/co.yml @@ -94,7 +94,6 @@ co: account_moderation_notes: create: Creà una nota created_msg: Nota di muderazione creata! - delete: Toglie destroyed_msg: Nota di muderazione sguassata! accounts: add_email_domain_block: Mette u duminiu e-mail in lista nera @@ -416,9 +415,6 @@ co: silence: silenzatu suspend: suspesu show: - affected_accounts: - one: Un contu tuccatu indè a database - other: "%{count} conti tuccati indè a database" retroactive: silence: Ùn silenzà più i conti affettati di stu duminiu suspend: Ùn suspende più i conti affettati di stu duminiu @@ -466,9 +462,6 @@ co: delivery_error_days: Ghjorni d'errori di a distribuzione delivery_error_hint: S'ellu ùn si pò distribuì à u duminiu per %{count} ghjorni, sarà autumaticamente marcatu cum'è indistribuibile. empty: Mancun duminiu trovu. - known_accounts: - one: "%{count} contu cunnisciutu" - other: "%{count} conti cunnisciuti" moderation: all: Tuttu limited: Limitatu @@ -778,7 +771,6 @@ co: status: account_status: Statutu di u contu confirming: In attesa di a cumplezzione di a cunfirmazione di l'e-mail. - functional: U vostru contu hè uperaziunale. pending: A vostra dumanda hè in attesa di rivista da a squadra di muderazione. Quessa pò piglià un certu tempu. Avete da riceve un'e-mail s'ella hè appruvata. redirecting_to: U vostru contu hè inattivu perchè riindirizza versu %{acct}. too_fast: Furmulariu mandatu troppu prestu, ripruvate. @@ -1393,7 +1385,6 @@ co: subject: Cunfirmate u tentativu di cunnessione title: Tentativu di cunnessione warning: - review_server_policies: Leghje e pulitiche di u servore subject: disable: U vostru contu %{acct} hè statu ghjacciatu none: Avertimentu pè %{acct} diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 9d807d923..7762890e6 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -102,7 +102,6 @@ cs: account_moderation_notes: create: Zanechat poznámku created_msg: Moderátorská poznámka byla úspěšně vytvořena! - delete: Smazat destroyed_msg: Moderátorská poznámka byla úspěšně zničena! accounts: add_email_domain_block: Blokovat e-mailovou doménu @@ -390,21 +389,6 @@ cs: media_storage: Úložiště médií new_users: noví uživatelé opened_reports: podáno hlášení - pending_reports_html: - few: "<strong>%{count}</strong> čekající hlášení" - many: "<strong>%{count}</strong> čekajících hlášení" - one: "<strong>1</strong> čekající hlášení" - other: "<strong>%{count}</strong> čekajících hlášení" - pending_tags_html: - few: "<strong>%{count}</strong> čekající hashtagy" - many: "<strong>%{count}</strong> čekajících hashtagů" - one: "<strong>1</strong> čekající hashtag" - other: "<strong>%{count}</strong> čekajících hashtagů" - pending_users_html: - few: "<strong>%{count}</strong> čekající uživatelé" - many: "<strong>%{count}</strong> čekajících uživatelů" - one: "<strong>1</strong> čekající uživatel" - other: "<strong>%{count}</strong> čekajících uživatelů" resolved_reports: vyřešeno hlášení software: Software sources: Zdroje registrací @@ -450,11 +434,6 @@ cs: silence: omezena suspend: pozastaveno show: - affected_accounts: - few: "%{count} účty v databázi byly ovlivněny" - many: "%{count} účtů v databázi bylo ovlivněno" - one: Jeden účet v databázi byl ovlivněn - other: "%{count} účtů v databázi bylo ovlivněno" retroactive: silence: Vzít zpět omezení existujících dotčených účtů z této domény suspend: Zrušit pozastavení existujících ovlivněných účtů z této domény @@ -507,11 +486,6 @@ cs: delivery_error_hint: Není-li možné doručení po dobu %{count} dnů, bude automaticky označen za nedoručitelný. destroyed_msg: Data z %{domain} nyní čekají na smazání. empty: Nebyly nalezeny žádné domény. - known_accounts: - few: "%{count} známé účty" - many: "%{count} známých účtů" - one: "%{count} známý účet" - other: "%{count} známých účtů" moderation: all: Všechny limited: Omezený @@ -734,11 +708,6 @@ cs: allow_provider: Povolit vydavatele disallow: Zakázat odkaz disallow_provider: Zakázat vydavatele - shared_by_over_week: - few: Sdílený %{count} lidmi za poslední týden - many: Sdílený %{count} lidmi za poslední týden - one: Sdílený jedním člověkem za poslední týden - other: Sdílený %{count} lidmi za poslední týden title: Populární odkazy usage_comparison: Za dnešek %{today} sdílení, oproti %{yesterday} včera pending_review: Čeká na posouzení @@ -765,11 +734,6 @@ cs: trending_rank: 'Populární #%{rank}' usable: Může být používán usage_comparison: Za dnešek %{today} použití, oproti %{yesterday} včera - used_by_over_week: - few: Použit %{count} lidmi za poslední týden - many: Použit %{count} lidmi za poslední týden - one: Použit jedním člověkem za poslední týden - other: Použit %{count} lidmi za poslední týden title: Trendy warning_presets: add_new: Přidat nové @@ -868,7 +832,6 @@ cs: status: account_status: Stav účtu confirming: Čeká na dokončení potvrzení e-mailu. - functional: Váš účet je zcela funkční. pending: Vaše žádost čeká na posouzení naším personálem. To může nějakou dobu trvat. Pokud bude váš požadavek schválen, obdržíte e-mail. redirecting_to: Váš účet je neaktivní, protože je právě přesměrován na účet %{acct}. too_fast: Formulář byl odeslán příliš rychle, zkuste to znovu. @@ -1520,7 +1483,6 @@ cs: subject: Potvrďte prosím pokus o přihlášení title: Pokus o přihlášení warning: - review_server_policies: Zkontrolujte pravidla serveru subject: disable: Váš účet %{acct} byl zmrazen none: Varování pro %{acct} diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 16fd77cdd..0af3f175d 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -105,7 +105,6 @@ cy: account_moderation_notes: create: Gadael nodyn created_msg: Crewyd nodyn goruwchwylio yn llwyddiannus! - delete: Dileu destroyed_msg: Dinistrwyd nodyn goruwchwylio yn llwyddiannus! accounts: add_email_domain_block: Cosbrestru parth e-bost @@ -332,13 +331,6 @@ cy: silence: tawelu suspend: ataliedig show: - affected_accounts: - few: Effeithiwyd ar %{count} gyfrifon - many: Effeithiwyd ar %{count} gyfrifon - one: Effeithiwyd ar un cyfrif - other: Effeithiwyd ar %{count} gyfrifon - two: Effeithiwyd ar %{count} gyfrifon - zero: Effeithiwyd ar %{count} gyfrifon retroactive: silence: Dad-dawelu pob cyfri presennol o'r parth hwn suspend: Dad-atal pob cyfrif o'r parth hwn sy'n bodoli @@ -361,13 +353,6 @@ cy: instances: by_domain: Parth delivery_available: Mae'r cyflenwad ar gael - known_accounts: - few: "%{count} cyfrifon hysbys" - many: "%{count} cyfrifon hysbys" - one: "%{count} cyfrif hysbys" - other: "%{count} cyfrifon hysbys" - two: "%{count} cyfrifon hysbys" - zero: "%{count} cyfrifon hysbys" moderation: all: Pob limited: Gyfyngedig @@ -623,7 +608,6 @@ cy: status: account_status: Statws cyfrif confirming: Aros i gadarnhad e-bost gael ei gwblhau. - functional: Mae eich cyfrif yn gwbl weithredol. pending: Mae'ch cais yn aros i gael ei adolygu gan ein staff. Gall hyn gymryd cryn amser. Byddwch yn derbyn e-bost os caiff eich cais ei gymeradwyo. redirecting_to: Mae eich cyfrif yn anactif oherwydd ei fod ar hyn o bryd yn ailgyfeirio i %{acct}. trouble_logging_in: Trafferdd mewngofnodi? @@ -1184,7 +1168,6 @@ cy: subject: Cadarnhewch yr ymgais mewngofnodi title: Ymgais mewngofnodi warning: - review_server_policies: Adolygu polisïau'r gweinydd subject: disable: Mae'ch cyfrif %{acct} wedi'i rewi none: Rhybudd am %{acct} diff --git a/config/locales/da.yml b/config/locales/da.yml index c898bee20..d1bc57a88 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -94,7 +94,6 @@ da: account_moderation_notes: create: Læg en note created_msg: Moderatornotat oprettet! - delete: Slet destroyed_msg: Moderatornotat destrueret! accounts: add_email_domain_block: Blokér e-maildomæne @@ -163,6 +162,8 @@ da: not_subscribed: Abonnerer ikke pending: Afventende vurdering perform_full_suspension: Suspendér + previous_strikes_description_html: + zero: Denne kontostatus er <strong>på god fod</strong>. promote: Forfrem protocol: Protokol public: Offentlig @@ -206,6 +207,7 @@ da: statuses: Statusser strikes: Tidligere striber subscribe: Abonnér + suspend: Suspendér suspended: Suspenderet suspension_irreversible: Disse kontodata er blevet slettet permanent. Du kan afsuspendere kontoen for at gøre den brugbar, men dette gendanner ikke de tidligere kontodata. suspension_reversible_hint_html: Kontoen er blevet suspenderet, og dens data fjernes helt d. %{date}. Indtil da kan kontoen genoprettes uden datatab mv. Ønsker alle kontodata fjernet straks, kan dette gøres nedenfor. @@ -226,6 +228,7 @@ da: whitelisted: Tilladt for federering action_logs: action_types: + approve_appeal: Godkend appel approve_user: Godkend bruger assigned_to_self_report: Tildel rapport change_email_user: Skift e-mail for bruger @@ -257,6 +260,7 @@ da: enable_user: Aktivér brugeren memorialize_account: Gør til mindekonto promote_user: Promovér bruger + reject_appeal: Afvis appel reject_user: Afvis bruger remove_avatar_user: Fjern profilbillede reopen_report: Genåbn anmeldelse @@ -275,6 +279,7 @@ da: update_domain_block: Opdatér domæneblokering update_status: Opdatér status actions: + approve_appeal_html: "%{name} godkendte moderationsafgørelsesappellen fra %{target}" approve_user_html: "%{name} godkendte tilmelding fra %{target}" assigned_to_self_report_html: "%{name} tildelte sig selv anmeldelsen %{target}" change_email_user_html: "%{name} ændrede e-mailadressen for bruger %{target}" @@ -306,6 +311,7 @@ da: enable_user_html: "%{name} aktiverede indlogning for brugeren %{target}" memorialize_account_html: "%{name} gjorde %{target}s konto til en mindeside" promote_user_html: "%{name} forfremmede brugeren %{target}" + reject_appeal_html: "%{name} afviste moderationsafgørelsesappellen fra %{target}" reject_user_html: "%{name} afviste tilmelding fra %{target}" remove_avatar_user_html: "%{name} fjernede %{target}s profilbillede" reopen_report_html: "%{name} genåbnede anmeldelsen %{target}" @@ -384,14 +390,17 @@ da: media_storage: Medielagerplads new_users: nye brugere opened_reports: rapporter åbnet + pending_appeals_html: + one: "<strong>%{count}</strong> afventende appel" + other: "<strong>%{count}</strong> afventende appeller" pending_reports_html: - one: "<strong>1</strong> afventende rapport" - other: "<strong>%{count}</strong> afventende rapporter" + one: "<strong>%{count}</strong> afventende anmeldelse" + other: "<strong>%{count}</strong> afventende anmeldelser" pending_tags_html: - one: "<strong>1</strong> afventende hashtag" + one: "<strong>%{count}</strong> afventende hashtag" other: "<strong>%{count}</strong> afventende hashtags" pending_users_html: - one: "<strong>1</strong> afventende bruger" + one: "<strong>%{count}</strong> afventende bruger" other: "<strong>%{count}</strong> afventende brugere" resolved_reports: anmeldelser løst software: Software @@ -401,6 +410,10 @@ da: top_languages: Mest aktive sprog top_servers: Mest aktive servere website: Websted + disputes: + appeals: + empty: Ingen appeller fundet. + title: Appeller domain_allows: add_new: Tillade federering med domæne created_msg: Domæne er blevet tilladt federering @@ -439,8 +452,9 @@ da: suspend: suspenderet show: affected_accounts: - one: En konto i databasen påvirket + one: Én konto i databasen påvirket other: "%{count} konti i databasen påvirket" + zero: Ingen konto i databasen påvirket retroactive: silence: Fjern tavsgøring for eksisterende, berørte konti fra dette domæne suspend: Fjern suspendering for eksisterende, berørte konti fra dette domæne @@ -494,6 +508,7 @@ da: known_accounts: one: "%{count} kendt konto" other: "%{count} kendte konti" + zero: Ingen kendt konto moderation: all: Alle limited: Begrænset @@ -563,7 +578,7 @@ da: other_description_html: Se flere muligheder for kontoadfærdsstyring og kommunikationstilpasning til den anmeldte konto. silence_description_html: Profilen vil kun være synlig for dem, som allerede følger den eller manuelt slå den op, hvilket markant begrænse dens rækkevidde. Kan altid omgøres. suspend_description_html: Profilen inkl. alt indhold gøres utilgængelig, indtil den til sidst slettes. Interaktion med kontoen vil være umulig. Reversible inden for 30 dage. - actions_description_html: 'Hvis fjernelse af det krænkende indhold ovenfor er utilstrækkelig:' + actions_description_html: Afgør, hvilke foranstaltning, der skal træffes for at løse denne anmeldelse. Træffes en straffende foranstaltning mod den anmeldte konto, fremsendes en e-mailnotifikation, undtagen når kategorien <strong>Spam</strong> er valgt. add_to_report: Føj mere til anmeldelse are_you_sure: Sikker? assign_to_self: Tildel til mig @@ -575,7 +590,7 @@ da: none: Ingen comment_description_html: 'For at give mere information, skrev %{name}:' created_at: Anmeldt - delete_and_resolve: Løs og slet + delete_and_resolve: Slet indlæg forwarded: Videresendt forwarded_to: Videresendt til %{domain} mark_as_resolved: Markér som løst @@ -589,12 +604,14 @@ da: placeholder: Beskriv de udførte handlinger eller andre relevante opdateringer... title: Notater notes_description_html: Se og skriv notater til andre moderatorer og dit fremtid selv + quick_actions_description_html: 'Træf en hurtig foranstaltning eller rul ned for at se anmeldt indhold:' reopen: Genåbn anmeldelse report: 'Anmeldelse #%{id}' reported_account: Anmeldt konto reported_by: Anmeldt af resolved: Løst resolved_msg: Anmeldelse er nu løst! + skip_to_actions: Overspring til handlinger status: Status statuses: Anmeld indhold statuses_description_html: Krænkende indhold refereres i kommunikationen med den anmeldte konto @@ -715,6 +732,16 @@ da: no_status_selected: Ingen indlæg ændret, da ingen var valgt title: Kontoindlæg with_media: Med medier + strikes: + actions: + delete_statuses: "%{name} slettede %{target}s indlæg" + disable: "%{name} frøs %{target}s konto" + none: "%{name} sendte en advarsel til %{target}" + sensitive: "%{name} markerede %{target}s konto som sensitiv" + silence: "%{name} begrænsede %{target}s konto" + suspend: "%{name} suspenderede %{target}s konto" + appeal_approved: Appelleret + appeal_pending: Appel afventer system_checks: database_schema_check: message_html: Databasemigreringer afventer. Kør dem for at sikre den forventede adfærd fra applikationen @@ -737,8 +764,9 @@ da: disallow: Tillad ikke link disallow_provider: Tillad ikke udgiver shared_by_over_week: - one: Delt af én person i løbet af den sidste uge - other: Delt af %{count} personer i løbet af den sidste uge + one: Delt af én person i løbet af den seneste uge + other: Delt af %{count} personer i løbet af den seneste uge + zero: Ikke delt af nogen i løbet af den seneste uge title: Populære links usage_comparison: Delt %{today} gange i dag, sammenlignet med %{yesterday} i går pending_review: Afventende vurdering @@ -766,8 +794,9 @@ da: usable: Kan bruges usage_comparison: Brugt %{today} gange i dag, sammenlignet med %{yesterday} i går used_by_over_week: - one: Brugt af én person i løbet af den sidste uge - other: Brugt af %{count} personer i løbet af den sidste uge + one: Brugt af én person i løbet af den seneste uge + other: Brugt af %{count} personer i løbet af den seneste uge + zero: Ikke brugt af nogen i løbet af den seneste uge title: Trends warning_presets: add_new: Tilføj ny @@ -776,6 +805,17 @@ da: empty: Ingen advarselsforvalg defineret endnu. title: Håndtérr advarselsforvalg admin_mailer: + new_appeal: + actions: + delete_statuses: for sletning af vedkommendes indlæg + disable: for frysning af vedkommendes konto + none: en advarsel + sensitive: for markering af vedkommendes konto som sensitiv + silence: for begrænsning af vedkommendes konto + suspend: for suspendering af vedkommendes konto + body: "%{target} appellerer en moderationsbeslutning fra %{action_taken_by} pr. %{date}, der var %{type}. Vedkommende skrev:" + next_steps: Appellen kan godkendes for at fortryde moderationsbeslutningen eller den ignoreres. + subject: "%{username} appellerer en moderationsbeslutning for %{instance}" new_pending_account: body: Detaljerne for den nye konto fremgår nedenfor. Du kan godkende eller afvise denne ansøgning. subject: Ny konto til gennemgang på %{instance} (%{username}) @@ -866,7 +906,6 @@ da: status: account_status: Kontostatus confirming: Afventer færdiggørelse af e-mailbekræftelse. - functional: Din konto er fuldt operationel. pending: Din ansøgning afventer gennemgang af vores medarbejdere. Dette kan tage noget tid. Du modtager en e-mail, hvis din ansøgning godkendes. redirecting_to: Din konto er inaktiv, da den pt. er omdirigerer til %{acct}. too_fast: Formularen indsendt for hurtigt, forsøg igen. @@ -932,6 +971,31 @@ da: directory: Profilliste explanation: Find brugere baseret på deres interesser explore_mastodon: Uforsk %{title} + disputes: + strikes: + action_taken: Handling foretaget + appeal: Appel + appeal_rejected: Appellen er afvist + appeal_submitted_at: Appel indgivet + appealed_msg: Din appel er indgivet. Godkendes den, underrettes du. + appeals: + submit: Indgiv appel + associated_report: Tilknyttet anmeldelse + created_at: Dateret + recipient: Adresseret til + status: 'Indlæg #%{id}' + status_removed: Indlæg allerede fjernet fra system + title: "%{action} pr. %{date}" + title_actions: + delete_statuses: Indlægsfjernelse + disable: Kontofrysning + none: Advarsel + sensitive: Markering som sensitiv konto + silence: Kontobegrænsning + suspend: Kontosuspendering + your_appeal_approved: Din appel er godkendt + your_appeal_pending: Du har indgivet en appel + your_appeal_rejected: Din appel er afvist domain_validator: invalid_domain: er ikke et gyldigt domænenavn errors: @@ -1143,6 +1207,8 @@ da: title: Nyt boost status: subject: "%{name} har netop postet" + update: + subject: "%{name} redigerede et indlæg" notifications: email_events: Begivenheder for e-mailnotifikationer email_events_hint: 'Vælg begivenheder, som notifikationer skal modtages for:' @@ -1413,6 +1479,13 @@ da: recovery_instructions_html: Mister du nogensinde adgang til din mobil, kan du bruge en af gendannelseskoderne nedenfor til at opnå adgang til din konto. <strong>Opbevar gendannelseskoderne et sikkert sted</strong>. Du kan f.eks. udskrive dem, og gemme dem sammen med andre vigtige dokumenter. webauthn: Sikkerhedsnøgler user_mailer: + appeal_approved: + action: Gå til din konto + subject: Din appel pr. %{date} er godkendt + title: Appel godkendt + appeal_rejected: + subject: Din appel pr. %{date} er afvist + title: Appel afvist backup_ready: explanation: Den anmodede fulde sikkerhedskopi af din Mastodon-konto er nu klar til download! subject: Dit arkiv er klar til download @@ -1424,6 +1497,8 @@ da: subject: Bekræft indlogningsforsøg title: Indlogningsforsøg warning: + appeal: Indgiv appel + appeal_description: Mener du, at dette er en fejl, kan der indgives en appel til personalet på %{instance}. categories: spam: Spam violation: Indhold overtræder flg. fællesskabsretningslinjer @@ -1435,7 +1510,6 @@ da: suspend: Din konto kan ikke længere bruges, og hverken profil eller øvrige data kan tilgås. Du kan stadig logge ind for at anmode om en sikkerhedskopi af dine data, indtil disse om ca. 30 er helt slettet. Visse data bevares dog mhp. at forhindre dig i at omgå udelukkelsen. get_in_touch: Anses dette som en fejl, kan denne e-mail besvares for at komme i kontakt med personalet på %{instance}. reason: 'Årsag:' - review_server_policies: Gennemgå serverpolitikker statuses: 'Indlæg fundet i krænkelse:' subject: delete_statuses: Dine indlæg på %{acct} er blevet fjernet diff --git a/config/locales/de.yml b/config/locales/de.yml index 6d0865026..edb918e67 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -94,7 +94,6 @@ de: account_moderation_notes: create: Notiz erstellen created_msg: Moderationsnotiz erfolgreich erstellt! - delete: Löschen destroyed_msg: Moderationsnotiz erfolgreich gelöscht! accounts: add_email_domain_block: E-Mail-Domain blacklisten @@ -163,6 +162,11 @@ de: not_subscribed: Nicht abonniert pending: In Warteschlange perform_full_suspension: Verbannen + previous_strikes: Vorherige Strikes + previous_strikes_description_html: + one: Dieses Konto hat <strong>einen</strong> Strike. + other: Dieses Konto hat <strong>%{count}</strong> Strikes. + zero: Dieses Konto ist <strong>in gutem Stand</strong>. promote: Befördern protocol: Protokoll public: Öffentlich @@ -206,6 +210,7 @@ de: statuses: Beiträge strikes: Vorherige Strikes subscribe: Abonnieren + suspend: Suspendieren suspended: Verbannt suspension_irreversible: Die Daten dieses Kontos wurden unwiderruflich gelöscht. Du kannst das Konto aufheben, um es brauchbar zu machen, aber es wird keine Daten wiederherstellen, die es davor schon hatte. suspension_reversible_hint_html: Das Konto wurde gesperrt und die Daten werden am %{date} vollständig gelöscht. Bis dahin kann das Konto ohne irgendwelche negativen Auswirkungen wiederhergestellt werden. Wenn du alle Daten des Kontos sofort entfernen möchtest, kannst du dies nachfolgend tun. @@ -226,6 +231,7 @@ de: whitelisted: Auf der Whitelist action_logs: action_types: + approve_appeal: Einspruch annehmen approve_user: Benutzer genehmigen assigned_to_self_report: Bericht zuweisen change_email_user: E-Mail des Benutzers ändern @@ -257,6 +263,7 @@ de: enable_user: Benutzer aktivieren memorialize_account: Account deaktivieren promote_user: Benutzer befördern + reject_appeal: Einspruch ablehnen reject_user: Benutzer ablehnen remove_avatar_user: Profilbild entfernen reopen_report: Meldung wieder eröffnen @@ -275,6 +282,7 @@ de: update_domain_block: Domain Block aktualisieren update_status: Beitrag aktualisieren actions: + approve_appeal_html: "%{name} genehmigte die Moderationsbeschlüsse von %{target}" approve_user_html: "%{name} genehmigte die Anmeldung von %{target}" assigned_to_self_report_html: "%{name} hat sich die Meldung %{target} selbst zugewiesen" change_email_user_html: "%{name} hat die E-Mail-Adresse des Nutzers %{target} geändert" @@ -306,6 +314,7 @@ de: enable_user_html: "%{name} hat Zugang von Benutzer_in %{target} aktiviert" memorialize_account_html: "%{name} hat das Konto von %{target} in eine Gedenkseite umgewandelt" promote_user_html: "%{name} hat %{target} befördert" + reject_appeal_html: "%{name} hat die Moderationsbeschlüsse von %{target} abgelehnt" reject_user_html: "%{name} hat die Registrierung von %{target} abgelehnt" remove_avatar_user_html: "%{name} hat das Profilbild von %{target} entfernt" reopen_report_html: "%{name} hat die Meldung %{target} wieder geöffnet" @@ -384,15 +393,6 @@ de: media_storage: Medienspeicher new_users: Neue Benutzer opened_reports: Erstellte Meldungen - pending_reports_html: - one: "<strong>1</strong> ausstehende Meldung" - other: "<strong>%{count}</strong> ausstehende Meldungen" - pending_tags_html: - one: "<strong>1</strong> ausstehender Hashtag" - other: "<strong>%{count}</strong> ausstehende Hashtags" - pending_users_html: - one: "<strong>1</strong> ausstehender Benutzer" - other: "<strong>%{count}</strong> ausstehende Benutzer" resolved_reports: Gelöste Meldungen software: Software sources: Registrierungsquellen @@ -401,6 +401,10 @@ de: top_languages: Top aktive Sprachen top_servers: Top aktive Server website: Website + disputes: + appeals: + empty: Keine Einsprüche gefunden. + title: Einsprüche domain_allows: add_new: Whitelist-Domain created_msg: Domain wurde erfolgreich zur Whitelist hinzugefügt @@ -438,9 +442,6 @@ de: silence: stummgeschaltet suspend: gesperrt show: - affected_accounts: - one: Ein Konto in der Datenbank betroffen - other: "%{count} Konten in der Datenbank betroffen" retroactive: silence: Alle existierenden Konten dieser Domain nicht mehr stummschalten suspend: Alle existierenden Konten dieser Domain entsperren @@ -491,9 +492,6 @@ de: delivery_error_hint: Wenn eine Lieferung für %{count} Tage nicht möglich ist, wird sie automatisch als nicht lieferbar markiert. destroyed_msg: Daten von %{domain} sind nun in der Warteschlange für die bevorstehende Löschung. empty: Keine Domains gefunden. - known_accounts: - one: "%{count} bekanntes Konto" - other: "%{count} bekannte Konten" moderation: all: Alle limited: Beschränkt @@ -560,10 +558,12 @@ de: action_log: Überprüfungsprotokoll action_taken_by: Maßnahme ergriffen durch actions: + delete_description_html: Der gemeldete Beitrag wird gelöscht und ein Strike wird aufgezeichnet, um dir bei zukünftigen Verstößen des gleichen Accounts zu helfen. other_description_html: Weitere Optionen zur Kontrolle des Kontoverhaltens und zur Anpassung der Kommunikation an das gemeldete Konto. + resolve_description_html: Es wird keine Maßnahme gegen den gemeldeten Account ergriffen, es wird kein Strike verzeichnet und die Meldung wird geschlossen. silence_description_html: Das Profil wird nur für diejenigen sichtbar sein, die es bereits verfolgen oder manuell nachschlagen und die Reichweite wird stark begrenzt. Kann immer rückgängig gemacht werden. suspend_description_html: Das Profil und alle seine Inhalte werden unzugänglich werden, bis es schließlich gelöscht wird. Interaktion mit dem Konto wird unmöglich sein. Reversibel innerhalb von 30 Tagen. - actions_description_html: 'Wenn das Entfernen des obigen Inhalts nicht ausreicht:' + actions_description_html: Entscheide, welche Maßnahmen zur Lösung dieses Berichts zu ergreifen sind. Wenn du eine Strafmaßnahme gegen das gemeldete Konto ergreifst, wird eine E-Mail-Benachrichtigung an diese gesendet außer wenn die <strong>Spam</strong> Kategorie ausgewählt ist. add_to_report: Mehr zur Meldung hinzufügen are_you_sure: Bist du dir sicher? assign_to_self: Mir zuweisen @@ -575,7 +575,7 @@ de: none: Kein comment_description_html: 'Um weitere Informationen bereitzustellen, schrieb %{name} folgendes:' created_at: Gemeldet - delete_and_resolve: Löschen und auflösen + delete_and_resolve: Beiträge löschen forwarded: Weitergeleitet forwarded_to: Weitergeleitet an %{domain} mark_as_resolved: Als gelöst markieren @@ -589,12 +589,14 @@ de: placeholder: Beschreibe, welche Maßnahmen ergriffen wurden oder irgendwelche andere Neuigkeiten… title: Notizen notes_description_html: Zeige und hinterlasse Notizen an andere Moderatoren und dein zukünftiges Selbst + quick_actions_description_html: 'Führe eine schnelle Aktion aus oder scrolle nach unten, um gemeldete Inhalte zu sehen:' reopen: Meldung wieder eröffnen report: 'Meldung #%{id}' reported_account: Gemeldetes Konto reported_by: Gemeldet von resolved: Gelöst resolved_msg: Meldung erfolgreich gelöst! + skip_to_actions: Zu Aktionen springen status: Zustand statuses: Gemeldeter Inhalt statuses_description_html: Störende Inhalte werden in der Kommunikation mit dem gemeldeten Konto zitiert @@ -715,6 +717,16 @@ de: no_status_selected: Keine Beiträge wurden geändert, weil keine ausgewählt wurden title: Beiträge des Kontos with_media: Mit Medien + strikes: + actions: + delete_statuses: "%{name} hat die Beiträge von %{target} entfernt" + disable: "%{name} hat das Konto von %{target} eingefroren" + none: "%{name} hat eine Warnung an %{target} gesendet" + sensitive: "%{name} markierte %{target}'s Konto als NSFW" + silence: "%{name} hat das Konto von %{target} eingeschränkt" + suspend: "%{name} hat das Konto von %{target} verbannt" + appeal_approved: Einspruch angenommen + appeal_pending: Einspruch ausstehend system_checks: database_schema_check: message_html: Es gibt ausstehende Datenbankmigrationen. Bitte führen Sie sie aus, um sicherzustellen, dass sich die Anwendung wie erwartet verhält @@ -736,9 +748,6 @@ de: allow_provider: Erlaube Herausgeber disallow: Verbiete Link disallow_provider: Verbiete Herausgeber - shared_by_over_week: - one: In der letzten Woche geteilt von einer Person - other: In der letzten Woche geteilt von %{count} Personen title: Angesagte Links usage_comparison: Heute %{today} mal geteilt, gestern %{yesterday} mal pending_review: Überprüfung ausstehend @@ -760,14 +769,11 @@ de: not_trendable: Wird nicht unter Trends angezeigt not_usable: Kann nicht verwendet werden peaked_on_and_decaying: In den Trends am %{date}, jetzt absteigend - title: Beliebtes Hashtags + title: Angesagte Hashtags trendable: Darf unter Trends erscheinen trending_rank: 'Trend #%{rank}' usable: Kann verwendet werden usage_comparison: Heute %{today} mal genutzt, gestern %{yesterday} mal - used_by_over_week: - one: In der letzten Woche genutzt von einer Person - other: In der letzten Woche genutzt von %{count} Personen title: Trends warning_presets: add_new: Neu hinzufügen @@ -776,6 +782,17 @@ de: empty: Du hast noch keine Warnungsvorlagen hinzugefügt. title: Warnungsvorlagen verwalten admin_mailer: + new_appeal: + actions: + delete_statuses: deren Beiträge zu löschen + disable: deren Konto einzufrieren + none: eine Warnung + sensitive: deren Konto als NSFW zu markieren + silence: deren Konto zu beschränken + suspend: deren Konto zu sperren + body: "%{target} hat was gegen eine Moderationsentscheidung von %{action_taken_by} von %{date}, die %{type} war. Die Person schrieb:" + next_steps: Du kannst dem Einspruch zustimmen und die Moderationsentscheidung rückgängig machen oder ignorieren. + subject: "%{username} hat Einspruch an einer Moderationsentscheidung von %{instance}" new_pending_account: body: Die Details von diesem neuem Konto sind unten. Du kannst die Anfrage akzeptieren oder ablehnen. subject: Neues Konto zur Überprüfung auf %{instance} verfügbar (%{username}) @@ -866,7 +883,6 @@ de: status: account_status: Kontostatus confirming: Warte auf die Bestätigung der E-Mail. - functional: Dein Konto ist voll funktionsfähig. pending: Deine Bewerbung wird von unseren Mitarbeitern noch überprüft. Dies kann einige Zeit dauern. Du erhältst eine E-Mail, wenn deine Bewerbung genehmigt wurde. redirecting_to: Dein Konto ist inaktiv, da es derzeit zu %{acct} umgeleitet wird. too_fast: Formular zu schnell gesendet, versuchen Sie es erneut. @@ -932,6 +948,32 @@ de: directory: Profilverzeichnis explanation: Entdecke Benutzer basierend auf deren Interessen explore_mastodon: Entdecke %{title} + disputes: + strikes: + action_taken: Maßnahme ergriffen + appeal: Einspruch + appeal_approved: Dieser Strike wurde erfolgreich beeinsprucht und ist nicht mehr gültig + appeal_rejected: Der Einspruch wurde abgelehnt + appeal_submitted_at: Einspruch eingelegt + appealed_msg: Dein Einspruch wurde abgesendet. Wenn er angenommen wird, wirst du benachrichtigt. + appeals: + submit: Einspruch erheben + associated_report: Zugehöriger Bericht + created_at: Datum + recipient: Adressiert an + status: 'Beitrag #%{id}' + status_removed: Beitrag bereits vom System entfernt + title: "%{action} vom %{date}" + title_actions: + delete_statuses: Post-Entfernung + disable: Einfrieren des Kontos + none: Warnung + sensitive: Als NSFW markieren + silence: Kontobeschränkung + suspend: Kontosperre + your_appeal_approved: Dein Einspruch wurde angenommen + your_appeal_pending: Du hast Einspruch eingelegt + your_appeal_rejected: Dein Einspruch wurde abgelehnt domain_validator: invalid_domain: ist kein gültiger Domain-Name errors: @@ -1143,6 +1185,8 @@ de: title: Dein Beitrag wurde geteilt status: subject: "%{name} hat gerade etwas gepostet" + update: + subject: "%{name} bearbeitete einen Beitrag" notifications: email_events: Ereignisse für E-Mail-Benachrichtigungen email_events_hint: 'Wähle Ereignisse, für die du Benachrichtigungen erhalten möchtest:' @@ -1495,6 +1539,15 @@ de: recovery_instructions_html: Wenn du den Zugang zu deinem Telefon verlieren solltest, kannst du einen untenstehenden Wiederherstellungscode benutzen, um wieder auf dein Konto zugreifen zu können. <strong>Bewahre die Wiederherstellungscodes gut auf.</strong> Du könntest sie beispielsweise ausdrucken und bei deinen restlichen wichtigen Dokumenten aufbewahren. webauthn: Sicherheitsschlüssel user_mailer: + appeal_approved: + action: Gehe zu deinem Konto + explanation: Der Einspruch gegen dem Strike vom %{strike_date}, den du am %{appeal_date} eingereicht hast, wurde genehmigt. Dein Konto ist wieder in gutem Zustand. + subject: Dein Einspruch vom %{date} wurde angenommen + title: Einspruch angenommen + appeal_rejected: + explanation: Der Einspruch gegen dem Strike vom %{strike_date}, den du am %{appeal_date} eingereicht hast, wurde abgelehnt. + subject: Dein Einspruch vom %{date} wurde abgelehnt + title: Einspruch abgelehnt backup_ready: explanation: Du hast ein vollständiges Backup von deinem Mastodon-Konto angefragt. Es kann jetzt heruntergeladen werden! subject: Dein Archiv ist bereit zum Download @@ -1506,6 +1559,8 @@ de: subject: Bitte bestätige den Anmeldeversuch title: Anmeldeversuch warning: + appeal: Einspruch einsenden + appeal_description: Wenn du glaubst, dass dies ein Fehler ist, kannst du einen Einspruch an die Mitarbeiter von %{instance} senden. categories: spam: Spam violation: Inhalt verletzt die folgenden Community-Richtlinien @@ -1517,7 +1572,6 @@ de: suspend: Du kannst dein Konto nicht mehr verwenden und dein Profil und andere Daten sind nicht mehr verfügbar. Du kannst dich immer noch anmelden, um ein Backup deiner Daten anzufordern, bis die Daten innerhalb von 30 Tagen vollständig gelöscht wurden. Allerdings werden wir einige Daten speichern, um zu verhindern, dass du die Sperrung umgehst. get_in_touch: Wenn du glaubst, dass dies ein Fehler ist, kannst auf diese E-Mail antworten, um mit den Mitarbeitern von %{instance} in Kontakt zu treten. reason: 'Grund:' - review_server_policies: Serverrichtlinien ansehen statuses: 'Beiträge, die in Verletzung gefunden wurden:' subject: delete_statuses: Deine Beiträge auf %{acct} wurden entfernt diff --git a/config/locales/devise.th.yml b/config/locales/devise.th.yml index e53c0f895..14f99f2c3 100644 --- a/config/locales/devise.th.yml +++ b/config/locales/devise.th.yml @@ -55,7 +55,7 @@ th: subject: 'Mastodon: เปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยแล้ว' title: เปิดใช้งาน 2FA แล้ว two_factor_recovery_codes_changed: - explanation: ยกเลิกรหัสกู้คืนก่อนหน้าและสร้างรหัสใหม่แล้ว + explanation: ยกเลิกรหัสกู้คืนก่อนหน้านี้และสร้างรหัสใหม่แล้ว subject: 'Mastodon: สร้างรหัสกู้คืนสองปัจจัยใหม่แล้ว' title: เปลี่ยนรหัสกู้คืน 2FA แล้ว unlock_instructions: diff --git a/config/locales/doorkeeper.fr.yml b/config/locales/doorkeeper.fr.yml index 6ebe93b9c..fde6c1a2e 100644 --- a/config/locales/doorkeeper.fr.yml +++ b/config/locales/doorkeeper.fr.yml @@ -138,12 +138,12 @@ fr: read:notifications: voir vos notifications read:reports: voir vos signalements read:search: rechercher en votre nom - read:statuses: voir tous les statuts + read:statuses: voir tous les messages write: modifier toutes les données de votre compte write:accounts: modifier votre profil write:blocks: bloquer des comptes et des domaines - write:bookmarks: statuts des marque-pages - write:favourites: mettre des statuts en favori + write:bookmarks: mettre des messages en marque-pages + write:favourites: mettre des messages en favori write:filters: créer des filtres write:follows: suivre des personnes write:lists: créer des listes @@ -151,4 +151,4 @@ fr: write:mutes: masquer des comptes et des conversations write:notifications: effacer vos notifications write:reports: signaler d’autres personnes - write:statuses: publier des statuts + write:statuses: publier des messages diff --git a/config/locales/doorkeeper.is.yml b/config/locales/doorkeeper.is.yml index 17ea34206..c5071f425 100644 --- a/config/locales/doorkeeper.is.yml +++ b/config/locales/doorkeeper.is.yml @@ -138,12 +138,12 @@ is: read:notifications: sjá tilkynningarnar þínar read:reports: skoða skýrslurnar þína read:search: leita fyrir þína hönd - read:statuses: sjá allar stöðufærslur + read:statuses: sjá allar færslur write: breyta öllum gögnum á notandaaðgangnum þínum write:accounts: breyta notandasniðinu þínu write:blocks: útiloka notandaaðganga og lén - write:bookmarks: bókamerkja stöðufærslur - write:favourites: setja stöðufærslur í eftirlæti + write:bookmarks: bókamerkja færslur + write:favourites: setja færslur í eftirlæti write:filters: útbúa síur write:follows: fylgjast með fólki write:lists: búa til lista @@ -151,4 +151,4 @@ is: write:mutes: þagga niður í fólki og samtölum write:notifications: hreinsa tilkynningarnar þínar write:reports: kæra annað fólk - write:statuses: gefa út stöður + write:statuses: gefa út færslur diff --git a/config/locales/el.yml b/config/locales/el.yml index f1bdf34a8..8bc71c0b7 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -93,7 +93,6 @@ el: account_moderation_notes: create: Άφησε σημείωση created_msg: Επιτυχής δημιουργία σημειώματος μεσολάβησης! - delete: Διαγραφή destroyed_msg: Επιτυχής καταστροφή σημειώματος μεσολάβησης! accounts: add_email_domain_block: Εγγραφή τομέα email σε μαύρη λίστα @@ -197,6 +196,7 @@ el: silenced: Αποσιωπημένοι statuses: Καταστάσεις subscribe: Εγγραφή + suspend: Αναστολή suspended: Σε αναστολή suspension_irreversible: Τα δεδομένα αυτού του λογαριασμού έχουν διαγραφεί οριστικά. Μπορείς να άρεις την αναστολή του λογαριασμού για να μπορέσει να χρησιμοποιηθεί αλλά αυτό δεν θα επαναφέρει όσα δεδομένα είχε προηγουμένως. suspension_reversible_hint_html: Ο λογαριασμός έχει ανασταλλεί και τα δεδομένα του θα διαγραφούν πλήρως στις %{date}. Μέχρι τότε ο λογαριασμός μπορεί να επανέλθει κανονικά. Αν θέλεις να διαγράψεις όλα τα δεδομένα του λογαριασμού, μπορείς να το κάνεις παρακάτω. @@ -217,6 +217,7 @@ el: whitelisted: Εγκεκριμένοι action_logs: action_types: + approve_appeal: Έγκριση Έφεσης approve_user: Έγκριση Χρήστη assigned_to_self_report: Ανάθεση Αναφοράς change_email_user: Αλλαγή email για χρήστη @@ -244,6 +245,7 @@ el: enable_user: Ενεργοποίηση Χρήστη memorialize_account: Μετατροπή Λογαριασμού σε Αναμνηστικό promote_user: Προαγωγή Χρήστη + reject_appeal: Απόρριψη Έφεσης reject_user: Απόρριψη Χρήστη remove_avatar_user: Αφαίρεση Avatar reopen_report: Ξανάνοιγμα Καταγγελίας @@ -321,18 +323,12 @@ el: updated_msg: Επιτυχής ενημέρωση του emoji! upload: Ανέβασμα dashboard: - pending_reports_html: - one: "<strong>1</strong> εκκρεμής αναφορά" - other: "<strong>%{count}</strong> εκκρεμείς αναφορές" - pending_tags_html: - one: "<strong>1</strong> εκκρεμές hashtag" - other: "<strong>%{count}</strong> εκκρεμή hashtag" - pending_users_html: - one: "<strong>1</strong> χρήστης σε εκκρεμότητα" - other: "<strong>%{count}</strong> χρήστες σε εκκρεμότητα" software: Λογισμικό space: Κατανάλωση χώρου title: Ταμπλό + disputes: + appeals: + title: Εφέσεις domain_allows: add_new: Έγκριση τομέα created_msg: Ο τομέας εγκρίθηκε με επιτυχία @@ -368,9 +364,6 @@ el: silence: αποσιωπημένοι suspend: ανεσταλμένοι show: - affected_accounts: - one: Επηρεάζεται ένας λογαριασμός στη βάση δεδομένων - other: Επηρεάζονται %{count} λογαριασμοί στη βάση δεδομένων retroactive: silence: Αναίρεση αποσιώπησης όλων των λογαριασμός του τομέα suspend: Αναίρεση αναστολής όλων των λογαριασμών του τομέα @@ -398,9 +391,6 @@ el: delivery_available: Διαθέσιμη παράδοση destroyed_msg: Τα δεδομένα από το %{domain} βρίσκονται σε αναμονή για επικείμενη διαγραφή. empty: Δεν βρέθηκαν τομείς. - known_accounts: - one: "%{count} γνωστός λογαριασμός" - other: "%{count} γνωστοί λογαριασμοί" moderation: all: Όλα limited: Περιορισμένα @@ -477,7 +467,7 @@ el: comment: none: Κανένα created_at: Καταγγέλθηκε - delete_and_resolve: Διαγραφή και επίλυση + delete_and_resolve: Διαγραφή δημοσιεύσεων forwarded: Προωθημένα forwarded_to: Προώθημένα προς %{domain} mark_as_resolved: Σημειωμένο ως επιλυμένο @@ -490,12 +480,14 @@ el: delete: Διαγραφή placeholder: Περιέγραψε τις ενέργειες που έγιναν, ή οποιαδήποτε άλλη ενημέρωση... title: Σημειώσεις + quick_actions_description_html: 'Κάντε μια γρήγορη ενέργεια ή μετακινηθείτε προς τα κάτω για να δείτε το αναφερόμενο περιεχόμενο:' reopen: Ξανάνοιξε την καταγγελία report: 'Καταγγελία #%{id}' reported_account: Αναφερόμενος λογαριασμός reported_by: Αναφέρθηκε από resolved: Επιλύθηκε resolved_msg: Η καταγγελία επιλύθηκε επιτυχώς! + skip_to_actions: Μετάβαση στις ενέργειες status: Κατάσταση statuses: Αναφερόμενο περιεχόμενο title: Αναφορές @@ -627,6 +619,9 @@ el: empty: Δεν έχετε ακόμη ορίσει κάποια προεπιλογή προειδοποίησης. title: Διαχείριση προκαθορισμένων προειδοποιήσεων admin_mailer: + new_appeal: + actions: + none: μια προειδοποίηση new_pending_account: body: Τα στοιχεία του νέου λογαριασμού είναι παρακάτω. Μπορείς να εγκρίνεις ή να απορρίψεις αυτή την αίτηση. subject: Νέος λογαριασμός προς έγκριση στο %{instance} (%{username}) @@ -707,7 +702,6 @@ el: status: account_status: Κατάσταση λογαριασμού confirming: Αναμονή για ολοκλήρωση επιβεβαίωσης του email. - functional: Ο λογαριασμός σου είναι πανέτοιμος. pending: Η εφαρμογή σας εκκρεμεί έγκρισης, πιθανόν θα διαρκέσει κάποιο χρόνο. Θα λάβετε email αν εγκριθεί. redirecting_to: Ο λογαριασμός σου είναι ανενεργός γιατί επί του παρόντος ανακατευθύνει στον %{acct}. too_fast: Η φόρμα υποβλήθηκε πολύ γρήγορα, προσπαθήστε ξανά. @@ -966,6 +960,8 @@ el: title: Νέα προώθηση status: subject: Ο/Η %{name} μόλις έγραψε κάτι + update: + subject: "%{name} επεξεργάστηκε μια δημοσίευση" notifications: email_events: Συμβάντα για ειδοποιήσεις μέσω email email_events_hint: 'Επέλεξε συμβάντα για τα οποία θέλεις να λαμβάνεις ειδοποιήσεις μέσω email:' @@ -1254,7 +1250,6 @@ el: categories: spam: Ανεπιθύμητο reason: 'Αιτιολογία:' - review_server_policies: Αναθεώρηση πολιτικής του κόμβου subject: disable: Ο λογαριασμός σου %{acct} έχει παγώσει none: Προειδοποίηση προς %{acct} diff --git a/config/locales/en.yml b/config/locales/en.yml index 1809f123e..c206c893b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -94,7 +94,6 @@ en: account_moderation_notes: create: Leave note created_msg: Moderation note successfully created! - delete: Delete destroyed_msg: Moderation note successfully destroyed! accounts: add_email_domain_block: Block e-mail domain @@ -163,6 +162,11 @@ en: not_subscribed: Not subscribed pending: Pending review perform_full_suspension: Suspend + previous_strikes: Previous strikes + previous_strikes_description_html: + one: This account has <strong>one</strong> strike. + other: This account has <strong>%{count}</strong> strikes. + zero: This account is <strong>in good standing</strong>. promote: Promote protocol: Protocol public: Public @@ -227,6 +231,7 @@ en: whitelisted: Allowed for federation action_logs: action_types: + approve_appeal: Approve Appeal approve_user: Approve User assigned_to_self_report: Assign Report change_email_user: Change E-mail for User @@ -258,6 +263,7 @@ en: enable_user: Enable User memorialize_account: Memorialize Account promote_user: Promote User + reject_appeal: Reject Appeal reject_user: Reject User remove_avatar_user: Remove Avatar reopen_report: Reopen Report @@ -276,6 +282,7 @@ en: update_domain_block: Update Domain Block update_status: Update Post actions: + approve_appeal_html: "%{name} approved moderation decision appeal from %{target}" approve_user_html: "%{name} approved sign-up from %{target}" assigned_to_self_report_html: "%{name} assigned report %{target} to themselves" change_email_user_html: "%{name} changed the e-mail address of user %{target}" @@ -307,6 +314,7 @@ en: enable_user_html: "%{name} enabled login for user %{target}" memorialize_account_html: "%{name} turned %{target}'s account into a memoriam page" promote_user_html: "%{name} promoted user %{target}" + reject_appeal_html: "%{name} rejected moderation decision appeal from %{target}" reject_user_html: "%{name} rejected sign-up from %{target}" remove_avatar_user_html: "%{name} removed %{target}'s avatar" reopen_report_html: "%{name} reopened report %{target}" @@ -385,14 +393,17 @@ en: media_storage: Media storage new_users: new users opened_reports: reports opened + pending_appeals_html: + one: "<strong>%{count}</strong> pending appeal" + other: "<strong>%{count}</strong> pending appeals" pending_reports_html: - one: "<strong>1</strong> pending report" + one: "<strong>%{count}</strong> pending report" other: "<strong>%{count}</strong> pending reports" pending_tags_html: - one: "<strong>1</strong> pending hashtag" + one: "<strong>%{count}</strong> pending hashtag" other: "<strong>%{count}</strong> pending hashtags" pending_users_html: - one: "<strong>1</strong> pending user" + one: "<strong>%{count}</strong> pending user" other: "<strong>%{count}</strong> pending users" resolved_reports: reports resolved software: Software @@ -402,6 +413,10 @@ en: top_languages: Top active languages top_servers: Top active servers website: Website + disputes: + appeals: + empty: No appeals found. + title: Appeals domain_allows: add_new: Allow federation with domain created_msg: Domain has been successfully allowed for federation @@ -442,6 +457,7 @@ en: affected_accounts: one: One account in the database affected other: "%{count} accounts in the database affected" + zero: No account in the database is affected retroactive: silence: Undo limit of existing affected accounts from this domain suspend: Unsuspend existing affected accounts from this domain @@ -495,6 +511,7 @@ en: known_accounts: one: "%{count} known account" other: "%{count} known accounts" + zero: No known account moderation: all: All limited: Limited @@ -720,6 +737,16 @@ en: no_status_selected: No posts were changed as none were selected title: Account posts with_media: With media + strikes: + actions: + delete_statuses: "%{name} deleted %{target}'s posts" + disable: "%{name} froze %{target}'s account" + none: "%{name} sent a warning to %{target}" + sensitive: "%{name} marked %{target}'s account as sensitive" + silence: "%{name} limited %{target}'s account" + suspend: "%{name} suspended %{target}'s account" + appeal_approved: Appealed + appeal_pending: Appeal pending system_checks: database_schema_check: message_html: There are pending database migrations. Please run them to ensure the application behaves as expected @@ -744,6 +771,7 @@ en: shared_by_over_week: one: Shared by one person over the last week other: Shared by %{count} people over the last week + zero: Shared by noone over the last week title: Trending links usage_comparison: Shared %{today} times today, compared to %{yesterday} yesterday pending_review: Pending review @@ -773,6 +801,7 @@ en: used_by_over_week: one: Used by one person over the last week other: Used by %{count} people over the last week + zero: Used by noone over the last week title: Trends warning_presets: add_new: Add new @@ -781,6 +810,17 @@ en: empty: You haven't defined any warning presets yet. title: Manage warning presets admin_mailer: + new_appeal: + actions: + delete_statuses: to delete their posts + disable: to freeze their account + none: a warning + sensitive: to mark their account as sensitive + silence: to limit their account + suspend: to suspend their account + body: "%{target} is appealing a moderation decision by %{action_taken_by} from %{date}, which was %{type}. They wrote:" + next_steps: You can approve the appeal to undo the moderation decision, or ignore it. + subject: "%{username} is appealing a moderation decision on %{instance}" new_pending_account: body: The details of the new account are below. You can approve or reject this application. subject: New account up for review on %{instance} (%{username}) @@ -871,7 +911,6 @@ en: status: account_status: Account status confirming: Waiting for e-mail confirmation to be completed. - functional: Your account is fully operational. pending: Your application is pending review by our staff. This may take some time. You will receive an e-mail if your application is approved. redirecting_to: Your account is inactive because it is currently redirecting to %{acct}. too_fast: Form submitted too fast, try again. @@ -937,6 +976,32 @@ en: directory: Profile directory explanation: Discover users based on their interests explore_mastodon: Explore %{title} + disputes: + strikes: + action_taken: Action taken + appeal: Appeal + appeal_approved: This strike has been successfully appealed and is no longer valid + appeal_rejected: The appeal has been rejected + appeal_submitted_at: Appeal submitted + appealed_msg: Your appeal has been submitted. If it is approved, you will be notified. + appeals: + submit: Submit appeal + associated_report: Associated report + created_at: Dated + recipient: Addressed to + status: 'Post #%{id}' + status_removed: Post already removed from system + title: "%{action} from %{date}" + title_actions: + delete_statuses: Post removal + disable: Freezing of account + none: Warning + sensitive: Marking as sensitive of account + silence: Limitation of account + suspend: Suspension of account + your_appeal_approved: Your appeal has been approved + your_appeal_pending: You have submitted an appeal + your_appeal_rejected: Your appeal has been rejected domain_validator: invalid_domain: is not a valid domain name errors: @@ -1111,6 +1176,9 @@ en: carry_mutes_over_text: This user moved from %{acct}, which you had muted. copy_account_note_text: 'This user moved from %{acct}, here were your previous notes about them:' notification_mailer: + admin: + sign_up: + subject: "%{name} signed up" digest: action: View all notifications body: Here is a brief summary of the messages you missed since your last visit on %{since} @@ -1501,6 +1569,15 @@ en: recovery_instructions_html: If you ever lose access to your phone, you can use one of the recovery codes below to regain access to your account. <strong>Keep the recovery codes safe</strong>. For example, you may print them and store them with other important documents. webauthn: Security keys user_mailer: + appeal_approved: + action: Go to your account + explanation: The appeal of the strike against your account on %{strike_date} that you submitted on %{appeal_date} has been approved. Your account is once again in good standing. + subject: Your appeal from %{date} has been approved + title: Appeal approved + appeal_rejected: + explanation: The appeal of the strike against your account on %{strike_date} that you submitted on %{appeal_date} has been rejected. + subject: Your appeal from %{date} has been rejected + title: Appeal rejected backup_ready: explanation: You requested a full backup of your Mastodon account. It's now ready for download! subject: Your archive is ready for download @@ -1512,6 +1589,8 @@ en: subject: Please confirm attempted sign in title: Sign in attempt warning: + appeal: Submit an appeal + appeal_description: If you believe this is an error, you can submit an appeal to the staff of %{instance}. categories: spam: Spam violation: Content violates the following community guidelines @@ -1523,7 +1602,6 @@ en: suspend: You can no longer use your account, and your profile and other data are no longer accessible. You can still login to request a backup of your data until the data is fully removed in about 30 days, but we will retain some basic data to prevent you from evading the suspension. get_in_touch: If you believe this is an error, you can reply to this e-mail to get in touch with the staff of %{instance}. reason: 'Reason:' - review_server_policies: Review server policies statuses: 'Posts that have been found in violation:' subject: delete_statuses: Your posts on %{acct} have been removed diff --git a/config/locales/eo.yml b/config/locales/eo.yml index e2315ae82..e44496f05 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -86,7 +86,6 @@ eo: account_moderation_notes: create: Lasi noton created_msg: Kontrola noto sukcese kreita! - delete: Forigi destroyed_msg: Kontrola noto sukcese detruita! accounts: add_email_domain_block: Bloki retadresan domajnon @@ -369,9 +368,6 @@ eo: silence: silentigita suspend: haltigita show: - affected_accounts: - one: Unu konto en la datumbazo esta influita - other: "%{count} kontoj en la datumbazo estas influitaj" retroactive: silence: Malkaŝi ĉiujn kontojn, kiuj ekzistas en ĉi tiu domajno suspend: Malhaltigi ĉiujn kontojn, kiuj ekzistas en ĉi tiu domajno @@ -407,9 +403,6 @@ eo: warning: Averto delivery_available: Liverado disponeblas empty: Neniuj domajnoj trovitaj. - known_accounts: - one: "%{count} konata konto" - other: "%{count} konataj kontoj" moderation: all: Ĉiuj limited: Limigita @@ -684,7 +677,6 @@ eo: title: Agordi status: account_status: Statuso de la konto - functional: Via konto estas plene funkcianta. too_fast: Formularo sendita tro rapide, klopodu denove. trouble_logging_in: Ĝeni ensaluti? use_security_key: Uzi sekurecan ŝlosilon @@ -1167,7 +1159,6 @@ eo: subject: Via arkivo estas preta por elŝutado title: Arkiva elŝuto warning: - review_server_policies: Superrigardi servilajn politikojn subject: disable: Via konto %{acct} estas frostigita none: Averto por %{acct} diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index e14a8d725..c901394bb 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -94,7 +94,6 @@ es-AR: account_moderation_notes: create: Dejar nota created_msg: "¡Nota de moderación creada exitosamente!" - delete: Eliminar destroyed_msg: "¡Nota de moderación destruída exitosamente!" accounts: add_email_domain_block: Bloquear el dominio del correo electrónico @@ -163,6 +162,11 @@ es-AR: not_subscribed: No suscripto pending: Revisión pendiente perform_full_suspension: Suspender + previous_strikes: Incumplimientos previos + previous_strikes_description_html: + one: Esta cuenta tiene <strong>un</strong> incumplimiento. + other: Esta cuenta tiene <strong>%{count}</strong> incumplimientos. + zero: Esta cuenta está <strong>en buen estado</strong>. promote: Promover protocol: Protocolo public: Pública @@ -206,6 +210,7 @@ es-AR: statuses: Mensajes strikes: Sanciones previas subscribe: Suscribirse + suspend: Suspender suspended: Suspendidas suspension_irreversible: Se eliminaron irreversiblemente los datos de esta cuenta. Podés dejar de suspenderla para hacerla utilizable, pero no se recuperarán los datos que tenía anteriormente. suspension_reversible_hint_html: La cuenta fue suspendida y los datos se eliminarán completamente el %{date}. Hasta entonces, la cuenta puede ser restaurada sin ningún efecto perjudicial. Si querés eliminar todos los datos de la cuenta inmediatamente, podés hacerlo abajo. @@ -226,6 +231,7 @@ es-AR: whitelisted: Permitidas para federación action_logs: action_types: + approve_appeal: Aprobar apelación approve_user: Aprobar usuario assigned_to_self_report: Asignar denuncia change_email_user: Cambiar correo electrónico del usuario @@ -257,6 +263,7 @@ es-AR: enable_user: Habilitar usuario memorialize_account: Convertir en cuenta conmemorativa promote_user: Promover usuario + reject_appeal: Rechazar apelación reject_user: Rechazar usuario remove_avatar_user: Quitar avatar reopen_report: Reabrir denuncia @@ -275,6 +282,7 @@ es-AR: update_domain_block: Actualizar bloque de dominio update_status: Actualizar mensaje actions: + approve_appeal_html: "%{name} aprobó la solicitud de moderación de %{target}" approve_user_html: "%{name} aprobó el registro de %{target}" assigned_to_self_report_html: "%{name} se asignó la denuncia %{target} a sí" change_email_user_html: "%{name} cambió la dirección de correo electrónico del usuario %{target}" @@ -306,6 +314,7 @@ es-AR: enable_user_html: "%{name} habilitó el inicio de sesión para el usuario %{target}" memorialize_account_html: "%{name} convirtió la cuenta de %{target} en una cuenta conmemorativa" promote_user_html: "%{name} promovió al usuario %{target}" + reject_appeal_html: "%{name} rechazó la solicitud de moderación de %{target}" reject_user_html: "%{name} rechazó el registro de %{target}" remove_avatar_user_html: "%{name} quitó el avatar de %{target}" reopen_report_html: "%{name} reabrió la denuncia %{target}" @@ -384,14 +393,17 @@ es-AR: media_storage: Almacenamiento de medios new_users: nuevos usuarios opened_reports: denuncias abiertas + pending_appeals_html: + one: "<strong>%{count}</strong> apelación pendiente" + other: "<strong>%{count}</strong> apelaciones pendientes" pending_reports_html: - one: "<strong>1</strong> denuncia pendiente" + one: "<strong>%{count}</strong> denuncia pendiente" other: "<strong>%{count}</strong> denuncias pendientes" pending_tags_html: - one: "<strong>1</strong> etiqueta pendiente" + one: "<strong>%{count}</strong> etiqueta pendiente" other: "<strong>%{count}</strong> etiquetas pendientes" pending_users_html: - one: "<strong>1</strong> usuario pendiente" + one: "<strong>%{count}</strong> usuario pendiente" other: "<strong>%{count}</strong> usuarios pendientes" resolved_reports: denuncias resueltas software: Software @@ -401,6 +413,10 @@ es-AR: top_languages: Idiomas más activos top_servers: Servidores más activos website: Sitio web + disputes: + appeals: + empty: No se encontraron apelaciones. + title: Apelaciones domain_allows: add_new: Permitir federación con el dominio created_msg: El dominio fue exitosamente permitido para la federación @@ -439,8 +455,9 @@ es-AR: suspend: suspendidos show: affected_accounts: - one: Una cuenta afectada en la base de datos - other: "%{count} cuentas afectadas en la base de datos" + one: Una cuenta en la base de datos afectada + other: "%{count} cuentas en la base de datos afectada" + zero: Ninguna cuenta en la base de datos está afectada retroactive: silence: Quitar límite de las cuentas existentes afectadas de este dominio suspend: Quitar suspensión de las cuentas existentes afectadas de este dominio @@ -494,6 +511,7 @@ es-AR: known_accounts: one: "%{count} cuenta conocida" other: "%{count} cuentas conocidas" + zero: Ninguna cuenta conocida moderation: all: Todas limited: Limitadas @@ -560,10 +578,12 @@ es-AR: action_log: Registro de auditoría action_taken_by: Acción tomada por actions: + delete_description_html: Los mensajes denunciados serán eliminados y se registrará un incumplimiento para ayudarte a escalar en futuras infracciones por la misma cuenta. other_description_html: Ver más opciones para controlar el comportamiento de la cuenta y personalizar la comunicación de la cuenta denunciada. + resolve_description_html: No se tomarán medidas contra la cuenta denunciada, no se registrará el incumplimiento, y se cerrará la denuncia. silence_description_html: El perfil será visible sólo para aquellos que ya sigan esta cuenta o que la busquen manualmente, limitando seriamente su alcance. Siempre puede ser revertido. suspend_description_html: El perfil y todos sus contenidos serán inaccesibles hasta que sean finalmente eliminados. No será posible interactuar con la cuenta. Reversible dentro de los 30 días. - actions_description_html: 'Si quitar el contenido ofensivo de arriba no es suficiente:' + actions_description_html: Decidí qué medidas tomar para resolver esta denuncia. Si tomás una acción punitiva contra la cuenta denunciada, se le enviará a dicha cuenta una notificación por correo electrónico, excepto cuando se seleccione la categoría <strong>Spam</strong>. add_to_report: Agregar más a la denuncia are_you_sure: "¿Estás seguro?" assign_to_self: Asignármela a mí @@ -575,7 +595,7 @@ es-AR: none: Ninguno comment_description_html: 'Para proporcionar más información, %{name} escribió:' created_at: Denunciado - delete_and_resolve: Resolver y eliminar + delete_and_resolve: Eliminar mensajes forwarded: Reenviado forwarded_to: Reenviado a %{domain} mark_as_resolved: Marcar como resuelta @@ -589,12 +609,14 @@ es-AR: placeholder: Describí qué acciones se tomaron, o cualquier otra actualización relacionada... title: Notas notes_description_html: Ver y dejar notas para otros moderadores y como referencia futura + quick_actions_description_html: 'Tomá una acción rápida o desplazate hacia abajo para ver el contenido denunciado:' reopen: Reabrir denuncia report: 'Denuncia #%{id}' reported_account: Cuenta denunciada reported_by: Denunciada por resolved: Resueltas resolved_msg: "¡Denuncia exitosamente resuelta!" + skip_to_actions: Ir directamente a las acciones status: Estado statuses: Contenido denunciado statuses_description_html: El contenido ofensivo se citará en la comunicación con la cuenta denunciada @@ -715,6 +737,16 @@ es-AR: no_status_selected: No se cambió ningún mensaje, ya que ninguno fue seleccionado title: Mensajes de la cuenta with_media: Con medios + strikes: + actions: + delete_statuses: "%{name} eliminó los mensajes de %{target}" + disable: "%{name} congeló la cuenta de %{target}" + none: "%{name} envió una advertencia a %{target}" + sensitive: "%{name} marcó los medios de %{target} como sensibles" + silence: "%{name} limitó la cuenta de %{target}" + suspend: "%{name} suspendió la cuenta de %{target}" + appeal_approved: Apelado + appeal_pending: Apelación pendiente system_checks: database_schema_check: message_html: Hay migraciones pendientes de la base de datos. Por favor, ejecutalas para asegurarte de que la aplicación funciona según lo esperado @@ -737,8 +769,9 @@ es-AR: disallow: Rechazar enlace disallow_provider: Rechazar medio shared_by_over_week: - one: Compartido por una persona durante la última semana - other: Compartido por %{count} personas durante la última semana + one: Compartido por una persona en la última semana + other: Compartido por %{count} personas en la última semana + zero: Compartido por nadie en la última semana title: Enlaces en tendencia usage_comparison: Compartido %{today} veces hoy, comparado con la/s %{yesterday} vez/veces de ayer pending_review: Revisión pendiente @@ -766,8 +799,9 @@ es-AR: usable: Pueden usarse usage_comparison: Usadas %{today} veces hoy, comparado con la/s %{yesterday} vez/veces de ayer used_by_over_week: - one: Usada por una persona durante la última semana - other: Usada por %{count} personas durante la última semana + one: Usada por una persona en la última semana + other: Usada por %{count} personas en la última semana + zero: Usada por nadie en la última semana title: Tendencias warning_presets: add_new: Agregar nuevo @@ -776,6 +810,17 @@ es-AR: empty: Aún no ha definido ningún preajuste de advertencia. title: Administrar preajustes de advertencia admin_mailer: + new_appeal: + actions: + delete_statuses: para eliminar sus mensajes + disable: para congelar su cuenta + none: una advertencia + sensitive: para marcar su cuenta como sensible + silence: para limitar su cuenta + suspend: para suspender su cuenta + body: "%{target} está apelando a una solicitud de moderación de %{action_taken_by} de %{date}, del tipo %{type}. Ellos escribieron:" + next_steps: Podés aprobar la apelación para deshacer la solicitud de moderación, o ignorarla. + subject: "%{username} está apelando a una solicitud de moderación en %{instance}" new_pending_account: body: Abajo están los detalles de la nueva cuenta. Podés aprobar o rechazar esta solicitud. subject: Nueva cuenta para revisión en %{instance} (%{username}) @@ -866,7 +911,6 @@ es-AR: status: account_status: Estado de la cuenta confirming: Esperando confirmación de correo electrónico. - functional: Tu cuenta está totalmente operativa. pending: Tu solicitud está pendiente de revisión por nuestra administración. Eso puede tardar algún tiempo. Si se aprueba tu solicitud, vas a recibir un correo electrónico. redirecting_to: Tu cuenta se encuentra inactiva porque está siendo redirigida a %{acct}. too_fast: Formulario enviado demasiado rápido, probá de nuevo. @@ -932,6 +976,32 @@ es-AR: directory: Directorio de perfiles explanation: Descubrí usuarios basados en sus intereses explore_mastodon: Navegá %{title} + disputes: + strikes: + action_taken: Acción tomada + appeal: Apelar + appeal_approved: Este incumplimiento fue apelado exitosamente y ya no es válido + appeal_rejected: Se rechazó la apelación + appeal_submitted_at: Apelación enviada + appealed_msg: Tu apelación fue enviada. Si se aprueba, se te notificará. + appeals: + submit: Enviar apelación + associated_report: Denuncia asociada + created_at: Con fecha + recipient: Dirigida a + status: 'Mensaje #%{id}' + status_removed: Mensaje ya eliminado del sistema + title: "%{action} de %{date}" + title_actions: + delete_statuses: Eliminación de mensaje + disable: Congelación de cuenta + none: Advertencia + sensitive: Marcado de cuenta como sensible + silence: Limitación de cuenta + suspend: Suspensión de cuenta + your_appeal_approved: Se aprobó tu apelación + your_appeal_pending: Enviaste una apelación + your_appeal_rejected: Se rechazó tu apelación domain_validator: invalid_domain: no es un nombre de dominio válido errors: @@ -1143,6 +1213,8 @@ es-AR: title: Nueva adhesión status: subject: "%{name} acaba de enviar un mensaje" + update: + subject: "%{name} editó un mensaje" notifications: email_events: Eventos para notificaciones por correo electrónico email_events_hint: 'Seleccioná los eventos para los que querés recibir notificaciones:' @@ -1493,6 +1565,15 @@ es-AR: recovery_instructions_html: Si alguna vez perdés el acceso a tu aplicación de 2FA, podés usar uno de los siguientes códigos de recuperación para recuperar el acceso a tu cuenta. <strong>Mantenelos a salvo</strong>. Por ejemplo, podés imprimirlos y guardarlos con otros documentos importantes. webauthn: Llaves de seguridad user_mailer: + appeal_approved: + action: Ir a tu cuenta + explanation: La apelación del incumplimiento contra tu cuenta del %{strike_date} que enviaste el %{appeal_date} fue aprobada. Tu cuenta se encuentra de nuevo en buen estado. + subject: Tu apelación del %{date} fue aprobada + title: Apelación aprobada + appeal_rejected: + explanation: La apelación del incumplimiento contra tu cuenta del %{strike_date} que enviaste el %{appeal_date} fue rechazada. + subject: Tu apelación del %{date} fue rechazada + title: Apelación rechazada backup_ready: explanation: Solicitaste un resguardo completo de tu cuenta de Mastodon. ¡Ya está listo para descargar! subject: Tu archivo historial está listo para descargar @@ -1504,6 +1585,8 @@ es-AR: subject: Por favor, confirmá el intento de inicio de sesión title: Intento de inicio de sesión warning: + appeal: Enviar una apelación + appeal_description: Si creés que esto es un error, podés enviar una apelación al equipo de %{instance}. categories: spam: Spam violation: El contenido viola las siguientes directrices de la comunidad @@ -1515,7 +1598,6 @@ es-AR: suspend: Ya no podés usar tu cuenta, y tu perfil y el resto de datos ya no son accesibles. Todavía podés iniciar sesión para solicitar una copia de seguridad de tus datos, hasta que estos sean eliminados por completo en unos 30 días, aunque conservaremos algunos datos básicos para impedir que esquivés la suspensión. get_in_touch: Si crees que esto es un error, podés responder a este correo electrónico para ponerte en contacto con el equipo de %{instance}. reason: 'Motivo:' - review_server_policies: Revisar las políticas del servidor statuses: 'Mensajes que se encontraron en violación:' subject: delete_statuses: Se eliminaron tus mensajes en %{acct} diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 834b3a7d4..06716034b 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -94,7 +94,6 @@ es-MX: account_moderation_notes: create: Crear created_msg: "¡Nota de moderación creada con éxito!" - delete: Borrar destroyed_msg: "¡Nota de moderación destruida con éxito!" accounts: add_email_domain_block: Poner en lista negra el dominio del correo @@ -163,6 +162,11 @@ es-MX: not_subscribed: No se está suscrito pending: Revisión pendiente perform_full_suspension: Suspender + previous_strikes: Amonestaciones anteriores + previous_strikes_description_html: + one: Esta cuenta tiene <strong>una</strong> amonestación. + other: Esta cuenta tiene <strong>%{count}</strong> amonestaciones. + zero: Esta cuenta está <strong>en buen estado</strong>. promote: Promocionar protocol: Protocolo public: Público @@ -206,6 +210,7 @@ es-MX: statuses: Estados strikes: Amonestaciones previas subscribe: Suscribir + suspend: Suspender suspended: Suspendido suspension_irreversible: Los datos de esta cuenta han sido irreversiblemente eliminados. Puedes deshacer la suspensión de la cuenta para hacerla utilizable, pero no recuperará los datos que tenías anteriormente. suspension_reversible_hint_html: La cuenta ha sido suspendida y los datos se eliminarán completamente el %{date}. Hasta entonces, la cuenta puede ser restaurada sin ningún efecto perjudicial. Si desea eliminar todos los datos de la cuenta inmediatamente, puede hacerlo a continuación. @@ -226,6 +231,7 @@ es-MX: whitelisted: Añadido a la lista blanca action_logs: action_types: + approve_appeal: Aprobar Apelación approve_user: Aprobar Usuario assigned_to_self_report: Asignar Reporte change_email_user: Cambiar Correo Electrónico del Usuario @@ -257,6 +263,7 @@ es-MX: enable_user: Habilitar Usuario memorialize_account: Transformar en Cuenta Conmemorativa promote_user: Promover Usuario + reject_appeal: Rechazar Apelación reject_user: Rechazar Usuario remove_avatar_user: Eliminar Avatar reopen_report: Reabrir Reporte @@ -275,6 +282,7 @@ es-MX: update_domain_block: Actualizar el Bloqueo de Dominio update_status: Actualizar Estado actions: + approve_appeal_html: "%{name} aprobó la solicitud de moderación de %{target}" approve_user_html: "%{name} aprobó el registro de %{target}" assigned_to_self_report_html: "%{name} asignó el informe %{target} a sí mismo" change_email_user_html: "%{name} cambió la dirección de correo electrónico del usuario %{target}" @@ -306,6 +314,7 @@ es-MX: enable_user_html: "%{name} habilitó el inicio de sesión para el usuario %{target}" memorialize_account_html: "%{name} convirtió la cuenta de %{target} en una página in memoriam" promote_user_html: "%{name} promoción al usuario %{target}" + reject_appeal_html: "%{name} rechazó la solicitud de moderación de %{target}" reject_user_html: "%{name} rechazó el registro de %{target}" remove_avatar_user_html: "%{name} eliminó el avatar de %{target}" reopen_report_html: "%{name} reabrió el informe %{target}" @@ -384,15 +393,6 @@ es-MX: media_storage: Almacenamiento multimedia new_users: nuevos usuarios opened_reports: informes abiertos - pending_reports_html: - one: "<strong>1</strong> informe pendiente" - other: "<strong>%{count}</strong> informes pendientes" - pending_tags_html: - one: "<strong>1</strong> etiqueta pendiente" - other: "<strong>%{count}</strong> etiquetas pendientes" - pending_users_html: - one: "<strong>1</strong> usuario pendiente" - other: "<strong>%{count}</strong> usuarios pendientes" resolved_reports: informes resueltos software: Software sources: Fuentes de registro @@ -401,6 +401,10 @@ es-MX: top_languages: Idiomas más activos top_servers: Servidores más activos website: Sitio web + disputes: + appeals: + empty: No se encontraron apelaciones. + title: Apelaciones domain_allows: add_new: Añadir dominio a la lista blanca created_msg: Dominio añadido a la lista blanca con éxito @@ -438,9 +442,6 @@ es-MX: silence: silenciado suspend: suspendido show: - affected_accounts: - one: Una cuenta en la base de datos afectada - other: "%{count} cuentas en la base de datos afectadas" retroactive: silence: Des-silenciar todas las cuentas existentes de este dominio suspend: Des-suspender todas las cuentas existentes de este dominio @@ -491,9 +492,6 @@ es-MX: delivery_error_hint: Si la entrega no es posible a lo largo de %{count} días, se marcará automáticamente como no entregable. destroyed_msg: Los datos de %{domain} están ahora en cola para su inminente eliminación. empty: No se encontraron dominios. - known_accounts: - one: "%{count} cuenta conocida" - other: "%{count} cuentas conocidas" moderation: all: Todos limited: Limitado @@ -560,10 +558,12 @@ es-MX: action_log: Registro de auditoría action_taken_by: Acción tomada por actions: + delete_description_html: Los mensajes denunciados serán eliminados y se registrará una amonestación para ayudarte a escalar en futuras infracciones por la misma cuenta. other_description_html: Ver más opciones para controlar el comportamiento de la cuenta y personalizar la comunicación de la cuenta reportada. + resolve_description_html: No se tomarán medidas contra la cuenta denunciada, no se registrará la amonestación, y se cerrará el informe. silence_description_html: El perfil será visible solo para aquellos que ya lo sigan o lo busquen manualmente, limitando seriamente su alcance. Siempre puede ser revertido. suspend_description_html: El perfil y todos sus contenidos serán inaccesibles hasta que sean finalmente eliminados. La interacción con la cuenta será imposible. Reversible durante un plazo de 30 días. - actions_description_html: 'Si eliminar el contenido ofensivo de arriba no es suficiente:' + actions_description_html: Decide qué medidas tomar para resolver esta denuncia. Si tomas una acción punitiva contra la cuenta denunciada, se le enviará a dicha cuenta una notificación por correo electrónico, excepto cuando se seleccione la categoría <strong>Spam</strong>. add_to_report: Añadir más al reporte are_you_sure: "¿Estás seguro?" assign_to_self: Asignármela a mí @@ -575,7 +575,7 @@ es-MX: none: Ninguno comment_description_html: 'Para proporcionar más información, %{name} escribió:' created_at: Denunciado - delete_and_resolve: Eliminar y resolver + delete_and_resolve: Eliminar publicaciones forwarded: Reenviado forwarded_to: Reenviado a %{domain} mark_as_resolved: Marcar como resuelto @@ -589,12 +589,14 @@ es-MX: placeholder: Especificar qué acciones se han tomado o cualquier otra novedad respecto a esta denuncia… title: Notas notes_description_html: Ver y dejar notas a otros moderadores y a tu yo futuro + quick_actions_description_html: 'Toma una acción rápida o desplázate hacia abajo para ver el contenido denunciado:' reopen: Reabrir denuncia report: 'Reportar #%{id}' reported_account: Cuenta reportada reported_by: Reportado por resolved: Resuelto resolved_msg: "¡La denuncia se ha resuelto correctamente!" + skip_to_actions: Ir directamente a las acciones status: Estado statuses: Contenido reportado statuses_description_html: El contenido ofensivo se citará en la comunicación con la cuenta reportada @@ -715,6 +717,16 @@ es-MX: no_status_selected: No se cambió ningún estado al no seleccionar ninguno title: Estado de las cuentas with_media: Con multimedia + strikes: + actions: + delete_statuses: "%{name} eliminó las publicaciones de %{target}" + disable: "%{name} congeló la cuenta de %{target}" + none: "%{name} envió una advertencia a %{target}" + sensitive: "%{name} marcó la cuenta de %{target} como sensible" + silence: "%{name} limitó la cuenta de %{target}" + suspend: "%{name} suspendió la cuenta de %{target}" + appeal_approved: Apelado + appeal_pending: Apelación pendiente system_checks: database_schema_check: message_html: Hay migraciones pendientes de la base de datos. Por favor, ejecútalas para asegurarte de que la aplicación funciona como debería @@ -736,9 +748,6 @@ es-MX: allow_provider: Permitir medio disallow: Rechazar enlace disallow_provider: Rechazar medio - shared_by_over_week: - one: Compartido por una persona durante la última semana - other: Compartido por %{count} personas durante la última semana title: Enlaces en tendencia usage_comparison: Compartido %{today} veces hoy, comparado con %{yesterday} ayer pending_review: Revisión pendiente @@ -765,9 +774,6 @@ es-MX: trending_rank: Tendencia n.º %{rank} usable: Pueden usarse usage_comparison: Usada %{today} veces hoy, comparado con %{yesterday} ayer - used_by_over_week: - one: Usada por una persona durante la última semana - other: Usada por %{count} personas durante la última semana title: Tendencias warning_presets: add_new: Añadir nuevo @@ -776,6 +782,17 @@ es-MX: empty: Aún no has definido ningún preajuste de advertencia. title: Editar configuración predeterminada de avisos admin_mailer: + new_appeal: + actions: + delete_statuses: para eliminar sus mensajes + disable: para congelar su cuenta + none: una advertencia + sensitive: para marcar su cuenta como sensible + silence: para limitar su cuenta + suspend: suspender su cuenta + body: "%{target} está apelando a una solicitud de moderación de %{action_taken_by} el %{date}, del tipo %{type}. Ellos escribieron:" + next_steps: Puedes aprobar la apelación para deshacer la decisión de moderación, o ignorarla. + subject: "%{username} está apelando a una decisión de moderación en %{instance}" new_pending_account: body: Los detalles de la nueva cuenta están abajos. Puedes aprobar o rechazar esta aplicación. subject: Nueva cuenta para revisión en %{instance} (%{username}) @@ -866,7 +883,6 @@ es-MX: status: account_status: Estado de la cuenta confirming: Esperando confirmación de correo electrónico. - functional: Su cuenta está totalmente operativa. pending: Su solicitud está pendiente de revisión por nuestros administradores. Eso puede tardar algún tiempo. Usted recibirá un correo electrónico si el solicitud sea aprobada. redirecting_to: Tu cuenta se encuentra inactiva porque está siendo redirigida a %{acct}. too_fast: Formulario enviado demasiado rápido, inténtelo de nuevo. @@ -932,6 +948,32 @@ es-MX: directory: Directorio de perfiles explanation: Descubre usuarios según sus intereses explore_mastodon: Explorar %{title} + disputes: + strikes: + action_taken: Acción realizada + appeal: Apelar + appeal_approved: Esta amonestación fue apelada exitosamente y ya no es válida + appeal_rejected: Se rechazó la apelación + appeal_submitted_at: Apelación enviada + appealed_msg: Tu apelación fue enviada. Si se aprueba, se te notificará. + appeals: + submit: Enviar apelación + associated_report: Informe asociado + created_at: Con fecha + recipient: Dirigida a + status: 'Publicación #%{id}' + status_removed: Publicación ya eliminada del sistema + title: "%{action} del %{date}" + title_actions: + delete_statuses: Eliminación de publicación + disable: Congelación de la cuenta + none: Advertencia + sensitive: Marcado de cuenta como sensible + silence: Limitación de cuenta + suspend: Suspensión de cuenta + your_appeal_approved: Se aprobó tu apelación + your_appeal_pending: Has enviado una apelación + your_appeal_rejected: Tu apelación ha sido rechazada domain_validator: invalid_domain: no es un nombre de dominio válido errors: @@ -1143,6 +1185,8 @@ es-MX: title: Nueva difusión status: subject: "%{name} acaba de publicar" + update: + subject: "%{name} editó una publicación" notifications: email_events: Eventos para notificaciones por correo electrónico email_events_hint: 'Selecciona los eventos para los que deseas recibir notificaciones:' @@ -1224,6 +1268,9 @@ es-MX: reply: proceed: Proceder a responder prompt: 'Quieres responder a este toot:' + reports: + errors: + invalid_rules: no hace referencia a reglas válidas scheduled_statuses: over_daily_limit: Ha superado el límite de %{limit} toots programados para ese día over_total_limit: Ha superado el límite de %{limit} toots programados @@ -1490,6 +1537,15 @@ es-MX: recovery_instructions_html: Si pierdes acceso a tu teléfono, puedes usar uno de los siguientes códigos de recuperación para obtener acceso a tu cuenta. <strong>Mantenlos a salvo</strong>. Por ejemplo, puedes imprimirlos y guardarlos con otros documentos importantes. webauthn: Claves de seguridad user_mailer: + appeal_approved: + action: Ir a tu cuenta + explanation: La apelación de la amonestación contra tu cuenta del %{strike_date} que enviaste el %{appeal_date} fue aprobada. Tu cuenta se encuentra de nuevo en buen estado. + subject: Tu apelación del %{date} ha sido aprobada + title: Apelación aprobada + appeal_rejected: + explanation: La apelación de la amonestación contra tu cuenta del %{strike_date} que enviaste el %{appeal_date} fue rechazada. + subject: Tu apelación del %{date} ha sido rechazada + title: Apelación rechazada backup_ready: explanation: Has solicitado una copia completa de tu cuenta de Mastodon. ¡Ya está preparada para descargar! subject: Tu archivo está preparado para descargar @@ -1501,6 +1557,8 @@ es-MX: subject: Por favor, confirma el intento de inicio de sesión title: Intento de inicio de sesión warning: + appeal: Enviar una apelación + appeal_description: Si crees que esto es un error, puedes enviar una apelación al equipo de %{instance}. categories: spam: Spam violation: El contenido viola las siguientes directrices de la comunidad @@ -1512,7 +1570,6 @@ es-MX: suspend: Ya no puedes utilizar tu cuenta, y tu perfil y el resto de datos ya no son accesibles. Todavía puedes iniciar sesión para solicitar una copia de seguridad de tus datos, hasta que estos sean eliminados por completo en unos 30 días, aunque conservaremos algunos datos básicos para impedir que esquives la suspensión. get_in_touch: Si crees que esto es un error, puedes responder a este correo electrónico para ponerte en contacto con el personal de %{instance}. reason: 'Razón:' - review_server_policies: Revisar las políticas del servidor statuses: 'Publicaciones que han sido halladas contrarias las directrices:' subject: delete_statuses: Tus publicaciones en %{acct} han sido eliminadas diff --git a/config/locales/es.yml b/config/locales/es.yml index 02dee7b4f..cc2cad8e5 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -94,7 +94,6 @@ es: account_moderation_notes: create: Crear created_msg: "¡Nota de moderación creada con éxito!" - delete: Borrar destroyed_msg: "¡Nota de moderación destruida con éxito!" accounts: add_email_domain_block: Poner en lista negra el dominio del correo @@ -163,6 +162,11 @@ es: not_subscribed: No se está suscrito pending: Revisión pendiente perform_full_suspension: Suspender + previous_strikes: Amonestaciones anteriores + previous_strikes_description_html: + one: Esta cuenta tiene <strong>una</strong> amonestación. + other: Esta cuenta tiene <strong>%{count}</strong> amonestaciones. + zero: Esta cuenta está <strong>en buen estado</strong>. promote: Promocionar protocol: Protocolo public: Público @@ -206,6 +210,7 @@ es: statuses: Estados strikes: Amonestaciones previas subscribe: Suscribir + suspend: Suspender suspended: Suspendido suspension_irreversible: Los datos de esta cuenta han sido irreversiblemente eliminados. Puedes deshacer la suspensión de la cuenta para hacerla utilizable, pero no recuperará los datos que tenías anteriormente. suspension_reversible_hint_html: La cuenta ha sido suspendida y los datos se eliminarán completamente el %{date}. Hasta entonces, la cuenta puede ser restaurada sin ningún efecto perjudicial. Si desea eliminar todos los datos de la cuenta inmediatamente, puede hacerlo a continuación. @@ -226,6 +231,7 @@ es: whitelisted: Añadido a la lista blanca action_logs: action_types: + approve_appeal: Aprobar Apelación approve_user: Aprobar Usuario assigned_to_self_report: Asignar Reporte change_email_user: Cambiar Correo Electrónico del Usuario @@ -257,6 +263,7 @@ es: enable_user: Habilitar Usuario memorialize_account: Transformar en Cuenta Conmemorativa promote_user: Promover Usuario + reject_appeal: Rechazar Apelación reject_user: Rechazar Usuario remove_avatar_user: Eliminar Avatar reopen_report: Reabrir Reporte @@ -275,6 +282,7 @@ es: update_domain_block: Actualizar el Bloqueo de Dominio update_status: Actualizar Estado actions: + approve_appeal_html: "%{name} aprobó la solicitud de moderación de %{target}" approve_user_html: "%{name} aprobó el registro de %{target}" assigned_to_self_report_html: "%{name} asignó el informe %{target} a sí mismo" change_email_user_html: "%{name} cambió la dirección de correo electrónico del usuario %{target}" @@ -306,6 +314,7 @@ es: enable_user_html: "%{name} habilitó el inicio de sesión para el usuario %{target}" memorialize_account_html: "%{name} convirtió la cuenta de %{target} en una página in memoriam" promote_user_html: "%{name} promoción al usuario %{target}" + reject_appeal_html: "%{name} rechazó la solicitud de moderación de %{target}" reject_user_html: "%{name} rechazó el registro de %{target}" remove_avatar_user_html: "%{name} eliminó el avatar de %{target}" reopen_report_html: "%{name} reabrió el informe %{target}" @@ -384,14 +393,17 @@ es: media_storage: Almacenamiento multimedia new_users: nuevos usuarios opened_reports: informes abiertos + pending_appeals_html: + one: "<strong>%{count}</strong> apelación pendiente" + other: "<strong>%{count}</strong> apelaciones pendientes" pending_reports_html: - one: "<strong>1</strong> informe pendiente" + one: "<strong>%{count}</strong> informe pendiente" other: "<strong>%{count}</strong> informes pendientes" pending_tags_html: - one: "<strong>1</strong> etiqueta pendiente" + one: "<strong>%{count}</strong> etiqueta pendiente" other: "<strong>%{count}</strong> etiquetas pendientes" pending_users_html: - one: "<strong>1</strong> usuario pendiente" + one: "<strong>%{count}</strong> usuario pendiente" other: "<strong>%{count}</strong> usuarios pendientes" resolved_reports: informes resueltos software: Software @@ -401,6 +413,10 @@ es: top_languages: Idiomas más activos top_servers: Servidores más activos website: Sitio web + disputes: + appeals: + empty: No se encontraron apelaciones. + title: Apelaciones domain_allows: add_new: Añadir dominio a la lista blanca created_msg: Dominio añadido a la lista blanca con éxito @@ -440,7 +456,8 @@ es: show: affected_accounts: one: Una cuenta en la base de datos afectada - other: "%{count} cuentas en la base de datos afectadas" + other: "%{count} cuentas en la base de datos afectada" + zero: Ninguna cuenta en la base de datos está afectada retroactive: silence: Des-silenciar todas las cuentas existentes de este dominio suspend: Des-suspender todas las cuentas existentes de este dominio @@ -494,6 +511,7 @@ es: known_accounts: one: "%{count} cuenta conocida" other: "%{count} cuentas conocidas" + zero: Ninguna cuenta conocida moderation: all: Todos limited: Limitado @@ -560,10 +578,12 @@ es: action_log: Registro de auditoría action_taken_by: Acción tomada por actions: + delete_description_html: Los mensajes denunciados serán eliminados y se registrará una amonestación para ayudarte a escalar en futuras infracciones por la misma cuenta. other_description_html: Ver más opciones para controlar el comportamiento de la cuenta y personalizar la comunicación de la cuenta reportada. + resolve_description_html: No se tomarán medidas contra la cuenta denunciada, no se registrará la amonestación, y se cerrará el informe. silence_description_html: El perfil será visible solo para aquellos que ya lo sigan o lo busquen manualmente, limitando seriamente su alcance. Siempre puede ser revertido. suspend_description_html: El perfil y todos sus contenidos serán inaccesibles hasta que sean finalmente eliminados. La interacción con la cuenta será imposible. Reversible durante un plazo de 30 días. - actions_description_html: 'Si eliminar el contenido ofensivo de arriba no es suficiente:' + actions_description_html: Decide qué medidas tomar para resolver esta denuncia. Si tomas una acción punitiva contra la cuenta denunciada, se le enviará a dicha cuenta una notificación por correo electrónico, excepto cuando se seleccione la categoría <strong>Spam</strong>. add_to_report: Añadir más al reporte are_you_sure: "¿Estás seguro?" assign_to_self: Asignármela a mí @@ -575,7 +595,7 @@ es: none: Ninguno comment_description_html: 'Para proporcionar más información, %{name} escribió:' created_at: Denunciado - delete_and_resolve: Eliminar y resolver + delete_and_resolve: Eliminar publicaciones forwarded: Reenviado forwarded_to: Reenviado a %{domain} mark_as_resolved: Marcar como resuelto @@ -589,12 +609,14 @@ es: placeholder: Especificar qué acciones se han tomado o cualquier otra novedad respecto a esta denuncia… title: Notas notes_description_html: Ver y dejar notas a otros moderadores y a tu yo futuro + quick_actions_description_html: 'Toma una acción rápida o desplázate hacia abajo para ver el contenido denunciado:' reopen: Reabrir denuncia report: 'Reportar #%{id}' reported_account: Cuenta reportada reported_by: Reportado por resolved: Resuelto resolved_msg: "¡La denuncia se ha resuelto correctamente!" + skip_to_actions: Ir directamente a las acciones status: Estado statuses: Contenido reportado statuses_description_html: El contenido ofensivo se citará en la comunicación con la cuenta reportada @@ -715,6 +737,16 @@ es: no_status_selected: No se cambió ningún estado al no seleccionar ninguno title: Estado de las cuentas with_media: Con multimedia + strikes: + actions: + delete_statuses: "%{name} eliminó las publicaciones de %{target}" + disable: "%{name} congeló la cuenta de %{target}" + none: "%{name} envió una advertencia a %{target}" + sensitive: "%{name} marcó la cuenta de %{target} como sensible" + silence: "%{name} limitó la cuenta de %{target}" + suspend: "%{name} suspendió la cuenta de %{target}" + appeal_approved: Apelado + appeal_pending: Apelación pendiente system_checks: database_schema_check: message_html: Hay migraciones pendientes de la base de datos. Por favor, ejecútalas para asegurarte de que la aplicación funciona como debería @@ -737,8 +769,9 @@ es: disallow: Rechazar enlace disallow_provider: Rechazar medio shared_by_over_week: - one: Compartido por una persona durante la última semana + one: Compartido por una persona en la última semana other: Compartido por %{count} personas durante la última semana + zero: Compartido por nadie en la última semana title: Enlaces en tendencia usage_comparison: Compartido %{today} veces hoy, comparado con %{yesterday} ayer pending_review: Revisión pendiente @@ -768,6 +801,7 @@ es: used_by_over_week: one: Usada por una persona durante la última semana other: Usada por %{count} personas durante la última semana + zero: Usada por nadie en la última semana title: Tendencias warning_presets: add_new: Añadir nuevo @@ -776,6 +810,17 @@ es: empty: Aún no has definido ningún preajuste de advertencia. title: Editar configuración predeterminada de avisos admin_mailer: + new_appeal: + actions: + delete_statuses: para eliminar sus mensajes + disable: para congelar su cuenta + none: una advertencia + sensitive: para marcar su cuenta como sensible + silence: para limitar su cuenta + suspend: suspender su cuenta + body: "%{target} está apelando a una solicitud de moderación de %{action_taken_by} el %{date}, del tipo %{type}. Ellos escribieron:" + next_steps: Puedes aprobar la apelación para deshacer la decisión de moderación, o ignorarla. + subject: "%{username} está apelando a una decisión de moderación en %{instance}" new_pending_account: body: Los detalles de la nueva cuenta están abajos. Puedes aprobar o rechazar esta aplicación. subject: Nueva cuenta para revisión en %{instance} (%{username}) @@ -866,7 +911,6 @@ es: status: account_status: Estado de la cuenta confirming: Esperando confirmación de correo electrónico. - functional: Su cuenta está totalmente operativa. pending: Su solicitud está pendiente de revisión por nuestros administradores. Eso puede tardar algún tiempo. Usted recibirá un correo electrónico si el solicitud sea aprobada. redirecting_to: Tu cuenta se encuentra inactiva porque está siendo redirigida a %{acct}. too_fast: Formulario enviado demasiado rápido, inténtelo de nuevo. @@ -932,6 +976,32 @@ es: directory: Directorio de perfiles explanation: Descubre usuarios según sus intereses explore_mastodon: Explorar %{title} + disputes: + strikes: + action_taken: Acción realizada + appeal: Apelar + appeal_approved: Esta amonestación fue apelada exitosamente y ya no es válida + appeal_rejected: Se rechazó la apelación + appeal_submitted_at: Apelación enviada + appealed_msg: Tu apelación fue enviada. Si se aprueba, se te notificará. + appeals: + submit: Enviar apelación + associated_report: Informe asociado + created_at: Con fecha + recipient: Dirigida a + status: 'Publicación #%{id}' + status_removed: Publicación ya eliminada del sistema + title: "%{action} del %{date}" + title_actions: + delete_statuses: Eliminación de publicación + disable: Congelación de la cuenta + none: Advertencia + sensitive: Marcado de cuenta como sensible + silence: Limitación de cuenta + suspend: Suspensión de cuenta + your_appeal_approved: Se aprobó tu apelación + your_appeal_pending: Has enviado una apelación + your_appeal_rejected: Tu apelación ha sido rechazada domain_validator: invalid_domain: no es un nombre de dominio válido errors: @@ -1143,6 +1213,8 @@ es: title: Nueva difusión status: subject: "%{name} acaba de publicar" + update: + subject: "%{name} editó una publicación" notifications: email_events: Eventos para notificaciones por correo electrónico email_events_hint: 'Selecciona los eventos para los que deseas recibir notificaciones:' @@ -1493,6 +1565,15 @@ es: recovery_instructions_html: Si pierdes acceso a tu teléfono, puedes usar uno de los siguientes códigos de recuperación para obtener acceso a tu cuenta. <strong>Mantenlos a salvo</strong>. Por ejemplo, puedes imprimirlos y guardarlos con otros documentos importantes. webauthn: Claves de seguridad user_mailer: + appeal_approved: + action: Ir a tu cuenta + explanation: La apelación de la amonestación contra tu cuenta del %{strike_date} que enviaste el %{appeal_date} fue aprobada. Tu cuenta se encuentra de nuevo en buen estado. + subject: Tu apelación del %{date} ha sido aprobada + title: Apelación aprobada + appeal_rejected: + explanation: La apelación de la amonestación contra tu cuenta del %{strike_date} que enviaste el %{appeal_date} fue rechazada. + subject: Tu apelación del %{date} ha sido rechazada + title: Apelación rechazada backup_ready: explanation: Has solicitado una copia completa de tu cuenta de Mastodon. ¡Ya está preparada para descargar! subject: Tu archivo está preparado para descargar @@ -1504,6 +1585,8 @@ es: subject: Por favor, confirma el intento de inicio de sesión title: Intento de inicio de sesión warning: + appeal: Enviar una apelación + appeal_description: Si crees que esto es un error, puedes enviar una apelación al equipo de %{instance}. categories: spam: Spam violation: El contenido viola las siguientes directrices de la comunidad @@ -1515,7 +1598,6 @@ es: suspend: Ya no puedes utilizar tu cuenta, y tu perfil y el resto de datos ya no son accesibles. Todavía puedes iniciar sesión para solicitar una copia de seguridad de tus datos, hasta que estos sean eliminados por completo en unos 30 días, aunque conservaremos algunos datos básicos para impedir que esquives la suspensión. get_in_touch: Si crees que esto es un error, puedes responder a este correo electrónico para ponerte en contacto con el personal de %{instance}. reason: 'Razón:' - review_server_policies: Revisar las políticas del servidor statuses: 'Publicaciones que han sido halladas contrarias las directrices:' subject: delete_statuses: Tus publicaciones en %{acct} han sido eliminadas diff --git a/config/locales/et.yml b/config/locales/et.yml index 1060dda35..7c7b4eb51 100644 --- a/config/locales/et.yml +++ b/config/locales/et.yml @@ -86,7 +86,6 @@ et: account_moderation_notes: create: Jäta teade created_msg: Moderatsiooniteade edukalt koostatud! - delete: Kustuta destroyed_msg: Moderatsiooniteade edukalt kustutatud! accounts: add_email_domain_block: Keela e-posti domeen @@ -318,9 +317,6 @@ et: silence: vaigistatud suspend: peatatud show: - affected_accounts: - one: Üks kasutaja andmebaasis mõjutatud - other: "%{count} kasutajat andmebaasis mõjutatud" retroactive: silence: Eemalda vaigistus mõjutatud kasutajatelt sellel domeenil suspend: Lõpeta mõjutatud kasutajate peatamine sellel domeenil @@ -343,9 +339,6 @@ et: instances: by_domain: Domeen delivery_available: Üleandmine on saadaval - known_accounts: - one: "%{count} teadaolev kasutaja" - other: "%{count} teadaolevat kasutajat" moderation: all: Kõik limited: Piiratud @@ -596,7 +589,6 @@ et: status: account_status: Konto olek confirming: Ootan e-posti kinnitust. - functional: Teie konto on täiesti töökorras. pending: Teie taotlus ootab ülevaadet meie personali poolt. See võib võtta mõnda aega. Kui Teie taotlus on vastu võetud, saadetakse Teile e-kiri. redirecting_to: Teie konto ei ole aktiivne, kuna hetkel suunatakse ümber kasutajale %{acct}. trouble_logging_in: Probleeme sisselogimisega? @@ -1016,7 +1008,6 @@ et: subject: Teie arhiiv on allalaadimiseks valmis title: Arhiivi väljavõte warning: - review_server_policies: Vaadake üle serveri eeskirju subject: disable: Teie konto %{acct} on lukustatud none: Hoiatus kasutajale %{acct} diff --git a/config/locales/eu.yml b/config/locales/eu.yml index e9c9320e2..785cf14d2 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -92,7 +92,6 @@ eu: account_moderation_notes: create: Sortu oharra created_msg: Moderazio oharra ongi sortu da! - delete: Ezabatu destroyed_msg: Moderazio ohara ongi suntsitu da! accounts: add_email_domain_block: Sartu domeinua zerrenda beltzean @@ -111,6 +110,7 @@ eu: confirm: Berretsi confirmed: Berretsita confirming: Berresten + custom: Pertsonalizatua delete: Ezabatu datuak deleted: Ezabatua demote: Jaitsi mailaz @@ -202,6 +202,7 @@ eu: silenced: Isilarazita statuses: Bidalketa subscribe: Harpidetu + suspend: Kanporatu suspended: Kanporatuta suspension_irreversible: Kontu honen datuak behin betiko ezabatu dira. Kontua kanporatzea atzera bota dezakezu, berriz erabilgarri izan dadin, baina datuak ezingo dira berreskuratu. suspension_reversible_hint_html: Kontu hau kanporatua izan da eta bere datuak %{date}(e)an behin betiko ezabatuko dira. Ordura arte kontua kalterik gabe leheneratu daiteke. Kontuaren datu guztiak oraintxe bertan ezabatu nahi badituzu, jarraian egin dezakezu. @@ -222,6 +223,7 @@ eu: whitelisted: Zerrenda zurian action_logs: action_types: + approve_appeal: Onartu apelazioa approve_user: Onartu erabiltzailea assigned_to_self_report: Esleitu salaketa change_email_user: Aldatu erabiltzailearen e-maila @@ -253,6 +255,7 @@ eu: enable_user: Gaitu erabiltzailea memorialize_account: Bihurtu kontua oroigarri promote_user: Igo erabiltzailea mailaz + reject_appeal: Baztertu apelazioa reject_user: Baztertu erabiltzailea remove_avatar_user: Kendu abatarra reopen_report: Berrireki txostena @@ -271,6 +274,7 @@ eu: update_domain_block: Eguneratu domeinu-blokeoa update_status: Eguneratu bidalketa actions: + approve_appeal_html: "%{name} erabiltzaileak %{target} erabiltzailearen moderazio erabakiaren apelazioa onartu du" approve_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen izen-ematea onartu du" assigned_to_self_report_html: "%{name} erabiltzaileak %{target} salaketa bere buruari esleitu dio" change_email_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen e-posta helbidea aldatu du" @@ -302,6 +306,7 @@ eu: enable_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen saioa gaitu du" memorialize_account_html: "%{name} erabiltzaileak %{target} kontua memoriala bihurtu du" promote_user_html: "%{name} erabiltzaileak %{target} erabiltzailea mailaz igo du" + reject_appeal_html: "%{name} erabiltzaileak %{target} erabiltzailearen moderazio erabakiaren apelazioa baztertu du" reject_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen izen-ematea baztertu du" remove_avatar_user_html: "%{name} erabiltzaileak %{target} erabiltzailearen abatarra kendu du" reopen_report_html: "%{name} erabiltzaileak %{target} txostena berrireki du" @@ -380,15 +385,6 @@ eu: media_storage: Multimedia biltegiratzea new_users: erabiltzaile berri opened_reports: txosten irekita - pending_reports_html: - one: Txosten <strong>1</strong> zain - other: "<strong>%{count}</strong> txosten zain" - pending_tags_html: - one: Traola <strong>1</strong> zain - other: "<strong>%{count}</strong> traola zain" - pending_users_html: - one: Erabiltzaile <strong>1</strong> zain - other: "<strong>%{count}</strong> erabiltzaile zain" resolved_reports: txosten konponduta software: Softwarea sources: Izen emate jatorriak @@ -397,6 +393,10 @@ eu: top_languages: Hizkuntza aktiboenak top_servers: Zerbitzari aktiboenak website: Webgunea + disputes: + appeals: + empty: Ez da apelaziorik aurkitu. + title: Apelazioak domain_allows: add_new: Sartu domeinua zerrenda zurian created_msg: Domeinua ongi sartu da zerrenda zurian @@ -436,7 +436,8 @@ eu: show: affected_accounts: one: Datu-baseko kontu bati eragiten dio - other: Datu-baseko %{count} kontuei eragiten die + other: Datu-baseko %{count} konturi eragiten die + zero: Ez die eragiten datu-baseko kontuei retroactive: silence: Kendu isilarazteko agindua domeinu honetako kontu guztiei suspend: Kendu kanporatzeko agindua domeinu honetako kontu guztiei @@ -490,6 +491,7 @@ eu: known_accounts: one: Kontu ezagun %{count} other: "%{count} kontu ezagun" + zero: Kontu ezagunik ez moderation: all: Denak limited: Mugatua @@ -547,41 +549,61 @@ eu: report_notes: created_msg: Salaketa oharra ongi sortu da! destroyed_msg: Salaketa oharra ongi ezabatu da! + today_at: Gaur %{time}(e)tan reports: account: notes: one: Ohar %{count} other: "%{count} ohar" + action_log: Auditoria-egunkaria action_taken_by: Neurrien hartzailea + actions: + other_description_html: Ikusi kontuaren portaera kontrolatzeko eta salatutako kontuarekin komunikazioa pertsonalizatzeko aukera gehiago. + silence_description_html: Profila dagoeneko jarraitzen dutenei edo eskuz bilatzen dutenei bakarrik agertuko zaie, bere irismena asko mugatuz. Beti bota daiteke atzera. + suspend_description_html: Profila eta bere eduki guztiak iritsiezinak bihurtuko dira, ezabatzen den arte. Kontuarekin ezin da interakziorik eduki. Atzera bota daiteke 30 eguneko epean. + actions_description_html: Erabaki txosten hau konpontzeko ze ekintza hartu. Salatutako kontuaren aurka zigor ekintza bat hartzen baduzu, eposta jakinarazpen bat bidaliko zaie, <strong>Spam</strong> kategoria hautatzean ezik. + add_to_report: Gehitu gehiago txostenera are_you_sure: Ziur zaude? assign_to_self: Esleitu niri assigned: Esleitutako moderatzailea by_target_domain: Jakinarazitako kontuaren domeinua + category: Kategoria + category_description_html: Kontu edo/eta eduki hau salatu izanaren arrazoia salatutako kontuarekiko komunikazioan aipatuko da comment: none: Bat ere ez + comment_description_html: 'Informazio gehiago emateko, %{name} idatzi:' created_at: Salatua + delete_and_resolve: Ezabatu bidalketak forwarded: Birbidalia forwarded_to: 'Hona birbidalia: %{domain}' mark_as_resolved: Markatu konpondutako gisa mark_as_unresolved: Markatu konpondu gabeko gisa + no_one_assigned: Inor ez notes: create: Gehitu oharra create_and_resolve: Konpondu ohar batekin create_and_unresolve: Berrireki ohar batekin delete: Ezabatu placeholder: Azaldu hartutako neurriak, edo erlazioa duten bestelako berriak... + title: Oharrak + notes_description_html: Ikusi eta idatzi oharrak beste moderatzaileentzat eta zuretzat etorkizunerako + quick_actions_description_html: 'Hartu ekintza azkar bat edo korritu behera salatutako edukia ikusteko:' reopen: Berrireki salaketa report: 'Salaketa #%{id}' reported_account: Salatutako kontua reported_by: Salatzailea resolved: Konponduta resolved_msg: Salaketa ongi konpondu da! + skip_to_actions: Salto ekintzetara status: Mezua + statuses: Salatutako edukia + statuses_description_html: Salatutako edukia salatutako kontuarekiko komunikazioan aipatuko da target_origin: Salatutako kontuaren jatorria title: Salaketak unassign: Kendu esleipena unresolved: Konpondu gabea updated_at: Eguneratua + view_profile: Ikusi profila rules: add_new: Gehitu araua delete: Ezabatu @@ -683,12 +705,21 @@ eu: destroyed_msg: Guneko igoera ongi ezabatu da! statuses: back_to_account: Atzera kontuaren orrira + back_to_report: Atzera txostenaren orrira + batch: + remove_from_report: Kendu txostenetik + report: Salatu deleted: Ezabatuta media: title: Multimedia no_status_selected: Ez da bidalketarik aldatu ez delako bidalketarik aukeratu title: Kontuaren bidalketak with_media: Multimediarekin + strikes: + actions: + delete_statuses: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketak ezabatu ditu" + disable: "%{name} erabiltzailea %{target} erabiltzailearen kontua izoztu du" + none: "%{name} erabiltzaileak abisua bidali dio %{target} erabiltzaileari" system_checks: database_schema_check: message_html: Aplikatu gabeko datu-basearen migrazioak daude. Exekutatu aplikazioak esperotako portaera izan dezan @@ -710,9 +741,6 @@ eu: allow_provider: Onartu argitaratzailea disallow: Ukatu esteka disallow_provider: Ukatu argitaratzailea - shared_by_over_week: - one: Pertsona batek partekatua azken astean - other: "%{count} pertsonak partekatua azken astean" title: Esteken joerak usage_comparison: "%{today} aldiz partekatua gaur, atzo %{yesterday} aldiz" pending_review: Berrikusketaren zain @@ -739,9 +767,6 @@ eu: trending_rank: "%{rank}. joera" usable: Erabili daiteke usage_comparison: "%{today} aldiz erabili da gaur, atzo %{yesterday} aldiz" - used_by_over_week: - one: Pertsona batek erabilia azken astean - other: "%{count} pertsonak erabilia azken astean" title: Joerak warning_presets: add_new: Gehitu berria @@ -839,7 +864,6 @@ eu: status: account_status: Kontuaren egoera confirming: E-mail baieztapena osatu bitartean zain. - functional: Zure kontua guztiz erabilgarri dago. pending: Zure eskaera gainbegiratzeko dago oraindik. Honek denbora behar lezake. Zure eskaera onartzen bada e-mail bat jasoko duzu. redirecting_to: Zure kontua ez dago aktibo orain %{acct} kontura birbideratzen duelako. too_fast: Formularioa azkarregi bidali duzu, saiatu berriro. @@ -1470,7 +1494,6 @@ eu: subject: Berretsi saioa hasteko saiakera title: Saioa hasteko saiakera warning: - review_server_policies: Berrikusi zerbitzariko politikak subject: disable: Zure %{acct} kontua izoztu da none: "%{acct} konturako abisua" diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 9f0b39a9c..933bc3610 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -94,7 +94,6 @@ fa: account_moderation_notes: create: افزودن یادداشت created_msg: یادداشت مدیر با موفقیت ساخته شد! - delete: حذف destroyed_msg: یادداشت نظارتی با موفقیت نابود شد! accounts: add_email_domain_block: مسدود کردن دامنهٔ رایانامه @@ -384,15 +383,6 @@ fa: media_storage: ذخیرهساز رسانه new_users: کاربران جدید opened_reports: گزارش باز شده - pending_reports_html: - one: "<strong>۱</strong> گزارش منتظر" - other: "<strong>%{count}</strong> گزارش منتظر" - pending_tags_html: - one: "<strong>۱</strong> برچسب منتظر" - other: "<strong>%{count}</strong> برچسب منتظر" - pending_users_html: - one: "<strong>۱</strong> کاربر منتظر" - other: "<strong>%{count}</strong> کاربر منتظر" resolved_reports: گزارش حل شده software: نرمافزار sources: منابع ثبتنام @@ -438,9 +428,6 @@ fa: silence: بیصداشده suspend: معلقشده show: - affected_accounts: - one: روی یک حساب در پایگاه داده تأثیر گذاشت - other: روی %{count} حساب در پایگاه داده تأثیر گذاشت retroactive: silence: بیصداشدن همهٔ حسابهای این دامین را لغو کن suspend: معلقشدن همهٔ حسابهای این دامین را لغو کن @@ -491,9 +478,6 @@ fa: delivery_error_hint: اگر تحویل محتوا به مدت %{count} روز ممکن نباشد، به طور خودکار به عنوان تحویلناشونده علامتگذاری خواهد شد. destroyed_msg: هم اکنون داده دامنه %{domain} در صف حذف حتمی است. empty: هیج دامنهای پیدا نشد. - known_accounts: - one: "%{count} حساب شناختهشده" - other: "%{count} حساب شناختهشده" moderation: all: همه limited: محدود @@ -570,7 +554,6 @@ fa: comment: none: هیچ created_at: گزارششده - delete_and_resolve: حذف و رفع forwarded: هدایت شده forwarded_to: هدایت شده به %{domain} mark_as_resolved: علامتگذاری به عنوان حلشده @@ -835,7 +818,6 @@ fa: status: account_status: وضعیت حساب confirming: در حال انتظار برای کامل شدن تأیید ایمیل. - functional: حساب شما قابل استفاده است. pending: درخواست شما منتظر تأیید مسئولان سایت است و این فرایند ممکن است کمی طول بکشد. اگر درخواست شما پذیرفته شود به شما ایمیلی فرستاده خواهد شد. redirecting_to: حساب شما غیرفعال است زیرا هماکنون به %{acct} منتقل شده است. too_fast: فرم با سرعت بسیار زیادی فرستاده شد، دوباره تلاش کنید. @@ -1471,7 +1453,6 @@ fa: categories: spam: هرزنامه reason: 'دلیل:' - review_server_policies: مرور سیاستهای کارساز subject: disable: حساب %{acct} شما متوقف شده است none: هشدار برای %{acct} diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 38b9a04bf..f438552ce 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -94,7 +94,6 @@ fi: account_moderation_notes: create: Jätä muistiinpano created_msg: Moderointimerkinnän luonti onnistui! - delete: Poista destroyed_msg: Moderointimerkinnän poisto onnistui! accounts: add_email_domain_block: Estä sähköpostidomain @@ -113,6 +112,7 @@ fi: confirm: Vahvista confirmed: Vahvistettu confirming: Vahvistetaan + custom: Mukautettu delete: Poista tiedot deleted: Poistettu demote: Alenna @@ -162,6 +162,11 @@ fi: not_subscribed: Ei tilaaja pending: Odottaa tarkistusta perform_full_suspension: Siirrä kokonaan jäähylle + previous_strikes: Aiemmat varoitukset + previous_strikes_description_html: + one: Tällä tilillä on <strong>yksi</strong> varoitus. + other: Tällä tilillä on <strong>%{count}</strong> varoitusta. + zero: Tämä tili on <strong>hyvässä kunnossa</strong>. promote: Ylennä protocol: Protokolla public: Julkinen @@ -203,11 +208,15 @@ fi: silence: Hiljennä silenced: Mykistetty statuses: Tilat + strikes: Aiemmat varoitukset subscribe: Tilaa + suspend: Jäädytä suspended: Jäähyllä suspension_irreversible: Tämän tilin tiedot on poistettu peruuttamattomasti. Voit peruuttaa tilin jäädyttämisen, jolloin siitä tulee käyttökelpoinen, mutta toiminto ei palauta sillä aiemmin olleita tietoja. suspension_reversible_hint_html: Tili on jäädytetty, ja tiedot poistetaan kokonaan %{date}. Siihen asti tili voidaan palauttaa ilman haitallisia vaikutuksia. Jos haluat poistaa kaikki tilin tiedot välittömästi, voit tehdä sen alla. title: Tilit + unblock_email: Poista sähköpostiosoitteen esto + unblocked_email_msg: Käyttäjän %{username} sähköpostiosoitteen esto kumottiin unconfirmed_email: Sähköpostia ei vahvistettu undo_sensitized: Kumoa pakotus arkaluontoiseksi tiliksi undo_silenced: Peru hiljennys @@ -222,6 +231,7 @@ fi: whitelisted: Sallittu liittämiselle action_logs: action_types: + approve_appeal: Hyväksy valitus approve_user: Hyväksy käyttäjä assigned_to_self_report: Määritä raportti change_email_user: Vaihda sähköposti käyttäjälle @@ -240,6 +250,7 @@ fi: destroy_domain_allow: Salli verkkotunnuksen poisto destroy_domain_block: Poista verkkotunnuksen esto destroy_email_domain_block: Poista sähköpostipalvelimen esto + destroy_instance: Tyhjennä verkkotunnus destroy_ip_block: Poista IP-sääntö destroy_status: Poista julkaisu destroy_unavailable_domain: Poista ei-saatavilla oleva verkkotunnus @@ -252,6 +263,7 @@ fi: enable_user: Tili otettu käyttöön memorialize_account: Muuta muistotiliksi promote_user: Käyttäjä ylennetty + reject_appeal: Hylkää valitus reject_user: Hylkää käyttäjä remove_avatar_user: Profiilikuvan poisto reopen_report: Uudelleenavaa raportti @@ -261,6 +273,7 @@ fi: silence_account: Hiljennä tili suspend_account: Jäädytä tili unassigned_report: Peruuta raportin määritys + unblock_email_account: Poista sähköpostiosoitteen esto unsensitive_account: Kumoa pakotus arkaluontoiseksi tiliksi unsilence_account: Peruuta tilin rajoitus unsuspend_account: Peruuta tilin jäädytys @@ -269,6 +282,7 @@ fi: update_domain_block: Päivitä verkkotunnuksen esto update_status: Päivitä viesti actions: + approve_appeal_html: "%{name} hyväksyi moderointipäätöksen muutoksenhaun lähettäjältä %{target}" approve_user_html: "%{name} hyväksyi käyttäjän rekisteröitymisen kohteesta %{target}" assigned_to_self_report_html: "%{name} otti raportin %{target} tehtäväkseen" change_email_user_html: "%{name} vaihtoi käyttäjän %{target} sähköpostiosoitteen" @@ -287,6 +301,7 @@ fi: destroy_domain_allow_html: "%{name} esti yhdistämisen verkkotunnuksella %{target}" destroy_domain_block_html: "%{name} poisti verkkotunnuksen %{target} eston" destroy_email_domain_block_html: "%{name} poisti verkkotunnuksen %{target} eston" + destroy_instance_html: "%{name} tyhjensi verkkotunnuksen %{target}" destroy_ip_block_html: "%{name} poisti IP-säännön %{target}" destroy_status_html: "%{name} poisti viestin %{target}" destroy_unavailable_domain_html: "%{name} jatkoi toimitusta verkkotunnukseen %{target}" @@ -299,6 +314,7 @@ fi: enable_user_html: "%{name} salli kirjautumisen käyttäjälle %{target}" memorialize_account_html: "%{name} muutti käyttäjän %{target} tilin muistosivuksi" promote_user_html: "%{name} ylensi käyttäjän %{target}" + reject_appeal_html: "%{name} hylkäsi moderointipäätöksen muutoksenhaun %{target}" reject_user_html: "%{name} hylkäsi käyttäjän rekisteröitymisen kohteesta %{target}" remove_avatar_user_html: "%{name} poisti käyttäjän %{target} profiilikuvan" reopen_report_html: "%{name} avasi uudelleen raportin %{target}" @@ -308,6 +324,7 @@ fi: silence_account_html: "%{name} rajoitti %{target} tilin" suspend_account_html: "%{name} siirsi käyttäjän %{target} jäähylle" unassigned_report_html: "%{name} peruutti raportin määrityksen %{target}" + unblock_email_account_html: "%{name} poisti %{target} sähköpostiosoitteen eston" unsensitive_account_html: "%{name} poisti merkinnän %{target} arkaluonteinen media" unsilence_account_html: "%{name} ei tehnyt rajoitusta %{target} tilille" unsuspend_account_html: "%{name} perui käyttäjän %{target} jäähyn" @@ -376,6 +393,18 @@ fi: media_storage: Median tallennustila new_users: uudet käyttäjät opened_reports: raportit avattu + pending_appeals_html: + one: "<strong>%{count}</strong> vireillä oleva valitus" + other: "<strong>%{count}</strong> vireillä olevat valitukset" + pending_reports_html: + one: "<strong>%{count}</strong> odottava raportti" + other: "<strong>%{count}</strong> odottavat raportit" + pending_tags_html: + one: "<strong>%{count}</strong> odottava hashtagi" + other: "<strong>%{count}</strong> odottavat hashtagit" + pending_users_html: + one: "<strong>%{count}</strong> odottava käyttäjä" + other: "<strong>%{count}</strong> odottavat käyttäjät" resolved_reports: raportit ratkaistu software: Ohjelmisto sources: Kirjautumisen lähteet @@ -384,6 +413,10 @@ fi: top_languages: Aktiiviset kielet top_servers: Aktiiviset palvelimet website: Sivusto + disputes: + appeals: + empty: Valituksia ei löytynyt. + title: Valitukset domain_allows: add_new: Salli liitto verkkotunnuksella created_msg: Verkkotunnus on onnistuneesti sallittu federaatiolle @@ -422,8 +455,9 @@ fi: suspend: jäähyllä show: affected_accounts: - one: Vaikuttaa yhteen tiliin tietokannassa + one: Tämä vaikuttaa yhteen tiliin tietokannassa other: Vaikuttaa %{count} tiliin tietokannassa + zero: Tämä ei vaikuta mihinkään tietokannan tiliin retroactive: silence: Peru kaikkien tässä verkkotunnuksessa jo olemassa olevien tilien hiljennys suspend: Peru kaikkien tässä verkkotunnuksessa jo olemassa olevien tilien jäähy @@ -456,6 +490,7 @@ fi: back_to_limited: Rajoitettu back_to_warning: Varoitus by_domain: Verkkotunnus + confirm_purge: Oletko varma, että haluat pysyvästi poistaa tiedot tältä verkkotunnukselta? delivery: all: Kaikki clear: Tyhjennä toimitusvirheet @@ -465,16 +500,25 @@ fi: unavailable: Ei saatavilla unavailable_message: Toimitus ei käytettävissä warning: Varoitus + warning_message: + one: Toimitusvirhe %{count} päivä + other: Toimitushäiriö %{count} päivää delivery_available: Toimitus on saatavilla delivery_error_days: Toimitusvirheen päivät delivery_error_hint: Jos toimitus ei ole mahdollista %{count} päivän aikana, se merkitään automaattisesti toimittamattomaksi. + destroyed_msg: Tiedot %{domain} on nyt jonossa välitöntä poistoa varten. empty: Verkkotunnuksia ei löytynyt. + known_accounts: + one: "%{count} tunnettu tili" + other: "%{count} tunnettua tiliä" + zero: Ei tunnettua tiliä moderation: all: Kaikki limited: Rajoitettu title: Moderointi private_comment: Yksityinen kommentti public_comment: Julkinen kommentti + purge: Tyhjennä title: Tiedossa olevat instanssit total_blocked_by_us: Estetty meidän toimesta total_followed_by_them: Heidän seuraama @@ -525,37 +569,57 @@ fi: report_notes: created_msg: Muistiinpano onnistuneesti lisätty raporttiin! destroyed_msg: Muistiinpano onnistuneesti poistettu raportista! + today_at: Tänään klo %{time} reports: + account: + notes: + one: "%{count} ilmoitus" + other: "%{count} ilmoitusta" + action_log: Tarkastusloki action_taken_by: Toimenpiteen tekijä + actions: + delete_description_html: Ilmoitetut viestit poistetaan ja kirjataan varoitus, joka auttaa sinua saman tilin tulevista rikkomuksista. + other_description_html: Katso lisää vaihtoehtoja tilin käytöksen hallitsemiseksi ja ilmoitetun tilin viestinnän mukauttamiseksi. + add_to_report: Lisää raporttiin are_you_sure: Oletko varma? assign_to_self: Ota tehtäväksi assigned: Määritetty valvoja by_target_domain: Ilmoitetun tilin verkkotunnus + category: Kategoria comment: none: Ei mitään created_at: Raportoitu + delete_and_resolve: Poista viestejä forwarded: Välitetty forwarded_to: Välitetty %{domain} mark_as_resolved: Merkitse ratkaistuksi mark_as_unresolved: Merkitse ratkaisemattomaksi + no_one_assigned: Ei kukaan notes: create: Lisää muistiinpano create_and_resolve: Ratkaise ja lisää muistiinpano create_and_unresolve: Avaa uudelleen ja lisää muistiinpano delete: Poista placeholder: Kuvaile mitä toimia on tehty tai muita päivityksiä tähän raporttiin… + title: Merkinnät + notes_description_html: Tarkastele ja jätä merkintöjä muille valvojille ja itsellesi tulevaisuuteen + quick_actions_description_html: 'Suorita nopea toiminto tai vieritä alas nähdäksesi raportoitu sisältö:' reopen: Avaa raportti uudestaan report: Raportti nro %{id} reported_account: Raportoitu tili reported_by: Raportoija resolved: Ratkaistut resolved_msg: Raportti onnistuneesti ratkaistu! + skip_to_actions: Siirry toimintoihin status: Tila + statuses: Raportoitu sisältö + statuses_description_html: Loukkaava sisältö mainitaan ilmoitetun tilin yhteydessä target_origin: Raportoidun tilin alkuperä title: Raportit unassign: Määrittämätön unresolved: Ratkaisemattomat updated_at: Päivitetty + view_profile: Näytä profiili rules: add_new: Lisää sääntö delete: Poista @@ -657,6 +721,10 @@ fi: destroyed_msg: Sivuston lataus onnistuneesti poistettu! statuses: back_to_account: Takaisin tilin sivulle + back_to_report: Takaisin raporttisivulle + batch: + remove_from_report: Poista raportista + report: Raportti deleted: Poistettu media: title: Media @@ -684,9 +752,6 @@ fi: allow_provider: Salli julkaisija disallow: Hylkää linkki disallow_provider: Estä julkaisija - shared_by_over_week: - one: Yhden henkilön jakama viime viikon aikana - other: "%{count} henkilön jakama viime viikon aikana" title: Suositut linkit usage_comparison: Jaettu %{today} kertaa tänään verrattuna eilen %{yesterday} pending_review: Odottaa tarkistusta @@ -713,9 +778,6 @@ fi: trending_rank: 'Nousussa #%{rank}' usable: Voidaan käyttää usage_comparison: Käytetty %{today} kertaa tänään, verrattuna %{yesterday} eiliseen - used_by_over_week: - one: Yhden henkilön käyttämä viime viikon aikana - other: "%{count} henkilön käyttämä viime viikon aikana" title: Trendit warning_presets: add_new: Lisää uusi @@ -792,6 +854,7 @@ fi: invalid_reset_password_token: Salasananpalautustunnus on virheellinen tai vanhentunut. Pyydä uusi. link_to_otp: Syötä puhelimesi kaksivaiheinen koodi tai palautuskoodi link_to_webauth: Käytä suojausavaintasi + log_in_with: Kirjaudu käyttäen login: Kirjaudu sisään logout: Kirjaudu ulos migrate_account: Muuta toiseen tiliin @@ -813,7 +876,6 @@ fi: status: account_status: Tilin tila confirming: Odotetaan sähköpostivahvistuksen valmistumista. - functional: Tilisi on täysin toimiva. pending: Hakemuksesi odottaa henkilökuntamme tarkastusta. Tämä voi kestää jonkin aikaa. Saat sähköpostiviestin, jos hakemuksesi on hyväksytty. redirecting_to: Tilisi ei ole aktiivinen, koska se ohjaa tällä hetkellä kohteeseen %{acct}. too_fast: Lomake lähetettiin liian nopeasti, yritä uudelleen. @@ -879,6 +941,12 @@ fi: directory: Profiilihakemisto explanation: Löydä käyttäjiä heidän kiinnostustensa mukaan explore_mastodon: Tutki %{title}ia + disputes: + strikes: + created_at: Päivätty + recipient: Osoitettu + status: 'Viesti #%{id}' + status_removed: Viesti on jo poistettu järjestelmästä domain_validator: invalid_domain: ei ole kelvollinen toimialueen nimi errors: @@ -1171,6 +1239,9 @@ fi: reply: proceed: Jatka vastaamiseen prompt: 'Haluat vastata julkaisuun:' + reports: + errors: + invalid_rules: ei viittaa voimassa oleviin sääntöihin scheduled_statuses: over_daily_limit: Olet ylittänyt %{limit} ajoitetun viestin rajan tälle päivälle over_total_limit: Olet ylittänyt %{limit} ajoitetun viestin rajan @@ -1253,14 +1324,17 @@ fi: other: "%{count} videota" boosted_from_html: Tehostettu %{acct_link} content_warning: 'Sisältövaroitus: %{warning}' + default_language: Sama kuin käyttöliittymän kieli disallowed_hashtags: one: 'sisälsi aihetunnisteen jota ei sallita: %{tags}' other: 'sisälsi aihetunnisteet joita ei sallita: %{tags}' + edited_at: Muokattu %{date} errors: in_reply_not_found: Viesti, johon yrität vastata, ei näytä olevan olemassa. open_in_web: Avaa selaimessa over_character_limit: merkkimäärän rajoitus %{max} ylitetty pin_errors: + direct: Viestejä, jotka ovat näkyvissä vain mainituille käyttäjille, ei voi kiinnittää limit: Olet jo kiinnittänyt suurimman mahdollisen määrän tuuttauksia ownership: Muiden tuuttauksia ei voi kiinnittää reblog: Buustausta ei voi kiinnittää @@ -1296,6 +1370,7 @@ fi: interaction_exceptions: Poikkeukset, jotka perustuvat vuorovaikutukseen interaction_exceptions_explanation: Huomaa, että ei ole takeita viestien poistamiselle, jos ne alittavat suosikki- tai tehostusrajan sen jälkeen, kun ne on kerran ylitetty. keep_direct: Säilytä suorat viestit + keep_direct_hint: Ei poista mitään sinun suoria viestejä keep_media: Säilytä viestit, joissa on liitetiedostoja keep_media_hint: Ei poista viestejä, joissa on liitteitä keep_pinned: Pidä kiinnitettyt viestit @@ -1315,6 +1390,7 @@ fi: '63113904': 2 vuotta '7889238': 3 kuukautta min_age_label: Ikäraja + min_favs: Pidä viestit suosikeissa vähintään stream_entries: pinned: Kiinnitetty tuuttaus reblogged: buustasi @@ -1329,6 +1405,7 @@ fi: formats: default: "%d.%m.%Y klo %H.%M" month: "%b %Y" + time: "%H:%M" two_factor_authentication: add: Lisää disable: Poista käytöstä @@ -1355,13 +1432,17 @@ fi: subject: Ole hyvä ja vahvista sisäänkirjautumisyritys title: Sisäänkirjautumisyritys warning: - review_server_policies: Tarkista palvelimen käytännöt + categories: + spam: Roskaposti + reason: 'Syy:' subject: disable: Tilisi %{acct} on jäädytetty none: Varoitus %{acct} title: + delete_statuses: Viestit poistettu disable: Tili jäädytetty none: Varoitus + sensitive: Media piilotettu silence: Rajoitettu tili suspend: Tilin käyttäminen keskeytetty welcome: diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 7fde95d4f..2673b25cb 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -16,11 +16,11 @@ fr: contact: Contact contact_missing: Non défini contact_unavailable: Non disponible - discover_users: Découvrez des utilisateurs + discover_users: Découvrez des utilisateur·rice·s documentation: Documentation - federation_hint_html: Avec un compte sur %{instance}, vous pourrez suivre les gens sur n’importe quel serveur Mastodon et au-delà. + federation_hint_html: Avec un compte sur %{instance}, vous pourrez suivre des gens sur n’importe quel serveur Mastodon et au-delà. get_apps: Essayez une application mobile - hosted_on: Serveur Mastodon hébergé par %{domain} + hosted_on: Serveur Mastodon hébergé sur %{domain} instance_actor_flash: | Ce compte est un acteur virtuel utilisé pour représenter le serveur lui-même et non un·e utilisateur·rice individuel·le. Il est utilisé à des fins de fédération et ne doit pas être bloqué à moins que vous ne vouliez bloquer l’instance entière, auquel cas vous devriez utiliser un blocage de domaine. @@ -32,10 +32,10 @@ fr: server_stats: 'Statistiques du serveur :' source_code: Code source status_count_after: - one: statut - other: statuts + one: message + other: messages status_count_before: Ayant publié - tagline: Suivez vos amis et découvrez-en de nouveaux + tagline: Suivez vos ami·e·s et découvrez-en de nouveaux·elles terms: Conditions d’utilisation unavailable_content: Serveurs modérés unavailable_content_description: @@ -94,7 +94,6 @@ fr: account_moderation_notes: create: Laisser une remarque created_msg: Note de modération créée avec succès ! - delete: Supprimer destroyed_msg: Note de modération supprimée avec succès ! accounts: add_email_domain_block: Mettre le domaine du courriel sur liste noire @@ -163,6 +162,11 @@ fr: not_subscribed: Non abonné pending: En attente d’approbation perform_full_suspension: Suspendre + previous_strikes: Sanctions précédentes + previous_strikes_description_html: + one: Ce compte a reçu <strong>une</strong> sanction. + other: Ce compte a reçu <strong>%{count}</strong> sanctions. + zero: Ce compte est <strong>en règle</strong>. promote: Promouvoir protocol: Protocole public: Publique @@ -203,9 +207,10 @@ fr: targeted_reports: Signalés par d’autres silence: Masquer silenced: Masqué - statuses: Statuts + statuses: Messages strikes: Punitions précédentes subscribe: S’abonner + suspend: Suspendre suspended: Suspendu suspension_irreversible: Les données de ce compte ont été irréversiblement supprimées. Vous pouvez annuler la suspension du compte pour le rendre utilisable, mais il ne récupérera aucune donnée qu’il avait auparavant. suspension_reversible_hint_html: Le compte a été suspendu et les données seront complètement supprimées le %{date}. D’ici là, le compte peut être restauré sans aucun effet néfaste. Si vous souhaitez supprimer toutes les données du compte immédiatement, vous pouvez le faire ci-dessous. @@ -226,6 +231,7 @@ fr: whitelisted: Sur liste blanche action_logs: action_types: + approve_appeal: Approuver l'appel approve_user: Approuver l’utilisateur assigned_to_self_report: Affecter le signalement change_email_user: Modifier le courriel pour @@ -246,7 +252,7 @@ fr: destroy_email_domain_block: Supprimer le blocage de domaine de courriel destroy_instance: Purge du domaine destroy_ip_block: Supprimer la règle IP - destroy_status: Supprimer le statut + destroy_status: Supprimer le message destroy_unavailable_domain: Supprimer le domaine indisponible disable_2fa_user: Désactiver l’A2F disable_custom_emoji: Désactiver les émojis personnalisés @@ -257,6 +263,7 @@ fr: enable_user: Activer l’utilisateur memorialize_account: Ériger en mémorial promote_user: Promouvoir l’utilisateur + reject_appeal: Rejeter l'appel reject_user: Rejeter l’utilisateur remove_avatar_user: Supprimer l’avatar reopen_report: Rouvrir le signalement @@ -273,8 +280,9 @@ fr: update_announcement: Modifier l’annonce update_custom_emoji: Mettre à jour les émojis personnalisés update_domain_block: Mettre à jour le blocage de domaine - update_status: Mettre à jour le statut + update_status: Mettre à jour le message actions: + approve_appeal_html: "%{name} a approuvé l'appel de la décision de modération émis par %{target}" approve_user_html: "%{name} a approuvé l’inscription de %{target}" assigned_to_self_report_html: "%{name} s’est assigné·e le signalement de %{target}" change_email_user_html: "%{name} a modifié l'adresse de courriel de l'utilisateur·rice %{target}" @@ -295,7 +303,7 @@ fr: destroy_email_domain_block_html: "%{name} a débloqué le domaine de courriel %{target}" destroy_instance_html: "%{name} a purgé le domaine %{target}" destroy_ip_block_html: "%{name} a supprimé la règle pour l'IP %{target}" - destroy_status_html: "%{name} a supprimé le statut de %{target}" + destroy_status_html: "%{name} a supprimé le message de %{target}" destroy_unavailable_domain_html: "%{name} a repris la livraison au domaine %{target}" disable_2fa_user_html: "%{name} a désactivé l'authentification à deux facteurs pour l'utilisateur·rice %{target}" disable_custom_emoji_html: "%{name} a désactivé l'émoji %{target}" @@ -306,6 +314,7 @@ fr: enable_user_html: "%{name} a activé la connexion de l'utilisateur·rice %{target}" memorialize_account_html: "%{name} a converti le compte de %{target} en un mémorial" promote_user_html: "%{name} a promu l'utilisateur·rice %{target}" + reject_appeal_html: "%{name} a rejeté l'appel de la décision de modération émis par %{target}" reject_user_html: "%{name} a rejeté l’inscription de %{target}" remove_avatar_user_html: "%{name} a supprimé l'avatar de %{target}" reopen_report_html: "%{name} a rouvert le signalement %{target}" @@ -322,8 +331,8 @@ fr: update_announcement_html: "%{name} a mis à jour l'annonce %{target}" update_custom_emoji_html: "%{name} a mis à jour l'émoji %{target}" update_domain_block_html: "%{name} a mis à jour le blocage de domaine pour %{target}" - update_status_html: "%{name} a mis à jour le statut de %{target}" - deleted_status: "(statut supprimé)" + update_status_html: "%{name} a mis à jour le message de %{target}" + deleted_status: "(message supprimé)" empty: Aucun journal trouvé. filter_by_action: Filtrer par action filter_by_user: Filtrer par utilisateur·ice @@ -384,14 +393,17 @@ fr: media_storage: Stockage des médias new_users: nouveaux utilisateurs opened_reports: rapports ouverts + pending_appeals_html: + one: "<strong>%{count}</strong> appel en attente" + other: "<strong>%{count}</strong> appels en attente" pending_reports_html: - one: "<strong>1</strong> rapport en attente" + one: "<strong>%{count}</strong> rapport en attente" other: "<strong>%{count}</strong> rapports en attente" pending_tags_html: - one: "<strong>1</strong> hashtag en attente" + one: "<strong>%{count}</strong> hashtag en attente" other: "<strong>%{count}</strong> hashtags en attente" pending_users_html: - one: "<strong>1</strong> utilisateur·rice en attente" + one: "<strong>%{count}</strong> utilisateur·rice en attente" other: "<strong>%{count}</strong> utilisateur·rice·s en attente" resolved_reports: rapports résolus software: Logiciel @@ -401,6 +413,10 @@ fr: top_languages: Langues les plus actives top_servers: Serveurs les plus actifs website: Site Web + disputes: + appeals: + empty: Aucun appel trouvé. + title: Appels domain_allows: add_new: Mettre le domaine sur liste sur blanche created_msg: Ce domaine a été ajouté à la liste blanche avec succès @@ -441,6 +457,7 @@ fr: affected_accounts: one: Un compte affecté dans la base de données other: "%{count} comptes affectés dans la base de données" + zero: Pas de compte affecté dans la base de données retroactive: silence: Ne plus masquer les comptes existants affectés de ce domaine suspend: Annuler la suspension des comptes existants affectés pour ce domaine @@ -494,6 +511,7 @@ fr: known_accounts: one: "%{count} compte connu" other: "%{count} comptes connus" + zero: Pas de compte connu moderation: all: Tout limited: Limité @@ -560,10 +578,12 @@ fr: action_log: Journal d’audit action_taken_by: Intervention de actions: + delete_description_html: Les messages signalés seront supprimés et une sanction sera enregistrée pour vous aider à prendre les mesures appropriées en cas d'infractions futures par le même compte. other_description_html: Voir plus d'options pour contrôler le comportement du compte et personnaliser la communication vers le compte signalé. + resolve_description_html: Aucune mesure ne sera prise contre le compte signalé, aucune sanction ne sera enregistrée et le sigalement sera clôturé. silence_description_html: Le profil ne sera visible que pour ceux qui le suivent déjà ou le consultent manuellement, ce qui limite considérablement sa portée. Peut toujours être restauré. suspend_description_html: Le profil et tout son contenu deviendront inaccessibles jusqu'à ce qu'il soit éventuellement supprimé. Interagir avec le compte sera impossible. Réversible dans les 30 jours. - actions_description_html: 'Si la suppression du contenu offensant ci-dessus est insuffisante :' + actions_description_html: Décidez des mesures à prendre pour résoudre ce signalement. Si vous prenez des mesures punitives contre le compte signalé, une notification sera envoyée par e-mail, sauf si la catégorie <strong>Spam</strong> est sélectionnée. add_to_report: Ajouter davantage au rapport are_you_sure: Voulez-vous vraiment faire ça ? assign_to_self: Me l’assigner @@ -575,7 +595,7 @@ fr: none: Aucun comment_description_html: 'Pour fournir plus d''informations, %{name} a écrit :' created_at: Signalé - delete_and_resolve: Supprimer et résoudre + delete_and_resolve: Supprimer les publications forwarded: Transféré forwarded_to: Transféré à %{domain} mark_as_resolved: Marquer comme résolu @@ -589,12 +609,14 @@ fr: placeholder: Décrivez quelles actions ont été prises, ou toute autre mise à jour… title: Remarques notes_description_html: Voir et laisser des notes aux autres modérateurs et à votre futur moi-même + quick_actions_description_html: 'Faites une action rapide ou faites défiler vers le bas pour voir le contenu signalé :' reopen: Ré-ouvrir le signalement report: 'Signalement #%{id}' reported_account: Compte signalé reported_by: Signalé par resolved: Résolus resolved_msg: Signalement résolu avec succès ! + skip_to_actions: Passer aux actions status: Statut statuses: Contenu signalé statuses_description_html: Le contenu offensant sera cité dans la communication avec le compte signalé @@ -713,8 +735,18 @@ fr: media: title: Médias no_status_selected: Aucun statut n’a été modifié car aucun n’a été sélectionné - title: Statuts du compte + title: Messages du compte with_media: Avec médias + strikes: + actions: + delete_statuses: "%{name} a supprimé les messages de %{target}" + disable: "%{name} a bloqué le compte de %{target}" + none: "%{name} a envoyé un avertissement à %{target}" + sensitive: "%{name} a marqué le compte de %{target} comme sensible" + silence: "%{name} a limité le compte de %{target}" + suspend: "%{name} a suspendu le compte de %{target}" + appeal_approved: Appel soumis + appeal_pending: Appel en attente system_checks: database_schema_check: message_html: Vous avez des migrations de base de données en attente. Veuillez les exécuter pour vous assurer que l'application se comporte comme prévu @@ -737,8 +769,9 @@ fr: disallow: Interdire le lien disallow_provider: Interdire l'éditeur shared_by_over_week: - one: Partagé par une personne au cours de la dernière semaine - other: Partagé par %{count} personnes au cours de la dernière semaine + one: Partagé par une personne au cours de la semaine dernière + other: Partagé par %{count} personnes au cours de la semaine dernière + zero: Non partagé au cours de la semaine dernière title: Liens tendances usage_comparison: Partagé %{today} fois aujourd'hui, comparé à %{yesterday} hier pending_review: En attente de révision @@ -766,8 +799,9 @@ fr: usable: Peut être utilisé usage_comparison: Utilisé %{today} fois aujourd'hui, comparé à %{yesterday} hier used_by_over_week: - one: Utilisé par une personne au cours de la dernière semaine - other: Utilisé par %{count} personnes au cours de la dernière semaine + one: Utilisé par une personne au cours de la semaine dernière + other: Utilisé par %{count} personnes au cours de la semaine dernière + zero: Non utilisé au cours de la semaine dernière title: Tendances warning_presets: add_new: Ajouter un nouveau @@ -776,6 +810,17 @@ fr: empty: Vous n'avez pas encore créé de paramètres prédéfinis pour les avertissements. title: Gérer les avertissements prédéfinis admin_mailer: + new_appeal: + actions: + delete_statuses: effacer les messages + disable: bloquer le compte + none: un avertissement + sensitive: marquer le compte comme sensible + silence: limiter le compte + suspend: suspendre le compte + body: "%{target} fait appel de la décision de modération émise par %{action_taken_by} le %{date} et qui était : %{type}. Cette personne a écrit :" + next_steps: Vous pouvez approuver l'appel pour annuler la décision de modération, ou l'ignorer. + subject: "%{username} fait appel d'une décision de modération sur %{instance}" new_pending_account: body: Les détails du nouveau compte se trouvent ci-dessous. Vous pouvez approuver ou rejeter cette demande. subject: Nouveau compte à examiner sur %{instance} (%{username}) @@ -818,7 +863,7 @@ fr: settings: 'Changer les préférences courriel : %{link}' view: 'Voir :' view_profile: Voir le profil - view_status: Afficher le statut + view_status: Afficher le message applications: created: Application créée avec succès destroyed: Application supprimée avec succès @@ -866,7 +911,6 @@ fr: status: account_status: État du compte confirming: En attente de la confirmation par courriel à compléter. - functional: Votre compte est entièrement opérationnel. pending: Votre demande est en attente d'examen par notre personnel. Cela peut prendre un certain temps. Vous recevrez un courriel si votre demande est approuvée. redirecting_to: Votre compte est inactif car il est actuellement redirigé vers %{acct}. too_fast: Formulaire envoyé trop rapidement, veuillez réessayer. @@ -932,6 +976,31 @@ fr: directory: Annuaire des profils explanation: Découvrir des utilisateur·rice·s en fonction de leurs centres d’intérêt explore_mastodon: Explorer %{title} + disputes: + strikes: + action_taken: Mesure prise + appeal_approved: Cette sanction a été annulée en appel et n'est plus valide + appeal_rejected: L'appel a été rejeté + appeal_submitted_at: Appel soumis le + appealed_msg: Votre demande d'appel a été soumise. Si elle est approuvée, vous en serez informé·e. + appeals: + submit: Faire appel + associated_report: Rapport associé + created_at: En date du + recipient: Adressé à + status: 'Message #%{id}' + status_removed: Message déjà supprimé du système + title: "%{action} du %{date}" + title_actions: + delete_statuses: Suppression de message + disable: Suspension de compte + none: Avertissement + sensitive: Marquage d'un compte comme sensible + silence: Limitation du compte + suspend: Suspension de compte + your_appeal_approved: Votre appel a été approuvé + your_appeal_pending: Vous avez soumis un appel + your_appeal_rejected: Votre appel a été rejeté domain_validator: invalid_domain: n’est pas un nom de domaine valide errors: @@ -1143,6 +1212,8 @@ fr: title: Nouveau partage status: subject: "%{name} vient de publier" + update: + subject: "%{name} a modifié une publication" notifications: email_events: Événements pour les notifications par courriel email_events_hint: 'Sélectionnez les événements pour lesquels vous souhaitez recevoir des notifications :' @@ -1224,6 +1295,9 @@ fr: reply: proceed: Confirmer la réponse prompt: 'Vous souhaitez répondre à ce message :' + reports: + errors: + invalid_rules: ne fait pas référence à des règles valides scheduled_statuses: over_daily_limit: Vous avez dépassé la limite de %{limit} messages planifiés par jour over_total_limit: Vous avez dépassé la limite de %{limit} messages planifiés @@ -1333,7 +1407,7 @@ fr: show_older: Plus anciens show_thread: Afficher le fil de discussion sign_in_to_participate: Inscrivez-vous pour prendre part à la conversation - title: '%{name} : "%{quote}"' + title: "%{name} : « %{quote} »" visibilities: direct: Direct private: Abonné⋅e⋅s uniquement @@ -1490,6 +1564,15 @@ fr: recovery_instructions_html: Si vous perdez l’accès à votre téléphone, vous pouvez utiliser un des codes de récupération ci-dessous pour retrouver l’accès à votre compte. <strong>Conservez les codes de récupération en sécurité</strong>. Par exemple, en les imprimant et en les stockant avec vos autres documents importants. webauthn: Clés de sécurité user_mailer: + appeal_approved: + action: Aller à votre compte + explanation: L'appel de la sanction contre votre compte mise en place le %{strike_date} que vous avez soumis le %{appeal_date} a été approuvé. Votre compte est de nouveau en règle. + subject: Votre appel du %{date} a été approuvé + title: Appel approuvé + appeal_rejected: + explanation: L'appel de la sanction contre votre compte mise en place le %{strike_date} que vous avez soumis le %{appeal_date} a été rejeté. + subject: Votre appel du %{date} a été rejeté + title: Appel rejeté backup_ready: explanation: Vous avez demandé une sauvegarde complète de votre compte Mastodon. Elle est maintenant prête à être téléchargée ! subject: Votre archive est prête à être téléchargée @@ -1501,6 +1584,8 @@ fr: subject: Veuillez confirmer la tentative de connexion title: Tentative de connexion warning: + appeal: Faire appel + appeal_description: Si vous pensez qu'il s'agit d'une erreur, vous pouvez faire appel auprès de l'équipe de %{instance}. categories: spam: Indésirable violation: Le contenu viole les directives de la communauté suivantes @@ -1510,9 +1595,8 @@ fr: sensitive: Désormais, tous vos fichiers multimédias téléchargés seront marqués comme sensibles et cachés derrière un avertissement à cliquer. silence: Vous pouvez toujours utiliser votre compte, mais seules les personnes qui vous suivent déjà verront vos messages sur ce serveur, et vous pourriez être exclu de diverses fonctions de découverte. Cependant, d'autres personnes peuvent toujours vous suivre manuellement. suspend: Vous ne pouvez plus utiliser votre compte, votre profil et vos autres données ne sont plus accessibles. Vous pouvez toujours vous connecter pour demander une sauvegarde de vos données jusqu'à leur suppression complète dans environ 30 jours, mais nous conserverons certaines données de base pour vous empêcher d'échapper à la suspension. - get_in_touch: Si vous pensez qu'il s'agit d'une erreur, vous pouvez répondre à ce courriel pour entrer en contact avec le personnel de %{instance}. + get_in_touch: Si vous pensez qu’il s'agit d’une erreur, vous pouvez répondre à ce courriel pour entrer en contact avec l’équipe de %{instance}. reason: 'Motif :' - review_server_policies: Passer en revue les politiques du serveur statuses: 'Les messages qui ont été jugés en violation :' subject: delete_statuses: Vos messages sur %{acct} ont été supprimés diff --git a/config/locales/gd.yml b/config/locales/gd.yml index 17f32cb04..9f7044517 100644 --- a/config/locales/gd.yml +++ b/config/locales/gd.yml @@ -102,7 +102,6 @@ gd: account_moderation_notes: create: Fàg nòta created_msg: Chaidh nòta na maorsainneachd a chruthachadh! - delete: Sguab às destroyed_msg: Chaidh nòta na maorsainneachd a mhilleadh! accounts: add_email_domain_block: Bac àrainn a’ phuist-d @@ -392,21 +391,6 @@ gd: media_storage: Stòras mheadhanan new_users: cleachdaichean ùra opened_reports: gearanan air am fosgladh - pending_reports_html: - few: "<strong>%{count}</strong> lèirmheasan ri dhèiligeadh" - one: "<strong>%{count}</strong> lèirmheas ri dhèiligeadh" - other: "<strong>%{count}</strong> lèirmheas ri dhèiligeadh" - two: "<strong>%{count}</strong> lèirmheas ri dhèiligeadh" - pending_tags_html: - few: "<strong>%{count}</strong> tagaichean hais ri dhèiligeadh" - one: "<strong>%{count}</strong> taga hais ri dhèiligeadh" - other: "<strong>%{count}</strong> taga hais ri dhèiligeadh" - two: "<strong>%{count}</strong> thaga hais ri dhèiligeadh" - pending_users_html: - few: "<strong>%{count}</strong> cleachdaichean ri dhèiligeadh" - one: "<strong>%{count}</strong> chleachdaiche ri dhèiligeadh" - other: "<strong>%{count}</strong> cleachdaiche ri dhèiligeadh" - two: "<strong>%{count}</strong> chleachdaiche ri dhèiligeadh" resolved_reports: gearanan air am fuasgladh software: Bathar-bog sources: Tùsan clàraidh @@ -452,11 +436,6 @@ gd: silence: cuingichte suspend: à rèim show: - affected_accounts: - few: Bheir seo buaidh air %{count} cunntasan san stòr-dàta - one: Bheir seo buaidh air %{count} chunntas san stòr-dàta - other: Bheir seo buaidh air %{count} cunntas san stòr-dàta - two: Bheir seo buaidh air %{count} chunntas san stòr-dàta retroactive: silence: Dì-chuingich na cunntasan a tha ann on àrainn seo ’s air a bheil buaidh suspend: Cuir na cunntasan a tha ann on àrainn seo ’s air a bheil buaidh ann an rèim a-rithist @@ -509,11 +488,6 @@ gd: delivery_error_hint: Mura gabh a lìbhrigeadh fad %{count} là(ithean), thèid comharra a chur ris gu fèin-obrachail a dh’innseas nach gabh a lìbhrigeadh. destroyed_msg: Tha an dàta o %{domain} air ciutha an sguabaidh às aithghearr. empty: Cha deach àrainn a lorg. - known_accounts: - few: "%{count} cunntasan as aithne dhuinn" - one: "%{count} cunntas as aithne dhuinn" - other: "%{count} cunntas as aithne dhuinn" - two: "%{count} chunntas as aithne dhuinn" moderation: all: Na h-uile limited: Cuingichte @@ -585,7 +559,6 @@ gd: other_description_html: Seall barrachd roghainnean airson giùlan a’ chunntais a stiùireadh agus an conaltradh leis a’ chunntas a chaidh gearan a dhèanamh mu dhèidhinn a ghnàthachadh. silence_description_html: Chan fhaic ach an fheadhainn a tha a’ leantainn oirre mu thràth no a lorgas a làimh i a’ phròifil seo agus cuingichidh seo uiread nan daoine a ruigeas i gu mòr. Gabhaidh seo a neo-dhèanamh uair sam bith. suspend_description_html: Cha ghabh a’ phròifil seo agus an t-susbaint gu leòr aice inntrigeadh gus an dèid a sguabadh às air deireadh na sgeòil. Cha ghabh eadar-ghabhail a dhèanamh leis a’ chunntas. Gabhaidh seo a neo-dhèanamh am broinn 30 latha. - actions_description_html: 'Mura foghainn toirt air falbh na droch-shusbaint gu h-àrd:' add_to_report: Cuir barrachd ris a’ ghearan are_you_sure: A bheil thu cinnteach? assign_to_self: Iomruin dhomh-sa @@ -597,7 +570,6 @@ gd: none: Chan eil gin comment_description_html: 'Airson barrachd fiosrachaidh a sholar, sgrìobh %{name}:' created_at: Chaidh an gearan a dhèanamh - delete_and_resolve: Sguab às is fuasgail forwarded: Chaidh a shìneadh air adhart forwarded_to: Chaidh a shìneadh air adhart gu %{domain} mark_as_resolved: Cuir comharra gun deach fhuasgladh @@ -758,11 +730,6 @@ gd: allow_provider: Ceadaich am foillsichear disallow: Na ceadaich an ceangal disallow_provider: Na ceadaich am foillsichear - shared_by_over_week: - few: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh - one: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh - other: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh - two: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh title: Ceanglaichean a’ treandadh usage_comparison: Chaidh a cho-roinneadh %{today} tura(i)s an-diugh an coimeas ri %{yesterday} an-dè pending_review: A’ feitheamh air lèirmheas @@ -789,11 +756,6 @@ gd: trending_rank: 'A’ treandadh #%{rank}' usable: Gabhaidh a chleachdadh usage_comparison: Chaidh a chleachdadh %{today} tura(i)s an-diugh an coimeas ri %{yesterday} an-dè - used_by_over_week: - few: Chaidh a chleachdadh le %{count} rè na seachdain seo chaidh - one: Chaidh a chleachdadh le %{count} rè na seachdain seo chaidh - other: Chaidh a chleachdadh le %{count} rè na seachdain seo chaidh - two: Chaidh a chleachdadh le %{count} rè na seachdain seo chaidh title: Treandaichean warning_presets: add_new: Cuir fear ùr ris @@ -892,7 +854,6 @@ gd: status: account_status: Staid a’ chunntais confirming: A’ feitheamh air coileanadh an dearbhaidh on phost-d. - functional: Tha an cunntas agad ag obair gu slàn. pending: Feumaidh an sgioba againn lèirmheas a dhèanamh air d’ iarrtas. Dh’fhaoidte gun doir seo greis. Gheibh thu post-d nuair a bhios sinn air aontachadh ri d’ iarrtas. redirecting_to: Chan eil an cunntas gad gnìomhach on a tha e ’ga ath-stiùireadh gu %{acct}. too_fast: Chaidh am foirm a chur a-null ro luath, feuch ris a-rithist. @@ -1479,7 +1440,6 @@ gd: suspend: Chan urrainn dhut an cunntas agad a chleachdadh tuilleadh agus chan fhaigh thu grèim air a’ phròifil no air an dàta eile agad. ’S urrainn dhut clàradh a-steach fhathast airson lethbhreac-glèidhidh dhen dàta agad iarraidh mur dèid an dàta a thoirt air falbh an ceann 30 latha gu slàn ach cumaidh sinn cuid dhen dàta bhunasach ach nach seachain thu an cur à rèim. get_in_touch: Ma tha thu dhen bheachd gur e mearachd a th’ ann, ’s urrainn dhut freagairt dhan phost-d seo no conaltradh ris an sgioba aig %{instance}. reason: 'Adhbhar:' - review_server_policies: Thoir sùil air riaghailtean an fhrithealaiche statuses: 'Na postaichean a bhris riaghailt:' subject: delete_statuses: Chaidh na postaichean agad air %{acct} a thoirt air falbh diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 57154da58..d2c323fb4 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -94,7 +94,6 @@ gl: account_moderation_notes: create: Deixar nota created_msg: Nota de moderación creada de xeito correcto! - delete: Eliminar destroyed_msg: Nota de moderación eliminada de xeito correcto! accounts: add_email_domain_block: Bloquear o dominio do email @@ -163,6 +162,11 @@ gl: not_subscribed: Non subscrita pending: Revisión pendente perform_full_suspension: Suspender + previous_strikes: Accións previas + previous_strikes_description_html: + one: Esta conta ten <strong>un</strong> evento. + other: Esta conta ten <strong>%{count}</strong> eventos. + zero: Esta conta ten <strong>boa reputación</strong>. promote: Promocionar protocol: Protocolo public: Público @@ -206,6 +210,7 @@ gl: statuses: Publicacións strikes: Accións previas subscribe: Subscribirse + suspend: Suspender suspended: Suspendida suspension_irreversible: Elimináronse de xeito irreversible os datos desta conta. Podes reactivar a conta para facela usable novamente pero non recuperará os datos eliminados. suspension_reversible_hint_html: Esta conta foi suspendida, e os datos serán totalmente eliminados o %{date}. Ata entón, a conta pode ser restaurada sen danos. Se desexas eliminar agora mesmo todos os datos da conta, podes facelo aquí embaixo. @@ -226,6 +231,7 @@ gl: whitelisted: Listaxe branca action_logs: action_types: + approve_appeal: Aprobar apelación approve_user: Aprobar Usuaria assigned_to_self_report: Asignar denuncia change_email_user: Editar email da usuaria @@ -233,16 +239,16 @@ gl: create_account_warning: Crear aviso create_announcement: Crear anuncio create_custom_emoji: Crear emoticonas personalizadas - create_domain_allow: Crear permiso de dominio - create_domain_block: Crear bloqueo de dominio + create_domain_allow: Crear Dominio Permitido + create_domain_block: Crear bloquedo do Dominio create_email_domain_block: Crear bloqueo de dominio de correo electrónico create_ip_block: Crear regra IP create_unavailable_domain: Crear dominio Non dispoñible demote_user: Degradar usuaria destroy_announcement: Eliminar anuncio destroy_custom_emoji: Eliminar emoticona personalizada - destroy_domain_allow: Eliminar permiso de dominio - destroy_domain_block: Eliminar bloqueo de dominio + destroy_domain_allow: Eliminar Dominio permitido + destroy_domain_block: Eliminar bloqueo do Dominio destroy_email_domain_block: Eliminar bloqueo de dominio de correo electrónico destroy_instance: Purgar Dominio destroy_ip_block: Eliminar regra IP @@ -257,6 +263,7 @@ gl: enable_user: Activar usuaria memorialize_account: Transformar en conta conmemorativa promote_user: Promover usuaria + reject_appeal: Rexeitar apelación reject_user: Rexeitar Usuaria remove_avatar_user: Eliminar avatar reopen_report: Reabrir denuncia @@ -275,6 +282,7 @@ gl: update_domain_block: Actualizar bloqueo do dominio update_status: Actualizar publicación actions: + approve_appeal_html: "%{name} aprobou a apelación da decisión da moderación de %{target}" approve_user_html: "%{name} aprobou o rexistro de %{target}" assigned_to_self_report_html: "%{name} asignou a denuncia %{target} para si mesma" change_email_user_html: "%{name} cambiou o enderezo de email da usuaria %{target}" @@ -300,12 +308,13 @@ gl: disable_2fa_user_html: "%{name} desactivou o requerimento do segundo factor para a usuaria %{target}" disable_custom_emoji_html: "%{name} desactivou o emoji %{target}" disable_sign_in_token_auth_user_html: "%{name} desactivou a autenticación por token no email para %{target}" - disable_user_html: "%{name} desactivou a conexión para a usuaria %{target}" + disable_user_html: "%{name} desactivou as credenciais para a usuaria %{target}" enable_custom_emoji_html: "%{name} activou o emoji %{target}" enable_sign_in_token_auth_user_html: "%{name} activou a autenticación con token no email para %{target}" - enable_user_html: "%{name} activou a conexión para a usuaria %{target}" + enable_user_html: "%{name} activou as credenciais para a usuaria %{target}" memorialize_account_html: "%{name} convertiu a conta de %{target} nunha páxina para o recordo" promote_user_html: "%{name} promocionou a usuaria %{target}" + reject_appeal_html: "%{name} rexeitou a apelación da decisión da moderación de %{target}" reject_user_html: "%{name} rexeitou o rexistro de %{target}" remove_avatar_user_html: "%{name} eliminou o avatar de %{target}" reopen_report_html: "%{name} reabriu a denuncia %{target}" @@ -384,14 +393,17 @@ gl: media_storage: Almacenaxe multimedia new_users: novas usuarias opened_reports: denuncias abertas + pending_appeals_html: + one: "<strong>%{count}</strong> apelación pendente" + other: "<strong>%{count}</strong> apelacións pendentes" pending_reports_html: - one: "<strong>1</strong> denuncia pendente" + one: "<strong>%{count}</strong> denuncia pendente" other: "<strong>%{count}</strong> denuncias pendentes" pending_tags_html: - one: "<strong>1</strong> cancelo pendente" - other: "<strong>%{count}</strong> cancelos pendentes" + one: "<strong>%{count}</strong> etiqueta pendente" + other: "<strong>%{count}</strong> etiquetas pendentes" pending_users_html: - one: "<strong>1</strong> usuaria pendente" + one: "<strong>%{count}</strong> usuaria pendente" other: "<strong>%{count}</strong> usuarias pendentes" resolved_reports: denuncias resoltas software: Software @@ -401,6 +413,10 @@ gl: top_languages: Idiomas máis activos top_servers: Servidores máis activos website: Sitio web + disputes: + appeals: + empty: Non hai apelacións. + title: Apelacións domain_allows: add_new: Engadir dominio á listaxe branca created_msg: Engadeu o dominio a lista branca @@ -439,8 +455,9 @@ gl: suspend: suspendido show: affected_accounts: - one: Unha conta na base de datos afectada - other: "%{count} contas na base de datos afectadas" + one: Ten efecto sobre unha conta na base de datos + other: Ten efecto sobre %{count} contas na base de datos + zero: Non afecta a ningunha conta na base de datos retroactive: silence: Deixar de silenciar todas as contas existentes deste dominio suspend: Desbotar suspenso de todas as contas existentes deste dominio @@ -494,6 +511,7 @@ gl: known_accounts: one: "%{count} conta coñecida" other: "%{count} contas coñecidas" + zero: Sen contas coñecidas moderation: all: Todo limited: Limitado @@ -560,10 +578,12 @@ gl: action_log: Rexistro de auditoría action_taken_by: Acción tomada por actions: + delete_description_html: As publicacións denunciadas van ser eliminadas e gárdase un aviso para axudarche a xestionar futuras infraccións desta conta. other_description_html: Mira máis opcións para controlar o comportamento da conta e personalizar as comunicacións coa conta denunciada. + resolve_description_html: Non se van tomar accións contra a conta denunciada, nin se gardan avisos, e a denuncia arquivada. silence_description_html: O perfil será visible só para quen xa o está a seguir ou quen o buscou manualmente, limitando moito o seu alcance. Pódese cambiar. suspend_description_html: O perfil e tódolos seus contidos será inaccesbles e finalmente eliminados. A interacción coa conta non será posible. Reversible durante 30 días. - actions_description_html: 'Se eliminar o contido ofensivo non é suficiente:' + actions_description_html: Decide que acción tomar respecto desta denuncia. Se tomas accións punitivas contra a conta denunciada, enviaráselles un email coa notificación, excepto se está seleccionada a categoría <strong>Spam</strong>. add_to_report: Engadir máis á denuncia are_you_sure: Estás seguro? assign_to_self: Asignarme @@ -575,7 +595,7 @@ gl: none: Ningún comment_description_html: 'Como información engadida, %{name} escribiu:' created_at: Denunciado - delete_and_resolve: Eliminar e resolver + delete_and_resolve: Eliminar publicacións forwarded: Reenviado forwarded_to: Reenviado a %{domain} mark_as_resolved: Marcar como resolto @@ -589,12 +609,14 @@ gl: placeholder: Describir que accións foron tomadas ou calquera outra novidade sobre esta denuncia... title: Notas notes_description_html: Ver e deixar unha nota para ti no futuro e outras moderadoras + quick_actions_description_html: 'Tomar unha acción rápida ou desprázate abaixo para ver o contido denunciado:' reopen: Reabrir denuncia report: 'Denuncia #%{id}' reported_account: Conta denunciada reported_by: Denunciado por resolved: Resolto resolved_msg: Resolveuse con éxito a denuncia! + skip_to_actions: Ir a accións status: Estado statuses: Contido denunciado statuses_description_html: O contido ofensivo será citado na comunicación coa conta denunciada @@ -715,6 +737,16 @@ gl: no_status_selected: Non se cambiou ningunha publicación xa que ningunha foi seleccionada title: Publicacións da conta with_media: con medios + strikes: + actions: + delete_statuses: "%{name} eliminou as publicacións de %{target}" + disable: "%{name} pausou a conta de %{target}" + none: "%{name} envioulle un aviso a %{target}" + sensitive: "%{name} marcou a conta de %{target} como sensible" + silence: "%{name} limitou a conta de %{target}" + suspend: "%{name} suspendeu a conta de %{target}" + appeal_approved: Recurrida + appeal_pending: Apelación pendente system_checks: database_schema_check: message_html: Existen migracións pendentes na base de datos. Bota man desta tarefa para facer que a aplicación funcione como se agarda dela @@ -739,6 +771,7 @@ gl: shared_by_over_week: one: Compartido por unha persoa na última semana other: Compartido por %{count} persoas na última semana + zero: Non foi compartido na última semana title: Ligazóns en voga usage_comparison: Compartido %{today} veces hoxe, comparado con %{yesterday} onte pending_review: Revisión pendente @@ -768,6 +801,7 @@ gl: used_by_over_week: one: Utilizado por unha persoa na última semana other: Utilizado por %{count} persoas na última semana + zero: Non foi utilizado na última semana title: Tendencias warning_presets: add_new: Engadir novo @@ -776,6 +810,17 @@ gl: empty: Non definiches os avisos prestablecidos. title: Xestionar avisos preestablecidos admin_mailer: + new_appeal: + actions: + delete_statuses: borrar as súas publicacións + disable: pausar a súa conta + none: un aviso + sensitive: marcar a conta como sensible + silence: limitar a súa conta + suspend: suspender a súa conta + body: "%{target} apelou a decisión de moderación de %{action_taken_by} o %{date}, de tipo %{type}. Escribiu:" + next_steps: Podes aprobar o recurso e desfacer a decisión de moderación, ou ignoralo. + subject: "%{username} fixo unha apelación á decisión de moderación en %{instance}" new_pending_account: body: Abaixo están os detalles da conta. Podes aprobar ou rexeitar esta solicitude. subject: Hai unha conta nova para revisar en %{instance} (%{username}) @@ -844,12 +889,12 @@ gl: invalid_reset_password_token: O testemuño para restablecer o contrasinal non é válido ou caducou. Por favor solicite un novo. link_to_otp: Escribe o código do segundo factor do móbil ou un código de recuperación link_to_webauth: Usa o teu dispositivo de chave de seguridade - log_in_with: Inicia sesión con - login: Conectar - logout: Desconectar + log_in_with: Accede con + login: Acceder + logout: Pechar sesión migrate_account: Mover a unha conta diferente migrate_account_html: Se queres redirixir esta conta hacia outra diferente, pode <a href="%{path}">configuralo aquí</a>. - or_log_in_with: ou conectar con + or_log_in_with: Ou accede con providers: cas: CAS saml: SAML @@ -866,11 +911,10 @@ gl: status: account_status: Estado da conta confirming: Agardando a confirmación do correo enviado. - functional: A súa conta está totalmente operativa. pending: A túa solicitude está pendente de revisión. Poderíanos levar algún tempo. Recibirás un correo se a solicitude está aprobada. redirecting_to: A túa conta está inactiva porque está redirixida a %{acct}. too_fast: Formulario enviado demasiado rápido, inténtao outra vez. - trouble_logging_in: Problemas para conectar? + trouble_logging_in: Problemas para acceder? use_security_key: Usa chave de seguridade authorize_follow: already_following: Xa está a seguir esta conta @@ -932,6 +976,32 @@ gl: directory: Directorio de perfís explanation: Descubre usuarias según o teu interese explore_mastodon: Explorar %{title} + disputes: + strikes: + action_taken: Acción tomada + appeal: Apelar + appeal_approved: Esta acción foi recurrida e xa non é válida + appeal_rejected: O recurso foi rexeitado + appeal_submitted_at: Enviouse a apelación + appealed_msg: A túa apelación foi enviada. Se é aprobada recibirás unha notificación. + appeals: + submit: Enviar apelación + associated_report: Denuncia asociada + created_at: Data + recipient: Entregada a + status: 'Publicación #%{id}' + status_removed: A publicación xa foi eliminada do sistema + title: "%{action} o %{date}" + title_actions: + delete_statuses: Eliminación da publicación + disable: Pausar conta + none: Aviso + sensitive: Marcar a conta como sensible + silence: Limitar a conta + suspend: Suspender a conta + your_appeal_approved: A apelación foi aprobada + your_appeal_pending: Enviaches unha apelación + your_appeal_rejected: A apelación foi rexeitada domain_validator: invalid_domain: non é un nome de dominio válido errors: @@ -1059,9 +1129,9 @@ gl: sign_in_token: código de seguridade por email webauthn: chaves de seguridade description_html: Se ves actividade que non recoñeces, considera cambiar o contrasinal e activar o segundo factor de autenticación. - empty: Sen historial de autenticación dispoñible - failed_sign_in_html: Intento de conexión errado con %{method} desde %{ip} (%{browser}) - successful_sign_in_html: Conexión correcta con %{method} desde %{ip} (%{browser}) + empty: Non hai historial de autenticación + failed_sign_in_html: Intento de acceso errado con %{method} desde %{ip} (%{browser}) + successful_sign_in_html: Acceso correcto con %{method} desde %{ip} (%{browser}) title: Historial de autenticación media_attachments: validations: @@ -1143,6 +1213,8 @@ gl: title: Nova promoción status: subject: "%{name} publicou" + update: + subject: "%{name} editou unha publicación" notifications: email_events: Eventos para os correos de notificación email_events_hint: 'Escolle os eventos sobre os que queres recibir notificacións:' @@ -1159,9 +1231,9 @@ gl: trillion: T otp_authentication: code_hint: Escribe o código creado pola app de autenticación para confirmar - description_html: Se activas a <strong>autenticación con dous factores</strong> utilizando unha app de autenticación, ó conectarte pedirémosche que teñas o móbil á man, para crear o código que precisas para conectarte. + description_html: Se activas a <strong>autenticación con dous factores</strong> utilizando unha app de autenticación, ao conectarte pedirémosche que teñas o móbil á man, para crear o código que precisas para acceder. enable: Activar - instructions_html: "<strong>Escanea este código QR na túa app TOTP no móbil ou Google Authenticator</strong>. A partir de agora, a app creará códigos que terás que escribir cando te conectes." + instructions_html: "<strong>Escanea este código QR na túa app TOTP ou tipo Google Authenticator no móbil</strong>. A partir de agora, a app creará códigos que terás que escribir cando entres." manual_instructions: 'Se non podes escanear o código QR e tes que escribilo á man, aquí tes o código en texto plano:' setup: Configurar wrong_code: O código escrito non é válido! ¿é correcta a hora no dispositivo e no servidor? @@ -1254,7 +1326,7 @@ gl: weibo: Weibo current_session: Sesión actual description: "%{browser} en %{platform}" - explanation: Estos son os navegadores web nos que actualmente ten sesión aberta. + explanation: Estos son os navegadores web nos que actualmente ten sesión iniciada. ip: IP platforms: adobe_air: Adobe Air @@ -1335,7 +1407,7 @@ gl: show_newer: Mostrar o máis novo show_older: Mostrar o máis vello show_thread: Amosar fío - sign_in_to_participate: Conéctese para participar na conversa + sign_in_to_participate: Accede e participa na conversa title: '%{name}: "%{quote}"' visibilities: direct: Directa @@ -1493,17 +1565,28 @@ gl: recovery_instructions_html: Se perdeses o acceso ao teu teléfono, podes utilizar un dos códigos de recuperación inferiores para recuperar o acceso á conta. <strong>Garda os códigos nun lugar seguro</strong>. Por exemplo, podes imprimilos e gardalos xunto con outros documentos importantes. webauthn: Chaves de seguridade user_mailer: + appeal_approved: + action: Vai á túa conta + explanation: A apelación da acción contra a túa conta o %{strike_date} que enviaches o %{appeal_date} foi aprobada. A túa conta volve ao estado normal de uso. + subject: O recurso presentado o %{date} foi aprobado + title: Apelación aprobada + appeal_rejected: + explanation: A apelación contra a acción tomada contra a túa conta o %{strike_date} que enviaches o %{appeal_date} foi rexeitada. + subject: A túa apelación do %{date} foi rexeitada + title: Apelación rexeitada backup_ready: explanation: Solicitaches os datos completos da túa conta de Mastodon. Xa está preparados para descargar! subject: O teu ficheiro xa está preparado para descargar title: Leve o ficheiro sign_in_token: details: 'Detalles sobre o intento:' - explanation: 'Detectamos un intento de conectar coa túa conta desde un enderezo IP descoñecido. Se es ti, escribe o código de seguridade inferior na páxina de desafío de conexión:' + explanation: 'Detectamos un intento de acceso coa túa conta desde un enderezo IP descoñecido. Se es ti, escribe o código de seguridade inferior na páxina de desafío de conexión:' further_actions: 'Se non foches ti, cambia agora o contrasinal e activa o segundo factor de autenticación para a túa conta. Pódelo facer aquí:' subject: Por favor confirma o intento de conexión title: Intento de conexión warning: + appeal: Enviar unha apelación + appeal_description: Se cres que esto é un erro, podes enviar un recurso á administración de %{instance}. categories: spam: Spam violation: O contido viola as seguintes normas da comunidade @@ -1512,10 +1595,9 @@ gl: disable: Xa non podes usar a túa conta, pero o teu perfil e outros datos permanecen intactos. Podes solicitar unha copia dos teus datos, cambiar os axustes da conta ou eliminar a túa conta. sensitive: A partir deste momento, tódolos ficheiros que subiches estarán marcados como sensibles e agochados tras un aviso de contido. silence: Aínda podes usar a túa conta pero só as persoas que te siguen poden ver as túas publicacións neste servidor, e podes que foses excluída de varios xeitos de descubrimento. Porén, aínda te poden seguir de xeito manual. - suspend: Xa non podes usar a túa conta, o teu perfil e outros datos xa non son accesibles. Aínda podes conectarte para solicitar unha copia dos teus datos no prazo de 30 días previos á eliminación da conta, pero imos reter algúns datos básicos para evitar que poidas evitar a suspensión. + suspend: Xa non podes usar a túa conta, o teu perfil e outros datos xa non son accesibles. Aínda podes acceder para solicitar unha copia dos teus datos no prazo de 30 días previos á eliminación da conta. Imos reter algúns datos básicos para evitar que poidas evitar a suspensión. get_in_touch: Se consideras que isto é un erro, podes responder a este email para contactar coa administración de %{instance}. reason: 'Razón:' - review_server_policies: Revisar políticas do servidor statuses: 'Publicacións que contradín as normas:' subject: delete_statuses: As túas publicacións en %{acct} foron eliminadas @@ -1554,9 +1636,9 @@ gl: invalid_otp_token: O código do segundo factor non é válido invalid_sign_in_token: Código de seguridade non válido otp_lost_help_html: Se perdes o acceso a ambos, podes contactar con %{email} - seamless_external_login: Está conectado a través de un servizo externo, polo que os axustes de contrasinal e correo-e non están dispoñibles. + seamless_external_login: Accedeches a través dun servizo externo, polo que os axustes de contrasinal e correo-e non están dispoñibles. signed_in_as: 'Rexistrada como:' - suspicious_sign_in_confirmation: Semella que non te conectaches antes desde este dispositivo, e hai tempo que non te conectas, así que ímosche enviar un código de seguridade ao teu enderezo de email para confirmar que es ti. + suspicious_sign_in_confirmation: Semella que non entraches antes usando este dispositivo, así que ímosche enviar un código de seguridade ao teu enderezo de email para confirmar que es ti. verification: explanation_html: 'Podes <strong>validarte a ti mesma como a dona das ligazóns nos metadatos do teu perfil</strong>. Para esto, o sitio web ligado debe conter unha ligazón de retorno ao perfil de Mastodon. Esta ligazón de retorno <strong>ten que</strong> ter un atributo <code>rel="me"</code>. O texto da ligazón non importa. Aquí tes un exemplo:' verification: Validación @@ -1567,7 +1649,7 @@ gl: success: Engadeuse correctamente a chave de seguridade. delete: Eliminar delete_confirmation: "¿Tes a certeza de que queres eliminar a chave de seguridade?" - description_html: Se activas a <strong>autenticación con chave de seguridade</strong>, ó conectarte pediráseche que uses unha das túas chaves. + description_html: Se activas a <strong>autenticación con chave de seguridade</strong>, pediráseche que uses unha das túas chaves para acceder. destroy: error: Houbo un problema ó eliminar a túa chave de seguridade, inténtao outra vez. success: Eliminouse correctamente a chave de seguridade. diff --git a/config/locales/he.yml b/config/locales/he.yml index c151f0192..454a48e09 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -32,7 +32,6 @@ he: account_moderation_notes: create: ליצור created_msg: הודעת מנחה נוצרה בהצלחה! - delete: למחוק destroyed_msg: הודעת מנחה נמחקה בהצלחה! accounts: are_you_sure: בטוח? @@ -98,6 +97,7 @@ he: statuses: הודעות strikes: עבירות קודמות subscribe: הרשמה + suspend: השעייה title: חשבונות undo_silenced: ביטול השתקה undo_suspension: ביטול השעייה @@ -120,6 +120,10 @@ he: reject_media: חסימת קבצי מדיה reject_media_hint: מסירה קבצי מדיה השמורים מקומית ומונעת מהורדת קבצים נוספים בעתיד. לא רלוונטי להשעיות show: + affected_accounts: + one: חשבון אחד במסד נתונים מושפע + other: "%{count} חשבונות במסד נתונים מושפעים" + zero: אף חשבון במסד נתונים מושפע retroactive: silence: הסרת השתקה מכל החשבונות על שרת זה suspend: הסרת השעייה מכל החשבונות על שרת זה @@ -131,6 +135,9 @@ he: report_notes: today_at: היום, ב%{time} reports: + actions: + delete_description_html: הפוסטים המדווחים יימחקו ותרשם עבירה על מנת להקל בהעלאה של דיווחים עתידיים על אותה חשבון. + resolve_description_html: אף פעולה לא תבוצע נגד החשבון עליו דווח, לא תירשם עבירה, והדיווח ייסגר. add_to_report: הוספת פרטים לדיווח are_you_sure: 100% על בטוח? category: קטגוריה @@ -172,6 +179,17 @@ he: remove_from_report: הסרה מהדיווח report: דווח title: ניהול + trends: + links: + shared_by_over_week: + one: שותף ע"י משתמש\ת אחד\ת בשבוע האחרון + other: שותף ע"י %{count} משתמשים בשבוע האחרון + zero: לא שותף בכלל בשבוע האחרון + tags: + used_by_over_week: + one: היה בשימוש משתמש\ת אחד\ת בשבוע האחרון + other: היה בשימוש ע"י %{count} משתמשים בשבוע האחרון + zero: לא היה בשימוש בכלל בשבוע האחרון application_mailer: settings: 'שינוי הגדרות דוא"ל: %{link}' view: 'תצוגה:' @@ -263,6 +281,8 @@ he: reblog: body: 'חצרוצך הודהד על ידי %{name}:' subject: חצרוצך הודהד על ידי%{name} + update: + subject: "%{name} ערכו פוסט" pagination: next: הבא prev: הקודם diff --git a/config/locales/hu.yml b/config/locales/hu.yml index a72c02eae..672a08e54 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -67,7 +67,7 @@ hu: felhasználót. Föderációs célokra szolgál, nem szabad tehát felfüggeszteni. joined: Csatlakozott %{date} last_active: utoljára aktív - link_verified_on: A link tulajdonosát %{date} -n ellenőriztük + link_verified_on: 'A hivatkozás tulajdonosa ekkor volt ellenőrizve: %{date}' media: Média moved_html: "%{name} ide költözött: %{new_profile_link}" network_hidden: Ez az információ nem elérhető @@ -96,7 +96,6 @@ hu: account_moderation_notes: create: Új moderációs bejegyzés created_msg: Moderációs bejegyzés létrehozva! - delete: Törlés destroyed_msg: Moderációs bejegyzés törölve! accounts: add_email_domain_block: Email domain tiltólistára vétele @@ -165,6 +164,11 @@ hu: not_subscribed: Nincs feliratkozás pending: Engedélyezés alatt perform_full_suspension: Felfüggesztés + previous_strikes: Korábbi vétségek + previous_strikes_description_html: + one: Ennek a fióknak <strong>egy</strong> vétsége van. + other: Ennek a fióknak <strong>%{count}</strong> vétsége van. + zero: Ez a fiók <strong>makulátlan</strong>. promote: Előléptetés protocol: Protokoll public: Nyilvános @@ -208,9 +212,10 @@ hu: statuses: Bejegyzés strikes: Korábbi kihágások subscribe: Feliratkozás + suspend: Felfüggesztés suspended: Felfüggesztett suspension_irreversible: Ennek a fióknak az adatait visszaállíthatatlanul törölték. Visszavonhatod a fiók felfüggesztését, hogy újra használható legyen, de a régi adatok ettől még nem fognak visszatérni. - suspension_reversible_hint_html: A fiókot felfüggesztettük, az adatait %{date}-n teljesen eltávolítjuk. Eddig az időpontig a fiók probléma nélkül visszaállítható. Ha mégis azonnal törölni szeretnéd a fiókot, alább megteheted. + suspension_reversible_hint_html: 'A fiókot felfüggesztettük, az adatai ekkor lesznek teljesen eltávolítva: %{date}. Eddig az időpontig a fiók probléma nélkül visszaállítható. Ha mégis azonnal törölni szeretnéd a fiókot, alább megteheted.' title: Fiókok unblock_email: E-mail-cím tiltásának feloldása unblocked_email_msg: A(z) %{username} e-mail-cím tiltása sikeresen feloldva @@ -228,6 +233,7 @@ hu: whitelisted: Engedélyező-listán action_logs: action_types: + approve_appeal: Fellebbezés jóváhagyása approve_user: Felhasználó Jóváhagyása assigned_to_self_report: Jelentés hozzárendelése change_email_user: Felhasználó e-mail címének módosítása @@ -259,6 +265,7 @@ hu: enable_user: Felhasználó engedélyezése memorialize_account: Fiók emlékké nyilvánítása promote_user: Felhasználó előléptetése + reject_appeal: Fellebbezés elutasítása reject_user: Felhasználó Elutasítása remove_avatar_user: Profilkép eltávolítása reopen_report: Jelentés újranyitása @@ -277,6 +284,7 @@ hu: update_domain_block: Domain tiltás frissítése update_status: Bejegyzés frissítése actions: + approve_appeal_html: "%{name} jóváhagyott egy fellebbezést %{target} moderátori döntéséről" approve_user_html: "%{name} jóváhagyta %{target} regisztrációját" assigned_to_self_report_html: "%{name} a %{target} bejelentést magához rendelte" change_email_user_html: "%{name} megváltoztatta %{target} felhasználó e-mail címét" @@ -308,6 +316,7 @@ hu: enable_user_html: "%{name} engedélyezte %{target} felhasználó bejelentkezését" memorialize_account_html: "%{name} emléket állított %{target} felhasználónak" promote_user_html: "%{name} előléptette %{target} felhasználót" + reject_appeal_html: "%{name} visszautasított egy fellebbezést %{target} moderátori döntéséről" reject_user_html: "%{name} elutasította %{target} regisztrációját" remove_avatar_user_html: "%{name} törölte %{target} profilképét" reopen_report_html: "%{name} újranyitotta a %{target} bejelentést" @@ -386,15 +395,18 @@ hu: media_storage: Médiatároló new_users: új felhasználó opened_reports: megnyitott bejelentés + pending_appeals_html: + one: "<strong>%{count}</strong> fellebbezés folyamatban" + other: "<strong>%{count}</strong> fellebbezés folyamatban" pending_reports_html: - one: "<strong>1</strong> függőben lévő bejelentés" - other: "<strong>%{count}</strong> függőben lévő bejelentés" + one: "<strong>%{count}</strong> bejelentés folyamatban" + other: "<strong>%{count}</strong> bejelentés folyamatban" pending_tags_html: - one: "<strong>1</strong> függőben lévő hashtag" - other: "<strong>%{count}</strong> függőben lévő hashtag" + one: "<strong>%{count}</strong> hashtag jóváhagyásra vár" + other: "<strong>%{count}</strong> hashtag jóváhagyásra vár" pending_users_html: - one: "<strong>1</strong> függőben lévő felhasználó" - other: "<strong>%{count}</strong> függőben lévő felhasználó" + one: "<strong>%{count}</strong> függő fiók" + other: "<strong>%{count}</strong> függő fiók" resolved_reports: megoldott bejelentés software: Szoftver sources: Regisztrációs források @@ -403,6 +415,10 @@ hu: top_languages: Legaktívabb nyelvek top_servers: Legaktívabb szerverek website: Weboldal + disputes: + appeals: + empty: Nem található fellebbezés. + title: Fellebbezések domain_allows: add_new: Domain engedélyezése created_msg: A domain rákerült az engedélyező-listára @@ -441,8 +457,9 @@ hu: suspend: felfüggesztve show: affected_accounts: - one: Összesen egy fiók érintett az adatbázisban - other: Összesen %{count} fiók érintett az adatbázisban + one: Egy fiókot érintett az adatbázisban + other: "%{count} fiókot érintett az adatbázisban" + zero: Nem érintett fiókot az adatbázisban retroactive: silence: Minden felhasználó némításának feloldása ezen a domainen suspend: Minden felhasználó felfüggesztésének feloldása ezen a domainen @@ -496,6 +513,7 @@ hu: known_accounts: one: "%{count} ismert fiók" other: "%{count} ismert fiók" + zero: Nincs ismert fiók moderation: all: Mind limited: Korlátozott @@ -562,10 +580,12 @@ hu: action_log: Audit napló action_taken_by: 'Kezelte:' actions: + delete_description_html: A bejelentett bejegyzéseket törölni fogjuk és feljegyzünk egy vétséget, hogy segítsünk a későbbi eszkalációban ugyanennél a fióknál. other_description_html: További lehetőségek megjelenítése a fiók viselkedésének szabályozásához, és a jelentett fiók kommunikációjának testreszabásához. + resolve_description_html: Nem csinálunk semmit a bejelentett fiókkal, nem jegyzünk fel vétséget, és bezárjuk a bejelentést. silence_description_html: A profil csak azok számára lesz látható, akik már követik, vagy kézileg megkeresik, rendkívül korlátozva az elérését. Ez mindig visszafordítható. suspend_description_html: A profil és az összes tartalma elérhetetlen lesz, amíg végleg törlésre nem kerül. A fiókkal történő minden interakció lehetetlen lesz. 30 napon belül még visszaállítható. - actions_description_html: 'Ha a fenti szabálysértő tartalom eltávolítása elégtelen:' + actions_description_html: Döntsd el, mit csináljunk, hogy megoldjuk ezt a bejelentést. Ha valamilyen büntető intézkedést hozol a bejelentett fiók ellen, küldünk neki egy figyelmeztetést e-mail-ben, kivéve ha a <strong>Spam</strong> kategóriát választod. add_to_report: Továbbiak hozzáadása a bejelentéshez are_you_sure: Biztos vagy benne? assign_to_self: Magamhoz rendelés @@ -577,7 +597,7 @@ hu: none: Egyik sem comment_description_html: 'Hogy további információkat adjon, %{name} ezt írta:' created_at: Jelentve - delete_and_resolve: Törlés és megoldás + delete_and_resolve: Bejegyzések törlése forwarded: Továbbítva forwarded_to: 'Továbbítva ide: %{domain}' mark_as_resolved: Megjelölés megoldottként @@ -591,12 +611,14 @@ hu: placeholder: Jegyezd le, mi tettünk az ügy érdekében, vagy bármilyen változást... title: Megjegyzések notes_description_html: Megtekintés, és megjegyzések hagyása más moderátoroknak + quick_actions_description_html: 'Hozz egy gyors intézkedést, vagy görgess le a bejelentett tartalomhoz:' reopen: Bejelentés újranyitása report: "#%{id} számú jelentés" reported_account: Bejelentett fiók reported_by: 'Jelentette:' resolved: Megoldott resolved_msg: A bejelentést sikeresen megoldottuk! + skip_to_actions: Tovább az intézkedésekhez status: Állapot statuses: Jelentett tartalom statuses_description_html: A sértő tartalmat idézni fogjuk a bejelentett fiókkal való kommunikáció során @@ -717,6 +739,16 @@ hu: no_status_selected: Nem változtattunk meg egy bejegyzést sem, mert semmi sem volt kiválasztva title: Fiók bejegyzései with_media: Médiával + strikes: + actions: + delete_statuses: "%{name} törölte %{target} bejegyzését" + disable: "%{name} befagyasztotta %{target} fiókját" + none: "%{name} figyelmeztetést küldött %{target} számára" + sensitive: "%{name} érzékenynek jelölte %{target} fiókját" + silence: "%{name} korlátozta %{target} fiókját" + suspend: "%{name} felfüggesztette %{target} fiókját" + appeal_approved: Megfellebbezve + appeal_pending: Fellebbezés folyamatban system_checks: database_schema_check: message_html: Vannak esedékes adatbázis migrációink. Kérlek, futtasd őket, hogy biztosítsd, hogy az alkalmazás megfelelően működjön @@ -739,8 +771,9 @@ hu: disallow: Hivatkozás letiltása disallow_provider: Közzétevő letiltása shared_by_over_week: - one: Egy ember osztotta meg a múlt héten - other: "%{count} ember osztotta meg a múlt héten" + one: Egy ember osztotta meg az elmúlt héten + other: "%{count} ember osztotta meg az elmúlt héten" + zero: Senki sem osztotta meg az elmúlt héten title: Felkapott hivatkozások usage_comparison: "%{today} alkalommal lett ma megosztva, a tegnapi %{yesterday} alkalomhoz képest" pending_review: Áttekintésre vár @@ -770,6 +803,7 @@ hu: used_by_over_week: one: Egy ember használta a múlt héten other: "%{count} ember használta a múlt héten" + zero: Senki sem használta a múlt héten title: Trendek warning_presets: add_new: Új hozzáadása @@ -778,6 +812,17 @@ hu: empty: Nem definiáltál még egyetlen figyelmeztetést sem. title: Figyelmeztetések admin_mailer: + new_appeal: + actions: + delete_statuses: bejegyzések törléséről + disable: fiók befagyasztásáról + none: figyelmeztetésről + sensitive: fiók érzékenynek jelöléséről + silence: fiók korlátozásáról + suspend: fiók felfüggesztéséről + body: "%{target} fellebbezi %{action_taken_by} moderátor %{date}-i, %{type} szóló döntését. Ezt írták:" + next_steps: Jóváhagyhatod a fellebbezést, hogy semmissé tedd a moderátori döntést, vagy figyelmen kívül hagyhatod. + subject: "%{username} fellebbez egy moderátori döntést a %{instance} szerveren" new_pending_account: body: Az új fiók részletesen alább látható. Ezt a jelentkezést engedélyezheted vagy elutasíthatod. subject: Új fiók (%{username}) engedélyezésre vár a %{instance} szerveren @@ -868,7 +913,6 @@ hu: status: account_status: Fiók állapota confirming: Várakozás az e-mailes visszaigazolásra. - functional: A fiókod teljesen működőképes. pending: A jelentkezésed engedélyezésre vár. Ez eltarthat egy ideig. Kapsz egy e-mailt, ha a kérelmedet jóváhagyták. redirecting_to: A fiókod inaktív, mert jelenleg ide %{acct} van átirányítva. too_fast: Túl gyorsan küldted el az űrlapot, próbáld később. @@ -934,6 +978,32 @@ hu: directory: Profilok explanation: Találj másokra érdeklődésük alapján explore_mastodon: "%{title} felfedezése" + disputes: + strikes: + action_taken: Intézkedés + appeal: Fellebbezés + appeal_approved: Ezt a vétséget eredményesen fellebbezték, így már nem érvényes + appeal_rejected: A fellebbezést visszautasították + appeal_submitted_at: Fellebbezés beküldve + appealed_msg: A fellebbezésedet beküldtük. Ha jóváhagyták, értesítünk. + appeals: + submit: Fellebbezés beküldése + associated_report: Társított bejelentés + created_at: Dátum + recipient: Címzett + status: 'Bejegyzés #%{id}' + status_removed: A bejegyzést már eltávolítottuk a rendszerből + title: "%{action} ekkor: %{date}" + title_actions: + delete_statuses: Bejegyzés eltávolítása + disable: Fiók befagyasztása + none: Figyelmeztetés + sensitive: Fiók érzékenynek jelölése + silence: Fiók korlátozása + suspend: Fiók felfüggesztése + your_appeal_approved: A fellebbezésedet jóváhagyták + your_appeal_pending: Beküldtél egy fellebbezést + your_appeal_rejected: A fellebbezésedet visszautasították domain_validator: invalid_domain: nem egy valódi domain név errors: @@ -1145,6 +1215,8 @@ hu: title: Új megtolás status: subject: "%{name} bejegyzést írt" + update: + subject: "%{name} szerkesztett egy bejegyzést" notifications: email_events: Események email értesítésekhez email_events_hint: 'Válaszd ki azokat az eseményeket, melyekről értesítést szeretnél:' @@ -1315,7 +1387,7 @@ hu: disallowed_hashtags: one: 'tiltott hashtaget tartalmaz: %{tags}' other: 'tiltott hashtageket tartalmaz: %{tags}' - edited_at: Szerkesztve %{date} + edited_at: 'Szerkesztve: %{date}' errors: in_reply_not_found: Már nem létezik az a bejegyzés, melyre válaszolni szeretnél. open_in_web: Megnyitás a weben @@ -1495,6 +1567,15 @@ hu: recovery_instructions_html: A visszaállítási kódok egyikének segítségével tudsz majd belépni, ha elveszítenéd a telefonod. <strong>Tartsd biztos helyen a visszaállítási kódjaid</strong>! Például nyomtasd ki őket és tárold a többi fontos iratoddal együtt. webauthn: Biztonsági kulcsok user_mailer: + appeal_approved: + action: Ugrás a fiókodhoz + explanation: A fiókod %{appeal_date}-i fellebbezése, mely a %{strike_date}-i vétségeddel kapcsolatos, jóváhagyásra került. A fiókod megint makulátlan. + subject: A %{date}-i fellebbezésedet jóváhagyták + title: Fellebbezés jóváhagyva + appeal_rejected: + explanation: A %{appeal_date}-i fellebbezésed, amely a fiókod %{strike_date}-i vétségével kapcsolatos, elutasításra került. + subject: A %{date}-i fellebbezésedet visszautasították + title: Fellebbezés visszautasítva backup_ready: explanation: A Mastodon fiókod teljes mentését kérted. A mentés kész ás letölthető! subject: Az adataidról készült archív letöltésre kész @@ -1506,6 +1587,8 @@ hu: subject: Erősítsd meg a megkísérelt belépést title: Belépési kísérlet warning: + appeal: Fellebbezés beküldése + appeal_description: Ha azt gondolod, hogy ez hibás, beküldhetsz egy fellebbezést a(z) %{instance} szerver csapatának. categories: spam: Kéretlen üzenet violation: A tartalom megsérti a következő közösségi irányelveket @@ -1517,7 +1600,6 @@ hu: suspend: Többé nem használhatod a fiókodat, a profilod és más adataid többé nem elérhetőek. Még be tudsz jelentkezni, hogy mentést kérj az adataidról addig, amíg kb. 30 nap múlva teljesen le nem töröljük őket. Néhány alapadatot megtartunk, hogy el tudjuk kerülni, hogy megkerüld a felfüggesztést. get_in_touch: Ha azt gondolod, hogy ez egy hiba, akkor válaszolj erre az e-mail-re, hogy kapcsolatba léphess a %{instance} kiszolgáló üzemeltetőivel. reason: 'Indok:' - review_server_policies: Szerver szabályzat átnézése statuses: 'Szabálysértőnek talált bejegyzések:' subject: delete_statuses: A(z) %{acct} fiók bejegyzései eltávolításra kerültek @@ -1578,4 +1660,4 @@ hu: not_enabled: Még nem engedélyezted a WebAuthn-t not_supported: Ez a böngésző nem támogatja a biztonsági kulcsokat otp_required: A biztonsági kulcsok használatához először engedélyezd a kétlépcsős azonosítást. - registered_on: 'Regisztrált ekkor: %{date}' + registered_on: 'Regisztráció ekkor: %{date}' diff --git a/config/locales/hy.yml b/config/locales/hy.yml index 021aa7c31..70f775cf0 100644 --- a/config/locales/hy.yml +++ b/config/locales/hy.yml @@ -92,7 +92,6 @@ hy: account_moderation_notes: create: Թողնել նշում created_msg: Մոդերացիոն նոթը բարեյաջող ստեղծուեց - delete: Ջնջել destroyed_msg: Մոդերացիոն նոթը բարեյաջող վերացուեց accounts: add_email_domain_block: Արգելափակել էլ․ փոստի տիրոյթը @@ -373,9 +372,6 @@ hy: unavailable: Անհասանելի է warning: Զգուշացում empty: Դոմեյնները չեն գտնուել - known_accounts: - one: "%{count} յայտնի հաշիւ" - other: "%{count} յայտնի հաշիւներ" moderation: all: Բոլորը limited: Սահամանփակ diff --git a/config/locales/id.yml b/config/locales/id.yml index b034da26f..76e91c9d2 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -88,7 +88,6 @@ id: account_moderation_notes: create: Beri catatan created_msg: Catatan moderasi berhasil dibuat! - delete: Hapus destroyed_msg: Catatan moderasi berhasil dihapus! accounts: add_email_domain_block: Masukkan domain email ke daftar hitam @@ -157,6 +156,11 @@ id: not_subscribed: Tidak berlangganan pending: Tinjauan tertunda perform_full_suspension: Lakukan suspen penuh + previous_strikes: Peringatan sebelumnya + previous_strikes_description_html: + one: Akun ini mendapatkan <strong>satu</strong> peringatan. + other: Akun ini mendapatkan <strong>%{count}</strong> peringatan. + zero: Akun ini <strong>status bagus</strong>. promote: Promosikan protocol: Protokol public: Publik @@ -200,6 +204,7 @@ id: statuses: Status strikes: Peringatan sebelumnya subscribe: Langganan + suspend: Tangguhkan suspended: Disuspen suspension_irreversible: Data akun ini telah dihapus secara permanen. Anda dapat mengaktifkan akun agar tetap bisa dipakai lagi tapi data sebelumnya tidak dapat dikembalikan. suspension_reversible_hint_html: Akun telah ditangguhkan, dan data akan dihapus total pada %{date}. Sebelum tanggal tersebut, akun dapat dikembalikan tanpa efek apapun. Jika Anda ingin menghapus segera semua data, Anda dapat melakukan sesuai keterangan di bawah. @@ -220,6 +225,7 @@ id: whitelisted: Masuk daftar putih action_logs: action_types: + approve_appeal: Setujui Banding approve_user: Setujui Pengguna assigned_to_self_report: Berikan laporan change_email_user: Ubah Email untuk Pengguna @@ -251,6 +257,7 @@ id: enable_user: Aktifkan Pengguna memorialize_account: Kenang Akun promote_user: Promosikan Pengguna + reject_appeal: Tolak Banding reject_user: Tolak Pengguna remove_avatar_user: Hapus Avatar reopen_report: Buka Lagi Laporan @@ -269,6 +276,7 @@ id: update_domain_block: Perbarui Blokir Domain update_status: Perbarui Status actions: + approve_appeal_html: "%{name} menyetujui moderasi keputusan banding dari %{target}" approve_user_html: "%{name} menyetujui pendaftaran dari %{target}" assigned_to_self_report_html: "%{name} menugaskan laporan %{target} ke dirinya sendiri" change_email_user_html: "%{name} mengubah alamat email pengguna %{target}" @@ -300,6 +308,7 @@ id: enable_user_html: "%{name} mengaktifkan login untuk pengguna %{target}" memorialize_account_html: "%{name} mengubah akun %{target} jadi halaman memorial" promote_user_html: "%{name} mempromosikan pengguna %{target}" + reject_appeal_html: "%{name} menolak moderasi keputusan banding dari %{target}" reject_user_html: "%{name} menolak pendaftaran dari %{target}" remove_avatar_user_html: "%{name} menghapus avatar %{target}" reopen_report_html: "%{name} membuka ulang laporan %{target}" @@ -378,8 +387,10 @@ id: media_storage: Penyimpanan media new_users: pengguna baru opened_reports: laporan dibuka + pending_appeals_html: + other: "<strong>%{count}</strong> banding ditunda" pending_reports_html: - other: "<strong>%{count}</strong> laporan ditunda" + other: "<strong>%{count}</strong> laporan banding" pending_tags_html: other: "<strong>%{count}</strong> tagar ditunda" pending_users_html: @@ -392,6 +403,10 @@ id: top_languages: Bahasa aktif teratas top_servers: Server aktif teratas website: Situs web + disputes: + appeals: + empty: Tidak ada banding yang ditemukan. + title: Banding domain_allows: add_new: Daftar putihkan domain created_msg: Domain berhasil masuk daftar putih @@ -430,7 +445,9 @@ id: suspend: ditangguhkan show: affected_accounts: - other: "%{count} akun dalam database terpengaruh" + one: Satu akun di basis data terpengaruh + other: "%{count} akun di basis data terpengaruh" + zero: Tidak ada akun di basis data terpengaruh retroactive: silence: Hapus pendiaman terhadap akun pada domain ini suspend: Hapus suspen terhadap akun pada domain ini @@ -481,7 +498,9 @@ id: destroyed_msg: Data dari %{domain} masuk antrean dihapus dalam waktu dekat. empty: Domain tidak ditemukan. known_accounts: - other: "%{count} akun yang dikenal" + one: "%{count} akun dikenal" + other: "%{count} akun dikenal" + zero: Tidak ada akun yang dikenal moderation: all: Semua limited: Terbatas @@ -547,10 +566,12 @@ id: action_log: Log audit action_taken_by: Aksi dilakukan oleh actions: + delete_description_html: Kiriman yang dilaporkan akan dihapus dan peringatan akan direkam untuk membantu Anda mengurus masalah oleh akun yang sama di masa mendatang. other_description_html: Lihat opsi lain untuk mengendalikan perilaku akun dan menyesuaikan komunikasi ke akun yang dilaporkan. + resolve_description_html: Tidak ada tindakan untuk akun yang dilaporkan, tidak ada peringatan yang direkam, dan laporan akan ditutup. silence_description_html: Profil hanya dapat terlihat oleh pengguna yang telah mengikuti atau melihatnya secara manual, yang sangat membatasi jangkauannya. Selalu dapat dipulihkan kembali. suspend_description_html: Profil dan semua kontennya tidak dapat diakses sampai ia terhapus. Interaksi dengan akun tersebut tidak dimungkinkan. Dapat dipulihkan dalam waktu 30 hari. - actions_description_html: 'Jika menghapus konten yang menyinggung perasaan di atas tidak memadai:' + actions_description_html: Memutuskan tindakan yang tepat untuk menyelesaikan laporan ini. Jika Anda memutuskan tindakan hukuman kepada akun terlapor, notifikasi email akan dikirim ke mereka, kecuali saat kategori <strong>Spam</strong> dipilih. add_to_report: Tambahkan lebih banyak untuk lapor are_you_sure: Apakah Anda yakin? assign_to_self: Tugaskan kpd saya @@ -562,7 +583,7 @@ id: none: Tidak ada comment_description_html: 'Untuk menyediakan lebih banyak informasi, %{name} menulis:' created_at: Dilaporkan - delete_and_resolve: Hapus dan selesaikan + delete_and_resolve: Hapus kiriman forwarded: Diteruskan forwarded_to: Diteruskan ke %{domain} mark_as_resolved: Tandai telah diseleseikan @@ -576,12 +597,14 @@ id: placeholder: Jelaskan aksi yang telah dilakukan, atau pembaruan lain yang berhubungan... title: Catatan notes_description_html: Lihat dan tinggalkan catatan kepada moderator lain dan Anda di masa depan + quick_actions_description_html: 'Lakukan tindakan cepat atau gulir ke bawah untuk melihat konten yang dilaporkan:' reopen: Buka lagi laporan report: 'Laporkan #%{id}' reported_account: Akun yang dilaporkan reported_by: Dilaporkan oleh resolved: Terseleseikan resolved_msg: Laporan berhasil diselesaikan! + skip_to_actions: Langsung ke tindakan status: Status statuses: Konten yang dilaporkan statuses_description_html: Konten menyinggung akan disampaikan saat komunikasi dengan akun yang dilaporkan @@ -702,6 +725,16 @@ id: no_status_selected: Tak ada status yang berubah karena tak ada yang dipilih title: Status akun with_media: Dengan media + strikes: + actions: + delete_statuses: "%{name} menghapus kiriman %{target}" + disable: "%{name} membekukan akun %{target}" + none: "%{name} mengirim peringatan ke %{target}" + sensitive: "%{name} menandai akun %{target} sebagai sensitif" + silence: "%{name} membatasi akun %{target}" + suspend: "%{name} menangguhkan akun %{target}" + appeal_approved: Banding disetujui + appeal_pending: Banding ditunda system_checks: database_schema_check: message_html: Ada proses migrasi basis data tertunda. Silakan jalankan untuk memastikan aplikasi bekerja seperti yang diharapkan @@ -724,7 +757,9 @@ id: disallow: Batalkan izin tautan disallow_provider: Batalkan izin penerbit shared_by_over_week: - other: Dibagikan oleh %{count} orang selama seminggu terakhir + one: Dibagikan oleh satu orang lebih dari seminggu lalu + other: Dibagikan oleh %{count} orang lebih dari seminggu lalu + zero: Tidak dibagikan siapapun lebih dari seminggu lalu title: Tautan sedang tren usage_comparison: Dibagikan %{today} kali hari ini, dibandingkan %{yesterday} kemarin pending_review: Tinjauan tertunda @@ -752,7 +787,9 @@ id: usable: Dapat digunakan usage_comparison: Digunakan %{today} kali hari ini, dibandingkan %{yesterday} kemarin used_by_over_week: - other: Digunakan oleh %{count} orang selama seminggu terakhir + one: Dipakai oleh satu orang lebih dari seminggu lalu + other: Dipakai oleh %{count} orang selama seminggu terakhir + zero: Tidak dipakai siapapun lebih dari seminggu lalu title: Tren warning_presets: add_new: Tambah baru @@ -761,6 +798,17 @@ id: empty: Anda belum mendefinisikan peringatan apapun. title: Kelola preset peringatan admin_mailer: + new_appeal: + actions: + delete_statuses: untuk menghapus kiriman mereka + disable: untuk membekukan akun mereka + none: peringatan + sensitive: untuk menandai akun mereka sebagai sensitif + silence: untuk membatasi akun mereka + suspend: untuk menangguhkan akun mereka + body: "%{target} melakukan banding keputusan moderasi oleh %{action_taken_by} dari %{date}, yang %{type}. Mereka menulis:" + next_steps: Anda dapat menyetujui banding untuk mengurungkan keputusan moderasi atau mengabaikannya. + subject: "%{username} melakukan banding keputusan moderasi di %{instance}" new_pending_account: body: Detail akun baru di bawah. Anda dapat menyetujui atau menolak lamaran ini. subject: Akun baru muncul untuk ditinjau di %{instance} (%{username}) @@ -851,7 +899,6 @@ id: status: account_status: Status akun confirming: Menunggu konfirmasi email diselesaikan. - functional: Akun Anda kini beroperasi penuh. pending: Permintaan Anda sedang ditinjau oleh staf kami. Ini mungkin butuh beberapa waktu. Anda akan menerima email jika permintaan Anda diterima. redirecting_to: Akun Anda tidak aktif karena sekarang dialihkan ke %{acct}. too_fast: Formulir dikirim terlalu cepat, coba lagi. @@ -917,6 +964,32 @@ id: directory: Direktori profil explanation: Temukan pengguna berdasarkan minatnya explore_mastodon: Jelajahi %{title} + disputes: + strikes: + action_taken: Tindakan dilaksanakan + appeal: Banding + appeal_approved: Peringatan ini digagalkan dalam banding dan tidak lagi valid + appeal_rejected: Banding telah ditolak + appeal_submitted_at: Banding dikirimkan + appealed_msg: Banding Anda sudah dikirim. Jika disetujui, Anda akan diberi tahu. + appeals: + submit: Ajukan banding + associated_report: Laporan yang berkaitan + created_at: Tanggal + recipient: Dialamatkan untuk + status: 'Kiriman #%{id}' + status_removed: Kirim sudah dihapus dari sistem + title: "%{action} dari %{date}" + title_actions: + delete_statuses: Penghapusan kiriman + disable: Pembekuan akun + none: Peringatan + sensitive: Tandai akun sebagai sensitif + silence: Pembatasan akun + suspend: Penangguhan akun + your_appeal_approved: Banding Anda disetujui + your_appeal_pending: Anda telah mengirim banding + your_appeal_rejected: Banding Anda ditolak domain_validator: invalid_domain: bukan nama domain yang valid errors: @@ -1124,6 +1197,8 @@ id: title: Boost baru status: subject: "%{name} baru saja memposting" + update: + subject: "%{name} mengedit kiriman" notifications: email_events: Event untuk notifikasi email email_events_hint: 'Pilih event yang ingin Anda terima notifikasinya:' @@ -1205,6 +1280,9 @@ id: reply: proceed: Lanjutkan ke balasan prompt: 'Anda ingin membalas toot ini:' + reports: + errors: + invalid_rules: tidak mereferensikan aturan yang valid scheduled_statuses: over_daily_limit: Anda telah melampaui batas %{limit} toot terjadwal untuk sehari over_total_limit: Anda telah melampaui batas %{limit} toot terjadwal @@ -1465,6 +1543,15 @@ id: recovery_instructions_html: Jika anda kehilangan akses pada handphone anda, anda bisa menggunakan kode pemulihan dibawah ini untuk mendapatkan kembali akses pada akun anda. Simpan kode pemulihan anda baik-baik, misalnya dengan mencetaknya atau menyimpannya bersama dokumen penting lainnya. webauthn: Kunci keamanan user_mailer: + appeal_approved: + action: Ke akun Anda + explanation: Banding peringatan terhadap akun Anda pada %{strike_date} yang Anda kirim pada %{appeal_date} telah disetujui. Akun Anda akan kembali ditandai sebagai akun bagus. + subject: Banding Anda dari %{date} telah disetujui + title: Banding disetujui + appeal_rejected: + explanation: Banding terhadap akun Anda pada %{strike_date} yang Anda ajukan %{appeal_date} telah ditolak. + subject: Banding Anda dari %{date} telah ditolak + title: Banding ditolak backup_ready: explanation: Cadangan penuh akun Mastodon Anda sudah dapat diunduh! subject: Arsip Anda sudah siap diunduh @@ -1476,6 +1563,8 @@ id: subject: Harap konfirmasi usaha masuk akun title: Usaha masuk akun warning: + appeal: Ajukan banding + appeal_description: Jika Anda yakin ini galat, Anda dapat mengajukan banding ke staf %{instance}. categories: spam: Spam violation: Konten melanggar panduan komunitas berikut @@ -1487,7 +1576,6 @@ id: suspend: Anda tidak dapat menggunakan akun Anda, dan profil serta data lain Anda tidak lagi dapat diakses. Anda masih tetap bisa masuk akun untuk minta cadangan data sampai data Anda akan dihapus permanen 30 hari lagi, tapi kami akan menyimpan beberapa data dasar untuk mencegah Anda menghindari penangguhan. get_in_touch: Jika Anda yakin ini kesalahan, Anda dapat membalas email ini untuk menghubungi staf %{instance}. reason: 'Alasan:' - review_server_policies: Tinjau kebijakan server statuses: 'Postingan yang telah terbukti pelanggarannya:' subject: delete_statuses: Postingan anda pada %{acct} telah dihapus diff --git a/config/locales/is.yml b/config/locales/is.yml index 3a1896df1..3d073e158 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -1,7 +1,7 @@ --- is: about: - about_hashtag_html: Þetta eru opinber skilaboð sem merkt eru með <strong>#%{hashtag}</strong>. Þú getur unnið með þau ef þú ert með skráðan aðgang einhversstaðar í skýjasambandinu. + about_hashtag_html: Þetta eru opinberar færslur sem merkt eru með <strong>#%{hashtag}</strong>. Þú getur unnið með þau ef þú ert með skráðan aðgang einhversstaðar í skýjasambandinu. about_mastodon_html: 'Samfélagsnet framtíðarinnar: Engar auglýsingar, ekkert eftirlit stórfyrirtækja, siðleg hönnun og engin miðstýring! Þú átt þín eigin gögn í Mastodon!' about_this: Um hugbúnaðinn active_count_after: virkt @@ -10,7 +10,7 @@ is: api: API-kerfisviðmót apps: Farsímaforrit apps_platforms: Notaðu Mastodon frá iOS, Android og öðrum stýrikerfum - browse_directory: Skoða notandasniðamöppu og sía eftir áhugamálum + browse_directory: Skoða notendur og sía eftir áhugamálum browse_local_posts: Skoðaðu kvikt streymi af opinberum færslum á þessum vefþjóni browse_public_posts: Skoðaðu kvikt streymi af opinberum færslum á Mastodon contact: Hafa samband @@ -32,8 +32,8 @@ is: server_stats: 'Tölfræði þjóns:' source_code: Grunnkóði status_count_after: - one: stöðufærsla - other: stöðufærslur + one: færsla + other: færslur status_count_before: Sem stóðu fyrir tagline: Fylgstu með vinum og uppgötvaðu nýja terms: Þjónustuskilmálar @@ -76,10 +76,10 @@ is: pin_errors: following: Þú þarft að vera þegar að fylgjast með þeim sem þú ætlar að mæla með posts: - one: Tíst - other: Tíst - posts_tab_heading: Tíst - posts_with_replies: Tíst og svör + one: Færsla + other: Færslur + posts_tab_heading: Færslur + posts_with_replies: Færslur og svör roles: admin: Stjóri bot: Róbót @@ -94,7 +94,6 @@ is: account_moderation_notes: create: Skilja eftir minnispunkt created_msg: Tókst að útbúa minnispunkt umsjónarmanns! - delete: Eyða destroyed_msg: Tókst að eyða minnispunkti umsjónarmanns! accounts: add_email_domain_block: Útiloka tölvupóstlén @@ -163,6 +162,11 @@ is: not_subscribed: Ekki í áskrift pending: Bíður eftir yfirlestri perform_full_suspension: Setja í bið + previous_strikes: Fyrri refsingar + previous_strikes_description_html: + one: Þessi notandaaðgangur er með <strong>eina</strong> refsingu. + other: Þessi notandaaðgangur er með <strong>%{count}</strong> refsingar. + zero: Þessi notandaaðgangur er <strong>í góðu lagi</strong>. promote: Hækka í tign protocol: Samskiptamáti public: Opinber @@ -203,14 +207,15 @@ is: targeted_reports: Kært af öðrum silence: Hylja silenced: Hulið - statuses: Stöðufærslur + statuses: Færslur strikes: Fyrri refsingar subscribe: Gerast áskrifandi + suspend: Setja í bið suspended: Í bið suspension_irreversible: Gögnunum á þessum notandaaðgangi hefur verið eytt óafturkræft. Þú getur tekið aðganginn úr bið svo hægt sé að nota hann, en það mun ekki endurheimta neitt af þeim gögnum sem á honum voru áður. suspension_reversible_hint_html: Notandaaðgangurin hefur verið settur í biðstöðu og gögnunum á honum verður eytt að fullu þann %{date}. Þangað til væri hægt að endurheimta aðganginn úr bið án nokkurra breytinga. Ef þú vilt eyða öllum gögnum af honum strax, geturðu gert það hér fyrir neðan. title: Notandaaðgangar - unblock_email: Leyfa tölvupóstfang + unblock_email: Aflétta útilokun tölvupóstfangs unblocked_email_msg: Tókst að afbanna tölvupóstfang notandans %{username} unconfirmed_email: Óstaðfestur tölvupóstur undo_sensitized: Afturkalla merkingu sem viðkvæmt @@ -226,6 +231,7 @@ is: whitelisted: Á lista yfir leyft action_logs: action_types: + approve_appeal: Samþykkja áfrýjun approve_user: Samþykkja notanda assigned_to_self_report: Úthluta kæru change_email_user: Skipta um tölvupóstfang notanda @@ -234,19 +240,19 @@ is: create_announcement: Búa til tilkynningu create_custom_emoji: Búa til sérsniðið tjáningartákn create_domain_allow: Búa til lén leyft - create_domain_block: Búa til lén bannað - create_email_domain_block: Búa til tölvupóstfang bannað + create_domain_block: Búa til útilokun léns + create_email_domain_block: Búa til útilokun tölvupóstléns create_ip_block: Búa til IP-reglu create_unavailable_domain: Útbúa lén sem ekki er tiltækt demote_user: Lækka notanda í tign destroy_announcement: Eyða tilkynningu destroy_custom_emoji: Eyða sérsniðnu tjáningartákni destroy_domain_allow: Eyða léni leyft - destroy_domain_block: Eyða léni bannað - destroy_email_domain_block: Eyða tölvupóstfangi bannað + destroy_domain_block: Eyða útilokun léns + destroy_email_domain_block: Eyða útilokun tölvupóstléns destroy_instance: Henda léni destroy_ip_block: Eyða IP-reglu - destroy_status: Eyða stöðufærslu + destroy_status: Eyða færslu destroy_unavailable_domain: Eyða léni sem ekki er tiltækt disable_2fa_user: Gera tveggja-þátta auðkenningu óvirka disable_custom_emoji: Gera sérsniðið tjáningartákn óvirkt @@ -257,6 +263,7 @@ is: enable_user: Virkja notanda memorialize_account: Gera aðgang að minningargrein promote_user: Hækka notanda í tign + reject_appeal: Hafna áfrýjun reject_user: Hafna notanda remove_avatar_user: Fjarlægja auðkennismynd reopen_report: Enduropna kæru @@ -273,8 +280,9 @@ is: update_announcement: Uppfæra tilkynningu update_custom_emoji: Uppfæra sérsniðið tjáningartákn update_domain_block: Uppfæra útilokun léns - update_status: Uppfæra stöðufærslu + update_status: Uppfæra færslu actions: + approve_appeal_html: "%{name} samþykkti áfrýjun á ákvörðun umsjónarmanns frá %{target}" approve_user_html: "%{name} samþykkti nýskráningu frá %{target}" assigned_to_self_report_html: "%{name} úthlutaði kæru %{target} til sín" change_email_user_html: "%{name} breytti tölvupóstfangi fyrir notandann %{target}" @@ -295,7 +303,7 @@ is: destroy_email_domain_block_html: "%{name} aflétti útilokun af póstléninu %{target}" destroy_instance_html: "%{name} henti léninu %{target}" destroy_ip_block_html: "%{name} eyddi reglu fyrir IP-vistfangið %{target}" - destroy_status_html: "%{name} fjarlægði stöðufærslu frá %{target}" + destroy_status_html: "%{name} fjarlægði færslu frá %{target}" destroy_unavailable_domain_html: "%{name} hóf aftur afhendingu til lénsins %{target}" disable_2fa_user_html: "%{name} gerði kröfu um tveggja-þátta innskráningu óvirka fyrir notandann %{target}" disable_custom_emoji_html: "%{name} gerði tjáningartáknið %{target} óvirkt" @@ -306,6 +314,7 @@ is: enable_user_html: "%{name} gerði innskráningu virka fyrir notandann %{target}" memorialize_account_html: "%{name} breytti notandaaðgangnum %{target} í minningargreinarsíðu" promote_user_html: "%{name} hækkaði notandann %{target} í tign" + reject_appeal_html: "%{name} hafnaði áfrýjun á ákvörðun umsjónarmanns frá %{target}" reject_user_html: "%{name} hafnaði nýskráningu frá %{target}" remove_avatar_user_html: "%{name} fjarlægði auðkennismynd af %{target}" reopen_report_html: "%{name} enduropnaði kæru %{target}" @@ -321,9 +330,9 @@ is: unsuspend_account_html: "%{name} tók notandaaðganginn %{target} úr bið" update_announcement_html: "%{name} uppfærði tilkynningu %{target}" update_custom_emoji_html: "%{name} uppfærði tjáningartáknið %{target}" - update_domain_block_html: "%{name} uppfærði lénalás fyrir %{target}" - update_status_html: "%{name} uppfærði stöðufærslu frá %{target}" - deleted_status: "(eydd stöðufærsla)" + update_domain_block_html: "%{name} uppfærði útilokun lénsins %{target}" + update_status_html: "%{name} uppfærði færslu frá %{target}" + deleted_status: "(eydd færsla)" empty: Engar atvikaskrár fundust. filter_by_action: Sía eftir aðgerð filter_by_user: Sía eftir notanda @@ -384,14 +393,17 @@ is: media_storage: Geymsla myndefnis new_users: nýir notendur opened_reports: kærur opnaðar + pending_appeals_html: + one: "<strong>%{count}</strong> áfrýjun í bið" + other: "<strong>%{count}</strong> áfrýjanir í bið" pending_reports_html: - one: "<strong>1</strong> kæra í bið" + one: "<strong>%{count}</strong> kæra í bið" other: "<strong>%{count}</strong> kærur í bið" pending_tags_html: - one: "<strong>1</strong> myllumerki í bið" + one: "<strong>%{count}</strong> myllumerki í bið" other: "<strong>%{count}</strong> myllumerki í bið" pending_users_html: - one: "<strong>1</strong> notandi í bið" + one: "<strong>%{count}</strong> notandi í bið" other: "<strong>%{count}</strong> notendur í bið" resolved_reports: kærur leystar software: Hugbúnaður @@ -401,6 +413,10 @@ is: top_languages: Virkustu tungumál top_servers: Virkustu netþjónar website: Vefsvæði + disputes: + appeals: + empty: Engar áfrýjanir fundust. + title: Áfrýjanir domain_allows: add_new: Setja lén á lista yfir leyft created_msg: Það tókst að setja lénið á lista yfir leyft @@ -423,7 +439,7 @@ is: suspend: Setja í bið title: Ný útilokun á léni obfuscate: Gera heiti léns ólæsilegt - obfuscate_hint: Gera heiti léns ólæsilegt að hluta í listanum ef auglýsing er virk fyrir lista yfir takmarkanir léna + obfuscate_hint: Gera heiti léns ólæsilegt að hluta í listanum ef auglýsing yfir takmarkanir léna er virk private_comment: Einkaathugasemd private_comment_hint: Athugasemd um þessa útilokun á léni til innanhússnotkunar fyrir umsjónarmenn. public_comment: Opinber athugasemd @@ -435,14 +451,15 @@ is: rejecting_media: hafna myndskrám rejecting_reports: hafna kærum severity: - silence: hulið + silence: takmarkað suspend: í bið show: affected_accounts: one: Einn notandaaðgangur í gagnagrunninum kemur við sögu other: "%{count} notendaaðgangar í gagnagrunninum koma við sögu" + zero: Enginn notandaaðgangur í gagnagrunninum kemur við sögu retroactive: - silence: Hætta að hylja viðkomandi notendaaðganga frá þessu léni + silence: Hætta að takmarka viðkomandi notendaaðganga frá þessu léni suspend: Taka úr bið viðkomandi notendaaðganga frá þessu léni title: Afturkalla útilokun á léni fyrir %{domain} undo: Afturkalla @@ -450,16 +467,16 @@ is: view: Skoða útilokun á léni email_domain_blocks: add_new: Bæta við nýju - created_msg: Tókst að bæta póstléni á lista yfir bannað + created_msg: Tókst að útiloka póstlén delete: Eyða - destroyed_msg: Tókst að eyða póstléni af lista yfir bannað + destroyed_msg: Tókst að aflétta útilokun af póstléni domain: Lén - empty: Engin tölvupóstlén eru á bannlista. + empty: Engin tölvupóstlén eru útilokuð. from_html: frá %{domain} new: create: Bæta við léni - title: Ný færsla á bannlista fyrir tölvupóstföng - title: Bannlisti yfir tölvupóstföng + title: Útiloka nýtt tölvupóstlén + title: Útilokuð tölvupóstlén follow_recommendations: description_html: "<strong>Að fylgja meðmælum hjálpar nýjum notendum að finna áhugavert efni á einfaldan máta</strong>. Þegar notandi hefur ekki átt í nægilegum samskiptum við aðra til að vera farinn að móta sér skoðanir á hverju hann vill fylgjast með, er mælt með að fylgjast með þessum aðgöngum. Þeir eru endurreiknaðir daglega út frá blöndu þeirra aðganga sem eru með hvað mestri þáttöku í umræðum og mesta fylgjendafjölda út frá hverju tungumáli." language: Fyrir tungumálið @@ -494,6 +511,7 @@ is: known_accounts: one: "%{count} þekktur notandaaðgangur" other: "%{count} þekktir notendaaðgangar" + zero: Enginn þekktur notandaaðgangur moderation: all: Allt limited: Takmarkað @@ -502,7 +520,7 @@ is: public_comment: Opinber athugasemd purge: Henda title: Samband - total_blocked_by_us: Útilokaðir af okkur + total_blocked_by_us: Útilokað af okkur total_followed_by_them: Fylgt af þeim total_followed_by_us: Fylgt af okkur total_reported: Kærur um þá @@ -535,11 +553,11 @@ is: relays: add_new: Bæta við nýjum endurvarpa delete: Eyða - description_html: "<strong>Endurvarpi í skýjasambandi</strong> er milliþjónn sem skiptist á miklu magni opinberra tísta við aðra þjóna sem eru áskrifendur að honum og birta sín tíst á honum. <strong>Þetta getur hjálpað litlum og meðalstórum vefþjónum að uppgötva efni úr skýjasambandinu</strong>, sem annars myndi krefjast þess að staðværir notendur fylgist handvirkt með öðru fólki á fjartengdum vefþjónum." + description_html: "<strong>Endurvarpi í skýjasambandi</strong> er milliþjónn sem skiptist á miklu magni opinberra færslna við aðra þjóna sem eru áskrifendur að honum og birta sín tíst á honum. <strong>Þetta getur hjálpað litlum og meðalstórum vefþjónum að uppgötva efni úr skýjasambandinu</strong>, sem annars myndi krefjast þess að staðværir notendur fylgist handvirkt með öðru fólki á fjartengdum vefþjónum." disable: Gera óvirkt disabled: Óvirkt enable: Virkja - enable_hint: Ef þetta er einu sinni virkjað, mun vefþjónninn þinn gerast áskrifandi að öllum opinberum tístum frá þessum endurvarpa og byrja að senda sín eigin opinberu tíst til hans. + enable_hint: Ef þetta er einu sinni virkjað, mun vefþjónninn þinn gerast áskrifandi að öllum opinberum færslum frá þessum endurvarpa og byrja að senda sín eigin opinberu tíst til hans. enabled: Virkt inbox_url: Slóð endurvarpa pending: Bíð eftir samþykki endurvarpa @@ -560,10 +578,12 @@ is: action_log: Atvikaskrá action_taken_by: Aðgerð framkvæmd af actions: + delete_description_html: Kærðum færslum verður eytt og refsing skráð svo þú eigir auðveldara með að bregðast við í framtíðinni verði um fleiri brot að ræða frá sama notandaaðgangi. other_description_html: Skoðaðu fleir valkosti fyrir stjórnun á hegðun notandaaðgangsins og til að stýra samskiptum við kærðan notandaaðgang. + resolve_description_html: Til engra aðgerða verður tekið gagnvart kærðum færslum, engin refsing verður skráð og kærunni verður lokað. silence_description_html: Notandaaðgangurinn verður einungis sýnilegur þeim sem þegar fylgjast með honum eða sem fletta honum upp handvirkt, sem takmarkar útbreiðslu efnis verulega. Er alltaf hægt að afturkalla. suspend_description_html: Notandaaðgangurinn og allt efni á honum mun verða óaðgengilegt og á endanum eytt út. Samskipti við aðganginn verða ekki möguleg. Hægt að afturkalla innan 30 daga. - actions_description_html: 'Ef það að fjarlægja óviðeigandi efnið hér fyrir ofan er ekki nægilegt:' + actions_description_html: Ákveddu til hvaða aðgerða eigi að taka til að leysa þessa kæru. Ef þú ákveður að refsa kærða notandaaðgangnum, verður viðkomandi send tilkynning í tölvupósti, nema ef flokkurinn <strong>Ruslpóstur</strong> sé valinn. add_to_report: Bæta fleiru í kæru are_you_sure: Ertu viss? assign_to_self: Úthluta mér @@ -575,7 +595,7 @@ is: none: Ekkert comment_description_html: 'Til að gefa nánari upplýsingar skrifaði %{name}:' created_at: Tilkynnt - delete_and_resolve: Eyða og leysa + delete_and_resolve: Eyða færslum forwarded: Áframsent forwarded_to: Áframsent á %{domain} mark_as_resolved: Merkja sem leyst @@ -589,12 +609,14 @@ is: placeholder: Lýstu til hvaða aðgerða hefur verið gripið eða uppfærðu inn aðrar tengdar upplýsingar... title: Minnispunktar notes_description_html: Skoðaðu og skrifaðu minnispunkta til annarra stjórnenda og sjálfs þín + quick_actions_description_html: 'Beittu flýtiaðgerð eða skrunaðu niður til að skoða kært efni:' reopen: Enduropna kæru report: 'Kæra #%{id}' reported_account: Kærður notandaaðgangur reported_by: Kært af resolved: Leyst resolved_msg: Það tókst að leysa kæruna! + skip_to_actions: Sleppa og fara í aðgerðir status: Staða statuses: Kært efni statuses_description_html: Óviðeigandi efni verður tiltekið í samskiptum við kærðan notandaaðgang @@ -613,7 +635,7 @@ is: title: Reglur netþjónsins settings: activity_api_enabled: - desc_html: Fjöldi staðværra stöðufærslna, virkra notenda og nýskráninga í vikulegum skömmtum + desc_html: Fjöldi staðvært birtra færslna, virkra notenda og nýskráninga í vikulegum skömmtum title: Birta samantektartölfræði um virkni notanda bootstrap_timeline_accounts: desc_html: Aðskildu mörg notendanöfn með kommum. Einungis staðværir og ólæstir aðgangar virka. Þegar þetta er autt er sjálgefið miðað við alla staðværa stjórnendur. @@ -712,9 +734,19 @@ is: deleted: Eytt media: title: Myndefni - no_status_selected: Engum stöðufærslum var breytt þar sem engar voru valdar - title: Staða notendaaðganga + no_status_selected: Engum færslum var breytt þar sem engar voru valdar + title: Færslur notandaaðgangs with_media: Með myndefni + strikes: + actions: + delete_statuses: "%{name} eyddi færslum frá %{target}" + disable: "%{name} frysti aðganginn %{target}" + none: "%{name} sendi aðvörun til %{target}" + sensitive: "%{name} merkti efni frá %{target} sem viðkvæmt" + silence: "%{name} takmarkaði aðganginn %{target}" + suspend: "%{name} setti notandaaðganginn %{target} í bið" + appeal_approved: Áfrýjað + appeal_pending: Áfrýjun í bið system_checks: database_schema_check: message_html: Það eru fyrirliggjandi yfirfærslur á gagnagrunnum. Keyrðu þær til að tryggja að forritið hegði sér eins og skyldi @@ -739,6 +771,7 @@ is: shared_by_over_week: one: Deilt af einum aðila síðustu vikuna other: Deilt af %{count} aðilum síðustu vikuna + zero: Ekki deilt af neinum aðila síðustu vikuna title: Vinsælir tenglar usage_comparison: Deilt %{today} sinnum í dag, samanborið við %{yesterday} í gær pending_review: Bíður eftir yfirlestri @@ -768,6 +801,7 @@ is: used_by_over_week: one: Notað af einum aðila síðustu vikuna other: Notað af %{count} aðilum síðustu vikuna + zero: Ekki notað af neinum aðila síðustu vikuna title: Tilhneiging warning_presets: add_new: Bæta við nýju @@ -776,6 +810,17 @@ is: empty: Þú hefur ekki enn skilgreint neinar aðvaranaforstillingar. title: Sýsla með forstilltar aðvaranir admin_mailer: + new_appeal: + actions: + delete_statuses: að eyða færslum viðkomandi + disable: að frysta aðgang viðkomandi + none: aðvörun + sensitive: að merkja efni á aðgangnum sem viðkvæmt + silence: að takmarka aðgang viðkomandi + suspend: að setja aðgang viðkomandi í bið + body: "%{target} er að áfrýja ákvörðun umsjónarmanns tekinni af %{action_taken_by} frá %{date}, sem var %{type}. Viðkomandi skrifaði:" + next_steps: Þú getur samþykkt áfrýjunina til að afturkalla ákvörðun umsjónarmanns, eða hunsað hana. + subject: "%{username} er að áfrýja ákvörðun umsjónarmanns tekinni á %{instance}" new_pending_account: body: Nákvæmari upplýsingar um nýja notandaaðganginn eru hér fyrir neðan. Þú getur samþykkt eða hafnað þessari umsókn. subject: Nýr notandaaðgangur er kominn til yfirferðar á %{instance} (%{username}) @@ -811,14 +856,14 @@ is: guide_link: https://crowdin.com/project/mastodon/is guide_link_text: Allir geta tekið þátt. sensitive_content: Viðkvæmt efni - toot_layout: Framsetning tísta + toot_layout: Framsetning færslu application_mailer: notification_preferences: Breyta kjörstillingum tölvupósts salutation: "%{name}," settings: 'Breyta kjörstillingum tölvupósts: %{link}' view: 'Skoða:' view_profile: Skoða notandasnið - view_status: Skoða stöðufærslu + view_status: Skoða færslu applications: created: Það tókst að búa til forrit destroyed: Það tókst að eyða forriti @@ -837,7 +882,7 @@ is: description: prefix_invited_by_user: "@%{name} býður þér að taka þátt á þessum Mastodon-vefþjóni!" prefix_sign_up: Skráðu þig á Mastodon strax í dag! - suffix: Með notandaaðgangi geturðu fylgst með fólki, sent inn stöðufærslur og skipst á skilaboðum við notendur á hvaða Mastodon-vefþjóni sem er, auk margs fleira! + suffix: Með notandaaðgangi geturðu fylgst með fólki, sent inn færslur og skipst á skilaboðum við notendur á hvaða Mastodon-vefþjóni sem er, auk margs fleira! didnt_get_confirmation: Fékkstu ekki leiðbeiningar um hvernig eigi að staðfesta aðganginn? dont_have_your_security_key: Ertu ekki með öryggislykilinn þinn? forgot_password: Gleymdirðu lykilorðinu? @@ -866,7 +911,6 @@ is: status: account_status: Staða notandaaðgangs confirming: Bíð eftir að staðfestingu tölvupósts sé lokið. - functional: Notandaaðgangurinn þinn er með fulla virkni. pending: Umsóknin þín bíður eftir að starfsfólkið okkar fari yfir hana. Það gæti tekið nokkurn tíma. Þú munt fá tölvupóst ef umsóknin er samþykkt. redirecting_to: Notandaaðgangurinn þinn er óvirkur vegna þess að hann endurbeinist á %{acct}. too_fast: Innfyllingarform sent inn of hratt, prófaðu aftur. @@ -932,6 +976,32 @@ is: directory: Notandasniðamappa explanation: Leitaðu að notendum eftir áhugamálum þeirra explore_mastodon: Kannaðu %{title} + disputes: + strikes: + action_taken: Framkvæmd aðgerð + appeal: Áfrýja + appeal_approved: Þessari refsingu hefur verið áfrýjað með góðum árangri og hún því ekki lengur í gildi + appeal_rejected: Áfrýjuninni hefur verið hafnað + appeal_submitted_at: Áfrýjun send inn + appealed_msg: Áfrýjun þín hefur verið sen dinn. Þú verður látin/n vita ef hún verður samþykkt. + appeals: + submit: Senda inn áfrýjun + associated_report: Tengd kæra + created_at: Dagsett + recipient: Stílað til + status: 'Færsla #%{id}' + status_removed: Færsla þegar fjarlægð úr kerfinu + title: "%{action} frá %{date}" + title_actions: + delete_statuses: Fjarlæging færslu + disable: Frysting aðgangs + none: Aðvörun + sensitive: Efni verður merkt sem viðkvæmt frá aðgangnum + silence: Takmörkun aðgangs + suspend: Setja aðgang í bið + your_appeal_approved: Áfrýjun þín hefur verið samþykkt + your_appeal_pending: Þú hefur sent inn áfrýjun + your_appeal_rejected: Áfrýjun þinni hefur verið hafnað domain_validator: invalid_domain: er ekki leyfilegt nafn á léni errors: @@ -956,7 +1026,7 @@ is: archive_takeout: date: Dagsetning download: Náðu í safnskrána þína - hint_html: Þú getur beðið um safnskrá með <strong>tístunum þínum og innsendu myndefni</strong>. Útfluttu gögnin verða á ActivityPub-sniði, sem allur samhæfður hugbúnaður á að geta lesið. Þú getur beðið um safnskrá á 7 daga fresti. + hint_html: Þú getur beðið um safnskrá með <strong>færslunum þínum og innsendu myndefni</strong>. Útfluttu gögnin verða á ActivityPub-sniði, sem allur samhæfður hugbúnaður á að geta lesið. Þú getur beðið um safnskrá á 7 daga fresti. in_progress: Set saman safnskrána þína... request: Biddu um safnskrána þína size: Stærð @@ -1065,7 +1135,7 @@ is: title: Auðkenningarferill media_attachments: validations: - images_and_video: Ekki er hægt að hengja myndskeið við stöðufærslu sem þegar inniheldur myndir + images_and_video: Ekki er hægt að hengja myndskeið við færslu sem þegar inniheldur myndir not_ready: Ekki er hægt að hengja við skrár sem ekki er búið að vinna til fulls. Prófaðu aftur eftir augnablik! too_many: Ekki er hægt að hengja við fleiri en 4 skrár migrations: @@ -1118,8 +1188,8 @@ is: other: "%{count} nýjar tilkynningar síðan þú leist inn síðast \U0001F418" title: Á meðan þú varst fjarverandi... favourite: - body: 'Stöðufærslan þín var sett í eftirlæti af %{name}:' - subject: "%{name} setti stöðufærslu þína í eftirlæti" + body: 'Færslan þín var sett í eftirlæti af %{name}:' + subject: "%{name} setti færsluna þína í eftirlæti" title: Nýtt eftirlæti follow: body: "%{name} er núna að fylgjast með þér!" @@ -1138,11 +1208,13 @@ is: poll: subject: Könnun frá %{name} er lokið reblog: - body: "%{name} endurbirti stöðufærsluna þína:" - subject: "%{name} endurbirti stöðufærsluna þína" + body: "%{name} endurbirti færsluna þína:" + subject: "%{name} endurbirti færsluna þína" title: Ný endurbirting status: subject: "%{name} sendi inn rétt í þessu" + update: + subject: "%{name} breytti færslu" notifications: email_events: Atburðir fyrir tilkynningar í tölvupósti email_events_hint: 'Veldu þá atburði sem þú vilt fá tilkynningar í tölvupósti þegar þeir koma upp:' @@ -1217,19 +1289,19 @@ is: remote_interaction: favourite: proceed: Halda áfram í að setja í eftirlæti - prompt: 'Þú ætlar að setja þetta tíst í eftirlæti:' + prompt: 'Þú ætlar að setja þessa færslu í eftirlæti:' reblog: proceed: Halda áfram í endurbirtingu - prompt: 'Þú ætlar að endurbirta þetta tíst:' + prompt: 'Þú ætlar að endurbirta þessa færslu:' reply: proceed: Halda áfram í að svara - prompt: 'Þú ætlar að svara þessu tísti:' + prompt: 'Þú ætlar að svara þessari færslu:' reports: errors: invalid_rules: vísar ekki til gildra reglna scheduled_statuses: - over_daily_limit: Þú hefur farið fram úr hámarkinu með %{limit} áætluð tíst fyrir þennan dag - over_total_limit: Þú hefur farið fram úr hámarkinu með %{limit} áætluð tíst + over_daily_limit: Þú hefur farið fram úr hámarkinu með %{limit} áætlaðar færslur fyrir þennan dag + over_total_limit: Þú hefur farið fram úr hámarkinu með %{limit} áætlaðar færslur too_soon: Áætluð dagsetning verður að vera í framtíðinni sessions: activity: Síðasta virkni @@ -1315,13 +1387,13 @@ is: other: 'innihélt óleyfilegu myllumerkin: %{tags}' edited_at: Breytt %{date} errors: - in_reply_not_found: Stöðufærslan sem þú ert að reyna að svara að er líklega ekki til. + in_reply_not_found: Færslan sem þú ert að reyna að svara að er líklega ekki til. open_in_web: Opna í vafra over_character_limit: hámarksfjölda stafa (%{max}) náð pin_errors: - direct: Ekki er hægt að festa skilaboð sem einungis eru sýnileg þeim notendum sem minnst er á - limit: Þú hefur þegar fest leyfilegan hámarksfjölda tísta - ownership: Tíst frá einhverjum öðrum er ekki hægt að festa + direct: Ekki er hægt að festa færslur sem einungis eru sýnilegar þeim notendum sem minnst er á + limit: Þú hefur þegar fest leyfilegan hámarksfjölda færslna + ownership: Færslur frá einhverjum öðrum er ekki hægt að festa reblog: Ekki er hægt að festa endurbirtingu poll: total_people: @@ -1380,7 +1452,7 @@ is: min_reblogs: Halda færslum sem eru endurbirtar oftar en min_reblogs_hint: Eyðir ekki þínum eigin færslum sem endurbirtar hafa verið þetta oft. Skildu þetta eftir autt til að eyða færslum burtséð frá fjölda endurbirtinga stream_entries: - pinned: Fest tíst + pinned: Fest færsla reblogged: endurbirt sensitive_content: Viðkvæmt efni tags: @@ -1392,7 +1464,7 @@ is: <ul> <li><em>Grunnupplýsingar um notandaaðgang</em>: Ef þú skráir þig á þessum netþjóni gætirðu verið beðinn um að slá inn notandanafn, tölvupóstfang og lykilorð. Þú getur einnig sett inn viðbótarupplýsingar eins og birtingarnafn og æviágrip auk þess að hlaða inn auðkennismynd eða mynd til að birta á síðuhaus. Notandanafn, birtingarnafn, æviágrip, auðkennismynd og hausmynd eru alltaf skráð opinberlega. </li> - <li><em>Skilaboð, fylgnigögn og aðrar opinberar upplýsingar</em>: Listinn yfir þá sem þú fylgist með er skráður opinberlega, það sama er að segja um þá sem fylgjast með þér. Þegar þú sendir skilaboð er dagsetning og tími vistaður sem og hvaða forrit þú sendir skilaboðin frá. Skilaboð geta innihaldið viðhengi, svo sem myndir og myndskeið. Opinberar og óskráðar færslur er aðgengilegar opinberlega. Þegar þú birtir færslu á notandasniðinu þínu (forsíðu) eru það einnig opinberar upplýsingar. Færslurnar þínar eru sendar þeim sem fylgjast með þér, í sumum tilvikum þýðir það að þær eru afhentar á aðra netþjóna og afrit geymd þar. Þegar þú eyðir færslum er það sömuleiðis birt fylgjendum þínum. Aðgerðir eins og að endurbirta eða setja færslu í eftirlæti eru ávallt opinberar.</li> + <li><em>Færslur, fylgnigögn og aðrar opinberar upplýsingar</em>: Listinn yfir þá sem þú fylgist með er skráður opinberlega, það sama er að segja um þá sem fylgjast með þér. Þegar þú sendir skilaboð er dagsetning og tími vistaður sem og hvaða forrit þú sendir skilaboðin frá. Skilaboð geta innihaldið viðhengi, svo sem myndir og myndskeið. Opinberar og óskráðar færslur er aðgengilegar opinberlega. Þegar þú birtir færslu á notandasniðinu þínu (forsíðu) eru það einnig opinberar upplýsingar. Færslurnar þínar eru sendar þeim sem fylgjast með þér, í sumum tilvikum þýðir það að þær eru afhentar á aðra netþjóna og afrit geymd þar. Þegar þú eyðir færslum er það sömuleiðis birt fylgjendum þínum. Aðgerðir eins og að endurbirta eða setja færslu í eftirlæti eru ávallt opinberar.</li> <li><em>Beinar færslur og eingöngu til fylgjenda</em>: Öll innlegg eru geymd og unnin á netþjóninum. Færslur sem eingöngu eru til fylgjenda berast til fylgjenda þinna og þeirra notenda sem minnst er á í þeim, beinar færslur berast aðeins til notenda sem getið er um í viðkomandi færslu. Í sumum tilvikum þýðir það að færslurnar eru afhentar á aðra netþjóna og afrit geymd þar. Við leggjum mikla áherslu á að takmarka aðgang að þessum færslum einungis við aðila sem til þess hafa heimild, en aðrir utanaðkomandi netþjónar gætu mögulega ekki gert það. Þess vegna er mikilvægt að skoða vel þá netþjóna sem fylgjendur þínir tilheyra. Þú getur valið að þurfa að samþykkja og hafna nýjum fylgjendum handvirkt í stillingunum.<em>Hafðu í huga að rekstraraðilar netþjónsins og allir viðtakendamiðlarar geta skoðað slík skilaboð</em> og að viðtakendur geta tekið skjámyndir, afritað eða á annan hátt deilt þessum gögnum. <em>Ekki deila hættulegum upplýsingum í gegnum Mastodon.</em></li> <li><em>IP-vistföng og önnur lýsigögn</em>: Þegar þú skráir þig inn skráum við IP-töluna sem þú skráir þig inn af, sem og heiti vafraforritsins þíns. Allar innskráðar setur verða tiltækar til skoðunar og afturköllunar í stillingunum. Síðast notaða IP-talan er geymd í allt að 12 mánuði. Við gætum líka haldið eftir atvikaskrám netþjónsins sem gæti innihaldið IP-tölur allra beiðna til netþjónsins.</li> </ul> @@ -1493,6 +1565,15 @@ is: recovery_instructions_html: Ef þú tapar símanum þínum geturðu notað einn af endurheimtukóðunum hér fyrir neðan til að fá aftur samband við notandaaðganginn þinn. <strong>Geymdu endurheimtukóðana á öruggum stað</strong>. Sem dæmi gætirðu prentað þá út og geymt með öðrum mikilvægum skjölum. webauthn: Öryggislyklar user_mailer: + appeal_approved: + action: Farðu inn á notandaaðganginn þinn + explanation: Áfrýjun refsingarinnar gagnvart aðgangnum þínum þann %{strike_date} sem þú sendir inn þann %{appeal_date} hefur verið samþykkt. Notandaaðgangurinn þinn er aftur í góðu lagi. + subject: Áfrýjun þín frá %{date} hefur verið samþykkt + title: Áfrýjun samþykkt + appeal_rejected: + explanation: Áfrýjun refsingarinnar gagnvart aðgangnum þínum þann %{strike_date} sem þú sendir inn þann %{appeal_date} hefur verið hafnað. + subject: Áfrýjun þinni frá %{date} hefur verið hafnað + title: Áfrýjun hafnað backup_ready: explanation: Þú baðst um fullt öryggisafrit af Mastodon notandaaðgangnum þínum. Það er núna tilbúið til niðurhals! subject: Safnskráin þín er tilbúin til niðurhals @@ -1504,28 +1585,29 @@ is: subject: Endilega staðfestu tilraun til innskráningar title: Tilraun til innskráningar warning: + appeal: Ssenda inn áfrýjun + appeal_description: Ef þú álítur að um mistök sé að ræða, geturðu sent áfrýjun til umsjónarmanna %{instance}. categories: spam: Ruslpóstur violation: Efnið er á skjön við eftirfarandi leiðbeiningar til notenda explanation: - delete_statuses: Sum skilaboð frá þér eru álitin eru að hafa gengið gegn samþykktum skilmálum vegna notkunar og hafa því stjórnendur fjarlægt þau af %{instance}. Brot sem framin verða hér eftir geta leitt til enn harðari aðgerða gegn notandaaðgangnum þínum. + delete_statuses: Sumar færslur frá þér eru álitnar hafa gengið gegn samþykktum skilmálum vegna notkunar og hafa því stjórnendur fjarlægt þau af %{instance}. Brot sem framin verða hér eftir geta leitt til enn harðari aðgerða gegn notandaaðgangnum þínum. disable: Þú getur ekki lengur notað aðganginn þinn, en notandasniðið þitt og önnur gögn eru óskemmd. Þú getur beðið um afrit af gögnunum þínum, getur breytt stillingum eða eytt aðgangnum þínum. sensitive: Héðan í frá verður allt myndefni sem þú sendir inn meðhöndlað sem viðkvæmt efni og falið á bakvið aðvörun sem smella þarf á. - silence: Þú getur áfram notað aðganginn þinn en aðeins fólk sem þegar fylgist með þér mun sjá tístin þín á þessum vefþjóni, auk þess sem lokað gæti verið á þig á ýmsum opinberum listum. Aftur á móti geta aðrir gerst fylgjendur þínir handvirkt. + silence: Þú getur áfram notað aðganginn þinn en aðeins fólk sem þegar fylgist með þér mun sjá færslurnar þínar á þessum vefþjóni, auk þess sem lokað gæti verið á þig á ýmsum opinberum listum. Aftur á móti geta aðrir gerst fylgjendur þínir handvirkt. suspend: Þú getur ekki lengur notað aðganginn þinn og notandasniðið þitt og önnur gögn eru ekki lengur aðgengileg. Þú getur enn skráð þig inn til að biðja um afrit af gögnunum þínum þar til þeim verður eytt að fullu eftir 30 daga, við munum hinsvegar halda eftir einstaka grunnupplýsingum til að koma í veg fyrir að þú komist framhjá þessu banni. get_in_touch: Ef þú álítur að um mistök sé að ræða, geturðu svarað þessum tölvupósti til að setja þig í samband við umsjónarmenn %{instance}. reason: 'Ástæða:' - review_server_policies: Yfirfara reglur vefþjónsins - statuses: 'Skilaboð sem álitin eru að hafa gengið gegn samþykktum ákvæðum:' + statuses: 'Færslur sem álitnar eru að hafa gengið gegn samþykktum ákvæðum:' subject: - delete_statuses: Skilaboð ín á %{acct} hafa verið fjarlægð + delete_statuses: Færslurnar þínar á %{acct} hafa verið fjarlægðar disable: Notandaaðgangurinn þinn %{acct} hefur verið frystur none: Aðvörun fyrir %{acct} sensitive: Myndefnið þitt á %{acct} verður héðan í frá merkt sem viðkvæmt silence: Notandaaðgangurinn þinn %{acct} hefur verið takmarkaður suspend: Notandaaðgangurinn þinn %{acct} hefur verið settur í bið title: - delete_statuses: Skilaboð fjarlægð + delete_statuses: Færslur fjarlægðar disable: Notandaaðgangur frystur none: Aðvörun sensitive: Mynd er falin diff --git a/config/locales/it.yml b/config/locales/it.yml index 580179b68..18281a67d 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -94,7 +94,6 @@ it: account_moderation_notes: create: Lascia nota created_msg: Nota di moderazione creata con successo! - delete: Elimina destroyed_msg: Nota di moderazione distrutta con successo! accounts: add_email_domain_block: Inserisci il dominio email nella blacklist @@ -163,6 +162,11 @@ it: not_subscribed: Non sottoscritto pending: Revisioni in attesa perform_full_suspension: Sospendi + previous_strikes: Provvedimenti precedenti + previous_strikes_description_html: + one: Questo account ha <strong>una</strong> violazione. + other: Questo account ha <strong>%{count}</strong> violazioni. + zero: Questo account ha <strong>una buona reputazione</strong>. promote: Promuovi protocol: Protocollo public: Pubblico @@ -206,6 +210,7 @@ it: statuses: Stati strikes: Provvedimenti precedenti subscribe: Sottoscrivi + suspend: Sospendi suspended: Sospeso suspension_irreversible: I dati di questo account sono stati cancellati in modo irreversibile. È possibile annullare la sospensione dell'account per renderlo utilizzabile, ma non recupererà alcuno dei dati precedenti. suspension_reversible_hint_html: L'account è stato sospeso e i dati saranno completamente eliminati il %{date}. Fino ad allora, l'account può essere ripristinato senza effetti negativi. Se si desidera eliminare immediatamente tutti i dati dell'account, è possibile farlo qui sotto. @@ -226,6 +231,7 @@ it: whitelisted: Nella whitelist action_logs: action_types: + approve_appeal: Approva Ricorso approve_user: Approva Utente assigned_to_self_report: Assegna report change_email_user: Cambia l'e-mail per l'utente @@ -257,6 +263,7 @@ it: enable_user: Abilita utente memorialize_account: Trasforma in account commemorativo promote_user: Promuovi utente + reject_appeal: Respingi Ricorso reject_user: Rifiuta Utente remove_avatar_user: Elimina avatar reopen_report: Riapri report @@ -275,6 +282,7 @@ it: update_domain_block: Aggiorna blocco di dominio update_status: Aggiorna stato actions: + approve_appeal_html: "%{name} ha approvato il ricorso contro la decisione di moderazione da %{target}" approve_user_html: "%{name} ha approvato la registrazione da %{target}" assigned_to_self_report_html: "%{name} ha assegnato il rapporto %{target} a se stesso" change_email_user_html: "%{name} ha cambiato l'indirizzo e-mail dell'utente %{target}" @@ -306,6 +314,7 @@ it: enable_user_html: "%{name} ha abilitato il login per l'utente %{target}" memorialize_account_html: "%{name} ha trasformato l'account di %{target} in una pagina in memoriam" promote_user_html: "%{name} ha promosso l'utente %{target}" + reject_appeal_html: "%{name} ha respinto il ricorso contro la decisione di moderazione da %{target}" reject_user_html: "%{name} ha rifiutato la registrazione da %{target}" remove_avatar_user_html: "%{name} ha rimosso l'immagine profilo di %{target}" reopen_report_html: "%{name} ha riaperto il rapporto %{target}" @@ -384,14 +393,17 @@ it: media_storage: Archiviazione media new_users: nuovi utenti opened_reports: rapporti aperti + pending_appeals_html: + one: "<strong>%{count}</strong> appello in attesa" + other: "<strong>%{count}</strong> appelli in attesa" pending_reports_html: - one: "<strong>1</strong> rapporto in attesa" - other: "<strong>%{count}</strong> rapporti in attesa" + one: "<strong>%{count}</strong> segnalazione in attesa" + other: "<strong>%{count}</strong> segnalazioni in attesa" pending_tags_html: - one: "<strong>1</strong> hashtag in attesa" + one: "<strong>%{count}</strong> hashtag in attesa" other: "<strong>%{count}</strong> hashtag in attesa" pending_users_html: - one: "<strong>1</strong> utente in attesa" + one: "<strong>%{count}</strong> utente in attesa" other: "<strong>%{count}</strong> utenti in attesa" resolved_reports: segnalazioni risolte software: Software @@ -401,6 +413,10 @@ it: top_languages: Lingue più attive top_servers: Server più attivi website: Sito web + disputes: + appeals: + empty: Nessun appello trovato. + title: Appelli domain_allows: add_new: Dominio nella whitelist created_msg: Il dominio è stato inserito nella whitelist @@ -441,6 +457,7 @@ it: affected_accounts: one: Interessato un solo account nel database other: Interessati %{count} account nel database + zero: Nessun account nel database è interessato retroactive: silence: De-silenzia tutti gli account esistenti da questo dominio suspend: Annulla la sospensione di tutti gli account esistenti da questo dominio @@ -494,6 +511,7 @@ it: known_accounts: one: "%{count} account noto" other: "%{count} account noti" + zero: Nessun account noto moderation: all: Tutto limited: Limitato @@ -559,10 +577,12 @@ it: other: "%{count} note" action_taken_by: Azione intrapresa da actions: + delete_description_html: I post segnalati saranno eliminati e la violazione sarà registrata per aiutarti a prendere ulteriori provvedimenti sulle future infrazioni dello stesso account. other_description_html: Vedi altre opzioni per controllare il comportamento dell'account e personalizzare la comunicazione all'account segnalato. + resolve_description_html: Nessuna azione sarà intrapresa contro l'account segnalato, nessuna violazione registrata, e la segnalazione sarà chiusa. silence_description_html: Il profilo sarà visibile solo a coloro che lo seguono o lo cercano manualmente, limitandone fortemente la raggiungibilità. Può sempre essere annullato. suspend_description_html: Il profilo e tutti i suoi contenuti diventeranno inaccessibili fino a quando non sarà cancellato. L'interazione con l'account sarà impossibile. Annullabile entro 30 giorni. - actions_description_html: 'Se la rimozione del contenuto in questione è insufficiente:' + actions_description_html: Decidete quali azioni intraprendere per risolvere la segnalazione. Se si intraprende un'azione punitiva contro l'account segnalato, gli sarà inviata una notifica via e-mail, tranne quando è selezionata la categoria <strong>Spam</strong>. add_to_report: Aggiungi altro al report are_you_sure: Sei sicuro? assign_to_self: Assegna a me @@ -574,7 +594,7 @@ it: none: Nessuno comment_description_html: 'Per fornire ulteriori informazioni, %{name} ha scritto:' created_at: Segnalato - delete_and_resolve: Cancella e risolvi + delete_and_resolve: Cancella post forwarded: Inoltrato forwarded_to: Inoltrato a %{domain} mark_as_resolved: Segna come risolto @@ -588,12 +608,14 @@ it: placeholder: Descrivi quali azioni sono state intraprese, o ogni altro aggiornamento rilevante... title: Note notes_description_html: Visualizza e lascia note ad altri moderatori e al tuo futuro sé + quick_actions_description_html: 'Fai un''azione rapida o scorri verso il basso per vedere il contenuto segnalato:' reopen: Riapri rapporto report: 'Rapporto #%{id}' reported_account: Account segnalato reported_by: Inviato da resolved: Risolto resolved_msg: Rapporto risolto! + skip_to_actions: Passa alle azioni status: Stato statuses: Contenuto segnalato statuses_description_html: Il contenuto offensivo sarà citato nella comunicazione con l'account segnalato @@ -714,6 +736,16 @@ it: no_status_selected: Nessun status è stato modificato perché nessuno era stato selezionato title: Gli status dell'account with_media: con media + strikes: + actions: + delete_statuses: "%{name} ha eliminato i post di %{target}" + disable: "%{name} ha congelato l'account di %{target}" + none: "%{name} ha inviato un avviso a %{target}" + sensitive: "%{name} ha contrassegnato l'account di %{target} come sensibile" + silence: "%{name} ha limitato l'account di %{target}" + suspend: "%{name} ha sospeso l'account di %{target}" + appeal_approved: Sottoposto ad appello + appeal_pending: Appello in attesa system_checks: database_schema_check: message_html: Ci sono migrazioni del database in attesa. Sei pregato di eseguirle per assicurarti che l'applicazione si comporti come previsto @@ -738,6 +770,7 @@ it: shared_by_over_week: one: Condiviso da una persona nell'ultima settimana other: Condiviso da %{count} persone nell'ultima settimana + zero: Condiviso da nessuno nell'ultima settimana title: Link in tendenza usage_comparison: Condiviso %{today} volte oggi, rispetto a %{yesterday} ieri pending_review: Revisione in sospeso @@ -767,6 +800,7 @@ it: used_by_over_week: one: Usato da una persona nell'ultima settimana other: Usato da %{count} persone nell'ultima settimana + zero: Usato da nessuno nell'ultima settimana title: Tendenze warning_presets: add_new: Aggiungi nuovo @@ -775,6 +809,17 @@ it: empty: Non hai ancora definito alcun avviso preimpostato. title: Gestisci avvisi predefiniti admin_mailer: + new_appeal: + actions: + delete_statuses: per cancellare i loro post + disable: per congelare il loro account + none: avviso + sensitive: per contrassegnare il loro account come sensibile + silence: per limitare il loro account + suspend: per sospendere il loro account + body: "%{target} sta facendo appello contro una decisione di moderazione di %{action_taken_by} da %{date}, che era %{type}. Ha scritto:" + next_steps: Puoi approvare l'appello per annullare la decisione di moderazione, oppure ignorarlo. + subject: "%{username} sta facendo appello contro una decisione di moderazione su %{instance}" new_pending_account: body: I dettagli del nuovo account sono qui sotto. Puoi approvare o rifiutare questa richiesta. subject: Nuovo account pronto per la revisione su %{instance} (%{username}) @@ -867,7 +912,6 @@ it: status: account_status: Stato dell'account confirming: In attesa che la conferma e-mail sia completata. - functional: Il tuo account è pienamente operativo. pending: La tua richiesta è in attesa di esame da parte del nostro staff. Potrebbe richiedere un po' di tempo. Riceverai una e-mail se la richiesta è approvata. redirecting_to: Il tuo account è inattivo perché attualmente reindirizza a %{acct}. too_fast: Modulo inviato troppo velocemente, riprova. @@ -933,6 +977,32 @@ it: directory: Directory dei profili explanation: Scopri utenti in base ai loro interessi explore_mastodon: Esplora %{title} + disputes: + strikes: + action_taken: Azione intrapresa + appeal: Appello + appeal_approved: Questa sanzione è stata annullata in un appello e non è più valida + appeal_rejected: L'appello è stato respinto + appeal_submitted_at: Appello presentato + appealed_msg: Il tuo appello è stato presentato. Se sarà approvato, sarai informato. + appeals: + submit: Presenta un appello + associated_report: Segnalazione associata + created_at: Data + recipient: Indirizzata a + status: 'Post #%{id}' + status_removed: Post già rimosso dal sistema + title: "%{action} da %{date}" + title_actions: + delete_statuses: Eliminazione del post + disable: Congelamento dell'account + none: Avviso + sensitive: Marcatura dell'account come sensibile + silence: Limitazione dell'account + suspend: Sospensione dell'account + your_appeal_approved: Il tuo appello è stato approvato + your_appeal_pending: Hai presentato un appello + your_appeal_rejected: Il tuo appello è stato respinto domain_validator: invalid_domain: non è un nome di dominio valido errors: @@ -1144,6 +1214,8 @@ it: title: Nuova condivisione status: subject: "%{name} ha appena pubblicato un post" + update: + subject: "%{name} ha modificato un post" notifications: email_events: Eventi per notifiche via email email_events_hint: 'Seleziona gli eventi per i quali vuoi ricevere le notifiche:' @@ -1225,6 +1297,9 @@ it: reply: proceed: Continua per rispondere prompt: 'Vuoi rispondere a questo post:' + reports: + errors: + invalid_rules: non fa riferimento a regole valide scheduled_statuses: over_daily_limit: Hai superato il limite di %{limit} post programmati per questo giorno over_total_limit: Hai superato il limite di %{limit} post programmati @@ -1494,6 +1569,15 @@ it: recovery_instructions_html: Se perdi il telefono, puoi usare uno dei codici di recupero qui sotto per riottenere l'accesso al tuo account. <strong>Conserva i codici di recupero in un posto sicuro</strong>. Ad esempio puoi stamparli e conservarli insieme ad altri documenti importanti. webauthn: Chiavi di sicurezza user_mailer: + appeal_approved: + action: Vai al tuo account + explanation: L'appello della sanzione contro il tuo account del %{strike_date} che hai inviato il %{appeal_date} è stato approvato. Il tuo account ha riottenuto la buona reputazione. + subject: Il tuo appello del %{date} è stato approvato + title: Appello approvato + appeal_rejected: + explanation: L'appello della sanzione contro il tuo account del %{strike_date} che hai inviato il %{appeal_date} è stato respinto. + subject: Il tuo appello del %{date} è stato respinto + title: Appello respinto backup_ready: explanation: Hai richiesto un backup completo del tuo account Mastodon. È pronto per essere scaricato! subject: Il tuo archivio è pronto per essere scaricato @@ -1505,6 +1589,8 @@ it: subject: Conferma il tentativo di accesso title: Tentativo di accesso warning: + appeal: Presenta un appello + appeal_description: Se credi che si tratti di un errore, puoi presentare un appello allo staff di %{instance}. categories: spam: Spam violation: Il contenuto viola le seguenti linee guida della comunità @@ -1516,7 +1602,6 @@ it: suspend: Non puoi più utilizzare il tuo account, e il tuo profilo e gli altri dati non sono più accessibili. Puoi ancora effettuare il login per richiedere un backup dei dati fino a quando i dati non saranno completamente cancellati nei prossimi 30 giorni, ma conserveremo alcuni dati di base per impedirti di eludere la sospensione. get_in_touch: Se credi che questo sia un errore, puoi rispondere a questa e-mail per metterti in contatto con lo staff di %{instance}. reason: 'Motivo:' - review_server_policies: Rivedi regole del server statuses: 'Post che sono stati trovati in violazione:' subject: delete_statuses: I tuoi post su %{acct} sono stati eliminati diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 105974389..1b79cd7f9 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -88,7 +88,6 @@ ja: account_moderation_notes: create: 書き込む created_msg: モデレーションメモを書き込みました! - delete: 削除 destroyed_msg: モデレーションメモを削除しました! accounts: add_email_domain_block: メールドメインブロックに追加 @@ -199,6 +198,7 @@ ja: silenced: サイレンス済み statuses: 投稿数 subscribe: 購読する + suspend: サスペンド suspended: 停止済み suspension_irreversible: このアカウントのデータは削除され元に戻せなくなります。後日アカウントの凍結を解除することはできますがデータは元に戻せません。 suspension_reversible_hint_html: アカウントは停止されており、データは %{date} に完全に削除されます。それまではアカウントを元に戻すことができます。今すぐ完全に削除したい場合は以下から行うことができます。 @@ -219,6 +219,7 @@ ja: whitelisted: 連合許可済み action_logs: action_types: + approve_appeal: 抗議を承認 approve_user: ユーザーの承認 assigned_to_self_report: 通報の担当者に設定 change_email_user: ユーザーのメールアドレスを変更 @@ -250,6 +251,7 @@ ja: enable_user: ユーザーを有効化 memorialize_account: 追悼アカウント化 promote_user: ユーザーを昇格 + reject_appeal: 抗議を却下 reject_user: ユーザーを拒否 remove_avatar_user: アイコンを削除 reopen_report: 未解決に戻す @@ -268,6 +270,7 @@ ja: update_domain_block: ドメインブロックを更新 update_status: 投稿を更新 actions: + approve_appeal_html: "%{name} さんが %{target} からの抗議を承認しました" approve_user_html: "%{target} から登録された %{name} さんを承認しました" assigned_to_self_report_html: "%{name} さんが通報 %{target} を自身の担当に割り当てました" change_email_user_html: "%{name} さんが %{target} さんのメールアドレスを変更しました" @@ -299,6 +302,7 @@ ja: enable_user_html: "%{name} さんが %{target} さんのログインを有効化しました" memorialize_account_html: "%{name} さんが %{target} さんを追悼アカウントページに登録しました" promote_user_html: "%{name} さんが %{target} さんを昇格しました" + reject_appeal_html: "%{name} さんが %{target} からの抗議を却下しました" reject_user_html: "%{target} から登録された %{name} さんを拒否しました" remove_avatar_user_html: "%{name} さんが %{target} さんのアイコンを削除しました" reopen_report_html: "%{name} さんが通報 %{target} を未解決に戻しました" @@ -373,17 +377,19 @@ ja: upload: アップロード dashboard: active_users: アクティブユーザー - interactions: 相互作用 + interactions: 交流 media_storage: メディアストレージ new_users: 新規ユーザー - opened_reports: レポートが開かれました + opened_reports: 新規通報 + pending_appeals_html: + other: 保留中の抗議 <strong>%{count}</strong> 件 pending_reports_html: - other: 保留中の報告 <strong>%{count}</strong> 件 + other: 保留中の通報 <strong>%{count}</strong> 件 pending_tags_html: other: 保留中のハッシュタグ <strong>%{count}</strong> 件 pending_users_html: other: 保留中のユーザー <strong>%{count}</strong> 件 - resolved_reports: 解決済みのレポート + resolved_reports: 解決済みの通報 software: ソフトウェア sources: サインアップソース space: ディスク使用量 @@ -391,6 +397,10 @@ ja: top_languages: トップのアクティブ言語 top_servers: トップアクティブサーバー website: ウェブサイト + disputes: + appeals: + empty: 抗議はありません。 + title: 抗議 domain_allows: add_new: 連合を許可 created_msg: 連合を許可しました @@ -428,8 +438,6 @@ ja: silence: サイレンス中 suspend: 停止中 show: - affected_accounts: - other: データベース中の%{count}個のアカウントに影響します retroactive: silence: このドメインの既存の影響するアカウントのサイレンスを戻す suspend: このドメインの既存の影響するアカウントの停止を戻す @@ -479,8 +487,6 @@ ja: delivery_error_hint: "%{count} 日間配送ができない場合は、自動的に配送不可としてマークされます。" destroyed_msg: "%{domain} からのデータは、すぐに削除されるように、キューに追加されました。" empty: ドメインが見つかりませんでした。 - known_accounts: - other: 既知のアカウント数 %{count} moderation: all: すべて limited: 制限あり @@ -545,20 +551,21 @@ ja: other: "%{count} 件のメモ" action_log: 監査ログ action_taken_by: 通報処理者 - add_to_report: レポートにさらに追加 + add_to_report: 通報にさらに追加 are_you_sure: 本当に実行しますか? assign_to_self: 担当になる assigned: 担当者 by_target_domain: ドメイン category: カテゴリー + category_description_html: 選択した理由は通報されたアカウントへの連絡時に引用されます comment: none: なし created_at: 通報日時 - delete_and_resolve: 解決済みにして削除 forwarded: 転送済み forwarded_to: "%{domain} に転送されました" mark_as_resolved: 解決済みとしてマーク mark_as_unresolved: 未解決に戻す + no_one_assigned: なし notes: create: 書き込む create_and_resolve: 書き込み、解決済みにする @@ -573,8 +580,10 @@ ja: reported_by: 報告者 resolved: 解決済み resolved_msg: 通報を解決済みにしました! + skip_to_actions: アクションに移動 status: ステータス statuses: 通報内容 + statuses_description_html: 問題の投稿は通報されたアカウントへの連絡時に引用されます target_origin: 報告されたアカウントの起源 title: 通報 unassign: 担当を外す @@ -682,9 +691,9 @@ ja: destroyed_msg: ファイルを削除しました! statuses: back_to_account: アカウントページに戻る - back_to_report: レポートページに戻る + back_to_report: 通報ページに戻る batch: - remove_from_report: レポートから削除 + remove_from_report: 通報から削除 report: 通報 deleted: 削除済み media: @@ -713,11 +722,9 @@ ja: allow_provider: 発行者の承認 disallow: リンクの拒否 disallow_provider: 発行者の拒否 - shared_by_over_week: - other: 先週 %{count} 人が共有しました title: トレンドリンク usage_comparison: 今日は %{today} 回、昨日は %{yesterday} 回共有されました - pending_review: 保留中のレビュー + pending_review: 保留中 preview_card_providers: allowed: この発行者からのリンクを許可 rejected: この発行者からのリンクを拒否 @@ -731,18 +738,16 @@ ja: tag_servers_dimension: 人気のサーバー tag_servers_measure: その他のサーバー tag_uses_measure: 合計利用数 - listable: おすすめの - not_listable: 推奨されない - not_trendable: トレンドに表示されない - not_usable: 使用不可 + listable: おすすめに表示する + not_listable: おすすめに表示しない + not_trendable: トレンドに表示しない + not_usable: 使用を禁止 peaked_on_and_decaying: "%{date} 以降、しばらく使われていません" - title: ハッシュタグのトレンド - trendable: トレンドに表示される + title: トレンドタグ + trendable: トレンドに表示する trending_rank: '人気: %{rank} 位' - usable: 使用不能 + usable: 使用を許可 usage_comparison: 今日は %{today} 回、昨日は %{yesterday} 回使用されました。 - used_by_over_week: - other: 先週は %{count} 人に使用されました title: トレンド warning_presets: add_new: 追加 @@ -840,7 +845,6 @@ ja: status: account_status: アカウントの状態 confirming: メールアドレスの確認が完了するのを待っています。 - functional: アカウントは完全に機能しています。 pending: あなたの申請は現在サーバー管理者による審査待ちです。これにはしばらくかかります。申請が承認されるとメールが届きます。 redirecting_to: アカウントは %{acct} に引っ越し設定されているため非アクティブになっています。 too_fast: フォームの送信が速すぎます。もう一度やり直してください。 @@ -906,6 +910,9 @@ ja: directory: ディレクトリ explanation: 関心を軸にユーザーを発見しよう explore_mastodon: "%{title}を探索" + disputes: + strikes: + appeal: 抗議 domain_validator: invalid_domain: は無効なドメイン名です errors: @@ -1113,6 +1120,8 @@ ja: title: 新たなブースト status: subject: "%{name} さんが投稿しました" + update: + subject: "%{name} さんが投稿を更新しました" notifications: email_events: メールによる通知 email_events_hint: '受信する通知を選択:' @@ -1311,8 +1320,8 @@ ja: enabled_hint: 設定した期間を過ぎた投稿は、以下の例外に該当しない限り、自動的に削除されます exceptions: 例外 explanation: 投稿の削除はサーバーに負荷がかかるため、サーバーが混み合っていないときに時間をかけて行われます。 - ignore_favs: お気に入りされた数を無視 - ignore_reblogs: ブーストされた数を無視 + ignore_favs: 設定しない + ignore_reblogs: 設定しない interaction_exceptions: インタラクションに基づく例外 interaction_exceptions_explanation: お気に入りやブーストの基準値を一度超えてしまった投稿は、基準値を下回った後であっても、削除される保証はありません。 keep_direct: ダイレクトメッセージを保持 @@ -1336,10 +1345,10 @@ ja: '63113904': 2年 '7889238': 3ヶ月 min_age_label: 投稿を保持する期間 - min_favs: これ以上お気に入りに登録された投稿を無視する - min_favs_hint: この数以上、お気に入りに登録された投稿を削除しません。空白にしておくと、お気に入りに登録された数に関わらず投稿を削除します。 - min_reblogs: これ以上ブーストされた投稿を無視する - min_reblogs_hint: この数以上、ブーストされた投稿を削除しません。空白にしておくと、ブーストされた数に関わらず投稿を削除します。 + min_favs: お気に入りの基準値 + min_favs_hint: この数以上、お気に入りされた投稿を削除せずに残します。空白にしておくと、お気に入りに登録された数に関わらず投稿を削除します。 + min_reblogs: ブーストの基準値 + min_reblogs_hint: この数以上、ブーストされた投稿を削除せずに残します。空白にしておくと、ブーストされた数に関わらず投稿を削除します。 stream_entries: pinned: 固定された投稿 reblogged: さんがブースト @@ -1474,7 +1483,6 @@ ja: sensitive: 今後、アップロードされたすべてのメディアファイルは閲覧注意してマークされ、クリックスルー警告の背後に隠されます。 silence: アカウントが制限されています。このサーバーでは既にフォローしている人だけがあなたの投稿を見ることができます。 様々な発見機能から除外されるかもしれません。他の人があなたを手動でフォローすることは可能です。 reason: '理由:' - review_server_policies: サーバーのポリシーを確認 subject: disable: あなたのアカウント %{acct} は凍結されました none: "%{acct} に対する警告" diff --git a/config/locales/ka.yml b/config/locales/ka.yml index 782d57e2a..d942048b6 100644 --- a/config/locales/ka.yml +++ b/config/locales/ka.yml @@ -42,7 +42,6 @@ ka: account_moderation_notes: create: დატოვეთ ჩანაწერი created_msg: მოდერაციის ჩანაწერი წარმატებით შეიქმნა! - delete: გაუქმება destroyed_msg: მოდერაციის ჩანაწერი წარმატებით გაუქმდა! accounts: are_you_sure: დარწმუნებული ხარ? @@ -173,9 +172,6 @@ ka: reject_media: მედია ფაილების უარყოფა reject_media_hint: შლის ლოკალურად შენახულ მედია ფაილებს და უარყოფს სამომავლო გადმოტვირთებს. შეუსაბამო შეჩერებებისთვის show: - affected_accounts: - one: გავლენა იქონია მონაცემთა ბაზაში ერთ ანგარიშზე - other: გავლენა იქონიო მონაცემთა ბაზაში %{count} ანგარიშზე retroactive: silence: ამ დომენში ყველა არსებულ ანგარიშზე გაჩუმების მოშორება suspend: ამ დომენში ყველა არსებულ ანგარიშზე შეჩერების მოშორება diff --git a/config/locales/kab.yml b/config/locales/kab.yml index 6b18ddbc3..57d1c9d33 100644 --- a/config/locales/kab.yml +++ b/config/locales/kab.yml @@ -76,7 +76,6 @@ kab: action: Eg tigawt account_moderation_notes: create: Eǧǧ tazmilt - delete: Kkes accounts: add_email_domain_block: Sewḥel taɣult n yimayl approve: Qbel @@ -369,9 +368,6 @@ kab: delivery_available: Yella usiweḍ delivery_error_days: Ussan n tuccḍiwin n usiweḍ empty: Ulac taɣultin yettwafen. - known_accounts: - one: "%{count} n umiḍan i yettwasnen" - other: "%{count} n yimiḍanen i yettwassnen" moderation: all: Akk limited: Yettwasgugem @@ -427,6 +423,7 @@ kab: other: "%{count} n timawin" action_taken_by: Tigawt yettwaṭṭfen sɣur are_you_sure: Tetḥaq-eḍ? + category: Taggayt comment: none: Ula yiwen mark_as_resolved: Creḍ-it yefra @@ -444,6 +441,7 @@ kab: title: Ineqqisen unresolved: Ur yefra ara updated_at: Yettwaleqqem + view_profile: Wali amaɣnu rules: add_new: Rnu alugen delete: Kkes @@ -481,6 +479,8 @@ kab: title: Tisuffiγin n umiḍan with_media: S taγwalt title: Tadbelt + trends: + allow: Sireg warning_presets: add_new: Rnu amaynut delete: Kkes @@ -491,6 +491,7 @@ kab: appearance: discovery: Asnirem localization: + guide_link: https://crowdin.com/project/mastodon guide_link_text: Yal yiwen·t y·tezmer a ttekki. sensitive_content: Agbur amḥulfu application_mailer: @@ -511,10 +512,14 @@ kab: prefix_invited_by_user: "@%{name} inced-ik·ikem ad ternuḍ ɣer uqeddac-a n Mastodon!" prefix_sign_up: Zeddi di Maṣṭudun assa! forgot_password: Tettud awal-ik uffir? + log_in_with: Qqen s login: Qqen logout: Ffeγ migrate_account: Gujj γer umiḍan nniḍen or_log_in_with: Neγ eqqen s + providers: + cas: CAS + saml: SAML register: Jerred registration_closed: "%{instance} ur yeqbil ara imttekkiyen imaynuten" reset_password: Wennez awal uffir @@ -524,7 +529,6 @@ kab: title: Sbadu status: account_status: Addad n umiḍan - functional: Amiḍan-inek·m yettwaheyya. trouble_logging_in: Γur-k uguren n tuqqna? use_security_key: Seqdec tasarut n teɣlist authorize_follow: @@ -582,6 +586,8 @@ kab: archive_takeout: date: Azemz size: Teγzi + bookmarks: Ticraḍ + csv: CSV lists: Tibdarin mutes: Wid tesgugmeḍ featured_tags: @@ -610,6 +616,7 @@ kab: delete: Kkes order_by: Sizwer s save_changes: Sekles ibeddilen + today: ass-a imports: modes: merge: Smezdi @@ -780,6 +787,7 @@ kab: video: one: "%{count} n tbidyutt" other: "%{count} n tbidyutin" + edited_at: Tettwaẓreg deg %{date} open_in_web: Ldi deg Web poll: total_people: @@ -790,6 +798,7 @@ kab: other: "%{count} n yedɣaren" vote: Dɣeṛ show_more: Ssken-d ugar + show_newer: Ssken-d timaynutin show_thread: Ssken-d lxiḍ sign_in_to_participate: Qqen i waken ad tzeddiḍ deg udiwenni title: '%{name} : "%{quote}"' @@ -833,6 +842,8 @@ kab: webauthn: Tisura n teɣlist user_mailer: warning: + categories: + spam: Aspam title: disable: Amiḍan i igersen none: Γur-wat diff --git a/config/locales/kk.yml b/config/locales/kk.yml index 0ea1d6a39..319531cc1 100644 --- a/config/locales/kk.yml +++ b/config/locales/kk.yml @@ -87,7 +87,6 @@ kk: account_moderation_notes: create: Жазба қалдырыңыз created_msg: Модерация жазбасы қалдырылды! - delete: Өшіру destroyed_msg: Модерация жазбасы өшірілді! accounts: approve: Құптау @@ -267,9 +266,6 @@ kk: silence: үнсіз suspend: тоқтатылған show: - affected_accounts: - one: Дерекқорда бір тіркелгі қозғалды - other: дерекқордағы %{count} аккаунт қозғалған retroactive: silence: Осы домендегі бар тіркелгілерді жою suspend: Осы домендегі бар барлық тіркелгілерді тоқтатыңыз @@ -291,9 +287,6 @@ kk: instances: by_domain: Domаin delivery_available: Жеткізу қол жетімді - known_accounts: - one: "%{count} таныс аккаунт" - other: "%{count} таныс аккаунт" moderation: all: Барлығы limited: Лимит @@ -539,7 +532,6 @@ kk: status: account_status: Аккаунт статусы confirming: Электрондық поштаны растау аяқталуын күтуде. - functional: Сіздің есептік жазбаңыз толығымен жұмыс істейді. pending: Сіздің өтінішіңіз біздің қызметкерлеріміздің қарауында. Бұл біраз уақыт алуы мүмкін. Өтінішіңіз мақұлданса, сізге электрондық пошта хабарламасы келеді. redirecting_to: Сіздің есептік жазбаңыз белсенді емес, себебі ол %{acct} жүйесіне қайта бағытталуда. trouble_logging_in: Кіру қиын ба? @@ -1038,7 +1030,6 @@ kk: subject: Мұрағатыңыз түсіріп алуға дайын title: Мұрағатты алу warning: - review_server_policies: Сервер саясатын қарап шығыңыз subject: disable: Аккаунтыңыз %{acct} уақытша тоқтатылды none: "%{acct} ескертуі" diff --git a/config/locales/kmr.yml b/config/locales/kmr.yml index 22eaf7b95..8e40d8e2f 100644 --- a/config/locales/kmr.yml +++ b/config/locales/kmr.yml @@ -94,7 +94,6 @@ kmr: account_moderation_notes: create: Nîşeyekê bihêle created_msg: Nîşeyê moderator bi awayekî serkeftî hate afirandin! - delete: Jê bibe destroyed_msg: Nîşeyê moderator bi awayekî serkeftî hate tinne kirin! accounts: add_email_domain_block: Navparê e-nameyê asteng bike @@ -163,6 +162,11 @@ kmr: not_subscribed: Beşdar nebû pending: Li benda nirxandinê ye perform_full_suspension: Sekinî + previous_strikes: Binpêkirinên berê + previous_strikes_description_html: + one: Ev ajimêr <strong>yek</strong> binpêkirin kiriye. + other: Ev ajimêr <strong>%{count}</strong> binpêkirin kiriye. + zero: Ev ajimêr <strong>di rewşeke baş de ye</strong>. promote: Derbasê asteke bilind be protocol: Protokol public: Gelemperî @@ -204,8 +208,9 @@ kmr: silence: Sînor silenced: Bêdeng kirî statuses: Şandî - strikes: Lêdanên berê + strikes: Binpêkirinên berê subscribe: Bibe kiryar + suspend: Hatiye rawestandin suspended: Hatiye rawestandin suspension_irreversible: Daneyên vê ajimêrê bêveger hatine jêbirin. Tu dikarî ajimêra xwe ji rawestandinê vegerinî da ku ew bi kar bînî lê ew ê tu daneya ku berê hebû venegere. suspension_reversible_hint_html: Ajimêr hat qerisandin, û daneyên di %{date} de hemû were rakirin. Hetta vê demê, ajimêr bê bandorên nebaş dikare dîsa vegere. Heke tu dixwazî hemû daneyan ajimêrê niha rakî, tu dikarî li jêrê bikî. @@ -226,6 +231,7 @@ kmr: whitelisted: Ji bona yekbûyînê maf tê dayîn action_logs: action_types: + approve_appeal: Îtîrazê bipejirîne approve_user: Bikarhêner bipejirîne assigned_to_self_report: Ragihandinê diyar bike change_email_user: E-nameya bikarhêner biguherîne @@ -257,6 +263,7 @@ kmr: enable_user: Bikarhêner çalak bike memorialize_account: Ajimêrê bike bîranînek promote_user: Bikarhêner pêş bixe + reject_appeal: Îtîrazê nepejirîne reject_user: Bikarhêner nepejirîne remove_avatar_user: Avatarê rake reopen_report: Ragihandina ji nû ve veke @@ -275,6 +282,7 @@ kmr: update_domain_block: Navperên astengkirî rojane bike update_status: Şandiyê rojane bike actions: + approve_appeal_html: "%{name} îtiraza biryara çavdêriyê ji %{target} pejirand" approve_user_html: "%{name} tomarkirina ji %{target} pejirand" assigned_to_self_report_html: "%{name} ji xwe re ragihandinek %{target} hilda" change_email_user_html: "%{name} navnîşana e-nameya bikarhêner %{target} guherand" @@ -306,6 +314,7 @@ kmr: enable_user_html: "%{name} ji bo bikarhêner %{target} têketin çalak kir" memorialize_account_html: "%{name} ajimêra %{target} veguherand rûpeleke bîranînê" promote_user_html: "%{name} bikarhêner %{target} bilind kir" + reject_appeal_html: "%{name} îtiraza biryara çavdêriyê ji %{target} nepejirand" reject_user_html: "%{name} tomarkirina ji %{target} nepejirand" remove_avatar_user_html: "%{name} avatara bikarhêner %{target} rakir" reopen_report_html: "%{name} ragihandina %{target} ji nû ve vekir" @@ -384,15 +393,18 @@ kmr: media_storage: Bîrdanaka medyayê new_users: bikarhênerên nû opened_reports: ragihandin hatin vekirin + pending_appeals_html: + one: "<strong>%{count}</strong> îtîraz li benda nirxandinê ye" + other: "<strong>%{count}</strong> îtîraz li benda nirxandinê ne" pending_reports_html: - one: "<strong>1</strong> ragihandin benda nirxandinê" - other: "<strong>%{count}</strong> ragihandin benda nirxandinê" + one: "<strong>%{count}</strong> ragihandin benda nirxandinê ye" + other: "<strong>%{count}</strong> ragihandin benda nirxandinê ne" pending_tags_html: - one: "<strong>1</strong> hashtag benda nirxandinê" - other: "<strong>%{count}</strong> hashtag benda nirxandinê" + one: "<strong>%{count}</strong> hashtag benda nirxandinê ye" + other: "<strong>%{count}</strong> hashtag benda nirxandinê ne" pending_users_html: - one: "<strong>1</strong> bikarhêner benda nirxandinê" - other: "<strong>%{count}</strong> bikarhêner benda nirxandinê" + one: "<strong>%{count}</strong> bikarhêner benda nirxandinê ye" + other: "<strong>%{count}</strong> bikarhêner benda nirxandinê ne" resolved_reports: ragihandinên çareserkirî software: Nermalav sources: Çavkaniyên tomarkirî @@ -401,6 +413,10 @@ kmr: top_languages: Zimanên herî çalak top_servers: Rajekarên herî çalak website: Malpera tevnê + disputes: + appeals: + empty: Îtîraz nehatin dîtin. + title: Îtîraz domain_allows: add_new: Maf bide navpera federasyonê created_msg: Ji bo federasyonê maf dayîna navperê bi serkeftî hate dayîn @@ -443,6 +459,7 @@ kmr: affected_accounts: one: Yek ajimêr di danegehê de bandor kir other: "%{count} ajimêr di danegehê de bandor kir" + zero: Yek ajimêr di danegehê de bi bandor e retroactive: silence: Vê navperê de sînorê li ser hemî ajimêran rabike suspend: Vê navperê de rawestandinê li ser hemî ajimêran rabike @@ -496,6 +513,7 @@ kmr: known_accounts: one: "%{count} ajimêra naskirî" other: "%{count} ajimêrên naskirî" + zero: Ajimêra naskirî tune ye moderation: all: Hemû limited: Sînorkirî @@ -562,10 +580,12 @@ kmr: action_log: Tomarê çavdêriyê action_taken_by: Çalakî hate kirin ji aliyê actions: + delete_description_html: Şandiyên hatine ragihandin wê werin jêbirin û were tomarkirin da ku ji te re bibe alîkar ku tu ji hêla heman ajimêrê ve binpêkirinên pêşerojê bêtir bikî. other_description_html: Bêtir vebijêrkên ji bo kontrolkirina tevgera ajimêrê bibîne û pêwendiyê li ser ajimêra ragihandî kesane bike. + resolve_description_html: Li hemberî ajimêra hatiye ragihandin wê tiştek pêk neyê, binpêkirin nayên tomarkirin û ragihandin wê were girtin. silence_description_html: Wê profîl tenê ji kesên ku berê te dişopînin an ji bi destan lê serî lê didin re xuya bibe, gihandina wê bi tundî sînordar dike. Her gav dikare were vegerandin. suspend_description_html: Heya ku di dawiyê de neyê jêbirin, wê profîl û hemû naverokên wê ne gihiştbar bin. Têkiliya bi ajimêrê re wê ne guncav be. Di nav 30 rojan de veger ji jêbirinê pêkan e. - actions_description_html: 'Ku rakirina naveroka sûcdar a li jor ne bes e:' + actions_description_html: Ji bo çareserkirina vê ragihandinê biryar bide ka tê kîjan gav bavêjî. Ku tu li dijî ajimêrê ragihandî çalakiyeke cezakirinê bikî, ji bilî dema ku kategoriya <strong>Spam</strong> were hilbijartin, wê agahdariyek e-nameyê ji wan re were şandin. add_to_report: Bo ragihandinê bêtir tevlî bike are_you_sure: Gelo tu bawerî? assign_to_self: Bo min diyar bike @@ -577,7 +597,7 @@ kmr: none: Ne yek comment_description_html: 'Bo bêtir zanyarî bidî, %{name} nivîsand:' created_at: Hate ragihandin - delete_and_resolve: Jê bibe û ji nû ve çareser bike + delete_and_resolve: Şandiyan jê bibe forwarded: Beralîkirî forwarded_to: Beralîkirî bo %{domain} mark_as_resolved: Wekî çareserkirî nîşan bide @@ -591,12 +611,14 @@ kmr: placeholder: Bide nasîn ka çi çalakî hatine kirin, an jî heman rojanekirinên din ên têkildar... title: Nîşe notes_description_html: Nîşeyan ji çavdêrên din û ji xwe re di pêşerojê de bibîne û bihêle + quick_actions_description_html: 'Ji bo dîtina naveroka ragihandî çalakiyeke bilez bavêje an jî li jêr bigere:' reopen: Ragihandina ji nû ve veke report: "@%{id} Ragihîne" reported_account: Ajimêra ragihandî reported_by: Ragihandî ji aliyê resolved: Çareserkirî resolved_msg: Ragihandin bi awayekî serkeftî hate çareserkirin! + skip_to_actions: Derbasî çalakiyan bibe status: Rewş statuses: Naveroka ragihandî statuses_description_html: Naveroka sûcdar wê di danûstendina bi xwediyê ajimêra ragihandî re wê werê diyarkirin @@ -717,6 +739,16 @@ kmr: no_status_selected: Tu şandî nehat hilbijartin ji ber vê tu şandî jî nehat guhertin title: Şandiyên ajimêr with_media: Bi medya yê re + strikes: + actions: + delete_statuses: "%{name} şandiyên %{target} jêbirin" + disable: "%{name} ajimêr %{target} cemidand" + none: "%{name} ji bo %{target} hişyariyek şand" + sensitive: "%{name} ajimêrê %{target} wekî hestiyarî nîşan kir" + silence: "%{name} ajimêra %{target} bi sînor kir" + suspend: "%{name} ajimêra %{target} hilda rawestandinê" + appeal_approved: Îtîraz + appeal_pending: Îtîraz li benda nirxandinê ye system_checks: database_schema_check: message_html: Koçberiyên databasê yên li bendê hene. Ji kerema xwe wan bişopîne da ku bicîh bikî ku sepan wekî ku tê hêvî kirin tevbigere @@ -740,7 +772,8 @@ kmr: disallow_provider: Mafê nede weşanger shared_by_over_week: one: Di nava hefteya dawî de ji aliyê keskekî ve hate parvekirin - other: Di nava hefteya dawî de ji aliyê %{count} ve hate parvekirin + other: Di nava hefteya dawî de ji aliyê %{count} kes ve hate parvekirin + zero: Di nava hefteya dawî de ji aliyê kesekî ve nehate parvekirin title: Girêdanên di rojevê de usage_comparison: Îro %{today} car hate parvekirin, li gorî %{yesterday} duh pending_review: Li benda nirxandinê ye @@ -770,6 +803,7 @@ kmr: used_by_over_week: one: Di nava hefteya dawî de ji aliyê kesekî ve hatiye bikaranîn other: Di nava hefteya dawî de ji %{count} kes ve hatiye bikaranîn + zero: Di nava hefteya dawî de ji aliyê kesekî ve nehate bikaranîn title: Rojev warning_presets: add_new: Yeka nû tevlî bike @@ -778,6 +812,17 @@ kmr: empty: Te hin tu hişyariyên pêşsazkirî destnîşan nekirine. title: Hişyariyên pêşsazkirî bi rêve bibe admin_mailer: + new_appeal: + actions: + delete_statuses: ku şandiyên wan jê bibî + disable: ku ajimêrê wan bicemidînî + none: hişyariyek + sensitive: ku ajimêrê wan wekî hestyar nîşan bikî + silence: ku ajimêrê wan sînordar bikî + suspend: ku ajimêrê wan bidî rawestandin + body: "%{target} îtiraza biryareke çavdêriyê dike bi riya %{action_taken_by} ji %{date}, ku %{type} bû. Wan nivîsand:" + next_steps: Tu dikarî îtirazê bipejirînî ku biryara çavdêriyê têk bibî, an jî paşguh bikî. + subject: "%{username} li ser %{instance} îtiraz li biryareke çavdêriyê dike" new_pending_account: body: Zanyariyênn ajimêra nû li jêr in. Tu dikarî vê serîlêdanê bipejirîne an pûç bike. subject: "(%{username}) ajimêrê nû ji bo vekolandina li ser %{instance}" @@ -868,7 +913,6 @@ kmr: status: account_status: Rewşa ajimêr confirming: Li benda pejirandina e-nameyê ne da ku biqede. - functional: Ajimêra te êdî amade ye. pending: Daxwaza te li benda vekolînê ji hêla xebatkarên me ye. Ev dibe ku hinek dem bigire. Heke daxwaza te were pejirandin tu yê e-nameyekê bistîne. redirecting_to: Ajimêra te neçalak e ji ber ku niha ber bi %{acct} ve tê beralîkirin. too_fast: Form pir zû hat şandin, dîsa biceribîne. @@ -934,6 +978,32 @@ kmr: directory: Rêgeha profîlê explanation: Bikarhêneran li gorî berjewendiyên wan bibîne explore_mastodon: Vekole %{title} + disputes: + strikes: + action_taken: Çalakî hatin kirin + appeal: Îtîraz + appeal_approved: Ev binpêkirin bi serkeftî hate îtîraz kirin û êdî ne derbasdar e + appeal_rejected: Îtîraz nehate pejirandin + appeal_submitted_at: Îtîraz hate şandin + appealed_msg: Îtîraza te hatiye şandin. Ku were pejirandin, tu yê werî agahdarkirin. + appeals: + submit: Îtîrazê bişîne + associated_report: Ragihandina têkildar + created_at: Dîrok + recipient: Ji kê re + status: 'Şandî #%{id}' + status_removed: Şandî jixwe ji pergalê hatî rakirin + title: "%{action} ji %{date}" + title_actions: + delete_statuses: Jêbirina şandiyê + disable: Cemdandina ajimêrê + none: Hişyarî + sensitive: Nîşankirina ajimêr wekî hestyar + silence: Sînorkirina ajimêrê + suspend: Rawestandina ajimêrê + your_appeal_approved: Îtîraza te hate pejirandin + your_appeal_pending: Te îtîrazek şand + your_appeal_rejected: Îtîraza te nehate pejirandin domain_validator: invalid_domain: ne naveke navper a derbasdar e errors: @@ -1145,6 +1215,8 @@ kmr: title: Bilindkirinên nû status: subject: "%{name} niha şand" + update: + subject: "%{name} şandiyek guhert" notifications: email_events: Bûyer bo agahdariyên e-nameyê email_events_hint: 'Bûyera ku tu dixwazî agahdariyan jê wergerî hilbijêre:' @@ -1495,6 +1567,15 @@ kmr: recovery_instructions_html: Heke gava te têlefona xwe winda kir, tu dikarî yek ji kodên rizgarkirinê yên jêrîn bi kar bîne da ku tu bigihîjî ajimêra xwe. <strong>Kodên rizgarkirinê li cihekî ewle biparêze </strong>. Mînakî, tu dikarî wan çap bikî û wan bi peldandkên din ên girîng re tomar bike. webauthn: Kilîdên ewlehiyê user_mailer: + appeal_approved: + action: Biçe ajimêra xwe + explanation: Îtîraza binpêkirinê ya li dijî ajimêrê te ya %{strike_date} ku te di %{appeal_date} de şandibû hate pejirandin. Ajimêrê te careke din di rewşek baş de ye. + subject: Îtîraza te ji %{date} hate pejirandin + title: Îtîraz hate pejirandin + appeal_rejected: + explanation: Îtîraza binpêkirinê ya li dijî ajimêrê te ya di %{strike_date} de ku te di %{appeal_date} de şandibû nehat pejirandin. + subject: Îtîraza te ji %{date} nehate pejirandin + title: Îtîraz nehate pejirandin backup_ready: explanation: Te yedekîya tijê ya ajimêrê xwe Mastodonê xwest. Niha ji daxistinê re amade ye! subject: Arşîva te amede ye bo daxistinê @@ -1506,6 +1587,8 @@ kmr: subject: Ji kerema xwe re hewldanên têketinê piştrast bike title: Hewldanên têketinê warning: + appeal: Îtîrazekê bişîne + appeal_description: Heke tu bawer dikî ku ev şaşetiyeke, tu dikarî îtîrazekê ji karmendên %{instance} re bişînî. categories: spam: Nexwestî (Spam) violation: Naverok rêbazên civakê yên jêrîn binpê dike @@ -1517,7 +1600,6 @@ kmr: suspend: Tu êdî nikarî têkevî ajimêra xwe, û profîla te û daneyên din êdî nayên gihîştin. Dîsa jî tu dikarî têkevî da ku hilanîna daneyên xwe daxwaz bikî heya ku dane bi tevahî werin rakirin di hundirê 30 roj de, lê em ê hin daneyan biparêzin da ku tu ji rawestandinê rizgar bikî. get_in_touch: Ku tu bawer dikî ev çewtiyeke, tu dikarî bersiva vê e-nameyê bidî ku bi xebatkarên %{instance} re têkevî pêwendiyê. reason: 'Sedem:' - review_server_policies: Rêbazên rajeker lêkolîn bike statuses: 'Şandiyên ku di binpêkirinê de hatine dîtin:' subject: delete_statuses: Şandiyên te yên li ser %{acct} hatin rakirin diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 4da68f0b4..9efdeb751 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -90,7 +90,6 @@ ko: account_moderation_notes: create: 중재 기록 작성하기 created_msg: 중재 기록이 성공적으로 작성되었습니다! - delete: 삭제 destroyed_msg: 중재 기록이 성공적으로 삭제되었습니다! accounts: add_email_domain_block: 이 이메일 도메인을 차단하기 @@ -159,6 +158,11 @@ ko: not_subscribed: 구독하지 않음 pending: 심사 대기 perform_full_suspension: 정지시키기 + previous_strikes: 이전의 처벌들 + previous_strikes_description_html: + one: 이 계정은 <strong>한<strong> 번의 처벌이 있었습니다. + other: 이 계정은 <strong>%{count}</strong> 번의 처벌이 있었습니다. + zero: 이 계정은 처벌 기록이 <strong>없습니다</strong>. promote: 승급 protocol: 프로토콜 public: 공개 @@ -202,6 +206,7 @@ ko: statuses: 게시물 strikes: 이전의 처벌들 subscribe: 구독하기 + suspend: 정지 suspended: 정지 됨 suspension_irreversible: 이 계정의 데이터는 복구할 수 없도록 삭제되었습니다. 계정을 정지 해제함으로서 계정을 다시 사용 가능하게 할 수 있지만 이전에 삭제한 어떤 데이터도 복구되지 않습니다. suspension_reversible_hint_html: 계정이 정지되었습니다, 그리고 %{date}에 데이터가 완전히 삭제될 것입니다. 그 때까지는 어떤 안 좋은 효과 없이 계정이 복구 될 수 있습니다. 만약 지금 당장 계정의 모든 데이터를 삭제하고 싶다면, 아래에서 행할 수 있습니다. @@ -222,6 +227,7 @@ ko: whitelisted: 허용 목록 action_logs: action_types: + approve_appeal: 이의제기 승인 approve_user: 사용자 승인 assigned_to_self_report: 신고 맡기 change_email_user: 사용자의 이메일 변경 @@ -253,6 +259,7 @@ ko: enable_user: 사용자 활성화 memorialize_account: 추모계정으로 전환 promote_user: 사용자 승급 + reject_appeal: 이의제기 거절 reject_user: 사용자 거부 remove_avatar_user: 아바타 지우기 reopen_report: 신고 다시 열기 @@ -271,6 +278,7 @@ ko: update_domain_block: 도메인 차단 갱신 update_status: 게시물 게시 actions: + approve_appeal_html: "%{name} 님이 %{target}의 중재 결정에 대한 이의제기를 승인했습니다" approve_user_html: "%{name} 님이 %{target}의 가입을 승인했습니다" assigned_to_self_report_html: "%{name} 님이 신고 %{target}을 자신에게 할당했습니다" change_email_user_html: "%{name} 님이 사용자 %{target}의 이메일 주소를 변경했습니다" @@ -302,6 +310,7 @@ ko: enable_user_html: "%{name} 님이 사용자 %{target}의 로그인을 활성화 했습니다" memorialize_account_html: "%{name} 님이 %{target}의 계정을 추모비 페이지로 전환했습니다" promote_user_html: "%{name} 님이 사용자 %{target}를 승급시켰습니다" + reject_appeal_html: "%{name} 님이 %{target}의 중재 결정에 대한 이의제기를 거절했습니다" reject_user_html: "%{name} 님이 %{target}의 가입을 거부했습니다" remove_avatar_user_html: "%{name} 님이 %{target}의 아바타를 지웠습니다" reopen_report_html: "%{name} 님이 신고 %{target}을 다시 열었습니다" @@ -380,12 +389,14 @@ ko: media_storage: 미디어 저장소 new_users: 새로운 사용자 opened_reports: 신고 열림 + pending_appeals_html: + other: "<strong>%{count}</strong> 개의 대기 중인 이의제기" pending_reports_html: - other: "<strong>%{count}</strong> 개의 신고 대기중" + other: "<strong>%{count}</strong> 건의 대기 중인 신고" pending_tags_html: - other: "<strong>%{count}</strong> 개의 해시태그 대기중" + other: "<strong>%{count}</strong> 개의 대기 중인 해시태그" pending_users_html: - other: "<strong>%{count}</strong> 명의 사용자 대기중" + other: "<strong>%{count}</strong> 명의 대기 중인 사용자" resolved_reports: 신고 해결됨 software: 소프트웨어 sources: 가입 출처 @@ -394,6 +405,10 @@ ko: top_languages: 상위 활성 언어 top_servers: 상위 활성 서버 website: 웹사이트 + disputes: + appeals: + empty: 이의제기 없음. + title: 이의제기 domain_allows: add_new: 도메인 허용 created_msg: 도메인이 성공적으로 허용 목록에 추가되었습니다 @@ -434,7 +449,9 @@ ko: suspend: 정지 show: affected_accounts: - other: 데이터베이스 중 %{count}개의 계정에 영향을 끼칩니다 + one: 데이터베이스 내부의 1개의 계정에 영향을 끼칩니다 + other: 데이터베이스 내부의 %{count} 개의 계정에 영향을 끼칩니다 + zero: 데이터베이스 내부의 영향을 끼치는 계정이 없습니다 retroactive: silence: 이 도메인에 존재하는 모든 계정의 침묵를 해제 suspend: 이 도메인에 존재하는 모든 계정의 계정 정지를 해제 @@ -485,7 +502,9 @@ ko: destroyed_msg: "%{domain}의 데이터는 곧바로 지워지도록 대기열에 들어갔습니다." empty: 도메인이 하나도 없습니다. known_accounts: - other: 알려진 계정 %{count}개 + one: "%{count} 개의 알려진 계정" + other: "%{count} 개의 알려진 계정" + zero: 알려진 계정이 없습니다 moderation: all: 모두 limited: 제한됨 @@ -551,10 +570,11 @@ ko: action_log: 감사 기록 action_taken_by: 신고 처리자 actions: + delete_description_html: 신고된 게시물은 삭제될 것이며 이 처벌기록은 같은 계정의 향후 규정 위반에 대해 참고사항으로 쓰일 수 있도록 저장됩니다. other_description_html: 계정 동작을 제어하고 신고된 계정과의 의사소통을 사용자 지정하기 위한 추가 옵션을 봅니다. + resolve_description_html: 신고된 계정에 대해 아무런 동작도 취하지 않으며, 처벌기록이 남지 않으며, 신고는 처리됨으로 변경됩니다. silence_description_html: 이미 팔로우 하고 있는 사람이나 수동으로 찾아보는 사람에게만 프로필이 보여지고, 도달 범위를 엄격하게 제한합니다. 언제든지 되돌릴 수 있습니다. suspend_description_html: 프로필과 모든 컨텐츠가 최종적으로 삭제될 때까지 접근 불가상태가 됩니다. 이 계정과의 상호작용은 불가능해집니다. 30일 이내에 되돌릴 수 있습니다. - actions_description_html: '만약 문제가 되는 위의 컨텐츠를 삭제하는 것을 불충분할 때에는:' add_to_report: 신고에 더 추가하기 are_you_sure: 정말로 실행하시겠습니까? assign_to_self: 나에게 할당하기 @@ -566,7 +586,7 @@ ko: none: 없음 comment_description_html: '더 많은 정보를 위해, %{name} 님이 작성했습니다:' created_at: 리포트 시각 - delete_and_resolve: 삭제하고 처리됨으로 변경 + delete_and_resolve: 게시물 삭제 forwarded: 전달됨 forwarded_to: "%{domain}에게 전달됨" mark_as_resolved: 해결 완료 처리 @@ -706,6 +726,16 @@ ko: no_status_selected: 아무 게시물도 선택 되지 않아 아무 것도 바뀌지 않았습니다 title: 계정 게시물 with_media: 미디어 있음 + strikes: + actions: + delete_statuses: "%{name} 님이 %{target}의 게시물을 지웠습니다" + disable: "%{name} 님이 %{target}의 계정을 동결시켰습니다" + none: "%{name} 님이 %{target}에게 경고를 보냈습니다" + sensitive: "%{name} 님이 %{target}의 계정을 민감함으로 표시했습니다" + silence: "%{name} 님이 %{target}의 계정을 제한시켰습니다" + suspend: "%{name} 님이 %{target}의 계정을 정지시켰습니다" + appeal_approved: 이의제기됨 + appeal_pending: 이의제기 대기중 system_checks: database_schema_check: message_html: 데이터베이스 마이그레이션이 대기중입니다. 응용프로그램이 예상한대로 동작할 수 있도록 마이그레이션을 실행해 주세요 @@ -728,7 +758,9 @@ ko: disallow: 링크 거부하기 disallow_provider: 출처 거부하기 shared_by_over_week: - other: 한 주 동안 %{count}명의 사람이 공유했습니다 + one: 지난 주 동안 한 명의 사람이 공유했습니다 + other: 지난 주 동안 %{count} 명의 사람들이 공유했습니다 + zero: 지난 주 동안 공유한 사람이 없습니다 title: 지금 유행 중인 링크 usage_comparison: 오늘은 %{today}회 공유되었고, 어제는 %{yesterday}회 공유되었습니다 pending_review: 심사 대기 @@ -748,15 +780,17 @@ ko: listable: 추천될 수 있습니다 not_listable: 추천될 수 없습니다 not_trendable: 유행 목록에 나타나지 않습니다 - not_usable: 사용할 수 없음 + not_usable: 사용불가 peaked_on_and_decaying: "%{date}에 고점을 찍고, 떨어지고 있습니다" title: 유행하는 해시태그 trendable: 유행 목록에 나타날 수 있습니다 trending_rank: "#%{rank}위로 유행 중" - usable: 사용할 수 없음 + usable: 사용 가능 usage_comparison: 오늘은 %{today}회 사용되었고, 어제는 %{yesterday}회 사용되었습니다 used_by_over_week: - other: 한 주 동안 %{count}명의 사람이 사용했습니다 + one: 지난 주 동안 한 명의 사람이 사용했습니다 + other: 지난 주 동안 %{count} 명의 사람들이 사용했습니다 + zero: 지난 주 동안 사용한 사람이 없습니다 title: 유행 warning_presets: add_new: 새로 추가 @@ -765,6 +799,9 @@ ko: empty: 아직 어떤 경고 틀도 정의되지 않았습니다. title: 경고 틀 관리 admin_mailer: + new_appeal: + actions: + none: 경고 new_pending_account: body: 아래에 새 계정에 대한 상세정보가 있습니다. 이 가입을 승인하거나 거부할 수 있습니다. subject: "%{instance}의 새 계정(%{username})에 대한 심사가 대기중입니다" @@ -855,7 +892,6 @@ ko: status: account_status: 계정 상태 confirming: 이메일 확인 과정이 완료되기를 기다리는 중. - functional: 계정이 완벽히 작동합니다. pending: 당신의 가입 신청은 스태프의 검사를 위해 대기중입니다. 이것은 시간이 다소 소요됩니다. 가입 신청이 승인 될 경우 이메일을 받게 됩니다. redirecting_to: 계정이 %{acct}로 리다이렉트 중이기 때문에 비활성 상태입니다. too_fast: 너무 빠르게 양식이 제출되었습니다, 다시 시도하세요. @@ -921,6 +957,25 @@ ko: directory: 프로필 책자 explanation: 관심사에 대한 유저들을 발견합니다 explore_mastodon: "%{title} 탐사하기" + disputes: + strikes: + action_taken: 내려진 징계 + appeal: 이의제기 + appeal_submitted_at: 이의제기 접수됨 + appealed_msg: 당신의 이의제기가 접수되었습니다. 만약 승인된다면, 알림을 받게 될 것입니다. + appeals: + submit: 이의 제출 + associated_report: 관련된 신고 + created_at: 날짜 + recipient: 수신자 + status: '게시물 #%{id}' + status_removed: 게시물이 이미 시스템에서 지워졌습니다 + title_actions: + delete_statuses: 게시물 삭제 + disable: 계정 동결 + none: 경고 + sensitive: 계정을 민감함으로 표시 + silence: 계정의 제한 domain_validator: invalid_domain: 올바른 도메인 네임이 아닙니다 errors: @@ -1128,6 +1183,8 @@ ko: title: 새 부스트 status: subject: "%{name} 님이 방금 게시물을 올렸습니다" + update: + subject: "%{name} 님이 게시물을 수정했습니다" notifications: email_events: 이메일 알림에 대한 이벤트 email_events_hint: '알림 받을 이벤트를 선택해주세요:' @@ -1288,6 +1345,7 @@ ko: other: "%{count}개의 영상" boosted_from_html: "%{acct_link} 님으로부터 부스트" content_warning: '열람 주의: %{warning}' + default_language: 화면 표시 언어와 동일하게 disallowed_hashtags: other: '허용되지 않은 해시태그를 포함하고 있습니다: %{tags}' edited_at: "%{date}에 편집됨" @@ -1468,6 +1526,8 @@ ko: recovery_instructions_html: 휴대전화를 분실한 경우, 아래 복구 코드 중 하나를 사용해 계정에 접근할 수 있습니다. <strong>복구 코드는 안전하게 보관해 주십시오.</strong> 이 코드를 인쇄해 중요한 서류와 함께 보관하는 것도 좋습니다. webauthn: 보안 키 user_mailer: + appeal_approved: + action: 내 계정으로 가기 backup_ready: explanation: 당신이 요청한 계정의 풀 백업이 이제 다운로드 가능합니다! subject: 당신의 아카이브를 다운로드 가능합니다 @@ -1490,7 +1550,6 @@ ko: suspend: 당신은 더이상 당신의 계정을 사용할 수 없으며, 프로필과 데이터는 접근 불가능하게 됩니다. 데이터가 완전히 삭제되기 전인 30일동안은 여전히 백업을 요청하기 위해 로그인 할 수 있습니다, 하지만 계정 정지를 회피하는 것을 방지하기 위하여 몇 가지 정보는 유지됩니다. get_in_touch: 이것이 잘못된 조치라고 생각된다면, 이 메일에 답장하여 %{instance}의 스태프들에게 연락할 수 있습니다. reason: '사유:' - review_server_policies: 서버 정책 검토하기 statuses: '위반사항이 발견된 게시물:' subject: delete_statuses: 당신의 계정 %{acct}에서 작성한 게시물이 삭제되었습니다 diff --git a/config/locales/ku.yml b/config/locales/ku.yml index 744ead215..bcf71682a 100644 --- a/config/locales/ku.yml +++ b/config/locales/ku.yml @@ -90,7 +90,6 @@ ku: account_moderation_notes: create: جێهێشتنی تێبینی created_msg: تێبینی بەڕێوەبەر بە سەرکەوتوویی دروست کرا! - delete: سڕینەوە destroyed_msg: تێبینی بەڕێوەبەر بە سەرکەوتوویی لەناوچوو! accounts: add_email_domain_block: بلۆککردنی هەموو دۆمەینەکە @@ -342,9 +341,6 @@ ku: silence: بێدەنگ suspend: ڕاگرتن show: - affected_accounts: - one: هەژمارەیەک کە لە بنکەی زانیارێکان کاریگەری لەسەرە - other: "%{count} هەژمارەیەک کە لە بنکەی زانیارێکان کاریگەری لەسەرە" retroactive: silence: نابێدەنگی ئەو ئەژمێرانەی کە هەیە لەم دۆمەینەوە suspend: هەڵنەپەسێدراوی هەژمارە کاریگەرەکانی ئەم دۆمەین @@ -367,9 +363,6 @@ ku: instances: by_domain: دۆمەین delivery_available: گەیاندن بەردەستە - known_accounts: - one: "%{count} هەژمارەی ناسراو" - other: "%{count} هەژمارەکانی ناسراو" moderation: all: هەموو limited: سنووردار @@ -639,7 +632,6 @@ ku: status: account_status: دۆخی هەژمارە confirming: چاوەڕوانی دڵنیاکردنەوەی ئیمەیڵ بۆ تەواوکردن. - functional: هەژمارەکەت بەتەواوی کارا بووەتەوە. pending: ئەپلیکەیشەنەکەت چاوەڕوانی پێداچوونەوەیە لەلایەن ستافەکەمانەوە. لەوانەیە ئەمە هەندێک کاتی بخایەنێت ئەگەر ئەۆپەکەت پەسەند کرا، ئیمەیڵت پێدەگات. redirecting_to: هەژمارەکەت ناچالاکە لەبەرئەوەی ئێستا دووبارە ئاڕاستەدەکرێتەوە بۆ %{acct}. trouble_logging_in: کێشە ت هەیە بۆ چوونە ژوورەوە? @@ -1179,7 +1171,6 @@ ku: subject: تکایە دڵنیابە لە هەوڵدان بۆ چوونە ژوورەوە title: هەوڵدان بۆ چوونە ژوورەوە warning: - review_server_policies: پێداچوونەوەی سیاسەتەکانی ڕاژە subject: disable: هەژمارەکەت %{acct} بەستراوە none: ئاگاداری بۆ %{acct} diff --git a/config/locales/lt.yml b/config/locales/lt.yml index c41db64cf..bf7166b4f 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -46,7 +46,6 @@ lt: account_moderation_notes: create: Palikti žinutę created_msg: Moderavimo žinutė sėkimngai sukurta! - delete: Ištrinti destroyed_msg: Moderacijos žinutė sėkmingai ištrinta! accounts: are_you_sure: Ar esate įsitikinęs? @@ -729,7 +728,6 @@ lt: subject: Jūsų archyvas paruoštas parsisiuntimui title: Archyvas išimtas warning: - review_server_policies: Apžvelgti serverio politiką subject: disable: Jūsų paskyra %{acct} buvo užšaldyta none: Įspėjmas vartotojui %{acct} diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 875ad5c05..808cc567e 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -98,7 +98,6 @@ lv: account_moderation_notes: create: Atstāt piezīmi created_msg: Moderācijas piezīme ir veiksmīgi izveidota! - delete: Dzēst destroyed_msg: Moderācijas piezīme ir veiksmīgi iznīcināta! accounts: add_email_domain_block: Bloķēt e-pasta domēnu @@ -167,6 +166,11 @@ lv: not_subscribed: Nav abonēts pending: Gaida pārskatīšanu perform_full_suspension: Apturēt + previous_strikes: Iepriekšējie brīdinājumi + previous_strikes_description_html: + one: Šim kontam ir <strong>viens</strong> brīdinājums. + other: Šim kontam ir <strong>%{count}</strong> brīdinājumi. + zero: Š konta <strong>stāvoklis ir labs</strong>. promote: Veicināt protocol: Protokols public: Publisks @@ -210,6 +214,7 @@ lv: statuses: Ziņas strikes: Iepriekšējie streiki subscribe: Abonēt + suspend: Apturēt suspended: Apturēts suspension_irreversible: Šī konta dati ir neatgriezeniski izdzēsti. Tu vari atcelt konta darbības apturēšanu, lai tas būtu izmantojams, taču tas neatjaunos iepriekšējos datus. suspension_reversible_hint_html: Konta darbība ir apturēta, un dati tiks pilnībā noņemti %{date}. Līdz tam kontu var atjaunot bez jebkādām nelabvēlīgām sekām. Ja vēlies nekavējoties noņemt visus konta datus, to vari izdarīt zemāk. @@ -230,6 +235,7 @@ lv: whitelisted: Atļauts federācijai action_logs: action_types: + approve_appeal: Apstiprināt Apelāciju approve_user: Apstiprināt lietotāju assigned_to_self_report: Piešķirt Pārskatu change_email_user: Mainīt e-pastu lietotājam @@ -261,6 +267,7 @@ lv: enable_user: Ieslēgt Lietotāju memorialize_account: Saglabāt Kontu Piemiņai promote_user: Paaugstināt Lietotāju + reject_appeal: Noraidīt Apelāciju reject_user: Noraidīt lietotāju remove_avatar_user: Noņemt Avatāru reopen_report: Atkārtoti Atvērt Ziņojumu @@ -279,6 +286,7 @@ lv: update_domain_block: Atjaunināt Domēna Bloku update_status: Atjaunināt ziņu actions: + approve_appeal_html: "%{name} apstiprināja moderācijas lēmuma apelāciju no %{target}" approve_user_html: "%{name} apstiprināja reģistrēšanos no %{target}" assigned_to_self_report_html: "%{name} piešķīra pārskatu %{target} sev" change_email_user_html: "%{name} nomainīja e-pasta adresi lietotājam %{target}" @@ -310,6 +318,7 @@ lv: enable_user_html: "%{name} iespējoja pieteikšanos lietotājam %{target}" memorialize_account_html: "%{name} pārvērta %{target} kontu par atmiņas lapu" promote_user_html: "%{name} paaugstināja lietotāju %{target}" + reject_appeal_html: "%{name} noraidīja moderācijas lēmuma apelāciju no %{target}" reject_user_html: "%{name} noraidīja reģistrēšanos no %{target}" remove_avatar_user_html: "%{name} noņēma %{target} avatāru" reopen_report_html: "%{name} atkārtoti atvēra ziņojumu %{target}" @@ -388,18 +397,22 @@ lv: media_storage: Mediju krātuve new_users: jauni lietotāji opened_reports: atvērtie ziņojumi + pending_appeals_html: + one: "<strong>%{count}</strong> izskatāmā apelācija" + other: "<strong>%{count}</strong> izskatāmās apelācijas" + zero: "<strong>%{count}</strong> izskatāmo apelāciju" pending_reports_html: - one: "<strong>1</strong> ziņojums gaida" + one: "<strong>%{count}</strong>ziņojums gaida" other: "<strong>%{count}</strong>ziņojumi gaida" - zero: "<strong>%{count}</strong> ziņojumu" + zero: "<strong>%{count}</strong>ziņojumi gaida" pending_tags_html: - one: "<strong>1</strong> tēmturis gaida" + one: "<strong>%{count}</strong>tēmturis gaida" other: "<strong>%{count}</strong>tēmturi gaida" - zero: "<strong>%{count}</strong> tēmturu" + zero: "<strong>%{count}</strong>tēmturi gaida" pending_users_html: - one: "<strong>1</strong> lietotājs gaida" + one: "<strong>%{count}</strong>lietotājs gaida" other: "<strong>%{count}</strong>lietotāji gaida" - zero: "<strong>%{count}</strong> lietotāju" + zero: "<strong>%{count}</strong>lietotāji gaida" resolved_reports: ziņojumi atrisināti software: Programmatūra sources: Reģistrēšanās avoti @@ -408,6 +421,10 @@ lv: top_languages: Aktīvākās valodas top_servers: Aktīvākie serveri website: Tīmekļa vietne + disputes: + appeals: + empty: Apelācijas netika atrastas. + title: Apelācijas domain_allows: add_new: Atļaut federāciju ar domēnu created_msg: Domēns ir veiksmīgi atļauts federācijai @@ -448,7 +465,7 @@ lv: affected_accounts: one: Ietekmēts viens konts datu bāzē other: Ietekmēti %{count} konti datu bāzē - zero: "%{count} ietekmētu kontu" + zero: Nav ietekmētu kontu datubāzē retroactive: silence: Atsaukt ierobežojumus esošajiem ietekmētajiem kontiem no šī domēna suspend: Atcelt šī domēna esošo ietekmēto kontu darbības apturēšanu @@ -503,7 +520,7 @@ lv: known_accounts: one: "%{count} zināms konts" other: "%{count} zināmi konti" - zero: "%{count} zināmu kontu" + zero: Nav zināmu kontu moderation: all: Visas limited: Ierobežotās @@ -571,10 +588,12 @@ lv: action_log: Auditācijas pieraksti action_taken_by: Veiktā darbība actions: + delete_description_html: Raksti, par kurām ziņots, tiks dzēsti, un tiks reģistrēts brīdinājums, lai palīdzētu tev izvērst turpmākos pārkāpumus saistībā ar to pašu kontu. other_description_html: Skatīt vairāk iespēju kontrolēt konta uzvedību un pielāgot saziņu ar paziņoto kontu. + resolve_description_html: Pret norādīto kontu netiks veiktas nekādas darbības, netiks reģistrēts brīdinājums, un ziņojums tiks slēgts. silence_description_html: Profils būs redzams tikai tiem, kas jau tam seko vai manuāli apskata, stingri ierobežojot tās sasniedzamību. Šo vienmēr var atgriezt. suspend_description_html: Profils un viss tā saturs kļūs nepieejami, līdz tas beidzot tiek izdzēsts. Mijiedarbība ar kontu būs neiespējama. Atgriežams 30 dienu laikā. - actions_description_html: 'Ja ar minētā satura noņemšanu vien nepietiek:' + actions_description_html: Izlem, kādas darbības jāveic, lai atrisinātu šo ziņojumu. Ja veiksi sodīšanas darbību pret kontu, par kuru ziņots, tam tiks nosūtīts e-pasta paziņojums, izņemot gadījumus, kad ir atlasīta kategorija <strong>Spam</strong>. add_to_report: Pievienot varāk paziņošanai are_you_sure: Vai esi pārliecināts? assign_to_self: Piešķirt man @@ -586,7 +605,7 @@ lv: none: Neviens comment_description_html: 'Lai sniegtu vairāk informācijas, %{name} rakstīja:' created_at: Ziņoti - delete_and_resolve: Dzēst un atrisināt + delete_and_resolve: Izdzēst rakstus forwarded: Pārsūtīti forwarded_to: Pārsūtīti %{domain} mark_as_resolved: Atzīmēt kā atrisinātu @@ -600,12 +619,14 @@ lv: placeholder: Apraksti veiktās darbības vai citus saistītus atjauninājumus... title: Piezīmes notes_description_html: Skati un atstāj piezīmes citiem moderatoriem un sev nākotnei + quick_actions_description_html: 'Veic ātro darbību vai ritini uz leju, lai skatītu saturu, par kuru ziņots:' reopen: Atkārtoti atvērt ziņojumu report: 'Ziņojums #%{id}' reported_account: Ziņotais konts reported_by: Ziņoja resolved: Atrisināts resolved_msg: Ziņojums veiksmīgi atrisināts! + skip_to_actions: Pāriet uz darbībām status: Statuss statuses: Ziņotais saturs statuses_description_html: Pārkāpuma saturs tiks minēts saziņā ar paziņoto kontu @@ -726,6 +747,16 @@ lv: no_status_selected: Neviena ziņa netika mainīta, jo neviena netika atlasīta title: Konta ziņas with_media: Ar medijiem + strikes: + actions: + delete_statuses: "%{name} izdzēsa %{target} publikācijas" + disable: "%{name} iesaldēja %{target} kontu" + none: "%{name} nosūtīja brīdinājumu %{target}" + sensitive: "%{name} atzīmēja %{target} kontu kā sensitīvu" + silence: "%{name} ierobežoja %{target} kontu" + suspend: "%{name} apturēja %{target} kontu" + appeal_approved: Pārsūdzēts + appeal_pending: Apelācija tiek izskatīta system_checks: database_schema_check: message_html: Notiek datubāzu migrācijas. Lūdzu, palaid tās, lai nodrošinātu, ka lietojumprogramma darbojas, kā paredzēts @@ -750,7 +781,7 @@ lv: shared_by_over_week: one: Pēdējās nedēļas laikā kopīgoja viena persona other: Pēdējās nedēļas laikā kopīgoja %{count} personas - zero: Pēdējās nedēļas laikā kopīgoja %{count} persona + zero: Pēdējās nedēļas laikā neviens nav kopīgojis title: Populārākās saites usage_comparison: Šodien kopīgots %{today} reizes, salīdzinot ar %{yesterday} vakar pending_review: Gaida pārskatīšanu @@ -780,7 +811,7 @@ lv: used_by_over_week: one: Pēdējās nedēļas laikā izmantoja viens cilvēks other: Pēdējās nedēļas laikā izmantoja %{count} personas - zero: Pēdējās nedēļas laikā izmantoja %{count} personu + zero: Pēdējās nedēļas laikā neviens nav izmantojis title: Tendences warning_presets: add_new: Pievienot jaunu @@ -789,6 +820,17 @@ lv: empty: Tu vēl neesi definējis iepriekš iestatītos brīdinājumus. title: Pārvaldīt brīdinājuma iestatījumus admin_mailer: + new_appeal: + actions: + delete_statuses: lai izdzēstu viņu ierakstus + disable: lai iesaldētu viņu kontu + none: brīdinājums + sensitive: lai atzīmētu viņu kontu kā sensitīvu + silence: lai ierobežotu viņu kontu + suspend: lai apturētu viņu kontu + body: "%{target} pārsūdzēja %{action_taken_by} moderēšanas lēmumu no %{date}, kas bija %{type}. Viņi rakstīja:" + next_steps: Varat apstiprināt apelāciju, lai atsauktu regulēšanas lēmumu, vai ignorēt to. + subject: "%{username} pārsūdz moderēšanas lēmumu par %{instance}" new_pending_account: body: Sīkāka informācija par jauno kontu ir sniegta zemāk. Tu vari apstiprināt vai noraidīt šo pieteikumu. subject: Jauns konts pārskatīšanai %{instance} (%{username}) @@ -879,7 +921,6 @@ lv: status: account_status: Konta statuss confirming: Gaida e-pasta apstiprinājuma pabeigšanu. - functional: Tavs konts ir pilnībā darboties spējīgs. pending: Tavu pieteikumu gaida mūsu darbinieku izskatīšana. Tas var aizņemt kādu laiku. Ja tavs pieteikums tiks apstiprināts, tu saņemsi e-pastu. redirecting_to: Tavs konts ir neaktīvs, jo pašlaik tas tiek novirzīts uz %{acct}. too_fast: Veidlapa ir iesniegta pārāk ātri, mēģini vēlreiz. @@ -945,6 +986,32 @@ lv: directory: Profila direktorija explanation: Atklāj lietotājus, pamatojoties uz viņu interesēm explore_mastodon: Izpētīt %{title} + disputes: + strikes: + action_taken: Veiktā darbība + appeal: Apelācija + appeal_approved: Šis brīdinājums ir veiksmīgi pārsūdzēts un vairs nav spēkā + appeal_rejected: Apelācija ir noraidīta + appeal_submitted_at: Apelācija iesniegta + appealed_msg: Jūsu apelācija ir iesniegta. Ja tā tiks apstiprināta, jums tiks paziņots. + appeals: + submit: Iesniegt apelāciju + associated_report: Saistītais ziņojums + created_at: Datēts + recipient: Adresēts + status: 'Publikācija #%{id}' + status_removed: Publikācija jau ir noņemta no sistēmas + title: "%{action} kopš %{date}" + title_actions: + delete_statuses: Ziņas noņemšana + disable: Konta iesaldēšana + none: Brīdinājums + sensitive: Konta atzīmēšana kā sensitīvs + silence: Konta ierobežošana + suspend: Konta apturēšana + your_appeal_approved: Jūsu apelācija ir apstiprināta + your_appeal_pending: Jūs esat iesniedzis apelāciju + your_appeal_rejected: Jūsu apelācija ir noraidīta domain_validator: invalid_domain: nav derīgs domēna nosaukums errors: @@ -1160,6 +1227,8 @@ lv: title: Jauns stimuls status: subject: "%{name} tikko publicēja" + update: + subject: "%{name} rediģējis rakstu" notifications: email_events: E-pasta paziņojumu notikumi email_events_hint: 'Atlasi notikumus, par kuriem vēlies saņemt paziņojumus:' @@ -1528,6 +1597,15 @@ lv: recovery_instructions_html: Ja kādreiz zaudēsi piekļuvi savam tālrunim, vari izmantot kādu no tālāk norādītajiem atkopšanas kodiem, lai atgūtu piekļuvi savam kontam. <strong>Glabā atkopšanas kodus drošībā</strong>. Piemēram, tu vari tos izdrukāt un uzglabāt kopā ar citiem svarīgiem dokumentiem. webauthn: Drošības atslēgas user_mailer: + appeal_approved: + action: Dodies uz savu kontu + explanation: Apelācija par brīdinājumu jūsu kontam %{strike_date}, ko iesniedzāt %{appeal_date}, ir apstiprināta. Jūsu konts atkal ir labā stāvoklī. + subject: Jūsu %{date} apelācija ir apstiprināta + title: Apelācija apstiprināta + appeal_rejected: + explanation: Apelācija par brīdinājumu jūsu kontam %{strike_date}, ko iesniedzāt %{appeal_date}, ir noraidīta. + subject: Jūsu %{date} apelācija ir noraidīta + title: Apelācija noraidīta backup_ready: explanation: Tu pieprasīji pilnu sava Mastodon konta dublējumu. Tagad tas ir gatavs lejupielādei! subject: Tavs arhīvs ir gatavs lejupielādei @@ -1539,6 +1617,8 @@ lv: subject: Lūdzu, apstiprini pierakstīšanās mēģinājumu title: Pierakstīšanās mēģinājums warning: + appeal: Iesniegt apelāciju + appeal_description: Ja uzskatāt, ka tā ir kļūda, varat iesniegt apelāciju %{instance} darbiniekiem. categories: spam: Spams violation: Saturs pārkāpj šādas kopienas pamatnostādnes @@ -1550,7 +1630,6 @@ lv: suspend: Tu vairs nevari izmantot savu kontu, un tavs profils un citi dati vairs nav pieejami. Tu joprojām vari pieteikties, lai pieprasītu savu datu dublēšanu, līdz dati tiks pilnībā noņemti aptuveni 30 dienu laikā, taču mēs saglabāsim dažus pamata datus, lai neļautu tev izvairīties no apturēšanas. get_in_touch: Ja uzskati, ka tā ir kļūda, vari atbildēt uz šo e-pastu, lai sazinātos ar %{instance} darbiniekiem. reason: 'Iemesls:' - review_server_policies: Pārskati servera politikas statuses: 'Ziņas, kurās tika konstatēti pārkāpumi:' subject: delete_statuses: Tavas ziņas %{acct} tika noņemtas diff --git a/config/locales/ml.yml b/config/locales/ml.yml index 47ed7ed1c..daee6098c 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -41,8 +41,6 @@ ml: group: ഗ്രൂപ്പ് unavailable: പ്രൊഫൈൽ ലഭ്യമല്ല admin: - account_moderation_notes: - delete: മായ്ക്കുക accounts: add_email_domain_block: ഇ-മെയിൽ ഡൊമെയ്ൻ തടയുക approve: അംഗീകരിക്കുക diff --git a/config/locales/ms.yml b/config/locales/ms.yml index b38b9279a..0cd87686e 100644 --- a/config/locales/ms.yml +++ b/config/locales/ms.yml @@ -90,7 +90,6 @@ ms: account_moderation_notes: create: Tinggalkan catatan created_msg: Catatan penyederhanaan telah berjaya dicipta! - delete: Padam destroyed_msg: Catatan penyederhanaan telah berjaya dipadam! accounts: add_email_domain_block: Sekat domain e-mel @@ -393,8 +392,6 @@ ms: silence: didiamkan suspend: digantungkan show: - affected_accounts: - other: "%{count} akaun dalam pangkalan data menerima kesan" retroactive: silence: Nyahdiamkan akaun yang menerima kesan sedia ada daripada domain ini suspend: Nyahgantungkan akaun yang menerima kesan sedia ada daripada domain ini @@ -442,8 +439,6 @@ ms: delivery_error_days: Hari ralat penghantaran delivery_error_hint: Jika penghantaran tidak berjaya selama %{count} hari, ia akan ditanda sebagai tidak boleh dihantar. empty: Tiada domain dijumpai. - known_accounts: - other: "%{count} akaun dikenali" moderation: all: Semua limited: Terhad diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 723e7de9c..22084fa29 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -92,7 +92,6 @@ nl: account_moderation_notes: create: Laat een opmerking achter created_msg: Aanmaken van opmerking voor moderatoren geslaagd! - delete: Verwijderen destroyed_msg: Verwijderen van opmerking voor moderatoren geslaagd! accounts: add_email_domain_block: E-maildomein blokkeren @@ -396,9 +395,6 @@ nl: silence: genegeerd suspend: opgeschort show: - affected_accounts: - one: Eén account in de database aangepast - other: "%{count} accounts in de database aangepast" retroactive: silence: Alle genegeerde accounts van dit domein niet langer negeren suspend: Alle opgeschorte accounts van dit domein niet langer opschorten @@ -447,9 +443,6 @@ nl: delivery_error_days: Dagen met bezorgfouten delivery_error_hint: Wanneer de bezorging voor %{count} dagen niet mogelijk is, wordt de bezorging automatisch als niet beschikbaar gemarkeerd. empty: Geen domeinen gevonden. - known_accounts: - one: "%{count} bekend account" - other: "%{count} bekende accounts" moderation: all: Alles limited: Beperkt @@ -745,7 +738,6 @@ nl: status: account_status: Accountstatus confirming: Aan het wachten totdat de e-mail is bevestigd. - functional: Jouw account is volledig operationeel. pending: Jouw aanvraag moet nog worden beoordeeld door een van onze medewerkers. Dit kan misschien eventjes duren. Je ontvangt een e-mail wanneer jouw aanvraag is goedgekeurd. redirecting_to: Jouw account is inactief omdat het momenteel wordt doorverwezen naar %{acct}. too_fast: Formulier is te snel ingediend. Probeer het nogmaals. @@ -1327,7 +1319,6 @@ nl: subject: Bevestig de inlogpoging title: Inlogpoging warning: - review_server_policies: Serverbeleid bekijken subject: disable: Jouw account %{acct} is bevroren none: Waarschuwing voor %{acct} diff --git a/config/locales/nn.yml b/config/locales/nn.yml index d75e8bb87..eae87f41e 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -92,7 +92,6 @@ nn: account_moderation_notes: create: Legg igjen merknad created_msg: Moderatormerknad er laga! - delete: Slett destroyed_msg: Moderatormerknad er utsletta! accounts: add_email_domain_block: Gøym e-postdomene @@ -369,9 +368,6 @@ nn: silence: dempa suspend: utvist show: - affected_accounts: - one: Éin konto i databasen vert påverka - other: "%{count} kontoar i databasen vert påverka" retroactive: silence: Avmålbind alle eksisterende kontoer fre dette domenet suspend: Avutvis alle eksisterende kontoer fra dette domenet @@ -413,9 +409,6 @@ nn: unavailable: Ikke tilgjengelig warning: Advarsel delivery_available: Levering er tilgjengelig - known_accounts: - one: "%{count} kjend konto" - other: "%{count} kjende kontoar" moderation: all: Alle limited: Avgrensa @@ -706,7 +699,6 @@ nn: status: account_status: Kontostatus confirming: Ventar på stadfesting av e-post. - functional: Kontoen din er oppe og går. pending: Søknaden din ventar på gjennomgang frå personalet vårt. Dette kan taka litt tid. Du får ein e-post om søknaden din vert godkjend. redirecting_to: Kontoen din er inaktiv fordi den for øyeblikket omdirigerer til %{acct}. trouble_logging_in: Får du ikkje logga inn? @@ -1282,7 +1274,6 @@ nn: subject: Venlegast stadfest forsøket på å logga inn title: Forsøk på å logga inn warning: - review_server_policies: Gjennomgå serverretningslinjer subject: disable: Kontoen din, %{acct}, har blitt fryst none: Åtvaring for %{acct} diff --git a/config/locales/no.yml b/config/locales/no.yml index 088812fb1..7019b2457 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -92,7 +92,6 @@ account_moderation_notes: create: Lag created_msg: Moderasjonsnotat laget uten problem! - delete: Slett destroyed_msg: Moderasjonsnotat slettet uten problem! accounts: add_email_domain_block: Svartelist E-postdomenet @@ -366,9 +365,6 @@ silence: stilnet suspend: suspendert show: - affected_accounts: - one: En konto i databasen påvirket - other: "%{count} kontoer i databasen påvirket" retroactive: silence: Avmålbind alle eksisterende kontoer fre dette domenet suspend: Avutvis alle eksisterende kontoer fra dette domenet @@ -410,9 +406,6 @@ unavailable: Ikke tilgjengelig warning: Advarsel delivery_available: Levering er tilgjengelig - known_accounts: - one: "%{count} kjent konto" - other: "%{count} kjente kontoer" moderation: all: Alt limited: Begrenset @@ -698,7 +691,6 @@ status: account_status: Kontostatus confirming: Venter på at e-postbekreftelsen er fullført. - functional: Kontoen din er fullt operativt. pending: Søknaden din avventer gjennomgang av styret vårt. Dette kan ta litt tid. Du vil motta en E-post dersom søknaden din blir godkjent. redirecting_to: Kontoen din er inaktiv fordi den for øyeblikket omdirigerer til %{acct}. trouble_logging_in: Har du problemer med å logge på? @@ -1263,7 +1255,6 @@ subject: Bekreft forsøk på å logge inn title: Påloggingsforsøk warning: - review_server_policies: Gjennomgå serverretningslinjer subject: disable: Kontoen din, %{acct}, har blitt fryst none: Advarsel for %{acct} diff --git a/config/locales/oc.yml b/config/locales/oc.yml index 5ba40c527..844a8b256 100644 --- a/config/locales/oc.yml +++ b/config/locales/oc.yml @@ -86,7 +86,6 @@ oc: account_moderation_notes: create: Crear una nòta created_msg: Nòta de moderacion ben creada ! - delete: Suprimir destroyed_msg: Nòta de moderacion ben suprimida ! accounts: add_email_domain_block: Metre lo domeni del corrièl en lista negra @@ -329,9 +328,6 @@ oc: silence: mes en silenci suspend: suspendut show: - affected_accounts: - one: Un compte de la basa de donadas tocat - other: "%{count} compte de la basa de donadas tocat" retroactive: silence: Levar lo silenci de totes los comptes d’aqueste domeni suspend: Levar la suspension de totes los comptes d’aqueste domeni @@ -357,9 +353,6 @@ oc: instances: by_domain: Domeni delivery_available: Liurason disponibla - known_accounts: - one: "%{count} compte conegut" - other: "%{count} comptes coneguts" moderation: all: Totas limited: Limitat @@ -627,7 +620,6 @@ oc: title: Configuracion status: account_status: Estat del compte - functional: Vòstre compte es complètament foncional. trouble_logging_in: Problèmas de connexion ? use_security_key: Utilizar clau de seguretat authorize_follow: @@ -1176,7 +1168,6 @@ oc: title: Archiu per emportar warning: reason: 'Motiu :' - review_server_policies: Repassar las politicas del servidor subject: disable: Vòstre compte %{acct} es gelat none: Avertiment per %{acct} diff --git a/config/locales/pl.yml b/config/locales/pl.yml index ed565cc76..6a48cb840 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -102,7 +102,6 @@ pl: account_moderation_notes: create: Pozostaw notatkę created_msg: Pomyślnie dodano notatkę moderacyjną! - delete: Usuń destroyed_msg: Pomyślnie usunięto notatkę moderacyjną! accounts: add_email_domain_block: Dodaj domenę e-mail na czarną listę @@ -171,6 +170,11 @@ pl: not_subscribed: Nie zasubskrybowano pending: Oczekuje na przegląd perform_full_suspension: Zawieś + previous_strikes: Poprzednie ostrzeżenia + previous_strikes_description_html: + one: To konto ma <strong>jedno</strong> ostrzeżenie. + other: To konto ma <strong>%{count}</strong> ostrzeżeń. + zero: To konto jest <strong>w dobrym stanie</strong>. promote: Podnieś uprawnienia protocol: Protokół public: Publiczne @@ -214,6 +218,7 @@ pl: statuses: Wpisy strikes: Poprzednie ostrzeżenia subscribe: Subskrybuj + suspend: Zawieś suspended: Zawieszono suspension_irreversible: Dane tego konta zostały bezpowrotnie usunięte. Możesz cofnąć zawieszenie tego konta aby można było z niego ponownie korzystać, lecz nie przywróci to danych które poprzednio się na nim znajdowały. suspension_reversible_hint_html: Twoje konto zostało zawieszone, a dane zostaną całkowicie usunięte %{date}. Do tego czasu, konto może zostać przywrócone bez żadnych negatywnych skutków. Jeżeli chcesz natychmiastowo usunąć wszystkie dane, możesz zrobić to niżej. @@ -234,6 +239,7 @@ pl: whitelisted: Na białej liście action_logs: action_types: + approve_appeal: Zatwierdź odwołanie approve_user: Zatwierdź użytkownika assigned_to_self_report: Przypisz zgłoszenie change_email_user: Zmień adres e-mail użytkownika @@ -265,6 +271,7 @@ pl: enable_user: Włącz użytkownika memorialize_account: Upamiętnij konto promote_user: Podnieś uprawnienia + reject_appeal: Odrzuć odwołanie reject_user: Odrzuć użytkownika remove_avatar_user: Usuń awatar reopen_report: Otwórz zgłoszenie ponownie @@ -283,6 +290,7 @@ pl: update_domain_block: Zaktualizuj blokadę domeny update_status: Aktualizuj wpis actions: + approve_appeal_html: "%{name} zatwierdził(-a) odwołanie decyzji moderacyjnej od %{target}" approve_user_html: "%{name} zatwierdził rejestrację od %{target}" assigned_to_self_report_html: "%{name} przypisał(a) sobie zgłoszenie %{target}" change_email_user_html: "%{name} zmienił(a) adres e-mail użytkownika %{target}" @@ -314,6 +322,7 @@ pl: enable_user_html: "%{name} przywrócił(a) możliwość logowania użytkownikowi %{target}" memorialize_account_html: "%{name} nadał(a) kontu %{target} status in memoriam" promote_user_html: "%{name} podniósł(a) uprawnienia użytkownikowi %{target}" + reject_appeal_html: "%{name} zatwierdził(-a) odwołanie decyzji moderacyjnej od %{target}" reject_user_html: "%{name} odrzucił rejestrację od %{target}" remove_avatar_user_html: "%{name} usunął(-ęła) awatar użytkownikowi %{target}" reopen_report_html: "%{name} otworzył(a) ponownie zgłoszenie %{target}" @@ -392,6 +401,11 @@ pl: media_storage: Przechowywanie mediów new_users: nowi użytkownicy opened_reports: otwarte zgłoszenia + pending_appeals_html: + few: "<strong>%{count}</strong> oczekujące odwołania" + many: "<strong>%{count}</strong> oczekujących odwołań" + one: "<strong>%{count}</strong> oczekujących odwołań" + other: "<strong>%{count}</strong> oczekujących odwołań" pending_reports_html: few: "<strong>%{count}</strong> oczekujące raporty" many: "<strong>%{count}</strong> oczekujących raportów" @@ -400,12 +414,12 @@ pl: pending_tags_html: few: "<strong>%{count}</strong> oczekujące hashtagi" many: "<strong>%{count}</strong> oczekujących hashtagów" - one: "<strong>%{count}</strong>oczekujący hasztag" + one: "<strong>%{count}</strong> oczekujący hashtag" other: "<strong>%{count}</strong> oczekujących hashtagów" pending_users_html: few: "<strong>%{count}</strong> oczekujących użytkowników" many: "<strong>%{count}</strong> oczekujących użytkowników" - one: "<strong>1</strong> oczekujący użytkownik" + one: "<strong>%{count}</strong> oczekujący użytkownik" other: "<strong>%{count}</strong> oczekujących użytkowników" resolved_reports: zamkniętych zgłoszeń software: Oprogramowanie @@ -415,6 +429,10 @@ pl: top_languages: Najbardziej aktywne języki top_servers: Najbardziej aktywne serwery website: Strona + disputes: + appeals: + empty: Nie znaleziono odwołań. + title: Odwołania domain_allows: add_new: Zatwierdź domenę created_msg: Domena dodana do białej listy @@ -452,11 +470,6 @@ pl: silence: wyciszono suspend: zawieszono show: - affected_accounts: - few: Dotknęło %{count} kont w bazie danych - many: Dotknęło %{count} kont w bazie danych - one: Dotknęło jedno konto w bazie danych - other: Dotknęło %{count} kont w bazie danych retroactive: silence: Odwołaj wyciszenie wszystkich kont w tej domenie suspend: Odwołaj zawieszenie wszystkich kont w tej domenie @@ -509,11 +522,6 @@ pl: delivery_error_hint: Jeżeli doręczanie nie będzie możliwe przez %{count} dni, zostanie automatycznie oznaczona jako nie do doręczania. destroyed_msg: Dane z %{domain} są teraz w kolejce do bezpośredniego usunięcia. empty: Nie znaleziono domen. - known_accounts: - few: "%{count} znane konta" - many: "%{count} znane konta" - one: "%{count} znane konto" - other: "%{count} znane konta" moderation: all: Wszystkie limited: Ograniczone @@ -582,10 +590,12 @@ pl: action_log: Dziennik audytu action_taken_by: Działanie podjęte przez actions: + delete_description_html: Zgłoszone posty zostaną usunięte, a zdarzenie zostanie zapisane, aby pomóc w eskalacji przyszłych wykroczeń na tym samym koncie. other_description_html: Zobacz więcej opcji do kontrolowania zachowania konta i dostosuj komunikację do zgłoszonego konta. + resolve_description_html: Nie zostaną podjęte żadne działania przeciwko zgłoszonemu sprawozdaniu, zdarzenie nie zostanie zarejestrowane, a zgłoszenie zostanie zamknięte. silence_description_html: Profil będzie widoczny tylko dla tych, którzy go już obserwują lub szukaj ręcznie, poważnie ograniczając jego zasięg. Może być zawsze cofnięty. suspend_description_html: Profil i cała jego zawartość staną się niedostępne, dopóki nie zostaną ostatecznie usunięte. Interakcja z kontem będzie niemożliwa. Odwracalne w ciągu 30 dni. - actions_description_html: 'Jeśli usunięcie obraźliwych treści jest niewystarczające:' + actions_description_html: Zdecyduj, jakie działania należy podjąć, aby rozstrzygnąć niniejsze zgłoszenie. Jeśli podejmiesz działania karne przeciwko zgłoszonemu kontowi, zostanie do nich wysłane powiadomienie e-mail, chyba że wybrano kategorię <strong>Spam</strong>. add_to_report: Dodaj więcej do raportu are_you_sure: Czy na pewno? assign_to_self: Przypisz do siebie @@ -597,7 +607,7 @@ pl: none: Brak comment_description_html: 'Aby dostarczyć więcej informacji, %{name} napisał:' created_at: Zgłoszono - delete_and_resolve: Usuń i rozwiąż + delete_and_resolve: Usuń posty forwarded: Przekazano forwarded_to: Przekazano do %{domain} mark_as_resolved: Oznacz jako rozwiązane @@ -611,12 +621,14 @@ pl: placeholder: Opisz wykonane akcje i inne szczegóły dotyczące tego zgłoszenia… title: Notatki notes_description_html: Przeglądaj i zostaw notatki innym moderatorom i sobie samemu + quick_actions_description_html: 'Wykonaj szybkie działanie lub przewiń w dół, aby zobaczyć zgłoszoną zawartość:' reopen: Otwórz ponownie report: 'Zgłoszenie #%{id}' reported_account: Zgłoszone konto reported_by: Zgłaszający resolved: Rozwiązane resolved_msg: Pomyślnie rozwiązano zgłoszenie. + skip_to_actions: Przejdź do akcji status: Stan statuses: Zgłoszona treść statuses_description_html: Obraźliwe treści będą cytowane w komunikacji ze zgłoszonym kontem @@ -737,6 +749,16 @@ pl: no_status_selected: Żaden wpis nie został zmieniony, bo żaden nie został wybrany title: Wpisy konta with_media: Z zawartością multimedialną + strikes: + actions: + delete_statuses: "%{name} usunął(-ęła) posty %{target}" + disable: "%{name} zamroził(a) konto %{target}" + none: "%{name} wysłał(a) ostrzeżenie do %{target}" + sensitive: "%{name} oznaczył(-a) konto %{target} jako wrażliwe" + silence: "%{name} ograniczył(-a) konto %{target}" + suspend: "%{name} zawiesił(-a) konto %{target}" + appeal_approved: Odwołanie + appeal_pending: Odwołanie w toku system_checks: database_schema_check: message_html: Istnieją oczekujące migracje bazy danych. Uruchom je, aby upewnić się, że aplikacja działa tak, jak powinna @@ -758,11 +780,6 @@ pl: allow_provider: Zezwalaj na wydawcę disallow: Nie zezwalaj na link disallow_provider: Nie zezwalaj na wydawcę - shared_by_over_week: - few: Udostępnione przez %{count} osoby w ciągu ostatniego tygodnia - many: Udostępnione przez %{count} osób w ciągu ostatniego tygodnia - one: Udostępnione przez jedną osobę w ciągu ostatniego tygodnia - other: Udostępnione przez %{count} osób w ciągu ostatniego tygodnia title: Popularne linki usage_comparison: Udostępnione %{today} razy dzisiaj, w porównaniu z %{yesterday} wczoraj pending_review: Oczekuje na przegląd @@ -789,11 +806,6 @@ pl: trending_rank: 'Popularne #%{rank}' usable: Może być użyty usage_comparison: Używane %{today} razy dzisiaj, w porównaniu z %{yesterday} wczoraj - used_by_over_week: - few: Użyte przez %{count} osoby w ciągu ostatniego tygodnia - many: Użyte przez %{count} osób w ciągu ostatniego tygodnia - one: Użyte przez jedną osobę w ciągu ostatniego tygodnia - other: Użyte przez %{count} osób w ciągu ostatniego tygodnia title: Na czasie warning_presets: add_new: Dodaj nowy @@ -802,6 +814,17 @@ pl: empty: Nie zdefiniowano jeszcze żadnych szablonów ostrzegawczych. title: Zarządzaj szablonami ostrzeżeń admin_mailer: + new_appeal: + actions: + delete_statuses: aby usunąć ich wpisy + disable: aby zamrozić jego/jej konto + none: ostrzeżenie + sensitive: aby oznaczyć konto jako wrażliwe + silence: aby ograniczyć swoje konto + suspend: aby zawiesić konto + body: "%{target} odwołuje się od decyzji moderatora %{action_taken_by} z %{date}, czyli %{type}. Napisał:" + next_steps: Możesz zaakceptować odwołanie o cofnięcie decyzji o moderacji lub je zignorować. + subject: "%{username} odwołuje się od decyzji moderacyjnej na %{instance}" new_pending_account: body: Poniżej znajdują się szczegóły dotycząće nowego konta. Możesz przyjąć lub odrzucić to podanie. subject: Nowe konto czeka na przegląd na %{instance} (%{username}) @@ -892,7 +915,6 @@ pl: status: account_status: Stan konta confirming: Oczekiwanie na potwierdzenie adresu e-mail. - functional: Twoje konto całkowicie funkcjonuje. pending: Twoje zgłoszenie czeka na zatwierdzenie przez nas. Może to trochę potrwać. Jeżeli zgłoszenie zostanie przyjęte, otrzymasz wiadomość e-mail. redirecting_to: Twoje konto jest nieaktywne, ponieważ obecnie przekierowuje je na %{acct}. too_fast: Zbyt szybko przesłano formularz, spróbuj ponownie. @@ -958,6 +980,32 @@ pl: directory: Katalog profilów explanation: Poznaj profile na podstawie zainteresowań explore_mastodon: Odkrywaj %{title} + disputes: + strikes: + action_taken: Podjęte działania + appeal: Odwołanie + appeal_approved: To ostrzeżenie zostało pomyślnie odwołane i nie jest już ważne + appeal_rejected: Odwołanie zostało odrzucone + appeal_submitted_at: Przesłano odwołanie + appealed_msg: Twoje odwołanie zostało złożone. Jeśli zostanie zatwierdzone, zostaniesz powiadomiony. + appeals: + submit: Zgłoś odwołanie + associated_report: Powiązany raport + created_at: Data + recipient: Adresowane do + status: 'Post #%{id}' + status_removed: Post został już usunięty z systemu + title: "%{action} z %{date}" + title_actions: + delete_statuses: Usuwanie postów + disable: Zamrażanie konta + none: Ostrzeżenie + sensitive: Oznaczenie konta jako wrażliwe + silence: Ograniczenie konta + suspend: Zawieszenie konta + your_appeal_approved: Twoje odwołanie zostało zatwierdzone + your_appeal_pending: Zgłosiłeś odwołanie + your_appeal_rejected: Twoje odwołanie zostało odrzucone domain_validator: invalid_domain: nie jest prawidłową nazwą domeny errors: @@ -1258,6 +1306,9 @@ pl: reply: proceed: Przejdź do dodawania odpowiedzi prompt: 'Chcesz odpowiedzieć na ten wpis:' + reports: + errors: + invalid_rules: nie odwołuje się do prawidłowych reguł scheduled_statuses: over_daily_limit: Przekroczyłeś(-aś) limit %{limit} zaplanowanych wpisów na ten dzień over_total_limit: Przekroczyłeś(-aś) limit %{limit} zaplanowanych wpisów @@ -1536,6 +1587,8 @@ pl: recovery_instructions_html: Jeżeli kiedykolwiek utracisz dostęp do telefonu, możesz wykorzystać jeden z kodów zapasowych, aby odzyskać dostęp do konta. <strong>Trzymaj je w bezpiecznym miejscu</strong>. Na przykład, wydrukuj je i przechowuj z ważnymi dokumentami. webauthn: Klucze bezpieczeństwa user_mailer: + appeal_approved: + action: Przejdź do swojego konta backup_ready: explanation: Zażądałeś pełnej kopii zapasowej konta na Mastodonie. Jest ona dostępna do pobrania! subject: Twoje archiwum jest gotowe do pobrania @@ -1558,7 +1611,6 @@ pl: suspend: Nie możesz już używać Twojego konta, a Twój profil i inne dane nie są już dostępne. Zanim w pełni usuniemy Twoje dane po około 30 dniach, możesz nadal zalogować się, aby uzyskać ich kopię. Zachowamy pewne podstawowe dane, aby zapobiegać obchodzeniu przez Ciebie zawieszenia. get_in_touch: Jeżeli uważasz to za błąd, możesz odpowiedzieć na ten e-mail, aby skontaktować się z prowadzącymi %{instance}. reason: 'Powód:' - review_server_policies: Przejrzyj zasady serwera statuses: 'Wpisy uznane za naruszające wytyczne:' subject: delete_statuses: Twoje wpisy na %{acct} zostały usunięte diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 36f390b0e..547fbabab 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -94,7 +94,6 @@ pt-BR: account_moderation_notes: create: Deixar nota created_msg: Nota de moderação criada com sucesso! - delete: Excluir destroyed_msg: Nota de moderação excluída com sucesso! accounts: add_email_domain_block: Adicionar o domínio de e-mail à lista negra @@ -113,6 +112,7 @@ pt-BR: confirm: Confirmar confirmed: Confirmado confirming: Confirmando + custom: Personalizar delete: Excluir dados deleted: Excluído demote: Rebaixar @@ -204,6 +204,7 @@ pt-BR: silenced: Silenciado statuses: Toots subscribe: Inscrever-se + suspend: Suspender suspended: Banido suspension_irreversible: Os dados desta conta foram excluídos de forma irreversível. Você pode remover a suspensão da conta para torná-la utilizável, mas ela não irá recuperar nenhum dado que ela possuía anteriormente. suspension_reversible_hint_html: A conta foi suspensa e os dados serão totalmente removidos em %{date}. Até lá, a conta pode ser restaurada sem nenhum efeito negativo. Se você deseja remover todos os dados da conta imediatamente, você pode fazer isso abaixo. @@ -424,9 +425,6 @@ pt-BR: silence: silenciado suspend: banido show: - affected_accounts: - one: Uma conta no banco de dados foi afetada - other: "%{count} contas no banco de dados foram afetadas" retroactive: silence: Dessilenciar contas existentes afetadas deste domínio suspend: Remover a suspensão das contas afetadas deste domínio @@ -470,9 +468,6 @@ pt-BR: warning: Aviso delivery_available: Envio disponível empty: Nenhum domínio encontrado. - known_accounts: - one: "%{count} conta conhecida" - other: "%{count} contas conhecidas" moderation: all: Todos limited: Limitados @@ -541,7 +536,6 @@ pt-BR: other_description_html: Veja mais opções para controlar o comportamento da conta e personalizar a comunicação com a conta reportada. silence_description_html: O perfil será visível apenas para aqueles que já o seguem ou que o procuram manualmente, limitando severamente seu alcance. Pode ser sempre revertido. suspend_description_html: O perfil e todo o seu conteúdo ficarão inacessíveis até que seja eventualmente excluído. Interagir com a conta será impossível. Reversível dentro de 30 dias. - actions_description_html: 'Se remover o conteúdo ofensivo acima for insuficiente:' add_to_report: Adicionar mais ao relatório are_you_sure: Você tem certeza? assign_to_self: Pegar @@ -553,7 +547,7 @@ pt-BR: none: Nenhum comment_description_html: 'Para fornecer mais informações, %{name} escreveu:' created_at: Denunciado - delete_and_resolve: Apagar e resolver + delete_and_resolve: Excluir mensagens forwarded: Encaminhados forwarded_to: Encaminhado para %{domain} mark_as_resolved: Marcar como resolvido @@ -567,12 +561,14 @@ pt-BR: placeholder: Descreva que ações foram tomadas, ou quaisquer outras atualizações relacionadas… title: Notas notes_description_html: Visualize e deixe anotações para outros moderadores e para o seu "eu" do futuro + quick_actions_description_html: 'Tome uma ação rápida ou role para baixo para ver o conteúdo relatado:' reopen: Reabrir denúncia report: 'Denúncia #%{id}' reported_account: Conta denunciada reported_by: Denunciada por resolved: Resolvido resolved_msg: Denúncia resolvida com sucesso! + skip_to_actions: Pular para ações status: Situação statuses: Conteúdo denunciado statuses_description_html: Conteúdo Ofensivo será citado em comunicação com a conta relatada @@ -683,6 +679,9 @@ pt-BR: destroyed_msg: Upload do site excluído com sucesso! statuses: back_to_account: Voltar para página da conta + back_to_report: Voltar às denúncias + batch: + report: Denunciar deleted: Excluídos media: title: Mídia @@ -732,9 +731,6 @@ pt-BR: trending_rank: 'Em alta #%{rank}' usable: Pode ser usado usage_comparison: Usado %{today} vezes hoje, em comparação com %{yesterday} de ontem - used_by_over_week: - one: Usado por uma pessoa na última semana - other: Usado por %{count} pessoas na última semana title: Em alta warning_presets: add_new: Adicionar novo @@ -826,7 +822,6 @@ pt-BR: status: account_status: Status da conta confirming: Confirmação por e-mail pendente. - functional: Sua conta está totalmente operacional. pending: Sua solicitação está com revisão pendente por parte de nossa equipe. Você receberá um e-mail se ela for aprovada. redirecting_to: Sua conta está inativa porque atualmente está redirecionando para %{acct}. too_fast: O formulário foi enviado muito rapidamente, tente novamente. @@ -1462,7 +1457,6 @@ pt-BR: sensitive: A partir de agora, todos os seus arquivos de mídia enviados serão marcados como confidenciais e escondidos por trás de um aviso de clique. get_in_touch: Se você acredita que isso é um erro, você pode responder a este e-mail para entrar em contato com a equipe de %{instance}. reason: 'Motivo:' - review_server_policies: Revisar as políticas da instância subject: disable: Sua conta %{acct} foi bloqueada none: Aviso para %{acct} diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index de301e149..0626b8be9 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -94,7 +94,6 @@ pt-PT: account_moderation_notes: create: Criar nota created_msg: Nota de moderação criada com sucesso! - delete: Eliminar destroyed_msg: Nota de moderação excluída com sucesso! accounts: add_email_domain_block: Adicionar o domínio de e-mail à lista negra @@ -163,6 +162,11 @@ pt-PT: not_subscribed: Não inscrito pending: Pendente de revisão perform_full_suspension: Fazer suspensão completa + previous_strikes: Punições anteriores + previous_strikes_description_html: + one: Esta conta tem <strong>1</strong> punição. + other: Esta conta tem <strong>%{count}</strong> punições. + zero: Esta conta está <strong>em situação regular</strong>. promote: Promover protocol: Protocolo public: Público @@ -206,6 +210,7 @@ pt-PT: statuses: Status strikes: Punições anteriores subscribe: Inscrever-se + suspend: Suspender suspended: Suspensa suspension_irreversible: Os dados desta conta foram eliminados irreversivelmente. Pode cancelar a suspensão da conta para torná-la utilizável, mas ela não irá recuperar os dados que possuía anteriormente. suspension_reversible_hint_html: A conta foi suspensa e os dados serão totalmente eliminados em %{date}. Até lá, a conta poderá ser recuperada sem quaisquer efeitos negativos. Se deseja eliminar todos os dados desta conta imediatamente, pode fazê-lo em baixo. @@ -226,6 +231,7 @@ pt-PT: whitelisted: Está na lista branca action_logs: action_types: + approve_appeal: Aprovar Recurso approve_user: Aprovar Utilizador assigned_to_self_report: Atribuir Denúncia change_email_user: Alterar E-mail do Utilizador @@ -257,6 +263,7 @@ pt-PT: enable_user: Ativar Utilizador memorialize_account: Memorizar Conta promote_user: Promover Utilizador + reject_appeal: Rejeitar Recurso reject_user: Rejeitar Utilizador remove_avatar_user: Remover Imagem de Perfil reopen_report: Reabrir Denúncia @@ -275,6 +282,7 @@ pt-PT: update_domain_block: Atualizar Bloqueio de Domínio update_status: Atualizar Estado actions: + approve_appeal_html: "%{name} aprovou recurso da decisão de moderação de %{target}" approve_user_html: "%{name} aprovou a inscrição de %{target}" assigned_to_self_report_html: "%{name} atribuiu a denúncia %{target} a si próprio" change_email_user_html: "%{name} alterou o endereço de e-mail do utilizador %{target}" @@ -306,6 +314,7 @@ pt-PT: enable_user_html: "%{name} ativou o acesso para o utilizador %{target}" memorialize_account_html: "%{name} transformou a conta de %{target} em um memorial" promote_user_html: "%{name} promoveu o utilizador %{target}" + reject_appeal_html: "%{name} rejeitou recurso da decisão de moderação de %{target}" reject_user_html: "%{name} rejeitou a inscrição de %{target}" remove_avatar_user_html: "%{name} removeu a imagem de perfil de %{target}" reopen_report_html: "%{name} reabriu a denúncia %{target}" @@ -384,14 +393,17 @@ pt-PT: media_storage: Armazenamento de media new_users: novos utilizadores opened_reports: denúncias abertas + pending_appeals_html: + one: "<strong>%{count}</strong> recurso pendente" + other: "<strong>%{count}</strong> recursos pendentes" pending_reports_html: - one: "<strong>1</strong> denúncia pendente" - other: "<strong>%{count}</strong> denúncias pendentes" + one: "<strong>%{count}</strong> denuncia pendente" + other: "<strong>%{count}</strong> denuncias pendentes" pending_tags_html: - one: "<strong>1</strong> hashtag pendente" + one: "<strong>%{count}</strong> hashtag pendente" other: "<strong>%{count}</strong> hashtags pendentes" pending_users_html: - one: "<strong>1</strong> utilizador pendente" + one: "<strong>%{count}</strong> utilizador pendente" other: "<strong>%{count}</strong> utilizadores pendentes" resolved_reports: denúncias resolvidas software: Software @@ -401,6 +413,10 @@ pt-PT: top_languages: Principais idiomas activos top_servers: Servidores mais activos website: Website + disputes: + appeals: + empty: Nenhum recurso encontrado. + title: Recursos domain_allows: add_new: Colocar domínio na lista branca created_msg: Domínio foi adicionado à lista branca com sucesso @@ -439,8 +455,9 @@ pt-PT: suspend: suspenso show: affected_accounts: - one: Uma conta na base de dados afectada - other: "%{count} contas na base de dados afectadas" + one: Uma conta na base de dados afetada + other: "%{count} contas na base de dados afetadas" + zero: Nenhuma conta na base de dados é afetada retroactive: silence: Não silenciar contas afetadas existentes deste domínio suspend: Não suspender todas as contas existentes nesse domínio @@ -494,6 +511,7 @@ pt-PT: known_accounts: one: "%{count} conta conhecida" other: "%{count} contas conhecidas" + zero: Nenhuma conta conhecida moderation: all: Todas limited: Limitadas @@ -560,10 +578,12 @@ pt-PT: action_log: Registo de auditoria action_taken_by: Ação tomada por actions: + delete_description_html: As publicações denunciadas serão eliminadas e uma punição será registada para ajudá-lo a escalar ações em futuras infrações pela mesma conta. other_description_html: Ver mais opções para controlar o comportamento da conta e personalizar a comunicação para a conta denunciada. + resolve_description_html: Nenhuma ação será tomada contra a conta denunciada, nenhuma punição será registada, e a denuncia será fechada. silence_description_html: O perfil será visível apenas para aqueles que já o seguem ou o procurem manualmente, limitando severamente o seu alcance. Pode sempre ser revertido. suspend_description_html: O perfil e todo o seu conteúdo tornar-se-ão inacessíveis até serem eventualmente apagados. A interacção com a conta será impossível. Reversível no prazo de 30 dias. - actions_description_html: 'Se a remoção do conteúdo ofensivo acima for insuficiente:' + actions_description_html: Decida a ação a tomar para resolver esta denúncia. Se decidir por uma ação punitiva contra a conta denunciada, um e-mail de notificação será enviado, excetuando quando selecionada a categoria <strong>Spam</strong>. add_to_report: Adicionar mais à denúncia are_you_sure: Tem a certeza? assign_to_self: Atribuída a mim @@ -575,7 +595,7 @@ pt-PT: none: Nenhum comment_description_html: 'Para fornecer mais informações, %{name} escreveu:' created_at: Denunciado - delete_and_resolve: Apagar e resolver + delete_and_resolve: Eliminar publicações forwarded: Encaminhado forwarded_to: Encaminhado para %{domain} mark_as_resolved: Marcar como resolvido @@ -589,12 +609,14 @@ pt-PT: placeholder: Descreve as ações que foram tomadas ou quaisquer outras atualizações relacionadas... title: Notas notes_description_html: Visualize e deixe anotações para outros moderadores e para sí no futuro + quick_actions_description_html: 'Tome uma ação rápida ou role para baixo para ver o conteúdo denunciado:' reopen: Reabrir denúncia report: 'Denúncia #%{id}' reported_account: Conta denunciada reported_by: Denunciado por resolved: Resolvido resolved_msg: Denúncia resolvida com sucesso! + skip_to_actions: Passar para as ações status: Estado statuses: Conteúdo denunciado statuses_description_html: O conteúdo ofensivo será citado na comunicação com a conta denunciada @@ -715,6 +737,16 @@ pt-PT: no_status_selected: Nenhum estado foi alterado porque nenhum foi selecionado title: Estado das contas with_media: Com media + strikes: + actions: + delete_statuses: "%{name} eliminou a publicação de %{target}" + disable: "%{name} congelou a conta de %{target}" + none: "%{name} enviou uma advertência a %{target}" + sensitive: "%{name} marcou a conta de %{target} como sensível" + silence: "%{name} limitou a conta de %{target}" + suspend: "%{name} suspendeu a conta de %{target}" + appeal_approved: Recorrido + appeal_pending: Recurso pendente system_checks: database_schema_check: message_html: Existem migrações de base de dados pendentes. Por favor, execute-as para garantir que o aplicativo se comporte como esperado @@ -739,6 +771,7 @@ pt-PT: shared_by_over_week: one: Partilhado por uma pessoa na última semana other: Partilhado por %{count} pessoas na última semana + zero: Partilhado por ninguém na última semana title: Links em destaque usage_comparison: Partilhado %{today} vezes hoje, em comparação com %{yesterday} ontem pending_review: Pendente de revisão @@ -768,6 +801,7 @@ pt-PT: used_by_over_week: one: Utilizada por uma pessoa na última semana other: Utilizada por %{count} pessoas na última semana + zero: Utilizada por ninguém na última semana title: Tendências warning_presets: add_new: Adicionar novo @@ -776,6 +810,17 @@ pt-PT: empty: Ainda não definiu nenhum aviso predefinido. title: Gerir os avisos predefinidos admin_mailer: + new_appeal: + actions: + delete_statuses: para elimintar as suas publicações + disable: para congelar a sua conta + none: uma advertência + sensitive: marcação da sua conta como sensível + silence: limitação da sua conta + suspend: suspensão da sua conta + body: "%{target} está a recorrer de uma decisão de moderação de %{action_taken_by} a %{date}, que consistiu em %{type}. Escreveu:" + next_steps: Pode aprovar o recurso para reverter a decisão de moderação, ou ignorá-lo. + subject: "%{username} está a recorrer da decisão de moderação em %{instance}" new_pending_account: body: Em baixo, estão os detalhes da nova conta. Pode aprovar ou rejeitar esta inscrição. subject: Nova conta para revisão em %{instance} (%{username}) @@ -866,7 +911,6 @@ pt-PT: status: account_status: Estado da conta confirming: A aguardar que conclua a confirmação do e-mail. - functional: A sua conta está totalmente operacional. pending: A sua inscrição está pendente de revisão pela nossa equipa. Isso pode demorar algum tempo. Receberá um e-mail se a sua conta for aprovada. redirecting_to: A sua conta está inativa porque está atualmente a ser redirecionada para %{acct}. too_fast: Formulário enviado muito rapidamente, tente novamente. @@ -932,6 +976,32 @@ pt-PT: directory: Dirétorio de perfil explanation: Descobre utilizadores com base nos seus interesses explore_mastodon: Explorar %{title} + disputes: + strikes: + action_taken: Ação tomada + appeal: Recorrer + appeal_approved: Esta punição foi alvo de recurso, bem sucedido, pelo que já não é válida + appeal_rejected: O recurso foi rejeitado + appeal_submitted_at: Recurso submetido + appealed_msg: O seu recurso foi submetido. Se ele for aprovado, será notificado. + appeals: + submit: Submeter recurso + associated_report: Denúncia associada + created_at: Data + recipient: Endereçado a + status: 'Publicação #%{id}' + status_removed: Publicação já eliminada do sistema + title: "%{action} de %{date}" + title_actions: + delete_statuses: Remoção de publicação + disable: Congelamento da conta + none: Advertência + sensitive: Marcação da conta como sensível + silence: Limitação da conta + suspend: Suspensão da conta + your_appeal_approved: O seu recurso foi aprovado + your_appeal_pending: Submeteu um recurso + your_appeal_rejected: O seu recurso foi rejeitado domain_validator: invalid_domain: não é um nome de domínio válido errors: @@ -1143,6 +1213,8 @@ pt-PT: title: Nova partilha status: subject: "%{name} acabou de publicar" + update: + subject: "%{name} editou uma publicação" notifications: email_events: Eventos para notificações por e-mail email_events_hint: 'Selecione os eventos para os quais deseja receber notificações:' @@ -1224,6 +1296,9 @@ pt-PT: reply: proceed: Prosseguir com resposta prompt: 'Queres responder a esta publicação:' + reports: + errors: + invalid_rules: não faz referência a regras válidas scheduled_statuses: over_daily_limit: Excedeste o limite de %{limit} publicações agendadas para esse dia over_total_limit: Tu excedeste o limite de %{limit} publicações agendadas @@ -1306,6 +1381,7 @@ pt-PT: other: "%{count} vídeos" boosted_from_html: Partilhadas de %{acct_link} content_warning: 'Aviso de conteúdo: %{warning}' + default_language: Mesmo do idioma da interface disallowed_hashtags: one: 'continha uma hashtag proibida: %{tags}' other: 'continha as hashtags proibidas: %{tags}' @@ -1489,6 +1565,15 @@ pt-PT: recovery_instructions_html: Se tu alguma vez perderes o teu smartphone, to poderás usar um dos códigos de recuperação para voltares a ter acesso à tua conta. <strong>Mantém os códigos de recuperação seguros</strong>. Por exemplo, tu podes imprimi-los e guardá-los junto a outros documentos importantes. webauthn: Chaves de segurança user_mailer: + appeal_approved: + action: Ir para a sua conta + explanation: O recurso à punição contra a sua conta de %{strike_date}, o qual submeteu a %{appeal_date}, foi aprovado. A sua conta encontra-se novamente em situação regular. + subject: O seu recurso de %{date} foi aprovado + title: Recurso aprovado + appeal_rejected: + explanation: O recurso à punição contra a sua conta de %{strike_date}, o qual submeteu a %{appeal_date}, foi rejeitado. + subject: O seu recurso de %{date} foi rejeitado + title: Recurso rejeitado backup_ready: explanation: Pediste uma cópia completa da tua conta Mastodon. Ela já está pronta para descarregares! subject: O teu arquivo está pronto para descarregar @@ -1500,6 +1585,8 @@ pt-PT: subject: Por favor, confirme a tentativa de acesso title: Tentativa de acesso warning: + appeal: Submeter um recurso + appeal_description: Se acredita que isso é um erro, pode submeter um recurso para a equipa de %{instance}. categories: spam: Spam violation: O conteúdo infringe as seguintes diretrizes da comunidade @@ -1511,7 +1598,6 @@ pt-PT: suspend: Não pode mais utilizar a sua conta, e o seu perfil e outros dados já não se encontram acessíveis. Poderá ainda iniciar sessão para solicitar uma cópia dos seus dados até os mesmos serem totalmente removidos em cerca de 30 dias, porém reteremos alguns dados básicos para o impedir evitar a suspensão. get_in_touch: Se acredita tratar-se de um erro, pode responder a este e-mail para entrar em contacto com os colaboradores de %{instance}. reason: 'Motivo:' - review_server_policies: Reveja a política da instância statuses: 'Publicações que foram consideradas em infracção:' subject: delete_statuses: As suas publicações em %{acct} foram removidas diff --git a/config/locales/ro.yml b/config/locales/ro.yml index a3d25c9b9..daed79c8c 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -98,7 +98,6 @@ ro: account_moderation_notes: create: Lasă o notă created_msg: Notă de moderare creată cu succes! - delete: Șterge destroyed_msg: Notă de moderare distrusă cu succes! accounts: add_email_domain_block: Domeniu de e-mail în lista neagră @@ -335,7 +334,6 @@ ro: status: account_status: Starea contului confirming: Se așteaptă finalizarea confirmării prin e-mail. - functional: Contul dvs. este complet operațional. pending: Cererea dvs. este în curs de revizuire de către personalul nostru. Este posibil să dureze ceva timp. Veți primi un e-mail dacă cererea dvs. este aprobată. redirecting_to: Contul dvs. este inactiv deoarece în prezent se redirecționează către %{acct}. trouble_logging_in: Probleme la conectare? @@ -712,7 +710,6 @@ ro: subject: Arhiva ta este gata pentru descărcare title: Preluare arhivă warning: - review_server_policies: Revizuiește politicile serverului subject: disable: Contul tău %{acct} a fost înghețat none: Avertizare pentru %{acct} diff --git a/config/locales/ru.yml b/config/locales/ru.yml index bdcab4f83..f99d8962a 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -102,7 +102,6 @@ ru: account_moderation_notes: create: Создать created_msg: Заметка модератора успешно создана! - delete: Удалить destroyed_msg: Заметка модератора успешно удалена! accounts: add_email_domain_block: Заблокировать e-mail домен @@ -171,6 +170,10 @@ ru: not_subscribed: Не подписаны pending: Ожидает рассмотрения perform_full_suspension: Блокировка + previous_strikes: Предыдущие замечания + previous_strikes_description_html: + one: У этой учетной записи <strong>одно</strong> замечание. + other: У этой учетной записи <strong>%{count}</strong> замечания. promote: Повысить protocol: Протокол public: Публичный @@ -212,8 +215,9 @@ ru: silence: Скрытие silenced: Заглушен statuses: Посты - strikes: Предыдущие предупреждения + strikes: Предыдущие замечания subscribe: Подписаться + suspend: Заблокировать suspended: Заморожен suspension_irreversible: Данные этой учётной записи были необратимо удалены. Вы можете разблокировать учетную запись, чтобы сделать её доступной, но это не восстановит ранее имевшиеся в ней данные. suspension_reversible_hint_html: Учётная запись была заблокирована, и данные будут полностью удалены %{date}. До этого момента её можно восстановить без каких-либо неприятных последствий. Если вы хотите немедленно удалить все данные учётной записи, вы можете сделать это ниже. @@ -234,6 +238,7 @@ ru: whitelisted: В белом списке action_logs: action_types: + approve_appeal: Одобрить обжалование approve_user: Утвердить assigned_to_self_report: Присвоение жалоб change_email_user: Изменение e-mail пользователей @@ -264,6 +269,7 @@ ru: enable_user: Разморозка пользователей memorialize_account: Присвоение пользователям статуса «мемориала» promote_user: Повышение пользователей + reject_appeal: Отклонить обжалование reject_user: Отклонить remove_avatar_user: Удаление аватаров reopen_report: Возобновление жалоб @@ -391,21 +397,6 @@ ru: media_storage: Медиа файлы new_users: новые пользователи opened_reports: жалоб открыто - pending_reports_html: - few: "<strong>%{count}</strong> жалобы к рассмотрению" - many: "<strong>%{count}</strong> жалоб к рассмотрению" - one: "<strong>%{count}</strong> жалоба к рассмотрению" - other: "<strong>%{count}</strong> жалобы к рассмотрению" - pending_tags_html: - few: "<strong>%{count}</strong> хэштега к рассмотрению" - many: "<strong>%{count}</strong> хэштегов к рассмотрению" - one: "<strong>%{count}</strong> хэштег к рассмотрению" - other: "<strong>%{count}</strong> хэштега к рассмотрению" - pending_users_html: - few: "<strong>%{count}</strong> регистрации к рассмотрению" - many: "<strong>%{count}</strong> регистраций к рассмотрению" - one: "<strong>%{count}</strong> регистрация к рассмотрению" - other: "<strong>%{count}</strong> регистрации к рассмотрению" resolved_reports: жалоб решено software: Программное обеспечение sources: Источники регистрации @@ -414,6 +405,10 @@ ru: top_languages: Самые активные языки top_servers: Самые активные серверы website: Веб-сайт + disputes: + appeals: + empty: Обжалования не найдены. + title: Обжалования domain_allows: add_new: Внести в белый список created_msg: Домен добавлен в белый список @@ -456,11 +451,6 @@ ru: silence: скрывается suspend: заблокирован show: - affected_accounts: - few: "%{count} учетных записей в базе данных затронуты" - many: "%{count} учетных записей в базе данных затронуты" - one: Влияет на одну учётную запись в базе данных - other: "%{count} учетных записей в базе данных затронуты" retroactive: silence: Убрать скрытие постов учётных записей с этого узла suspend: Снять блокировку со всех существующих учётных записей этого домена @@ -514,10 +504,9 @@ ru: destroyed_msg: Данные для домена %{domain} поставлены в очередь на удаление. empty: Домены не найдены. known_accounts: - few: "%{count} известные учётные записи" - many: "%{count} известных учётных записей" one: "%{count} известная учётная запись" other: "%{count} известных учётных записей" + zero: Нет известных учётных записей moderation: all: Все limited: Ограниченные @@ -586,9 +575,9 @@ ru: action_log: Журнал событий action_taken_by: 'Действие предпринято:' actions: + resolve_description_html: Никаких действий не будет выполнено относительно доложенного содержимого. Жалоба будет закрыта. silence_description_html: Профиль будет просматриваем только пользователями, которые уже подписаны на него, либо открыли его вручную. Это действие можно отменить в любой момент. suspend_description_html: Профиль и всё опубликованное в нём содержимое станут недоступны, пока в конечном итоге учётная запись не будет удалена. Пользователи не смогут взаимодействовать с этой учётной записью. Это действие можно отменить в течение 30 дней. - actions_description_html: 'Если удаления вышеуказанного содержимого недостаточно:' add_to_report: Прикрепить ещё are_you_sure: Вы уверены? assign_to_self: Назначить себе @@ -600,7 +589,7 @@ ru: none: Нет comment_description_html: 'В дополнение, %{name} добавил(а) следующий комментарий:' created_at: Создана - delete_and_resolve: Отметить решённой и удалить + delete_and_resolve: Удалить посты forwarded: Переслано forwarded_to: Переслано на %{domain} mark_as_resolved: Отметить как решённую @@ -620,6 +609,7 @@ ru: reported_by: Отправитель жалобы resolved: Решённые resolved_msg: Жалоба обработана, спасибо! + skip_to_actions: Перейти к действиям status: Статус statuses: Содержимое относящееся к жалобе statuses_description_html: Нарушающее правила содержимое будет процитировано при коммуникации с фигурирующим в жалобе аккаунтом @@ -740,6 +730,8 @@ ru: no_status_selected: Ничего не изменилось, так как ни один пост не был выделен title: Посты пользователя with_media: С файлами + strikes: + appeal_pending: Обжалование в обработке system_checks: database_schema_check: message_html: Есть отложенные миграции базы данных. Запустите их, чтобы убедиться, что приложение работает должным образом @@ -760,11 +752,6 @@ ru: allow: Разрешить ссылку allow_provider: Разрешить издание disallow_provider: Отклонить издание - shared_by_over_week: - few: "%{count} человека поделились за последнюю неделю" - many: "%{count} человек поделились за последнюю неделю" - one: "%{count} человек поделился за последнюю неделю" - other: "%{count} человека поделилось за последнюю неделю" title: Актуальные ссылки pending_review: Ожидает рассмотрения preview_card_providers: @@ -775,6 +762,8 @@ ru: tags: dashboard: tag_accounts_measure: уникальных использований + tag_languages_dimension: Самые популярные языки + tag_servers_dimension: Самые популярные серверы tag_uses_measure: всего использований listable: Может предлагаться not_listable: Не будет предлагаться @@ -873,7 +862,6 @@ ru: status: account_status: Статус учётной записи confirming: Ожидание подтверждения e-mail. - functional: Ваша учётная запись в полном порядке. pending: Ваша заявка ожидает одобрения администраторами, это может занять немного времени. Вы получите письмо, как только заявку одобрят. redirecting_to: Ваша учётная запись деактивированна, потому что вы настроили перенаправление на %{acct}. too_fast: Форма отправлена слишком быстро, попробуйте еще раз. @@ -939,6 +927,19 @@ ru: directory: Каталог профилей explanation: Находите пользователей по интересам explore_mastodon: Изучайте %{title} + disputes: + strikes: + action_taken: Предпринятые меры + appeal_approved: Это замечание было успешно обжаловано и более не действительно + appeals: + submit: Подать обжалование + created_at: Дата + recipient: Адресовано + status: 'Пост #%{id}' + title: "%{action} от %{date}" + your_appeal_approved: Ваша апелляция одобрена + your_appeal_pending: Вы подали апелляцию + your_appeal_rejected: Ваша апелляция отклонена domain_validator: invalid_domain: не является корректным доменным именем errors: @@ -1157,6 +1158,8 @@ ru: title: Новое продвижение status: subject: "%{name} только что запостил(а)" + update: + subject: "%{name} изменил(а) пост" notifications: email_events: События для e-mail уведомлений email_events_hint: 'Выберите события, для которых вы хотели бы получать уведомления:' @@ -1295,7 +1298,7 @@ ru: authorized_apps: Приложения back: Назад в Mastodon delete: Удаление учётной записи - development: Разработка + development: Разработчикам edit_profile: Изменить профиль export: Экспорт данных featured_tags: Особенные хэштеги @@ -1515,6 +1518,13 @@ ru: recovery_instructions_html: 'Пожалуйста, сохраните коды ниже в надёжном месте: они понадобятся, чтобы войти в учётную запись, если вы потеряете доступ к своему смартфону. Вы можете вручную переписать их, распечатать и спрятать среди важных документов или, например, в любимой книжке. <strong>Каждый код действителен только один раз</strong>.' webauthn: Ключи безопасности user_mailer: + appeal_approved: + action: Перейти к своему профилю + subject: Ваша апелляция от %{date} была одобрена + title: Апелляция одобрена + appeal_rejected: + subject: Ваша апелляция от %{date} отклонена + title: Апелляция отклонена backup_ready: explanation: Вы запросили архив всех данных вашей учётной записи Mastodon. Что ж, он готов к скачиванию. subject: Ваш архив готов к загрузке @@ -1526,6 +1536,7 @@ ru: subject: Пожалуйста, подтвердите попытку входа title: Попытка входа warning: + appeal: Подать апелляцию categories: spam: Спам violation: Содержимое нарушает следующие правила сообщества @@ -1537,7 +1548,6 @@ ru: suspend: Вы больше не сможете использовать эту учётную запись и ваш профиль более недоступен к просмотру. Вы по-прежнему можете войти в учётную запись, чтобы запросить выгрузку своих данных, до тех пор, пока они не будут удалены спустя 30 дней (за исключением информации, которая не позволит вам обойти эту блокировку). get_in_touch: Если вы считаете, что это ошибка, вы можете ответить на это сообщение или связаться с руководством %{instance}. reason: 'Причина:' - review_server_policies: Посмотреть правила сервера statuses: 'Следующие публикации были отмечены как нарушающие правила:' subject: delete_statuses: Опубликованные вами с учётной записи %{acct} посты были удалены diff --git a/config/locales/sc.yml b/config/locales/sc.yml index 221943217..ce9d35ac3 100644 --- a/config/locales/sc.yml +++ b/config/locales/sc.yml @@ -94,7 +94,6 @@ sc: account_moderation_notes: create: Lassa una nota created_msg: As creadu una nota de moderatzione. - delete: Cantzella destroyed_msg: As cantzelladu una nota de moderatzione. accounts: add_email_domain_block: Bloca domìniu de posta eletrònica @@ -393,9 +392,6 @@ sc: silence: a sa muda suspend: suspèndidu show: - affected_accounts: - one: Unu contu de sa base de datos implicadu - other: "%{count} contos de sa base de datos implicados" retroactive: silence: Boga de is contos a sa muda is contos de custu domìniu implicados suspend: Boga sa suspensione de is contos de custu domìniu implicados @@ -427,9 +423,6 @@ sc: by_domain: Domìniu delivery_available: Sa cunsigna est a disponimentu empty: Perunu domìniu agatadu. - known_accounts: - one: "%{count} contu connòschidu" - other: "%{count} contos connòschidos" moderation: all: Totus limited: Limitadas @@ -725,7 +718,6 @@ sc: status: account_status: Istadu de su contu confirming: Isetende chi sa posta eletrònica siat cumpletada. - functional: Su contu tuo est operativu. pending: Sa dimanda tua est in protzessu de revisione dae su personale nostru. Podet serbire unu pagu de tempus. As a retzire unu messàgiu eletrònicu si sa dimanda est aprovada. redirecting_to: Su contu tuo est inativu pro ite in die de oe est torrende a indiritzare a %{acct}. too_fast: Formulàriu imbiadu tropu a lestru, torra a proare. @@ -1316,7 +1308,6 @@ sc: subject: Cunfirma su tentativu de identificatzione title: Tentativu de identificatzione warning: - review_server_policies: Revisiona sas polìticas de su serbidore subject: disable: Su contu tuo %{acct} est istadu cungeladu none: Avisu pro %{acct} diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml index b2dacbf24..0f21493c1 100644 --- a/config/locales/simple_form.ar.yml +++ b/config/locales/simple_form.ar.yml @@ -10,7 +10,7 @@ ar: text: بإمكانك استخدام نفس القواعد التي نجدها في التبويقات كعناوين الروابط والوسوم والإشارات title: اختياري. غير مرئي للمُستَلِم admin_account_action: - include_statuses: سيرى المستخدم أي مِن التبويقات تسببت في إجراء الإشراف أو التحذير + include_statuses: سيرى المستخدم أي المنشورات تسببت في إجراء الإشراف أو التحذير send_email_notification: سوف يتلقى المستخدم رسالة تُفسِّر ما حدث على حسابه text_html: اختياري، يمكنك استخدام بناء التبويق. يمكنك <a href="%{path}">إضافة إعدادات تحذير مسبقة</a> لتوفير الوقت type_html: اختر ما تود إجراؤه على <strong>%{acct}</strong> @@ -41,20 +41,20 @@ ar: fields: يُمكنك عرض 4 عناصر على شكل جدول في صفحتك التعريفية header: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير %{size}. سيتم تصغيره إلى %{dimensions}px inbox_url: نسخ العنوان الذي تريد استخدامه مِن صفحة الاستقبال للمُرحَّل - irreversible: التبويقات التي تم تصفيتها ستختفي لا محالة حتى و إن تمت إزالة عامِل التصفية لاحقًا + irreversible: المنشورات التي تم تصفيتها ستختفي لا محالة حتى و إن تمت إزالة عامِل التصفية لاحقًا locale: لغة واجهة المستخدم و الرسائل الإلكترونية و الإشعارات locked: يتطلب منك الموافقة يدويا على طلبات المتابعة password: يُنصح باستخدام 8 أحرف على الأقل phrase: سوف يتم العثور عليه مهما كان نوع النص أو حتى و إن كان داخل الويب فيه تحذير عن المحتوى scopes: ما هي المجالات المسموح بها في التطبيق ؟ إن قمت باختيار أعلى المجالات فيمكنك الاستغناء عن الخَيار اليدوي. - setting_aggregate_reblogs: لا تقم بعرض المشارَكات الجديدة لتبويقات قد قُمتَ بمشاركتها سابقا (هذا الإجراء يعني المشاركات الجديدة فقط التي تلقيتَها) + setting_aggregate_reblogs: لا تقم بعرض المشارَكات الجديدة لمنشورات قد قُمتَ بمشاركتها سابقا (هذا الإجراء يعني المشاركات الجديدة فقط التي تلقيتَها) setting_default_sensitive: تُخفى الوسائط الحساسة تلقائيا ويمكن اظهارها عن طريق النقر عليها setting_display_media_default: إخفاء الوسائط المُعيَّنة كحساسة setting_display_media_hide_all: إخفاء كافة الوسائط دائمًا setting_display_media_show_all: دائمًا عرض الوسائط المُعيَّنة كحساسة setting_hide_network: الحسابات التي تُتابعها و التي تُتابِعك على حد سواء لن تُعرَض على صفحتك التعريفية setting_noindex: ذلك يؤثر على صفحتك التعريفية وصفحات المنشورات - setting_show_application: يتم عرض اسم التطبيق الذي تستخدمه عند التبويق في العرض المفصّل لتبوبيقاتك + setting_show_application: سيُعرَض اسم التطبيق الذي تستخدمه عند النشر في العرض المفصّل لمنشوراتك setting_use_blurhash: الألوان التدرّجية مبنية على ألوان المرئيات المخفية ولكنها تحجب كافة التفاصيل setting_use_pending_items: إخفاء تحديثات الخط وراء نقرة بدلًا مِن التمرير التلقائي للتدفق username: اسم المستخدم الخاص بك سوف يكون فريدا مِن نوعه على %{domain} @@ -88,7 +88,7 @@ ar: tag: name: يمكنك فقط تغيير غلاف الحروف ، على سبيل المثال ، لجعلها أكثر قابلية للقراءة user: - chosen_languages: لن تظهر على الخيوط العمومية إلّا التبويقات المنشورة في اللغات المختارة + chosen_languages: إن تم اختيارها، فلن تظهر على الخيوط العامة إلّا الرسائل المنشورة في تلك اللغات labels: account: fields: @@ -102,7 +102,7 @@ ar: text: نموذج نصي title: العنوان admin_account_action: - include_statuses: أدرج التبويقات التي تم الإبلاغ عنها ضمن الرسالة الإلكترونية + include_statuses: أدرج المنشورات التي تم الإبلاغ عنها ضمن الرسالة الإلكترونية send_email_notification: إشعار المستخدِم عبر البريد الإلكتروني text: تحذير مخصص type: الإجراء @@ -149,22 +149,22 @@ ar: setting_advanced_layout: تمكين واجهة الويب المتقدمة setting_aggregate_reblogs: جمع الترقيات في خيوط زمنية setting_auto_play_gif: تشغيل تلقائي لِوَسائط جيف المتحركة - setting_boost_modal: إظهار مربع حوار للتأكيد قبل ترقية أي تبويق - setting_crop_images: قص الصور في التبويقات غير الموسعة إلى 16x9 + setting_boost_modal: إظهار مربع حوار التأكيد قبل إعادة مشاركة أي منشور + setting_crop_images: قص الصور في المنشورات غير الموسعة إلى 16x9 setting_default_language: لغة النشر setting_default_privacy: خصوصية المنشور setting_default_sensitive: اعتبر الوسائط دائما كمحتوى حساس - setting_delete_modal: إظهار مربع حوار للتأكيد قبل حذف أي تبويق + setting_delete_modal: إظهار مربع حوار التأكيد قبل حذف أي منشور setting_disable_swiping: تعطيل حركات التمرير setting_display_media: عرض الوسائط setting_display_media_default: افتراضي setting_display_media_hide_all: إخفاء الكل setting_display_media_show_all: عرض الكل - setting_expand_spoilers: توسيع التبويقات التي تحتوي على تحذيرات عن المحتوى تلقائيا + setting_expand_spoilers: توسيع المنشورات التي تحتوي على تحذيرات عن المحتوى دائما setting_hide_network: إخفِ شبكتك setting_noindex: الطلب مِن محركات البحث بعدم فهرسة معلوماتك وصفحتك التعريفية الشخصية setting_reduce_motion: تخفيض عدد الصور في الوسائط المتحركة - setting_show_application: اكشف اسم التطبيقات المستخدمة لنشر التبويقات + setting_show_application: اكشف اسم التطبيق المستخدَم لإرسال المنشورات setting_system_font_ui: استخدم الخطوط الافتراضية للنظام setting_theme: سمة الموقع setting_trends: اعرض ما يُتداوَل اليوم @@ -204,15 +204,13 @@ ar: mention: ابعث بريداً إلكترونيًا عندما يُشير إليك أو يذكُرك أحدهم pending_account: ابعث رسالة إلكترونية إن كان هناك حساب جديد بحاجة إلى مراجعة reblog: ابعث بريداً إلكترونيًا عندما يقوم أحدهم بترقية منشورك - report: إرسال رسالة إلكترونية عند تلقّي إبلاغ جديد - trending_tag: ابعث رسالة إلكترونية إن كان هناك وسم متداوَل بحاجة إلى مراجعة rule: text: قانون tag: listable: اسمح لهذا الوسم بالظهور في البحث وفي دليل الصفحات التعريفية name: الوسم trendable: السماح لهذه الكلمة المفتاحية بالظهور تحت المتداوَلة - usable: اسمح للتبويقات باستخدام هذا الوسم + usable: اسمح للمنشورات استخدام هذا الوسم 'no': لا required: mark: "*" diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml index 4f6626bfb..72f85203b 100644 --- a/config/locales/simple_form.ast.yml +++ b/config/locales/simple_form.ast.yml @@ -92,7 +92,6 @@ ast: follow_request: Daquién solicitó siguite mention: Daquién te mentó reblog: Daquién compartió dalgún estáu de to - report: Unvióse un informe nuevu tag: name: Etiqueta 'no': Non diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index f0cb47995..42c241cab 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -27,6 +27,8 @@ ca: scheduled_at: Deixa-ho en blanc per a publicar l’anunci immediatament starts_at: Opcional. En el cas que el teu anunci estigui vinculat a un interval de temps específic text: Pots utilitzar sintaxi d'un tut. Tingues en compte l’espai que l’anunci ocuparà a la pantalla de l’usuari + appeal: + text: Només pots emetre una apel·lació per cada acció defaults: autofollow: Les persones que es registrin a través de la invitació et seguiran automàticament avatar: PNG, GIF o JPG. Màxim %{size}. S'escalarà a %{dimensions}px @@ -119,6 +121,8 @@ ca: scheduled_at: Programa la publicació starts_at: Inici del esdeveniment text: Anunci + appeal: + text: Explica perquè aquesta decisió hauria de ser revertida defaults: autofollow: Convida a seguir el teu compte avatar: Avatar @@ -197,6 +201,7 @@ ca: sign_up_requires_approval: Limitar els registres severity: Regla notification_emails: + appeal: Algú ha apel·lat una decisió de moderació digest: Enviar un resum per correu electrònic favourite: Algú marca com a preferit el teu estat follow: Algú t'ha seguit @@ -204,8 +209,8 @@ ca: mention: Algú t'ha esmentat pending_account: Un nou compte necessita revisió reblog: Algú comparteix el teu estat - report: Es presenta un nou informe - trending_tag: Una etiqueta sense revisar està en tendència + report: Nou informe és emés + trending_tag: Nova tendència requereix revisió rule: text: Norma tag: diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml index c1ccd950b..c6cff10bc 100644 --- a/config/locales/simple_form.co.yml +++ b/config/locales/simple_form.co.yml @@ -197,8 +197,6 @@ co: mention: Mandà un’e-mail quandu qualch’unu mi mintuva pending_account: Mandà un'e-mail quandu un novu contu hà bisognu d'esse valutatu reblog: Mandà un’e-mail quandu qualch’unu sparte i mo statuti - report: Mandà un'e-mail quandu c'hè un novu signalamentu - trending_tag: Mandà un'e-mail quandu un hashtag micca verificatu hè in e tendenze rule: text: Regula tag: diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml index 7c4912eec..57ea417ea 100644 --- a/config/locales/simple_form.cs.yml +++ b/config/locales/simple_form.cs.yml @@ -204,8 +204,6 @@ cs: mention: Někdo vás zmínil pending_account: Je třeba posoudit nový účet reblog: Někdo boostnul váš příspěvek - report: Je odesláno nové hlášení - trending_tag: Nový trend vyžaduje schválení rule: text: Pravidlo tag: diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml index 231b46765..e5ef5661d 100644 --- a/config/locales/simple_form.cy.yml +++ b/config/locales/simple_form.cy.yml @@ -174,8 +174,6 @@ cy: mention: Anfon e-bost pan mae rhywun yn eich crybwyll pending_account: Anfon ebost pan mae cyfrif newydd angen adolygiad reblog: Anfon e-bost pan mae rhywun yn bŵstio eich statws - report: Anfon e-bost pan y cyflwynir adroddiad newydd - trending_tag: Anfonwch e-bost pan fydd hashnod heb ei adolygu yn tueddu tag: listable: Gadewch i'r hashnod hwn ymddangos mewn chwiliadau ac ar y cyfeiriadur proffil name: Hashnod diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml index b42941c32..4d9ad8f3c 100644 --- a/config/locales/simple_form.da.yml +++ b/config/locales/simple_form.da.yml @@ -119,6 +119,8 @@ da: scheduled_at: Planlæg offentliggørelse starts_at: Start af begivenhed text: Bekendtgørelse + appeal: + text: Forklar, hvorfor denne beslutning bør omgøres defaults: autofollow: Invitér til at følge din konto avatar: Profilbillede @@ -197,6 +199,7 @@ da: sign_up_requires_approval: Begræns tilmeldinger severity: Regel notification_emails: + appeal: En moderatorafgørelse er appelleret digest: Send resumé e-mails favourite: Nogen gav dig favoritstatus follow: Nogen begyndte at følge dig @@ -205,7 +208,7 @@ da: pending_account: Ny konto kræver gennemgang reblog: Nogen boostede din status report: Ny anmeldelse er indsendt - trending_tag: Et ikke-gennemgået hashtag trender + trending_tag: Ny tendens kræver revidering rule: text: Regel tag: diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml index 02ac9ce0c..3b5b91ed8 100644 --- a/config/locales/simple_form.de.yml +++ b/config/locales/simple_form.de.yml @@ -27,6 +27,8 @@ de: scheduled_at: Leer lassen um die Ankündigung sofort zu veröffentlichen starts_at: Optional. Falls deine Ankündigung an einen bestimmten Zeitraum gebunden ist text: Du kannst die Toot-Syntax verwenden. Bitte beachte den Platz, den die Ankündigung auf dem Bildschirm des Benutzers einnehmen wird + appeal: + text: Du kannst nur einmal einen Einspruch bei einem Strike einlegen defaults: autofollow: Leute, die sich über deine Einladung registrieren, werden dir automatisch folgen avatar: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert @@ -119,6 +121,8 @@ de: scheduled_at: Veröffentlichung planen starts_at: Beginn des Ereignisses text: Ankündigung + appeal: + text: Erkläre, warum diese Entscheidung rückgängig gemacht werden soll defaults: autofollow: Eingeladene Nutzer sollen dir automatisch folgen avatar: Profilbild @@ -197,6 +201,7 @@ de: sign_up_requires_approval: Anmeldungen begrenzen severity: Regel notification_emails: + appeal: Jemand hat Einspruch an eine Moderatorentscheidung digest: Kurzfassungen über E-Mail senden favourite: E-Mail senden, wenn jemand meinen Beitrag favorisiert follow: E-Mail senden, wenn mir jemand folgt @@ -205,7 +210,7 @@ de: pending_account: E-Mail senden, wenn ein neues Benutzerkonto zur Überprüfung aussteht reblog: E-Mail senden, wenn jemand meinen Beitrag teilt report: E-Mail senden, wenn ein neuer Bericht vorliegt - trending_tag: E-Mail senden, wenn ein ausstehender Hashtag angesagt ist + trending_tag: Neuer Trend muss überprüft werden rule: text: Regel tag: diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml index 0213b7884..ccde10f2a 100644 --- a/config/locales/simple_form.el.yml +++ b/config/locales/simple_form.el.yml @@ -203,8 +203,6 @@ el: mention: Αποστολή email όταν κάποιος σε αναφέρει pending_account: Αποστολή email όταν υπάρχει νέος λογαριασμός για επιθεώρηση reblog: Αποστολή email όταν κάποιος προωθεί τη δημοσίευση σου - report: Αποστολή email όταν υποβάλλεται νέα καταγγελία - trending_tag: Αποστολή email όταν μια μη-εγκεκριμένη ετικέτα γίνεται δημοφιλής rule: text: Κανόνας tag: diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index e7c70e290..9a3718287 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -27,6 +27,8 @@ en: scheduled_at: Leave blank to publish the announcement immediately starts_at: Optional. In case your announcement is bound to a specific time range text: You can use post syntax. Please be mindful of the space the announcement will take up on the user's screen + appeal: + text: You can only appeal a strike once defaults: autofollow: People who sign up through the invite will automatically follow you avatar: PNG, GIF or JPG. At most %{size}. Will be downscaled to %{dimensions}px @@ -119,6 +121,8 @@ en: scheduled_at: Schedule publication starts_at: Start of event text: Announcement + appeal: + text: Explain why this decision should be reversed defaults: autofollow: Invite to follow your account avatar: Avatar @@ -197,6 +201,7 @@ en: sign_up_requires_approval: Limit sign-ups severity: Rule notification_emails: + appeal: Someone appeals a moderator decision digest: Send digest e-mails favourite: Someone favourited your post follow: Someone followed you @@ -204,8 +209,8 @@ en: mention: Someone mentioned you pending_account: New account needs review reblog: Someone boosted your post - report: A new report is submitted - trending_tag: A new trend requires approval + report: New report is submitted + trending_tag: New trend requires review rule: text: Rule tag: diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml index 773df52e3..83861358f 100644 --- a/config/locales/simple_form.eo.yml +++ b/config/locales/simple_form.eo.yml @@ -197,8 +197,6 @@ eo: mention: Sendi retmesaĝon kiam iu mencias vin pending_account: Sendi retmesaĝon kiam nova konto bezonas kontrolon reblog: Sendi retmesaĝon kiam iu diskonigas vian mesaĝon - report: Nova signalo estas sendita - trending_tag: Nekontrolita kradvorto furoras rule: text: Regulo tag: diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml index 2378def50..6026943e7 100644 --- a/config/locales/simple_form.es-AR.yml +++ b/config/locales/simple_form.es-AR.yml @@ -27,6 +27,8 @@ es-AR: scheduled_at: Dejar en blanco para publicar el anuncio inmediatamente starts_at: Opcional. En caso de que tu anuncio esté vinculado a un rango de tiempo específico text: Podés usar sintaxis de mensajes. Por favor, tené en cuenta el espacio que ocupará el anuncio en la pantalla del usuario + appeal: + text: Sólo podés apelar un incumplimiento una vez defaults: autofollow: Los usuarios que se registren mediante la invitación te seguirán automáticamente avatar: 'PNG, GIF o JPG. Máximo: %{size}. Será subescalado a %{dimensions} píxeles' @@ -119,6 +121,8 @@ es-AR: scheduled_at: Programar publicación starts_at: Inicio del evento text: Anuncio + appeal: + text: Explicá por qué esta decisión debería ser revertida defaults: autofollow: Invitar para seguir tu cuenta avatar: Avatar @@ -197,6 +201,7 @@ es-AR: sign_up_requires_approval: Limitar registros severity: Regla notification_emails: + appeal: Alguien apela una solicitud de moderador digest: Enviar correos electrónicos compilatorios favourite: Una cuenta marca tu mensaje como favorito follow: Una cuenta te sigue @@ -204,8 +209,8 @@ es-AR: mention: Una cuenta te menciona pending_account: Una nueva cuenta necesita revisión reblog: Una cuenta adhiere a tu mensaje - report: Se envía una nueva denuncia - trending_tag: Una nueva tendencia requiere aprobación + report: Se envió una nueva denuncia + trending_tag: Una nueva tendencia requiere revisión rule: text: Regla tag: diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml index 11d3ed5f4..e679e5498 100644 --- a/config/locales/simple_form.es-MX.yml +++ b/config/locales/simple_form.es-MX.yml @@ -204,8 +204,6 @@ es-MX: mention: Enviar correo electrónico cuando alguien te mencione pending_account: Enviar correo electrónico cuando una nueva cuenta necesita revisión reblog: Enviar correo electrónico cuando alguien comparta su publicación - report: Enviar un correo cuando se envía un nuevo informe - trending_tag: Enviar correo electrónico cuando una etiqueta no revisada está de tendencia rule: text: Norma tag: diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml index d2c64ce2b..9578ff13e 100644 --- a/config/locales/simple_form.es.yml +++ b/config/locales/simple_form.es.yml @@ -27,6 +27,8 @@ es: scheduled_at: Dejar en blanco para publicar el anuncio inmediatamente starts_at: Opcional. En caso de que su anuncio esté vinculado a un intervalo de tiempo específico text: Puedes usar la sintaxis de publicaciones. Por favor ten en cuenta el espacio que ocupará el anuncio en la pantalla del usuario + appeal: + text: Sólo puedes apelar una amonestación una vez defaults: autofollow: Los usuarios que se registren mediante la invitación te seguirán automáticamente avatar: PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px @@ -119,6 +121,8 @@ es: scheduled_at: Programar publicación starts_at: Comienzo del evento text: Anuncio + appeal: + text: Explica por qué esta decisión debe ser revertida defaults: autofollow: Invitar a seguir tu cuenta avatar: Avatar @@ -197,6 +201,7 @@ es: sign_up_requires_approval: Limitar registros severity: Regla notification_emails: + appeal: Alguien ha apelado una decisión de moderación digest: Enviar resumen de correos electrónicos favourite: Enviar correo electrónico cuando alguien de a favorito en su publicación follow: Enviar correo electrónico cuando alguien te siga @@ -204,8 +209,8 @@ es: mention: Enviar correo electrónico cuando alguien te mencione pending_account: Enviar correo electrónico cuando una nueva cuenta necesita revisión reblog: Enviar correo electrónico cuando alguien comparta su publicación - report: Enviar un correo cuando se envía un nuevo informe - trending_tag: Enviar correo electrónico cuando una etiqueta no revisada está de tendencia + report: Nuevo informe enviado + trending_tag: Una nueva tendencia requiere revisión rule: text: Norma tag: diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml index e3c1a0b98..efbc0b322 100644 --- a/config/locales/simple_form.et.yml +++ b/config/locales/simple_form.et.yml @@ -175,8 +175,6 @@ et: mention: Saada e-kiri, kui keegi mainib Teid pending_account: Saada e-kiri, kui uus konto vajab ülevaatlust reblog: Saada e-kiri, kui keegi upitab Teie staatust - report: Saada e-kiri, kui esitatud on uus teavitus - trending_tag: Saada e-kiri, kui ülevaatamata silt trendib tag: listable: Luba sellel sildil ilmuda profiilide kataloogis name: Silt diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml index 4de0fdee9..5adb8a48b 100644 --- a/config/locales/simple_form.eu.yml +++ b/config/locales/simple_form.eu.yml @@ -204,8 +204,6 @@ eu: mention: Bidali e-mail bat norbaitek zu aipatzean pending_account: Bidali e-mail bat kontu bat berrikusi behar denean reblog: Bidali e-mail bat norbaitek zure mezuari bultzada ematen badio - report: Bidali e-maila txosten berri bat aurkezten denean - trending_tag: Bidali e-mail bat errebisatu gabeko traola bat joeran dagoenean rule: text: Araua tag: diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml index 82f2ad492..131047947 100644 --- a/config/locales/simple_form.fa.yml +++ b/config/locales/simple_form.fa.yml @@ -204,8 +204,6 @@ fa: mention: وقتی کسی از شما نام برد ایمیل بفرست pending_account: وقتی حساب تازهای نیاز به بازبینی داشت ایمیل بفرست reblog: وقتی کسی نوشتهٔ شما را بازبوقید ایمیل بفرست - report: وقتی گزارش تازهای فرستاده شد ایمیل بفرست - trending_tag: وقتی یک برچسب بازبینینشده پرطرفدار شد ایمیل بفرست rule: text: قانون tag: diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml index c0e9fa2ec..5c37d708b 100644 --- a/config/locales/simple_form.fi.yml +++ b/config/locales/simple_form.fi.yml @@ -7,6 +7,7 @@ fi: account_migration: acct: Määrittele käyttäjän käyttäjänimi@verkkotunnus, johon haluat siirtyä account_warning_preset: + text: Voit käyttää julkaisun syntaksia, kuten URL-osoitteita, hashtageja ja mainintoja title: Vapaaehtoinen. Ei näytetä vastaanottajalle admin_account_action: include_statuses: Käyttäjä näkee mitkä viestit johtivat toimenpiteeseen tai varoitukseen @@ -24,34 +25,87 @@ fi: all_day: Kun valittu, vain valittu aikaväli näytetään ends_at: Valinnainen. Ilmoitus tullaan poistamaan automaattisesti tällä hetkellä scheduled_at: Jätä tyhjäksi julkaistaksesi ilmoituksen välittömästi + starts_at: Valinnainen. Jos ilmoituksesi on sidottu tiettyyn aikaväliin + text: Voit käyttää julkaisun syntaksia. Muista, kuinka paljon tilaa ilmoitus vie käyttäjän näytöltä + appeal: + text: Voit valittaa varoituksesta vain kerran defaults: + autofollow: Henkilöt, jotka rekisteröityvät kutsun kautta, seuraavat sinua automaattisesti avatar: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px bot: Tämä tili suorittaa enimmäkseen automaattisia toimintoja eikä sitä ehkä valvota + context: Yksi tai useampi asiayhteys, jossa suodattimen pitäisi olla käytössä + current_password: Turvallisuussyistä kirjoita nykyisen tilin salasana + current_username: Vahvista kirjoittamalla nykyisen tilin käyttäjätunnus digest: Lähetetään vain pitkän poissaolon jälkeen ja vain, jos olet saanut suoria viestejä poissaolosi aikana discoverable: Profiilihakemisto on toinen tapa, jolla tilisi voi tavoittaa laajemman yleisön + discoverable_no_directory: Salli tuntemattomien löytää tilisi suositusten ja muiden ominaisuuksien kautta email: Sinulle lähetetään vahvistussähköposti fields: Sinulla voi olla korkeintaan 4 asiaa profiilissasi taulukossa header: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px + inbox_url: Kopioi URL-osoite sen viestin etusivulta, jota haluat käyttää + irreversible: Suodatetut julkaisut katoavat lopullisesti, vaikka suodatin poistettaisiin myöhemmin + locale: Käyttöliittymän, sähköpostien ja ilmoitusten kieli locked: Sinun täytyy hyväksyä seuraajat manuaalisesti password: Käytä vähintään 8 merkkiä + phrase: Täytetään riippumatta julkaisun kirjainkoon tai sisällön varoituksesta + scopes: Mihin sovellusliittymiin sovellus pääsee käsiksi. Jos valitset ylätason laajuuden, sinun ei tarvitse valita yksittäisiä. + setting_aggregate_reblogs: Älä näytä uusia tehosteita viesteille, joita on äskettäin tehostettu (koskee vain äskettäin saatuja tehosteita) + setting_default_sensitive: Arkaluontoinen media on oletuksena piilotettu ja se voidaan näyttää yhdellä napsautuksella setting_display_media_default: Piilota arkaluonteiseksi merkitty media setting_display_media_hide_all: Piilota aina kaikki media setting_display_media_show_all: Näytä aina arkaluonteiseksi merkitty media + setting_hide_network: Ketä seuraat ja kuka seuraa sinua, piilotetaan profiiliisi setting_noindex: Vaikuttaa julkiseen profiiliisi ja tilasivuihisi setting_show_application: Viestittelyyn käyttämäsi sovellus näkyy viestiesi yksityiskohtaisessa näkymässä setting_use_blurhash: Liukuvärit perustuvat piilotettujen kuvien väreihin, mutta sumentavat yksityiskohdat + setting_use_pending_items: Piilota aikajanan päivitykset napsautuksen taakse sen sijaan, että vierittäisi syötettä automaattisesti + username: Käyttäjänimesi tulee olemaan yksilöllinen %{domain} + whole_word: Kun avainsana tai lause on vain aakkosnumeerinen, se otetaan käyttöön, jos se vastaa koko sanaa + domain_allow: + domain: Tämä verkkotunnus voi noutaa tietoja tältä palvelimelta ja sieltä saapuvat tiedot käsitellään ja tallennetaan + email_domain_block: + domain: Tämä voi olla se verkkotunnus, joka näkyy sähköpostiosoitteessa, MX-tietue, johon verkkotunnus ratkaistaan tai IP-osoitteessa, johon MX tietue päättää. Ne tarkistetaan käyttäjän kirjautumisen yhteydessä ja kirjautuminen hylätään. + with_dns_records: Annetun verkkotunnuksen DNS-tietueet yritetään ratkaista ja tulokset myös estetään + featured_tag: + name: 'Voit halutessasi käyttää jotakin näistä:' + form_challenge: + current_password: Olet menossa suojatulle alueelle imports: data: Toisesta Mastodon-instanssista tuotu CSV-tiedosto + invite_request: + text: Tämä auttaa meitä arvioimaan sovellustasi + ip_block: + comment: Valinnainen. Muista miksi lisäsit tämän säännön. + expires_in: IP-osoitteet ovat rajallinen resurssi, joskus niitä jaetaan ja vaihtavat usein omistajaa. Tästä syystä epämääräisiä IP-lohkoja ei suositella. + ip: Kirjoita IPv4- tai IPv6-osoite. Voit estää kokonaisia alueita käyttämällä CIDR-syntaksia. Varo, että et lukitse itseäsi! + severities: + no_access: Estä pääsy kaikkiin resursseihin + sign_up_requires_approval: Uudet rekisteröitymiset edellyttävät hyväksyntääsi + severity: Valitse, mitä tapahtuu tämän IP-osoitteen pyynnöille + rule: + text: Kuvaile sääntöä tai vaatimusta tämän palvelimen käyttäjille. Yritä pitää se lyhyenä ja yksinkertaisena sessions: otp: Syötä puhelimeen saamasi kaksivaiheisen tunnistautumisen koodi tai käytä palautuskoodia. + webauthn: Jos kyseessä on USB-avain, muista laittaa se paikalleen ja tarvittaessa napauttaa sitä. + tag: + name: Voit muuttaa esimerkiksi kirjaimia paremmin luettavaksi + user: + chosen_languages: Kun valittu, vain valituilla kielillä julkaistut viestit näkyvät julkisilla aikajanoilla labels: account: fields: name: Nimike value: Sisältö + account_alias: + acct: Vanhan tilin käsittely + account_migration: + acct: Uuden tilin käsittely account_warning_preset: + text: Esiasetettu teksti title: Otsikko admin_account_action: + include_statuses: Sisällytä raportoidut viestit sähköpostiin + send_email_notification: Ilmoita käyttäjälle sähköpostitse text: Mukautettu varoitus type: Toimenpide types: @@ -64,8 +118,11 @@ fi: announcement: all_day: Koko päivän kestävä tapahtuma ends_at: Tapahtuman loppu + scheduled_at: Ajasta julkaisu starts_at: Tapahtuman alku text: Ilmoitus + appeal: + text: Perustele, miksi tämä päätös olisi kumottava defaults: autofollow: Kutsu seuraamaan tiliäsi avatar: Profiilikuva @@ -82,6 +139,9 @@ fi: expires_in: Vanhenee fields: Profiilin metadata header: Otsakekuva + honeypot: "%{label} (älä täytä)" + inbox_url: Välityspostilaatikon URL-osoite + irreversible: Pudota piilottamisen sijaan locale: Kieli locked: Lukitse tili max_uses: Käyttökertoja enintään @@ -99,10 +159,12 @@ fi: setting_default_privacy: Julkaisun näkyvyys setting_default_sensitive: Merkitse media aina arkaluontoiseksi setting_delete_modal: Kysy vahvistusta ennen viestin poistamista + setting_disable_swiping: Poista pyyhkäisyt käytöstä setting_display_media: Median näyttäminen setting_display_media_default: Oletus setting_display_media_hide_all: Piilota kaikki setting_display_media_show_all: Näytä kaikki + setting_expand_spoilers: Laajenna aina sisältövaroituksilla merkityt viestit setting_hide_network: Piilota verkkosi setting_noindex: Jättäydy pois hakukoneindeksoinnista setting_reduce_motion: Vähennä animaatioiden liikettä @@ -111,6 +173,7 @@ fi: setting_theme: Sivuston teema setting_trends: Näytä päivän trendit setting_unfollow_modal: Kysy vahvistusta, ennen kuin lopetat seuraamisen + setting_use_blurhash: Näytä värikkäät liukuvärit piilotetulle medialle setting_use_pending_items: Hidastila severity: Vakavuus sign_in_token_attempt: Turvakoodi @@ -131,12 +194,14 @@ fi: invite_request: text: Miksi haluat liittyä? ip_block: + comment: Kommentti ip: IP severities: no_access: Estä pääsy sign_up_requires_approval: Rajoita rekisteröitymisiä severity: Sääntö notification_emails: + appeal: Joku valittaa valvojan päätöksestä digest: Lähetä koosteviestejä sähköpostitse favourite: Lähetä sähköposti, kun joku tykkää tilastasi follow: Lähetä sähköposti, kun joku seuraa sinua @@ -144,13 +209,20 @@ fi: mention: Lähetä sähköposti, kun sinut mainitaan pending_account: Uusi tili tarvitsee tarkastusta reblog: Lähetä sähköposti, kun joku buustaa julkaisusi + report: Uusi raportti on lähetetty + trending_tag: Uusi trendi vaatii tarkastelua rule: text: Sääntö tag: + listable: Salli tämän hashtagin näkyä hauissa ja ehdotuksissa name: Aihetunniste trendable: Salli tämän aihetunnisteen näkyä trendeissä usable: Salli postauksien käyttää tätä aihetunnistetta 'no': Ei required: + mark: "*" text: pakollinen tieto + title: + sessions: + webauthn: Käytä jotakin suojausavainta kirjautuaksesi sisään 'yes': Kyllä diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml index 01ee10f44..ebda78f22 100644 --- a/config/locales/simple_form.fr.yml +++ b/config/locales/simple_form.fr.yml @@ -27,6 +27,8 @@ fr: scheduled_at: Laisser vide pour publier l’annonce immédiatement starts_at: Optionnel. Si votre annonce est liée à une période spécifique text: Vous pouvez utiliser la syntaxe des messages. Veuillez prendre en compte l’espace que l'annonce prendra sur l’écran de l'utilisateur·rice + appeal: + text: Vous ne pouvez faire appel d'une sanction qu'une seule fois defaults: autofollow: Les personnes qui s’inscrivent grâce à l’invitation vous suivront automatiquement avatar: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px @@ -119,6 +121,8 @@ fr: scheduled_at: Planifier la publication starts_at: Début de l’événement text: Annonce + appeal: + text: Expliquez pourquoi cette décision devrait être annulée defaults: autofollow: Invitation à suivre votre compte avatar: Image de profil @@ -197,6 +201,7 @@ fr: sign_up_requires_approval: Limite des inscriptions severity: Règle notification_emails: + appeal: Une personne fait appel d'une décision des modérateur·rice·s digest: Envoyer des courriels récapitulatifs favourite: Quelqu’un a ajouté mon message à ses favoris follow: Quelqu’un vient de me suivre @@ -204,8 +209,8 @@ fr: mention: Quelqu’un me mentionne pending_account: Nouveau compte en attente d’approbation reblog: Quelqu’un a partagé mon message - report: Un nouveau rapport est envoyé - trending_tag: Un hashtag non approuvé est dans les tendances + report: Nouveau signalement soumis + trending_tag: Nouvelle tendance nécessitant supervision rule: text: Règle tag: diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml index d8f30e871..bc2cb5b62 100644 --- a/config/locales/simple_form.gd.yml +++ b/config/locales/simple_form.gd.yml @@ -204,8 +204,6 @@ gd: mention: Thug cuideigin iomradh ort pending_account: Tha cunntas ùr feumach air lèirmheas reblog: Bhrosnaich cuideigin am post agad - report: Chaidh gearan ùr a chur a-null - trending_tag: Tha treandadh ùr feumach air dearbhadh rule: text: Riaghailt tag: diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml index 7c3d5a9b2..1ffdb8302 100644 --- a/config/locales/simple_form.gl.yml +++ b/config/locales/simple_form.gl.yml @@ -27,6 +27,8 @@ gl: scheduled_at: Déixao baleiro para publicar o anuncio de xeito inmediato starts_at: Opcional. No caso de que o teu anuncio estea vinculado a un intre de tempo específico text: Podes empregar a sintaxe na publicación. Ten en conta o espazo que ocupará o anuncio na pantalla da usuaria + appeal: + text: Só podes apelar a decesión unha vez defaults: autofollow: As persoas que se conectaron a través dun convite seguirante automáticamente avatar: PNG, GIF ou JPG. Máximo %{size}. Será reducida a %{dimensions}px @@ -119,6 +121,8 @@ gl: scheduled_at: Publicación programada starts_at: Comezo do acontecemento text: Anuncio + appeal: + text: Indica a razón pola que habería que reverter a decisión defaults: autofollow: Convida a seguir a tua conta avatar: Avatar @@ -137,7 +141,7 @@ gl: header: Cabeceira honeypot: "%{label} (non completar)" inbox_url: URL da caixa de entrada do repetidor - irreversible: Soltar en lugar de agochar + irreversible: Desbotar en lugar de agochar locale: Idioma da interface locked: Requerir aprobar seguimento max_uses: Número máximo de usos @@ -197,6 +201,7 @@ gl: sign_up_requires_approval: Limitar o rexistro severity: Regra notification_emails: + appeal: Alguén apelou contra a decisión da moderación digest: Enviar correos con resumos favourite: Enviar un correo cando alguén marca como favorita unha das tuas publicacións follow: Enviar un correo cando alguén te segue @@ -204,8 +209,8 @@ gl: mention: Enviar un correo cando alguén te menciona pending_account: Enviar un correo cando unha nova conta precisa revisión reblog: Enviar un correo cando alguén promociona a tua mensaxe - report: Enviar un correo cando se envíe unha denuncia - trending_tag: Unha nova tendencia require aprobación + report: Enviouse unha nova denuncia + trending_tag: Hai que revisar unha nova tendencia rule: text: Regra tag: diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml index e80704cee..8e4c921ef 100644 --- a/config/locales/simple_form.hu.yml +++ b/config/locales/simple_form.hu.yml @@ -27,6 +27,8 @@ hu: scheduled_at: Hagyd üresen, hogy a közleményt azonnal közzétegyük starts_at: Opcionális. Akkor használd, ha a közleményed adott időintervallumra vonatkozik text: Használhatod a bejegyzések szintaxisát. Ügyelj arra, hogy mennyi helyet foglal el majd a közlemény a felhasználó képernyőjén + appeal: + text: Egy vétséget csak egyszer fellebbezhetsz meg defaults: autofollow: Akik meghívón keresztül regisztrálnak, automatikusan követni fognak téged avatar: PNG, GIF vagy JPG. Maximum %{size}. Átméretezzük %{dimensions} pixelre @@ -119,6 +121,8 @@ hu: scheduled_at: Közlemény időzítése starts_at: Esemény kezdete text: Közlemény + appeal: + text: Magyarázd el, miért kellene visszavonni ezt a döntést defaults: autofollow: Meghívás a fiókod követésére avatar: Profilkép @@ -197,6 +201,7 @@ hu: sign_up_requires_approval: Regisztrációk korlátozása severity: Szabály notification_emails: + appeal: Valaki fellebbez egy moderátori döntéssel szemben digest: Összevont e-mailek küldése favourite: Valaki kedvencnek jelölte a bejegyzésedet follow: E-mail küldése, amikor valaki követni kezd téged @@ -204,8 +209,8 @@ hu: mention: E-mail küldése, amikor valaki megemlít téged pending_account: E-mail küldése, ha új fiókot kell engedélyezni reblog: Valaki megtolta a bejegyzésedet - report: E-mail küldése, ha új bejelentés érkezett - trending_tag: Új felkapott hashtag jóváhagyásra vár + report: Új bejelentést küldtek be + trending_tag: Új trend felülvizsgálatra vár rule: text: Szabály tag: diff --git a/config/locales/simple_form.hy.yml b/config/locales/simple_form.hy.yml index c3418a1db..70f11eabf 100644 --- a/config/locales/simple_form.hy.yml +++ b/config/locales/simple_form.hy.yml @@ -195,8 +195,6 @@ hy: mention: Որեւէ մեկը նշեց քեզ pending_account: Վերանայման կարիք ունեցող նոր հաշիւ reblog: Ինչ֊որ մէկը գրառումդ տարածեց - report: Նոր բողոք է ուղարկուել - trending_tag: Չվերանայուած պիտակը թրենդի մէջ է rule: text: Կանոն tag: diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml index 7ba8ffd47..d7ab9763a 100644 --- a/config/locales/simple_form.id.yml +++ b/config/locales/simple_form.id.yml @@ -27,6 +27,8 @@ id: scheduled_at: Biarkan kosong jika ingin menerbitkan pengumuman secara langsung starts_at: Opsional. Persiapan jika pengumuman Anda terikat pada rentang waktu tertentu text: Anda dapat menggunakan sintaks toot. Mohon perhatikan ruang pengumuman yang mungkin akan memenuhi layar pengguna + appeal: + text: Anda hanya dapat mengajukan banding peringatan sekali defaults: autofollow: Orang yang ingin mendaftar lewat undangan, otomatis mengikuti Anda avatar: PNG, GIF atau JPG. Maksimal %{size}. Ukuran dikecilkan menjadi %{dimensions}px @@ -119,6 +121,8 @@ id: scheduled_at: Jadwal publikasi starts_at: Awal mulai event text: Pengumuman + appeal: + text: Jelaskan mengapa keputusan ini perlu dibatalkan defaults: autofollow: Undang untuk mengikuti Anda avatar: Avatar @@ -197,6 +201,7 @@ id: sign_up_requires_approval: Batasi pendaftaran severity: Aturan notification_emails: + appeal: Seseorang mengajukan banding tehadap keputusan moderator digest: Kirim email berisi rangkuman favourite: Kirim email saat seseorang menyukai status anda follow: Kirim email saat seseorang mengikuti anda @@ -204,8 +209,8 @@ id: mention: Kirim email saat seseorang menyebut anda pending_account: Kirim email ketika akun baru perlu ditinjau reblog: Kirim email saat seseorang mem-boost status anda - report: Kirim email ketika laporan baru dikirim - trending_tag: Kirim email ketika tagar tak tertinjau jadi tren + report: Laporan baru dikirim + trending_tag: Tren baru harus ditinjau rule: text: Aturan tag: diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml index c7686a080..44541cc6b 100644 --- a/config/locales/simple_form.is.yml +++ b/config/locales/simple_form.is.yml @@ -7,12 +7,12 @@ is: account_migration: acct: Tilgreindu notandanafn@lén á notandaaðgangnum sem þú vilt flytjast til account_warning_preset: - text: Þú getur notað sömu skilgreiningar og fyrir tíst, svo sem URL-slóðir, myllumerki og tilvísanir + text: Þú getur notað sömu skilgreiningar og fyrir færslur, svo sem URL-slóðir, myllumerki og tilvísanir title: Valkvætt. Ekki sýnilegt viðtakandanum admin_account_action: - include_statuses: Notandinn mun sjá hvaða tíst hafa valdið viðbrögðum umsjónarmanns eða aðvörun kerfisins + include_statuses: Notandinn mun sjá hvaða færslur hafa valdið viðbrögðum umsjónarmanns eða aðvörun kerfisins send_email_notification: Notandinn mun fá útskýringar á því hvað gerðist með notandaaðganginn hans - text_html: Valfrjálst. Þú getur notað sömu skilgreiningar og fyrir tíst. Þú getur <a href="%{path}">bætt inn forstilltum aðvörunum</a> til að spara tíma + text_html: Valfrjálst. Þú getur notað sömu skilgreiningar og fyrir færslur. Þú getur <a href="%{path}">bætt inn forstilltum aðvörunum</a> til að spara tíma type_html: Veldu hvað eigi að gera við <strong>%{acct}</strong> types: disable: Koma í veg fyrir að notandinn noti aðganginn sinn, en ekki eyða eða fela efnið þeirra. @@ -26,7 +26,9 @@ is: ends_at: Valfrjálst. Auglýsing verðut tekin úr birtingu á þessum tíma scheduled_at: Skildu þetta eftir autt til að birta auglýsinguna samstundis starts_at: Valfrjálst. Notað ef auglýsing er bundin við tiltekinn tímaramma - text: Þú getur notað sömu skilgreiningar og fyrir tíst. Hafðu í huga það pláss sem auglýsingin mun taka á skjá notandans + text: Þú getur notað sömu skilgreiningar og fyrir færslur. Hafðu í huga það pláss sem auglýsingin mun taka á skjá notandans + appeal: + text: Þú getur aðeins áfrýjað refsingu einu sinni defaults: autofollow: Fólk sem skráir sig í gegnum boðið mun sjálfkrafa fylgjast með þér avatar: PNG, GIF eða JPG. Mest %{size}. Verður smækkað í %{dimensions}px @@ -41,20 +43,20 @@ is: fields: Þú getur birt allt að 4 atriði sem töflu á notandasniðinu þínu header: PNG, GIF eða JPG. Mest %{size}. Verður smækkað í %{dimensions}px inbox_url: Afritaðu slóðina af forsíðu endurvarpans sem þú vilt nota - irreversible: Síuð tíst munu hverfa óendurkræft, jafnvel þó sían sé seinna fjarlægð + irreversible: Síaðar færslur munu hverfa óendurkræft, jafnvel þó sían sé seinna fjarlægð locale: Tungumál notandaviðmótsins, tölvupósts og ýti-tilkynninga locked: Krefst þess að þú samþykkir fylgjendur handvirkt password: Notaðu minnst 8 stafi - phrase: Verður notað til samsvörunar burtséð frá stafstöðu texta eða viðvörunar vegna efnis í tísti + phrase: Verður notað til samsvörunar burtséð frá stafstöðu texta eða viðvörunar vegna efnis í færslu scopes: Að hvaða API-kerfisviðmótum forritið fær aðgang. Ef þú velur efsta-stigs svið, þarftu ekki að gefa einstakar heimildir. - setting_aggregate_reblogs: Ekki sýna nýjar endurbirtingar á tístum sem hafa nýlega verið endurbirt (hefur bara áhrif á ný-mótteknar endurbirtingar) + setting_aggregate_reblogs: Ekki sýna nýjar endurbirtingar á færslum sem hafa nýlega verið endurbirtar (hefur bara áhrif á ný-mótteknar endurbirtingar) setting_default_sensitive: Viðkvæmt myndefni er sjálfgefið falið og er hægt að birta með smelli setting_display_media_default: Fela myndefni sem merkt er viðkvæmt setting_display_media_hide_all: Alltaf fela allt myndefni setting_display_media_show_all: Alltaf birta myndefni sem merkt er viðkvæmt setting_hide_network: Hverjum þú fylgist með og hverjir fylgjast með þér verður ekki birt á notandasniðinu þínu - setting_noindex: Hefur áhrif á opinbera notandasniðið þitt og stöðusíður - setting_show_application: Nafnið á forritinu sem þú notar til að tísta mun birtast í ítarlegri sýn á tístunum þínum + setting_noindex: Hefur áhrif á opinbera notandasniðið þitt og færslusíður + setting_show_application: Nafnið á forritinu sem þú notar til að senda færslur mun birtast í ítarlegri sýn á færslunum þínum setting_use_blurhash: Litstiglarnir byggja á litunum í földu myndunum, en gera öll smáatriði óskýr setting_use_pending_items: Fela uppfærslur tímalínu þar til smellt er, í stað þess að hún skruni streyminu sjálfvirkt username: Notandanafnið þitt verður einstakt á %{domain} @@ -88,7 +90,7 @@ is: tag: name: Þú getur aðeins breytt stafstöði mill há-/lágstafa, til gæmis til að gera þetta læsilegra user: - chosen_languages: Þegar merkt er við þetta, birtast einungis tíst á völdum tungumálum á opinberum tímalínum + chosen_languages: Þegar merkt er við þetta, birtast einungis færslur á völdum tungumálum á opinberum tímalínum labels: account: fields: @@ -102,7 +104,7 @@ is: text: Forstilltur texti title: Titill admin_account_action: - include_statuses: Innifela kærð tíst í tölvupóstinum + include_statuses: Innifela kærðar færslur í tölvupóstinum send_email_notification: Láta notanda vita með tölvupósti text: Sérsniðin aðvörun type: Aðgerð @@ -119,6 +121,8 @@ is: scheduled_at: Áætla birtingu starts_at: Upphaf atburðar text: Auglýsing + appeal: + text: Útskýrðu af hverju ætti að afturkalla þessa ákvörðun defaults: autofollow: Bjóða að fylgjast með aðgangnum þínum avatar: Auðkennismynd @@ -150,21 +154,21 @@ is: setting_aggregate_reblogs: Hópa endurbirtingar í tímalínum setting_auto_play_gif: Spila sjálfkrafa GIF-hreyfimyndir setting_boost_modal: Sýna staðfestingarglugga fyrir endurbirtingu - setting_crop_images: Utansníða myndir í ekki útfelldum tístum í 16x9 + setting_crop_images: Utansníða myndir í ekki-útfelldum færslum í 16x9 setting_default_language: Tungumál sem skrifað er á setting_default_privacy: Gagnaleynd færslna setting_default_sensitive: Alltaf merkja myndefni sem viðkvæmt - setting_delete_modal: Birta staðfestingarglugga áður en tísti er eytt + setting_delete_modal: Birta staðfestingarglugga áður en færslu er eytt setting_disable_swiping: Gera strokuhreyfingar óvirkar setting_display_media: Birting myndefnis setting_display_media_default: Sjálfgefið setting_display_media_hide_all: Fela allt setting_display_media_show_all: Birta allt - setting_expand_spoilers: Alltaf útfella tíst sem eru með aðvörun vegna efnisins + setting_expand_spoilers: Alltaf útfella færslur sem eru með aðvörun vegna efnisins setting_hide_network: Fela netkerfið þitt setting_noindex: Afþakka atriðaskráningu í leitarvélum setting_reduce_motion: Minnka hreyfingu í hreyfimyndum - setting_show_application: Upplýsa um forrit sem er til að senda tíst + setting_show_application: Upplýsa um forrit sem er til að senda færslur setting_system_font_ui: Nota sjálfgefið letur kerfisins setting_theme: Þema vefsvæðis setting_trends: Birta það sem er efst á baugi í dag @@ -197,22 +201,23 @@ is: sign_up_requires_approval: Takmarka nýskráningar severity: Regla notification_emails: + appeal: Einhver áfrýjar ákvörðun umsjónarmanns digest: Senda uppsafnaðan tölvupóst - favourite: Einhver setti stöðufærslu þína í eftirlæti + favourite: Einhver setti færslu þína í eftirlæti follow: Einhver fylgist núna með þér follow_request: Einhver hefur beðið um að fylgjast með þér mention: Einhver minntist á þig pending_account: Nýr notandaaðgangur þarfnast yfirferðar - reblog: Einhver endurbirti stöðufærslu þína + reblog: Einhver endurbirti færsluna þína report: Ný kæra hefur verið send inn - trending_tag: Óyfirfarið myllumerki er í umræðunni + trending_tag: Ný tilhneiging krefst yfirferðar rule: text: Regla tag: listable: Leyfa þessu myllumerki að birtast í leitum og í persónusniðamöppunni name: Myllumerki trendable: Leyfa þessu myllumerki að birtast undir tilhneigingum - usable: Leyfa tístum að nota þetta myllumerki + usable: Leyfa færslum að nota þetta myllumerki 'no': Nei required: mark: "*" diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml index 7a1017796..2fdcfe865 100644 --- a/config/locales/simple_form.it.yml +++ b/config/locales/simple_form.it.yml @@ -27,6 +27,8 @@ it: scheduled_at: Lascia vuoto per pubblicare immediatamente l'annuncio starts_at: Opzionale. Quando l'annuncio è legato a un intervallo di tempo specifico text: Puoi usare la sintassi dei post. Tieni presente lo spazio che l'annuncio occuperà nello schermo dell'utente + appeal: + text: Puoi appellarti solo una volta defaults: autofollow: Le persone che si iscrivono attraverso l'invito ti seguiranno automaticamente avatar: PNG, GIF o JPG. Al massimo %{size}. Verranno scalate a %{dimensions}px @@ -119,6 +121,8 @@ it: scheduled_at: Programma la pubblicazione starts_at: Inizio dell'evento text: Annuncio + appeal: + text: Spiega perché la decisione dovrebbe essere annullata defaults: autofollow: Invita a seguire il tuo account avatar: Immagine di profilo @@ -197,6 +201,7 @@ it: sign_up_requires_approval: Limita iscrizioni severity: Regola notification_emails: + appeal: Qualcuno ricorre contro una decisione del moderatore digest: Invia email riassuntive favourite: Qualcuno ha apprezzato il tuo post follow: Invia email quando qualcuno ti segue @@ -204,8 +209,8 @@ it: mention: Invia email quando qualcuno ti menziona pending_account: Invia e-mail quando un nuovo account richiede l'approvazione reblog: Qualcuno ha condiviso il tuo post - report: Manda una mail quando viene inviato un nuovo rapporto - trending_tag: Invia e-mail quando un hashtag non controllato è in tendenza + report: Una nuova segnalazione è stata inviata + trending_tag: La nuova tendenza richiede un controllo rule: text: Regola tag: diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml index 4071bc5c8..fd2597727 100644 --- a/config/locales/simple_form.ja.yml +++ b/config/locales/simple_form.ja.yml @@ -204,8 +204,6 @@ ja: mention: 返信が来た時 pending_account: 新しいアカウントの承認が必要な時 reblog: 投稿がブーストされた時 - report: 通報を受けた時 - trending_tag: 未審査のハッシュタグが人気の時 rule: text: ルール tag: diff --git a/config/locales/simple_form.kab.yml b/config/locales/simple_form.kab.yml index 478170fbe..b3fa8d375 100644 --- a/config/locales/simple_form.kab.yml +++ b/config/locales/simple_form.kab.yml @@ -45,6 +45,7 @@ kab: types: disable: Sens anekcum none: Ur teg kra + sensitive: Amḥulfu silence: Sgugem suspend: Ḥbes di leεḍil announcement: diff --git a/config/locales/simple_form.kk.yml b/config/locales/simple_form.kk.yml index 882454d78..5b97a0e83 100644 --- a/config/locales/simple_form.kk.yml +++ b/config/locales/simple_form.kk.yml @@ -85,8 +85,6 @@ kk: mention: Біреу мен туралы жазған кезде хат жібер pending_account: Жаңа аккаунт құптау күткен кезде хат жібер reblog: Жазбамды біреу бөліскен кезде хат жібер - report: Жаңа шағым түскен кезде хат жібер - trending_tag: Қаралмаған хештег шыққан кезде хат жібер tag: listable: Бұл хештегті барлық жерде көрсетуге рұқсат бер name: Хэштег diff --git a/config/locales/simple_form.kmr.yml b/config/locales/simple_form.kmr.yml index 2702b14dc..d077c40b3 100644 --- a/config/locales/simple_form.kmr.yml +++ b/config/locales/simple_form.kmr.yml @@ -27,6 +27,8 @@ kmr: scheduled_at: Vala bihêle ku yekcar daxûyanî were weşandin starts_at: Bi dilê xwe ye. Heke daxûyanî ya te di demeke diyar ve girêdayî be text: Tu dikarî hevoksazî yên toot bikarbînî. Ji kerema xwe cihê ku ev daxuyanî li ser dîmenderê bikarhêner bigire baldar be + appeal: + text: Tu dikarî tenê carekê îtîraza binpêkirinê bikî defaults: autofollow: Mirovên ku bi rêya vexwendinê xwe tomar kirine ew ên bi xweberî te bişopînin avatar: PNG, GIF an jî JPG. Herî zêde %{size} dê ber bi %{dimensions}px ve were kêmkirin @@ -121,6 +123,8 @@ kmr: scheduled_at: Weşanê demsaz bike starts_at: Destpêka bûyerê text: Daxuyanî + appeal: + text: Şîrove bike çima divê ev biryar were berovajîkirin defaults: autofollow: Ji bo şopandina ajimêra xwe vexwîne avatar: Wêne @@ -199,6 +203,7 @@ kmr: sign_up_requires_approval: Tomaran sînordar bike severity: Rêbaz notification_emails: + appeal: Kesek îtîrazê biryara çavdêr dike digest: Kurte e-name bişîne favourite: Kesekî şandiya te hez kir follow: Kesekî te şopand @@ -206,8 +211,8 @@ kmr: mention: Kesekî qale te kir pending_account: Pewîste ku ajimêra nû bihê lêkolînkirin reblog: Kesekî şandiya te bilind kir - report: Ragihandinek nû hate şandin - trending_tag: Hashtageke nenirxandî bûye rojev + report: Ragihandina nû hate şandin + trending_tag: Rojeva nû pêdivî nirxandinê ye rule: text: Rêbaz tag: diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml index 408c4dfe2..2d7b0b99c 100644 --- a/config/locales/simple_form.ko.yml +++ b/config/locales/simple_form.ko.yml @@ -27,6 +27,8 @@ ko: scheduled_at: 공백으로 두면 공지사항이 곧바로 발행 됩니다 starts_at: 공지사항이 특정한 시간에 종속 될 때를 위한 옵션입니다 text: 게시물 문법을 사용할 수 있습니다. 공지사항은 사용자의 화면 상단 공간을 차지한다는 것을 명심하세요 + appeal: + text: 처벌에 대해 단 한 번만 이의제기를 할 수 있습니다 defaults: autofollow: 이 초대를 통해 가입하는 사람은 당신을 자동으로 팔로우 하게 됩니다 avatar: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 축소 됨 @@ -119,6 +121,8 @@ ko: scheduled_at: 발행 일정 starts_at: 이벤트 시작 text: 공지사항 + appeal: + text: 이 결정이 왜 번복되어야 하는지에 대해 설명해주세요 defaults: autofollow: 초대를 통한 팔로우 avatar: 아바타 @@ -197,6 +201,7 @@ ko: sign_up_requires_approval: 가입 제한 severity: 규칙 notification_emails: + appeal: 누군가가 중재자의 결정에 이의를 제기했습니다 digest: 요약 이메일 보내기 favourite: 누군가 내 상태를 즐겨찾기로 등록했을 때 이메일 보내기 follow: 누군가 나를 팔로우 했을 때 이메일 보내기 @@ -204,8 +209,8 @@ ko: mention: 누군가 나를 언급했을 때 이메일 보내기 pending_account: 새 계정이 심사가 필요할 때 이메일 보내기 reblog: 누군가 내 툿을 부스트 했을 때 이메일 보내기 - report: 새 신고 등록시 이메일로 알리기 - trending_tag: 리뷰 되지 않은 해시태그가 유행할 때 이메일 보내기 + report: 새 신고가 접수되었습니다 + trending_tag: 새 트렌드에 대한 리뷰가 필요합니다 rule: text: 규칙 tag: diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml index 0a6cbc703..ac433d2c3 100644 --- a/config/locales/simple_form.ku.yml +++ b/config/locales/simple_form.ku.yml @@ -193,8 +193,6 @@ ku: mention: کەسێک باسی کردووی pending_account: هەژمارەی نوێ پێویستی بە پێداچوونەوەهەیە reblog: کاتێک کەسێک نووسراوەی ئێوە دووبارە توت دەکاتەوە - report: گوزارشتی نوێ پێشکەش کراوە - trending_tag: کاتێک هاشتاگێکی پێدانەچوو هۆگری فرە بوو، ئیمەیلێک بنێرە tag: listable: ڕیگەبدە ئەم هاشتاگە لە پێرستی هەڵبژاردەی بەکارهێنەران و پەڕەی گەڕان نیشان بدرێت name: هەشتاگ diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml index 36695fa3c..bf1cf446a 100644 --- a/config/locales/simple_form.lv.yml +++ b/config/locales/simple_form.lv.yml @@ -27,6 +27,8 @@ lv: scheduled_at: Lai nekavējoties publicētu paziņojumu, atstāj tukšu starts_at: Neobligāts. Ja tavs paziņojums ir saistīts ar noteiktu laika diapazonu text: Varari izmantot ziņu sintaksi. Lūdzu, apdomā lauku, ko paziņojums aizņems lietotāja ekrānā + appeal: + text: Brīdinājumu var pārsūdzēt tikai vienu reizi defaults: autofollow: Cilvēki, kuri reģistrējas, izmantojot uzaicinājumu, automātiski sekos tev avatar: PNG, GIF vai JPG. Ne vairāk kā %{size}. Tiks samazināts līdz %{dimensions} px @@ -119,6 +121,8 @@ lv: scheduled_at: Ieplānot publikāciju starts_at: Pasākuma sākums text: Paziņojums + appeal: + text: Paskaidrojiet, kāpēc šis lēmums ir jāatceļ defaults: autofollow: Uzaicini sekot tavam kontam avatar: Avatars @@ -197,6 +201,7 @@ lv: sign_up_requires_approval: Ierobežot reģistrēšanos severity: Noteikumi notification_emails: + appeal: Kāds pārsūdz moderatora lēmumu digest: Sūtīt kopsavilkumu e-pastus favourite: Kāds izcēla tavu ziņu follow: Kāds uzsāka tev sekot @@ -205,7 +210,7 @@ lv: pending_account: Jāpārskata jaunu kontu reblog: Kāds paaugstināja tavu ziņu report: Tika iesniegts jauns ziņojums - trending_tag: Kļūst populārs nepārskatīts tēmturis + trending_tag: Jaunā tendence ir jāpārskata rule: text: Noteikumi tag: diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml index d8ce979d5..d6dec3afb 100644 --- a/config/locales/simple_form.nl.yml +++ b/config/locales/simple_form.nl.yml @@ -203,8 +203,6 @@ nl: mention: Wanneer iemand jou heeft vermeld pending_account: Wanneer een nieuw account moet worden beoordeeld reblog: Wanneer iemand jouw toot heeft geboost - report: Bij het indienen van een nieuwe rapportage - trending_tag: Wanneer een nog niet beoordeelde hashtag trending is rule: text: Regel tag: diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml index 513f7cca2..e787eb1a0 100644 --- a/config/locales/simple_form.nn.yml +++ b/config/locales/simple_form.nn.yml @@ -202,8 +202,6 @@ nn: mention: Send e-post når nokon nemner deg pending_account: Send e-post når ein ny konto treng gjennomgang reblog: Send e-post når nokon framhevar statusen din - report: Send e-post når nokon rapporterer noko - trending_tag: Ein emneknagg som ikkje er sett igjennom er på veg opp rule: text: Regler tag: diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml index 3e22c1a6e..112d1a743 100644 --- a/config/locales/simple_form.no.yml +++ b/config/locales/simple_form.no.yml @@ -202,8 +202,6 @@ mention: Send e-post når noen nevner deg pending_account: Ny bruker avventer gjennomgang reblog: Send e-post når noen fremhever din status - report: Ny rapport er sendt inn - trending_tag: En ugjennomgått emneknagg trender rule: text: Regler tag: diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml index b66aeec1c..e68cffc78 100644 --- a/config/locales/simple_form.oc.yml +++ b/config/locales/simple_form.oc.yml @@ -195,8 +195,6 @@ oc: mention: Enviar un corrièl quand qualqu’un vos menciona pending_account: Enviar un corrièl quand cal validar un compte novèl reblog: Enviar un corrièl quand qualqu’un tòrna partejar vòstre estatut - report: Enviar un corrièl pels nòus senhalaments - trending_tag: Enviar un corrièl quand una etiqueta pas repassada es en tendéncia rule: text: Règla tag: diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml index 21880ec2b..1c2feb63d 100644 --- a/config/locales/simple_form.pl.yml +++ b/config/locales/simple_form.pl.yml @@ -204,8 +204,6 @@ pl: mention: Powiadamiaj mnie e-mailem, gdy ktoś o mnie wspomni pending_account: Wyślij e-mail kiedy nowe konto potrzebuje recenzji reblog: Powiadamiaj mnie e-mailem, gdy ktoś podbije mój wpis - report: Powiadamiaj mnie e-mailem, gdy zostanie utworzone nowe zgłoszenie - trending_tag: Nieprzejrzany hashtag jest na czasie rule: text: Zasada tag: diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml index 2fd300842..73fbe786b 100644 --- a/config/locales/simple_form.pt-BR.yml +++ b/config/locales/simple_form.pt-BR.yml @@ -204,8 +204,6 @@ pt-BR: mention: Enviar e-mail quando alguém te mencionar pending_account: Enviar e-mail quando uma nova conta precisa ser revisada reblog: Enviar e-mail quando alguém der boost nos teus toots - report: Enviar e-mail quando uma nova denúncia for enviada - trending_tag: Enviar e-mail quando uma hashtag não-revisada está em alta rule: text: Regra tag: diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml index 4d22a9648..9afe68705 100644 --- a/config/locales/simple_form.pt-PT.yml +++ b/config/locales/simple_form.pt-PT.yml @@ -27,6 +27,8 @@ pt-PT: scheduled_at: Deixe em branco para publicar o anúncio imediatamente starts_at: Opcional. Caso o seu anúncio seja vinculado a um intervalo de tempo específico text: Pode utilizar a sintaxe dos toot. Por favor, tenha em consideração o espaço que o anúncio ocupará no ecrã do utilizador + appeal: + text: Só pode recorrer de uma punição uma vez defaults: autofollow: As pessoas que aderem através do convite seguir-te-ão automaticamente avatar: PNG, GIF or JPG. Arquivos até %{size}. Vão ser reduzidos para %{dimensions}px @@ -119,6 +121,8 @@ pt-PT: scheduled_at: Agendar publicação starts_at: Início do evento text: Anúncio + appeal: + text: Explique porque esta decisão deve ser revertida defaults: autofollow: Convidar para seguir a tua conta avatar: Imagem de Perfil @@ -197,6 +201,7 @@ pt-PT: sign_up_requires_approval: Limitar inscrições severity: Regra notification_emails: + appeal: Alguém recorreu de uma decisão de moderação digest: Enviar e-mails de resumo favourite: Quando alguém adiciona uma publicação sua aos favoritos follow: Quando alguém começar a segui-lo @@ -204,8 +209,8 @@ pt-PT: mention: Quando alguém o mencionar pending_account: Quando uma nova conta aguarda aprovação reblog: Quando alguém partilhar uma publicação sua - report: Quando um novo relatório é submetido - trending_tag: Quando uma hashtag não aprovada anteriormente estiver em destaque + report: Nova denúncia submetida + trending_tag: Nova tendência requer revisão rule: text: Regra tag: diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml index 8138f1859..716c00b2c 100644 --- a/config/locales/simple_form.ro.yml +++ b/config/locales/simple_form.ro.yml @@ -173,8 +173,6 @@ ro: mention: Trimite e-mail când cineva te menționează pending_account: Noul cont trebuie revizuit reblog: Trimite e-mail când cineva impulsionează una din postările tale - report: Trimite e-mail când un raport nou este trimis - trending_tag: Un hashtag nerevizuit este în tendință tag: listable: Permite acestui hashtag să apară în căutări și în directorul de profil trendable: Permite acestui hashtag să apară sub tendințe diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml index 0b5da707c..3580606c3 100644 --- a/config/locales/simple_form.ru.yml +++ b/config/locales/simple_form.ru.yml @@ -27,6 +27,8 @@ ru: scheduled_at: Оставьте поля незаполненными, чтобы опубликовать объявление сразу starts_at: Необязательно. На случай, если ваше объявление привязано к какому-то временному интервалу text: Вы можете использовать тот же синтаксис, что и в постах. Будьте предусмотрительны насчёт места, которое займёт объявление на экране пользователей + appeal: + text: Вы можете обжаловать замечание только один раз defaults: autofollow: Люди, пришедшие по этому приглашению, автоматически будут подписаны на вас. avatar: Поддерживается PNG, GIF и JPG. Максимальный размер — %{size}. Будет уменьшен до %{dimensions}px. @@ -119,6 +121,8 @@ ru: scheduled_at: Отложенная публикация starts_at: Время начала text: Объявление + appeal: + text: Объясните, почему это решение должно быть отменено defaults: autofollow: С подпиской на вашу учётную запись avatar: Аватар @@ -204,8 +208,6 @@ ru: mention: Новое упоминание pending_account: Новая заявка на создание аккаунта reblog: Ваш пост продвинули - report: Поступила новая жалоба - trending_tag: Актуальный хэштег требует проверки rule: text: Правило tag: diff --git a/config/locales/simple_form.sc.yml b/config/locales/simple_form.sc.yml index f24193347..0b8376aab 100644 --- a/config/locales/simple_form.sc.yml +++ b/config/locales/simple_form.sc.yml @@ -203,8 +203,6 @@ sc: mention: Una persone t'at mentovadu pending_account: Unu contu nou tenet bisòngiu de una revisione reblog: Una persone at cumpartzidu s'istadu tuo - report: Imbiu de un'informe nou - trending_tag: Un'eticheta non revisionada est in tendèntzia rule: text: Règula tag: diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml index 8817f0ed3..d410e106a 100644 --- a/config/locales/simple_form.sk.yml +++ b/config/locales/simple_form.sk.yml @@ -162,8 +162,6 @@ sk: mention: Zaslať email, ak ťa niekto spomenie vo svojom príspevku pending_account: Zaslať email, ak treba prehodnotiť nový účet reblog: Zaslať email, ak niekto re-tootne tvoj príspevok - report: Zaslať email, ak niekto podá nové nahlásenie - trending_tag: Pošli email, ak sa neoverený haštag stane populárnym tag: listable: Povoľ zobrazovanie tohto haštagu v zozname profilov name: Haštag diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml index 91bf681f3..b1472cb0e 100644 --- a/config/locales/simple_form.sl.yml +++ b/config/locales/simple_form.sl.yml @@ -4,6 +4,7 @@ sl: hints: account_warning_preset: text: Lahko uporabite skladnjo tuta, kot so URL-ji, ključniki in omembe + title: Neobvezno. Ni vidno prejemniku admin_account_action: send_email_notification: Uporabnik bo prejel razlago, kaj se je zgodilo z njihovim računom text_html: Neobvezno. Lahko uporabite skladnjo tuta. <a href="%{path}">Prednastavite opozorila</a>, da prihranite čas @@ -14,6 +15,7 @@ sl: avatar: PNG, GIF ali JPG. Največ %{size}. Zmanjšana bo na %{dimensions}px bot: Ta račun v glavnem opravlja samodejna dejanja in morda ni pod nadzorom context: En ali več kontekstov, kjer naj se uporabi filter + current_username: Za potrditev vnesite uporabniško ime trenutnega računa digest: Pošlje se le po dolgem obdobju nedejavnosti in samo, če ste prejeli osebna sporočila v vaši odsotnosti email: Poslali vam bomo potrditveno e-pošto fields: Na svojem profilu lahko imate do 4 predmete prikazane kot tabelo. @@ -41,13 +43,18 @@ sl: domain: Ta domena bo lahko prejela podatke s tega strežnika, dohodni podatki z nje pa bodo obdelani in shranjeni featured_tag: name: 'Morda boste želeli uporabiti eno od teh:' + form_challenge: + current_password: Vstopate v varovano območje imports: data: Izvožena CSV datoteka iz drugega Mastodon vozlišča invite_request: text: To nam bo pomagalo pregledati vašo prijavo ip_block: + comment: Neobvezno. Spomnite se, zakaj ste dodali to pravilo. severities: no_access: Blokiraj dostop do vseh virov + sign_up_requires_approval: Za nove registracije bo potrebna vaša odobritev + severity: Izberite, kaj se bo zgodilo z zahtevami iz tega IP-naslova sessions: otp: 'Vnesite dvomestno kodo, ki je ustvarjena z aplikacijo na telefonu, ali uporabite eno od vaših obnovitvenih kod:' user: @@ -78,6 +85,7 @@ sl: announcement: all_day: Celodnevni dogodek ends_at: Konec dogodka + scheduled_at: Načrtuj čas objave starts_at: Začetek dogodka text: Objava defaults: @@ -164,8 +172,8 @@ sl: mention: Pošlji e-pošto, ko vas nekdo omeni pending_account: Pošlji e-pošto, ko je potreben pregled novega računa reblog: Pošlji e-pošto, ko nekdo sune vaše stanje - report: Pošlji e-pošto, ko je oddana nova prijava - trending_tag: Nov trend zahteva odobritev + report: Novo poročilo je oddano + trending_tag: Nov trend zahteva pregled rule: text: Pravilo tag: diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml index ccd1257de..ce73006c6 100644 --- a/config/locales/simple_form.sq.yml +++ b/config/locales/simple_form.sq.yml @@ -27,6 +27,8 @@ sq: scheduled_at: Që lajmërimi të botohet menjëherë, lëreni të zbrazët starts_at: Opsionale. Në rast se lajmërimi juaj është i lidhur me një interval kohor të caktuar text: Mund të përdorni sintaksë mesazhesh. Ju lutemi, mos harroni që hapësira e lajmërimit do të hajë vend në ekranin e përdoruesit + appeal: + text: Një paralajmërim mund ta apeloni vetëm një herë defaults: autofollow: Personat që regjistrohen përmes ftesës do t’ju ndjekin vetvetiu avatar: PNG, GIF ose JPG. Maksimumi %{size}. Do të zvogëlohen në %{dimensions}px @@ -119,6 +121,8 @@ sq: scheduled_at: Planifikoji botimin starts_at: Fillim i aktit text: Lajmërim + appeal: + text: Shpjegoni pse duhet përmbysur ky vendim defaults: autofollow: Ftesë për ndjekje të llogarisë tuaj avatar: Avatar @@ -197,6 +201,7 @@ sq: sign_up_requires_approval: Kufizo regjistrime severity: Rregull notification_emails: + appeal: Dikush apelon një vendim moderatori digest: Dërgo email-e përmbledhës favourite: Dikush parapëlqeu gjendjen tuaj follow: Dikush filloi t’ju ndjekë @@ -205,7 +210,6 @@ sq: pending_account: Llogaria e re lyp shqyrtim reblog: Dikush përforcoi gjendjen tuaj report: Parashtrohet raportim i ri - trending_tag: Një hashtag i pashqyrtuar zë e bëhet popullor rule: text: Rregull tag: diff --git a/config/locales/simple_form.sr.yml b/config/locales/simple_form.sr.yml index 4210b0a99..5b3139bec 100644 --- a/config/locales/simple_form.sr.yml +++ b/config/locales/simple_form.sr.yml @@ -116,7 +116,6 @@ sr: follow_request: Шаљи е-пошту када неко затражи да Вас запрати mention: Шаљи е-пошту када Вас неко помене reblog: Шаљи е-пошту када неко подржи Ваш статус - report: Пошаљи Е-пошту када се поднесе нова пријава 'no': Не required: text: обавезно diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml index 87aaeb92b..c233c1c94 100644 --- a/config/locales/simple_form.sv.yml +++ b/config/locales/simple_form.sv.yml @@ -24,6 +24,8 @@ sv: ends_at: Frivillig. Meddelandet kommer automatiskt att publiceras just nu scheduled_at: Lämna tomt för att publicera meddelandet omedelbart starts_at: Valfritt. Om ditt meddelande är bundet till ett visst tidsintervall + appeal: + text: Du kan endast överklaga en varning en gång defaults: autofollow: Användarkonton som skapas genom din inbjudan kommer automatiskt följa dig avatar: PNG, GIF eller JPG. Högst %{size}. Kommer att skalas ner till %{dimensions}px @@ -185,8 +187,6 @@ sv: mention: Skicka e-post när någon nämner dig pending_account: Nytt konto behöver granskas reblog: Skicka e-post när någon knuffar din status - report: Ny rapport har skickats - trending_tag: En ogranskad hashtag trendar rule: text: Regel tag: diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml index 12aedd328..a324c807e 100644 --- a/config/locales/simple_form.th.yml +++ b/config/locales/simple_form.th.yml @@ -27,6 +27,8 @@ th: scheduled_at: เว้นว่างไว้เพื่อเผยแพร่ประกาศทันที starts_at: ไม่จำเป็น ในกรณีที่ประกาศของคุณผูกไว้กับช่วงเวลาที่เฉพาะเจาะจง text: คุณสามารถใช้ไวยากรณ์โพสต์ โปรดระวังพื้นที่ที่ประกาศจะใช้ในหน้าจอของผู้ใช้ + appeal: + text: คุณสามารถอุทธรณ์การลงโทษได้เพียงครั้งเดียวเท่านั้น defaults: autofollow: ผู้คนที่ลงทะเบียนผ่านคำเชิญจะติดตามคุณโดยอัตโนมัติ avatar: PNG, GIF หรือ JPG สูงสุด %{size} จะถูกย่อขนาดเป็น %{dimensions}px @@ -200,8 +202,6 @@ th: mention: ใครสักคนได้กล่าวถึงคุณ pending_account: บัญชีใหม่ต้องมีการตรวจทาน reblog: ใครสักคนได้ดันโพสต์ของคุณ - report: มีการส่งรายงานใหม่ - trending_tag: แนวโน้มใหม่ต้องการการอนุมัติ rule: text: กฎ tag: diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml index cfd407ce5..ccec0ed13 100644 --- a/config/locales/simple_form.tr.yml +++ b/config/locales/simple_form.tr.yml @@ -27,6 +27,8 @@ tr: scheduled_at: Duyuruyu hemen yayınlamak için boş bırakın starts_at: İsteğe bağlı. Duyurunuzun belirli bir zaman aralığına bağlı olması durumunda text: Toot söz dizimini kullanabilirsiniz. Lütfen duyurunun kullanıcının ekranında yer alacağı alanı göz önünde bulundurun + appeal: + text: Bir eyleme yalnızca bir kere itiraz edebilirsiniz defaults: autofollow: Davetiyeyle kaydolan kişiler sizi otomatik olarak takip eder avatar: En fazla %{size} olacak şekilde PNG, GIF veya JPG formatında yükleyiniz. %{dimensions}px büyüklüğüne indirgenecektir @@ -119,6 +121,8 @@ tr: scheduled_at: Yayınlamayı zamanla starts_at: Etkinliğin başlangıcı text: Duyuru + appeal: + text: Bu kararın neden geri alınması gerektiğini açıklayın defaults: autofollow: Hesabınızı takip etmeye davet edin avatar: Profil resmi @@ -197,6 +201,7 @@ tr: sign_up_requires_approval: Kayıtları sınırla severity: Kural notification_emails: + appeal: Birisi, bir yönetim kararına itiraz ediyor digest: Özet e-postaları gönder favourite: Birisi gönderinizi beğendi follow: Biri seni takip etti @@ -205,7 +210,7 @@ tr: pending_account: Yeni hesabın incelenmesi gerekiyor reblog: Birisi gönderini boostladı report: Yeni rapor gönderildi - trending_tag: İncelenmemiş bir etiket gündem oluyor + trending_tag: Yeni eğilimin gözden geçmesi gerekiyor rule: text: Kural tag: diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml index be7cfa3e2..49fb1d5a0 100644 --- a/config/locales/simple_form.uk.yml +++ b/config/locales/simple_form.uk.yml @@ -204,8 +204,7 @@ uk: mention: Надсилати листа, коли хтось згадує Вас pending_account: Надсилати електронного листа, коли новий обліковий запис потребує розгляду reblog: Надсилати листа, коли хтось передмухує Ваш статус - report: Надсилати електронного листа, коли з'являється нова скарга - trending_tag: Надсилати електронного листа, коли нерозглянутий хештеґ стає популярним + report: Нову скаргу надіслано rule: text: Правило tag: diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml index 1823e1fe9..a4eaf17c1 100644 --- a/config/locales/simple_form.vi.yml +++ b/config/locales/simple_form.vi.yml @@ -27,6 +27,8 @@ vi: scheduled_at: Để trống nếu muốn đăng thông báo ngay lập tức starts_at: Tùy chọn. Trong trường hợp thông báo của bạn đăng vào một khoảng thời gian cụ thể text: Bạn có thể dùng URL, hashtag và nhắc đến. Cố gắng ngắn gọn bởi vì thông báo sẽ xuất hiện trên màn hình điện thoại của người dùng + appeal: + text: Bạn chỉ có thể khiếu nại mỗi lần một cảnh cáo defaults: autofollow: Những người đăng ký sẽ tự động theo dõi bạn avatar: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px @@ -119,6 +121,8 @@ vi: scheduled_at: Lên lịch đăng starts_at: Bắt đầu sự kiện text: Thông báo + appeal: + text: Giải thích rõ vì sao quyết định này có thể đảo ngược defaults: autofollow: Mời theo dõi tài khoản của bạn avatar: Ảnh đại diện @@ -197,6 +201,7 @@ vi: sign_up_requires_approval: Giới hạn đăng ký severity: Mức độ notification_emails: + appeal: Có người khiếu nại quyết định kiểm duyệt digest: Gửi email định kỳ favourite: Ai đó thích tút của bạn follow: Ai đó theo dõi bạn @@ -204,8 +209,8 @@ vi: mention: Ai đó nhắc đến bạn pending_account: Tài khoản mới cần phê duyệt reblog: Ai đó chia sẻ tút của bạn - report: Ai đó gửi báo cáo - trending_tag: Một hashtag chưa được phê duyệt đang là xu hướng + report: Đã gửi báo cáo mới + trending_tag: Một xu hướng cần được xem xét rule: text: Quy tắc tag: diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml index 61161fc62..39e87bcf6 100644 --- a/config/locales/simple_form.zh-CN.yml +++ b/config/locales/simple_form.zh-CN.yml @@ -27,6 +27,8 @@ zh-CN: scheduled_at: 留空的话,公告会立即发布。 starts_at: 可选。你可以让你的公告只在特定时间段显示。 text: 你可以使用嘟文格式。但请注意不要让公告占据用户太多屏幕空间。 + appeal: + text: 你仅能对单次处罚提交一次申诉 defaults: autofollow: 通过邀请链接注册的用户将会自动关注你 avatar: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px @@ -119,6 +121,8 @@ zh-CN: scheduled_at: 定时发布 starts_at: 事件开始 text: 公告 + appeal: + text: 说明此结果应当被推翻的理由 defaults: autofollow: 让被邀请人关注你的帐户 avatar: 头像 @@ -197,6 +201,7 @@ zh-CN: sign_up_requires_approval: 限制注册 severity: 规则 notification_emails: + appeal: 有人对审核结果提出申诉 digest: 发送摘要邮件 favourite: 当有用户喜欢了我的嘟文时,发送电子邮件提醒我 follow: 当有用户关注我时,发送电子邮件提醒我 @@ -204,8 +209,8 @@ zh-CN: mention: 当有用户在嘟文中提及我时,发送电子邮件提醒我 pending_account: 在有帐号需要审核时,发送电子邮件提醒我 reblog: 当有用户转嘟了我的嘟文时,发送电子邮件提醒我 - report: 在提交新报告时,发送电子邮件提醒我 - trending_tag: 当未经审核的话题成为当前热门时发邮件提醒 + report: 新举报已提交 + trending_tag: 新趋势待审核 rule: text: 规则 tag: diff --git a/config/locales/simple_form.zh-HK.yml b/config/locales/simple_form.zh-HK.yml index 3a0358e62..dbf87b788 100644 --- a/config/locales/simple_form.zh-HK.yml +++ b/config/locales/simple_form.zh-HK.yml @@ -204,8 +204,6 @@ zh-HK: mention: 當有人在文章提及你時 pending_account: 有新帳號需要審核時 reblog: 當有人轉推你的文章時 - report: 收到新檢舉時 - trending_tag: 當未審核的標籤成為當前熱門時 rule: text: 規則 tag: diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml index c9e95e694..cfef7ae29 100644 --- a/config/locales/simple_form.zh-TW.yml +++ b/config/locales/simple_form.zh-TW.yml @@ -3,9 +3,9 @@ zh-TW: simple_form: hints: account_alias: - acct: 指定欲移動之帳戶的 使用者名稱@站台 + acct: 指定要移動的帳號的「使用者名稱@網域名稱」 account_migration: - acct: 指定欲移動至之帳戶的 使用者名稱@站台 + acct: 指定要移動至的帳號的「使用者名稱@網域名稱」 account_warning_preset: text: 您可使用嘟文語法,例如網址、「#」標籤和提及功能 title: 可選。不會向收件者顯示 @@ -27,6 +27,8 @@ zh-TW: scheduled_at: 空白則立即發布公告 starts_at: 可選的,讓公告在特定時間範圍內顯示 text: 您可以使用嘟文語法,但請小心別讓公告太鴨霸而佔據使用者的整個版面。 + appeal: + text: 您只能對警示提出一次申訴 defaults: autofollow: 通過邀請網址註冊的使用者將自動關注你 avatar: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會等比例縮減成 %{dimensions} 像素 @@ -119,6 +121,8 @@ zh-TW: scheduled_at: 排程發佈 starts_at: 活動開始時間 text: 公告 + appeal: + text: 解釋為什麼要撤銷這個決定 defaults: autofollow: 邀請別人關注你的帳戶 avatar: 大頭貼 @@ -197,6 +201,7 @@ zh-TW: sign_up_requires_approval: 限制註冊 severity: 規則 notification_emails: + appeal: 有人對管理員的決定提出上訴 digest: 傳送摘要信件 favourite: 當有使用者喜歡你的嘟文時,傳送電子信件通知 follow: 當有使用者關注你時,傳送電子信件通知 @@ -204,8 +209,8 @@ zh-TW: mention: 當有使用者在嘟文提及你時,傳送電子信件通知 pending_account: 需要審核的新帳戶 reblog: 當有使用者轉嘟你的嘟文時,傳送電子信件通知 - report: 當提交新檢舉時傳送電子郵件 - trending_tag: 未經審核的標籤正在炎上中 + report: 新回報已遞交 + trending_tag: 新趨勢需要審閱 rule: text: 規則 tag: diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 4bf56464e..1cc1a2994 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -97,7 +97,6 @@ sk: account_moderation_notes: create: Zanechaj poznámku created_msg: Poznámka moderátora bola úspešne vytvorená! - delete: Vymaž destroyed_msg: Moderátorska poznámka bola úspešne zmazaná! accounts: add_email_domain_block: Pridaj e-mailovú doménu na zoznam zakázaných @@ -352,11 +351,6 @@ sk: silence: stíšené suspend: vylúčené show: - affected_accounts: - few: "%{count} účtov v databázi ovplyvnených" - many: "%{count} účtov v databázi ovplyvnených" - one: Jeden účet v databázi ovplyvnený - other: "%{count} účty v databázi ovplyvnené" retroactive: silence: Zruš stíšenie všetkých momentálne utíšených účtov z tejto domény suspend: Zruš suspendáciu všetkých momentálne ovplyvnených účtov z tejto domény @@ -394,11 +388,6 @@ sk: unavailable: Nedostupné warning: Upozornenie delivery_available: Je v dosahu doručovania - known_accounts: - few: "%{count} známych účtov" - many: "%{count} známych účtov" - one: "%{count} známy účet" - other: "%{count} známe účty" moderation: all: Všetky limited: Obmedzené @@ -688,7 +677,6 @@ sk: status: account_status: Stav účtu confirming: Čaká sa na dokončenie potvrdenia emailom. - functional: Tvoj účet je plne funkčný. pending: Tvoja žiadosť čaká na schvílenie od nášho týmu. Môže to chviľu potrvať. Ak bude tvoja žiadosť schválená, dostaneš o tom email. redirecting_to: Tvoj účet je neaktívny, lebo v súčasnosti presmerováva na %{acct}. trouble_logging_in: Problém s prihlásením? @@ -1174,7 +1162,6 @@ sk: subject: Prosím potvrď pokus o prihlásenie title: Pokus o prihlásenie warning: - review_server_policies: Prehodnoť pravidlá servera subject: disable: Tvoj účet %{acct} bol zamrazený none: Varovanie pre %{acct} diff --git a/config/locales/sl.yml b/config/locales/sl.yml index 6b03de475..595d52c83 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -91,9 +91,9 @@ sl: account_moderation_notes: create: Pusti opombo created_msg: Moderirana opomba je uspešno ustvarjena! - delete: Izbriši destroyed_msg: Moderirana opomba je uspešno uničena! accounts: + add_email_domain_block: Blokiraj domeno e-pošte approve: Odobri are_you_sure: Ali ste prepričani? avatar: Podoba @@ -186,6 +186,7 @@ sl: silenced: Utišan statuses: Stanja subscribe: Naroči + suspend: Suspendiraj suspended: Suspendiran title: Računi unconfirmed_email: Nepotrjena e-pošta @@ -219,9 +220,17 @@ sl: silence_account: Omeji račun update_status: Posodobi objavo deleted_status: "(izbrisano stanje)" + filter_by_action: Filtriraj po dejanjih + filter_by_user: Filtriraj po uporabnikih title: Dnevnik revizije announcements: + destroyed_msg: Obvestilo je bilo uspešno izbrisano! + edit: + title: Uredi obvestilo + empty: Obvestil ni mogoče najti. + live: V živo new: + create: Ustvari obvestilo title: Novo obvestilo publish: Objavi published_msg: Obvestilo je bilo uspešno objavljeno! @@ -259,6 +268,10 @@ sl: updated_msg: Emotikon je uspešno posodobljen! upload: Pošlji dashboard: + active_users: dejavnih uporabnikov + interactions: interakcij + new_users: novih uporabnikov + opened_reports: odprtih poročil software: Programska oprema space: Uporaba prostora title: Nadzorna plošča @@ -296,11 +309,6 @@ sl: silence: utišani suspend: suspendirani show: - affected_accounts: - few: "%{count} računi v bazi podatkov so prizadeti" - one: En račun v bazi podatkov je prizadet - other: "%{count} računov v bazi podatkov je prizadetih" - two: "%{count} računa v bazi podatkov so prizadeta" retroactive: silence: Prekliči utišanje za vse obstoječe račune iz te domene suspend: Aktiviraj vse obstoječe račune iz te domene @@ -327,14 +335,12 @@ sl: by_domain: Domena delivery: all: Vse + clear: Počisti napake dostave + stop: Ustavi dostavo + title: Dostava unavailable: Ni na voljo warning: Opozorilo delivery_available: Na voljo je dostava - known_accounts: - few: "%{count} znani računi" - one: "%{count} znan račun" - other: "%{count} znanih računov" - two: "%{count} znana računa" moderation: all: Vse limited: Omejeno @@ -366,6 +372,7 @@ sl: '94670856': 3 leta new: title: Ustvari novo pravilo IP + title: IP-pravila relays: add_new: Dodaj nov rele delete: Izbriši @@ -393,6 +400,7 @@ sl: comment: none: Brez created_at: Prijavljeno + delete_and_resolve: Izbriši objave mark_as_resolved: Označi kot rešeno mark_as_unresolved: Označi kot nerešeno no_one_assigned: Nihče @@ -403,12 +411,14 @@ sl: delete: Izbriši placeholder: Opišite dejanja, ki ste jih izvedli, ali katere koli druge posodobitve... title: Zapiski + quick_actions_description_html: 'Opravite hitro dejanje ali podrsajte navzdol, da si ogledate poročano vsebino:' reopen: Ponovno odpri prijavo report: 'Prijavi #%{id}' reported_account: Prijavljeni račun reported_by: Prijavljen od resolved: Razrešeni resolved_msg: Prijava je uspešno razrešena! + skip_to_actions: Preskoči na dejanja status: Stanje title: Prijave unassign: Odstopljeni @@ -495,6 +505,8 @@ sl: title: Trendi statuses: back_to_account: Nazaj na stran računa + batch: + remove_from_report: Odstrani iz poročila deleted: Izbrisano media: title: Mediji @@ -506,6 +518,9 @@ sl: allow: Dovoli approved: Odobren disallow: Ne dovoli + links: + allow: Dovoli povezavo + pending_review: Čakajoče na pregled tags: dashboard: tag_languages_dimension: Naj jeziki @@ -517,6 +532,9 @@ sl: edit_preset: Uredi prednastavitev opozoril title: Upravljaj prednastavitev opozoril admin_mailer: + new_appeal: + actions: + none: opozorilo new_pending_account: body: Podrobnosti o novem računu so navedene spodaj. To aplikacijo lahko odobrite ali zavrnete. subject: Nov račun za pregled na %{instance} (%{username}) @@ -594,18 +612,29 @@ sl: return: Prikaži uporabnikov profil web: Pojdi na splet title: Sledi %{acct} + challenge: + confirm: Nadaljuj + invalid_password: Neveljavno geslo + prompt: Potrdite geslo za nadaljevanje datetime: distance_in_words: half_a_minute: Pravkar less_than_x_seconds: Pravkar deletes: confirm_password: Vnesite svoje trenutno geslo, da potrdite svojo identiteto + confirm_username: Vnesite svoje uporabniško ime, da potrdite postopek proceed: Izbriši račun success_msg: Vaš račun je bil uspešno izbrisan directories: directory: Imenik profilov explanation: Odkrijte uporabnike glede na njihove interese explore_mastodon: Razišči %{title} + disputes: + strikes: + title_actions: + delete_statuses: Odstranitev objave + none: Opozorilo + silence: Omejitev računa errors: '400': The request you submitted was invalid or malformed. '403': Nimate dovoljenja za ogled te strani. @@ -733,6 +762,7 @@ sl: too_many: Ni možno priložiti več kot 4 datoteke migrations: acct: username@domain novega računa + proceed_with_move: Premakni sledilce moderation: title: Moderiranje notification_mailer: @@ -773,6 +803,10 @@ sl: body: "%{name} je spodbudil/a vaše stanje:" subject: "%{name} je spodbudil/a vaše stanje" title: Nova spodbuda + update: + subject: "%{name} je uredil(a) objavo" + otp_authentication: + enable: Omogoči pagination: newer: Novejše next: Naprej @@ -795,6 +829,7 @@ sl: relationships: activity: Dejavnost računa dormant: Skrit + follow_selected_followers: Sledi izbranim sledilcem last_active: Zadnja dejavnost most_recent: Najnovejša moved: Prestavljeno @@ -873,6 +908,7 @@ sl: settings: account: Račun account_settings: Nastavitve računa + aliases: Vzdevki računa appearance: Videz authorized_apps: Pooblaščene aplikacije back: Nazaj na Mastodon @@ -925,6 +961,9 @@ sl: two: "%{count} glasova" vote: Glasuj show_more: Pokaži več + show_newer: Pokaži novejše + show_older: Pokaži starejše + show_thread: Pokaži nit sign_in_to_participate: Prijavite se, če želite sodelovati v pogovoru visibilities: private: Samo sledilci @@ -1057,7 +1096,6 @@ sl: title: Poskus prijave warning: reason: 'Razlog:' - review_server_policies: Preglejte pravilnike strežnika subject: disable: Vaš račun %{acct} je zamrznjen none: Opozorila za %{acct} @@ -1099,7 +1137,11 @@ sl: verification: Potrditev webauthn_credentials: add: Dodaj nov varnostni ključ + create: + success: Vaš varnostni ključ je bil uspešno dodan. delete: Izbriši delete_confirmation: Ali ste prepričani, da želite izbrisati ta varnostni ključ? + destroy: + success: Vaš varnostni ključ je bil uspešno izbrisan. invalid_credential: Neveljaven varnostni ključ not_supported: Ta brskalnik ne podpira varnostnih ključev diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 5ff75afee..2366d0edf 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -94,7 +94,6 @@ sq: account_moderation_notes: create: Lini një shënim created_msg: Shënimi i moderimit u krijua me sukses! - delete: Fshije destroyed_msg: Shënimi i moderimit u asgjësua me sukses! accounts: add_email_domain_block: Blloko përkatësi email @@ -163,6 +162,11 @@ sq: not_subscribed: Jo i pajtuar pending: Në pritje të shqyrtimit perform_full_suspension: Pezulloje + previous_strikes: Paralajmërime të mëparshme + previous_strikes_description_html: + one: Kjo llogari ka <strong>one</strong> paralajmërim. + other: Kjo llogari ka <strong>%{count}</strong> paralajmërime. + zero: Kjo llogari është <strong>në pozita të mira</strong>. promote: Promovojeni protocol: Protokoll public: Publike @@ -206,6 +210,7 @@ sq: statuses: Gjendje strikes: Ndëshkime të mëparshme subscribe: Pajtomë + suspend: Pezulloje suspended: Të pezulluara suspension_irreversible: Të dhënat e kësaj llogarie janë fshirë në mënyrë të pakthyeshme. Mund ta shpezulloni llogarinë, për ta bërë të përdorshme, por kjo s’do të kthejë ndonjë të dhënë që kihej më parë. suspension_reversible_hint_html: Llogaria është pezulluar, dhe të dhënat do të hiqen plotësisht më %{date}. Deri atëherë, llogaria mund të rikthehet pa ndonjë zarar. Nëse doni të hiqen menjëherë krejt të dhënat e llogarisë, këtë mund ta bëni më poshtë. @@ -226,6 +231,7 @@ sq: whitelisted: Lejuar për federim action_logs: action_types: + approve_appeal: Miratojeni Apelimin approve_user: Miratoje Përdoruesin assigned_to_self_report: Caktoji Raportim change_email_user: Ndrysho Email për Përdoruesin @@ -257,6 +263,7 @@ sq: enable_user: Aktivizo Përdorues memorialize_account: Bëje Llogari Përkujtimore promote_user: Promovojeni Përdoruesin + reject_appeal: Hidheni Poshtë Apelimin reject_user: Hidhe Poshtë Përdoruesin remove_avatar_user: Hiqe Avatarin reopen_report: Rihape Raportimin @@ -275,6 +282,7 @@ sq: update_domain_block: Përditëso Bllok Përkatësish update_status: Përditëso Gjendjen actions: + approve_appeal_html: "%{name} miratoi apelim vendimi moderimi nga %{target}" approve_user_html: "%{name} miratoi regjistrim nga %{target}" assigned_to_self_report_html: "%{name} ia kaloi raportimin %{target} në ngarkim vetvetes" change_email_user_html: "%{name} ndryshoi adresën email të përdoruesit %{target}" @@ -306,6 +314,7 @@ sq: enable_user_html: "%{name} aktivizoi hyrje për përdoruesin %{target}" memorialize_account_html: "%{name} e shndërroi llogarinë e %{target} në një faqe përkujtimore" promote_user_html: "%{name} gradoi përdoruesin %{target}" + reject_appeal_html: "%{name} hodhi poshtë apelim vendimi moderimi nga %{target}" reject_user_html: "%{name} hodhi poshtë regjistrimin nga %{target}" remove_avatar_user_html: "%{name} hoqi avatarin e %{target}" reopen_report_html: "%{name} rihapi raportimin %{target}" @@ -384,14 +393,17 @@ sq: media_storage: Depozitë media new_users: përdorues të rinj opened_reports: raportime të hapur + pending_appeals_html: + one: "<strong>%{count}</strong> apelim pezull" + other: "<strong>%{count}</strong> apelime pezull" pending_reports_html: - one: "<strong>1</strong> raportim pezull" + one: "<strong>%{count}</strong> raportim pezull" other: "<strong>%{count}</strong> raportime pezull" pending_tags_html: - one: "<strong>1</strong> hashtag pezull" + one: "<strong>%{count}</strong> hashtag pezull" other: "<strong>%{count}</strong> hashtag-ë pezull" pending_users_html: - one: "<strong>1</strong> përdorues pezull" + one: "<strong>%{count}</strong> përdorues pezull" other: "<strong>%{count}</strong> përdorues pezull" resolved_reports: raportime të zgjidhur software: Software @@ -401,6 +413,10 @@ sq: top_languages: Gjuhët aktive kryesuese top_servers: Shërbyesit aktivë kryesues website: Sajt + disputes: + appeals: + empty: S’u gjetën apelime. + title: Apelime domain_allows: add_new: Shtoje përkatësinë në listë lejimesh created_msg: Përkatësia u shtua me sukses në listë lejimesh @@ -441,6 +457,7 @@ sq: affected_accounts: one: Pat ndikim te një llogari në bazën e të dhënave other: Pat ndikim te %{count} llogari në bazën e të dhënave + zero: S’pat ndikim te ndonjë llogari në bazën e të dhënave retroactive: silence: Hiqu heshtimin krejt llogarive ekzistuese nga kjo përkatësi suspend: Hiqu pezullimin krejt llogarive ekzistuese nga kjo përkatësi @@ -494,6 +511,7 @@ sq: known_accounts: one: "%{count} llogari e njohur" other: "%{count} llogari të njohura" + zero: Pa llogari të njohur moderation: all: Krejt limited: Të kufizuarat @@ -560,10 +578,12 @@ sq: action_log: Auditim regjistri action_taken_by: Veprimi i ndërmarrë nga actions: + delete_description_html: Postimet e raportuara do të fshihen dhe do të regjistrohet një paralajmërim, për t’ju ndihmuar të përshkallëzoni hapat në rast shkeljesh të ardhme nga e njëjta llogari. other_description_html: Shihni më tepër mundësi për kontroll të sjelljes së një llogari dhe përshtatni komunikimin me llogarinë e raportuar. + resolve_description_html: Ndaj llogarisë së raportuar nuk do të ndërmerret ndonjë veprim, s’do të regjistrohet ndonjë paralajmërim dhe raporti do të mbyllet. silence_description_html: Profili do të jetë i dukshëm vetëm për ata që e ndjekin tashmë, ose që e kërkojnë dorazi, duke reduktuar rëndë përhapjen e tij. Mundet përherë të prapakthehet. suspend_description_html: Profili dhe krej lënda e tij do të bëhen të papërdorshëm, deri sa më në fund të fshihet. Ndërveprimi me llogarinë do të jetë i pamundur. E prapakthyeshme brenda 30 ditësh. - actions_description_html: 'Nëse heqja e lëndës më sipër që ka probleme është e pamjaftueshme:' + actions_description_html: Vendosni cili veprim të kryhet për të zgjidhur këtë raportim. Nëse ndërmerrni një veprim ndëshkues kundër llogarisë së raportuar, atyre do t’u dërgohet një njoftim me email, hiq rastin kur përzgjidhet kategoria <strong>I padëshiruar</strong>. add_to_report: Shtoni më tepër te raportimi are_you_sure: A jeni i sigurt? assign_to_self: Caktojani vetes @@ -575,7 +595,7 @@ sq: none: Asnjë comment_description_html: 'Për të dhënë më tepër informacion, %{name} shkroi:' created_at: Raportuar më - delete_and_resolve: Zgjidhe dhe fshije + delete_and_resolve: Fshiji postimet forwarded: U përcoll forwarded_to: U përcoll te %{domain} mark_as_resolved: Vëri shenjë si i zgjidhur @@ -589,12 +609,14 @@ sq: placeholder: Përshkruani ç’veprime janë ndërmarrë, ose çfarëdo përditësimi tjetër që lidhet me të… title: Shënime notes_description_html: Shihni dhe lini shënime për moderatorët e tjerë dhe për veten në të ardhmen + quick_actions_description_html: 'Kryeni një veprim të shpejtë, ose rrëshqitni poshtë për të parë lëndën e raportuar:' reopen: Rihape raportimin report: 'Raportim #%{id}' reported_account: Llogari e raportuar reported_by: Raportuar nga resolved: I zgjidhur resolved_msg: Raportimi u zgjidh me sukses! + skip_to_actions: Kaloni te veprimet status: Gjendje statuses: Lëndë e raportuar statuses_description_html: Lënda problematike do të citohet në komunikimin me llogarinë e raportuar @@ -708,12 +730,23 @@ sq: back_to_report: Mbrapsht te faqja e raportimit batch: remove_from_report: Hiqe prej raportimit + report: Raportojeni deleted: E fshirë media: title: Media no_status_selected: S’u ndryshua ndonjë gjendje, ngaqë s’u përzgjodh ndonjë e tillë title: Gjendje llogarish with_media: Me media + strikes: + actions: + delete_statuses: "%{name} fshiu postime të %{target}" + disable: "%{name} ngriu postime të %{target}" + none: "%{name} dërgoi një sinjalizim për %{target}" + sensitive: "%{name} i vuri shenjë llogarisë së %{target} si rezervat" + silence: "%{name} e kufizoi llogarinë %{target}" + suspend: "%{name} e pezulloi llogarinë e %{target}" + appeal_approved: Apeluar + appeal_pending: Apelim pezull system_checks: database_schema_check: message_html: Ka migrime bazash të dhënash pezull. Ju lutemi, kryejini, për të qenë të sigurt se aplikacioni sillet siç priteet @@ -738,6 +771,7 @@ sq: shared_by_over_week: one: Ndarë nga një person javën e kaluar other: Ndarë nga %{count} persona javën e kaluar + zero: E pandarë nga njeri gjatë javës së kaluar title: Lidhje në modë usage_comparison: Ndarë %{today} herë sot, kundrejt %{yesterday} dje pending_review: Në pritje të shqyrtimit @@ -765,6 +799,7 @@ sq: used_by_over_week: one: Përdorur nga një persona gjatë javës së kaluar other: Përdorur nga %{count} persona gjatë javës së kaluar + zero: E papërdorur nga njeri gjatë javës së kaluar title: Në modë warning_presets: add_new: Shtoni të ri @@ -773,6 +808,17 @@ sq: empty: S’keni përcaktuar ende sinjalizime të gatshme. title: Administroni sinjalizime të paracaktuara admin_mailer: + new_appeal: + actions: + delete_statuses: fshirje e postimeve të tij + disable: ngrirje e llogarisë së tij + none: një vërejtje + sensitive: vënie shenjë llogarisë së tij si rezervat + silence: kufizim i llogarisë së tij + suspend: pezullim i llogarisë së tij + body: "%{target} po apelon një vendim moderimi nga %{action_taken_by} të marrë më %{date}, që qe %{type}. Shkruan:" + next_steps: Apelimin mund të miratoni, që të zhbëhet vendimi i marrë, ose ta shpërfillni. + subject: "%{username} po apelon një vendim moderimi te %{instance}" new_pending_account: body: Hollësitë e llogarisë së re gjenden më poshtë. Mund ta miratoni ose hidhni poshtë këtë aplikim. subject: Llogari e re për shqyrtim në %{instance} (%{username}) @@ -787,6 +833,7 @@ sq: new_trending_tags: body: 'Hashtag-ët vijues janë në modë sot, por nuk janë miratuar më herët. S’do të shfaqen publikisht, veç në i miratofshi:' no_approved_tags: Aktualisht nuk ka hashtag-ë në modë të miratuar. + subject: Hashtag-ë të rinj në modë për t’u shqyrtuar në %{instance} aliases: add_new: Krijo alias created_msg: U krijua me sukses alias i ri. Tani mund të filloni lëvizjen prej llogarisë së vjetër. @@ -860,7 +907,6 @@ sq: status: account_status: Gjendje llogarie confirming: Po pritet që të plotësohet ripohimi i email-it. - functional: Llogaria juaj është tërësisht funksionale. pending: Aplikimi juaj është në pritje të shqyrtimit nga stafi ynë. Kjo mund të dojë ca kohë. Nëse aplikimi juaj miratohet, do të merrni një email. redirecting_to: Llogaria juaj është joaktive, ngaqë aktualisht ridrejton te %{acct}. too_fast: Formulari u parashtrua shumë shpejt, riprovoni. @@ -926,6 +972,32 @@ sq: directory: Drejtori profilesh explanation: Zbuloni përdorues bazuar në interesat e tyre explore_mastodon: Eksploroni %{title} + disputes: + strikes: + action_taken: Vendim i marrë + appeal: Apelim + appeal_approved: Ky paralajmërim është apeluar me sukses dhe s’vlen më + appeal_rejected: Apelimi është hedhur poshtë + appeal_submitted_at: Apelimi u parashtrua + appealed_msg: Apelimi juaj u parashtruar. Nëse miratohet, do të njoftoheni. + appeals: + submit: Parashtroni apelim + associated_report: Raportimi i përshoqëruar + created_at: Datuar + recipient: Drejtuar + status: "#%{id} postimi" + status_removed: Postim i hequr tashmë nga sistemi + title: "%{action} prej %{date}" + title_actions: + delete_statuses: Heqje postimi + disable: Ngrirje e llogarisë + none: Vërejtje + sensitive: Vënie shenjë llogarisë si rezervat + silence: Kufizim llogarie + suspend: Pezullim llogarie + your_appeal_approved: Apelimi juaj u miratua + your_appeal_pending: Keni parashtruar një apelim + your_appeal_rejected: Apelimi juaj është hedhur poshtë domain_validator: invalid_domain: s’është emër i vlefshëm përkatësie errors: @@ -1137,6 +1209,8 @@ sq: title: Përforcim i ri status: subject: "%{name} sapo postoi" + update: + subject: "%{name} përpunoi një postim" notifications: email_events: Akte për njoftim me email email_events_hint: 'Përzgjidhni akte për të cilët doni të merrni njoftime:' @@ -1218,6 +1292,9 @@ sq: reply: proceed: Ripohoni përgjigjen prompt: 'Doni t’i përgjigjeni këtij mesazhi:' + reports: + errors: + invalid_rules: s’i referohet ndonjë rregulli të vlefshëm scheduled_statuses: over_daily_limit: Keni tejkaluar kufirin e %{limit} mesazheve të planifikuara për atë ditë over_total_limit: Keni tejkaluar kufirin prej %{limit} mesazhesh të planifikuara @@ -1484,6 +1561,15 @@ sq: recovery_instructions_html: Në ndodhtë që të humbni hyrje te telefoni juaj, mund të përdorni një nga kodet e rikthimit më poshtë, që të rifitoni hyrje te llogaria juaj. <strong>Mbajini të parrezikuar kodet e rikthimeve</strong>. Për shembull, mund t’i shtypni dhe t’i ruani tok me dokumente të tjerë të rëndësishëm. webauthn: Kyçe sigurie user_mailer: + appeal_approved: + action: Kaloni te llogaria juaj + explanation: Apelimi i paralajmërimit kundër llogarisë tuaj më %{strike_date}, të cilin e parashtruar më %{appeal_date} është miratuar. Llogaria juaj është sërish në pozita të mira. + subject: Apelimi juaj i datës %{date} u miratua + title: Apelimi u miratua + appeal_rejected: + explanation: Apelimi i paralajmërimit kundër llogarisë tuaj më %{strike_date}, të cilin e parashtruar më %{appeal_date}, u hodh poshtë. + subject: Apelimi juaj prej %{date} është hedhur poshtë + title: Apelimi u hodh poshtë backup_ready: explanation: Kërkuat një kopjeruajtje të plotë të llogarisë tuaj Mastodon. E keni gati për shkarkim! subject: Arkivi juaj është gati për shkarkim @@ -1495,6 +1581,8 @@ sq: subject: Ju lutemi, ripohoni përpjekje hyrjeje title: Përpjekje hyrjeje warning: + appeal: Parashtroni një apelim + appeal_description: Nëse besoni se është gabim, mund t’i parashtroni një apelim stafit të %{instance}. categories: spam: I padëshiruar violation: Lënda cenon udhëzimet vijuese të bashkësisë @@ -1506,7 +1594,6 @@ sq: suspend: S’mund të përdorni më llogarinë tuaj dhe profili juaj, si dhe të dhëna të tjera, s’janë më të përdorshëm. Mundeni ende të bëni hyrjen në llogarinë tuaj për të kërkuar një kopjeruajtje të të dhënave tuaja, deri para se të dhënat tuaja të hiqen plotësisht brenda afërsisht 30 ditësh, por do të mbajmë ca të dhëna elementare, për t’ju penguar t’i bëni bisht pezullimin. get_in_touch: Nëse besoni se këtu ka gabim, mund t’i përgjigjeni këtij email-i për t’u lidhur me stafin e %{instance}. reason: 'Arsye:' - review_server_policies: Shqyrtoni rregullat e shërbyesit statuses: 'Postime që janë gjetur me cenime:' subject: delete_statuses: Postimet tuaja në %{acct} janë hequr diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml index 261311b2a..8d8a4744a 100644 --- a/config/locales/sr-Latn.yml +++ b/config/locales/sr-Latn.yml @@ -27,7 +27,6 @@ sr-Latn: account_moderation_notes: create: Napravi created_msg: Moderatorska beleška uspešno napravljena! - delete: Obriši destroyed_msg: Moderatorska beleška uspešno obrisana! accounts: are_you_sure: Da li ste sigurni? @@ -139,10 +138,6 @@ sr-Latn: reject_media: Odbaci multimediju reject_media_hint: Uklanja lokalno uskladištene multimedijske fajlove i odbija da ih skida na dalje. Nebitno je za suspenziju show: - affected_accounts: - few: Utiče na %{count} naloga u bazi - one: Utiče na jedan nalog u bazi - other: Utiče na %{count} naloga u bazi retroactive: silence: Ugasi ućutkivanje za sve postojeće naloge sa ovog domena suspend: Ugasi suspenzije za sve postojeće naloge sa ovog domena diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 2fdcd6854..28e6142ff 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -64,7 +64,6 @@ sr: account_moderation_notes: create: Оставите белешку created_msg: Модераторска белешка успешно направљена! - delete: Обриши destroyed_msg: Модераторска белешка успешно обрисана! accounts: are_you_sure: Да ли сте сигурни? @@ -211,10 +210,6 @@ sr: silence: ућуткани suspend: суспендовани show: - affected_accounts: - few: Утиче на %{count} налога у бази - one: Један налог у бази података је под утицајем - other: Утиче на %{count} налога у бази података retroactive: silence: Угаси ућуткивање за све постојеће налоге са овог домена suspend: Уклони суспензије за све постојеће налоге са овог домена @@ -233,10 +228,6 @@ sr: title: Црна листа E-поште instances: delivery_available: Достава је доступна - known_accounts: - few: "%{count} знаних налога" - one: "%{count} знан налог" - other: "%{count} знаних налога" moderation: all: Све limited: Ограничено @@ -716,7 +707,6 @@ sr: subject: Ваша архива је спремна за преузимање title: Извоз архиве warning: - review_server_policies: Прегледај политику сервера subject: disable: Ваш налог %{acct} је замрзнут none: Упозорење за %{acct} diff --git a/config/locales/sv.yml b/config/locales/sv.yml index e103d535b..b61d4ed02 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -92,7 +92,6 @@ sv: account_moderation_notes: create: Lämna kommentar created_msg: Modereringsnotering skapad utan problem! - delete: Radera destroyed_msg: Modereringsnotering borttagen utan problem! accounts: add_email_domain_block: Blockera e-postdomän @@ -158,6 +157,11 @@ sv: not_subscribed: Inte prenumererat pending: Inväntar granskning perform_full_suspension: Utför full avstängning + previous_strikes: Tidigare varningar + previous_strikes_description_html: + one: Detta konto har <strong>en</strong> varning. + other: Detta konto har <strong>%{count}</strong> varningar. + zero: Detta konto är <strong>i gott skick</strong>. promote: Befordra protocol: Protokoll public: Offentlig @@ -196,6 +200,7 @@ sv: statuses: Status strikes: Föregående varningar subscribe: Prenumerera + suspend: Stäng av suspended: Avstängd / Avstängt title: Konton unblock_email: Avblockera e-postadress @@ -211,6 +216,7 @@ sv: whitelisted: Vitlistad action_logs: action_types: + approve_appeal: Godkänn överklagande approve_user: Godkänn användare assigned_to_self_report: Tilldela anmälan change_email_user: Ändra e-post för användare @@ -238,6 +244,7 @@ sv: enable_user: Aktivera användare memorialize_account: Minnesmärk konto promote_user: Befordra användare + reject_appeal: Avvisa överklagande reject_user: Avvisa användare remove_avatar_user: Ta bort avatar reopen_report: Öppna rapporten igen @@ -341,16 +348,14 @@ sv: interactions: interaktioner media_storage: Medialagring new_users: nya användare - pending_reports_html: - one: "<strong>1</strong> kommande rapport" - other: "<strong>%{count}</strong> kommande rapporter" - pending_users_html: - one: "<strong>1</strong> väntande användare" - other: "<strong>%{count}</strong> väntande användare" software: Programvara space: Utrymmesutnyttjande / Utrymmesanvändning title: Kontrollpanel website: Hemsida + disputes: + appeals: + empty: Inga överklaganden hittades. + title: Överklaganden domain_allows: add_new: Vitlistedomän created_msg: Domänen har vitlistats @@ -387,9 +392,6 @@ sv: silence: tystad suspend: avstängd show: - affected_accounts: - one: Ett konto i databasen drabbades - other: "%{count} konton i databasen har drabbats" retroactive: silence: Ta bort tysta ner från alla befintliga konton på den här domänen suspend: Ta bort suspendering från alla befintliga konton på den här domänen @@ -429,9 +431,6 @@ sv: warning: Varning delivery_available: Leverans är tillgängligt empty: Inga domäner hittades. - known_accounts: - one: "%{count} känt konto" - other: "%{count} kända konton" moderation: all: Alla limited: Begränsad @@ -511,7 +510,7 @@ sv: placeholder: Beskriv vilka åtgärder som vidtagits eller andra uppdateringar till den här anmälan. title: Anteckningar reopen: Återuppta anmälan - report: 'Anmäl #%{id}' + report: 'Rapport #%{id}' reported_account: Anmält konto reported_by: Anmäld av resolved: Löst @@ -619,6 +618,11 @@ sv: title: Media title: Kontostatus with_media: med media + strikes: + actions: + delete_statuses: "%{name} raderade %{target}s inlägg" + disable: "%{name} frös %{target}s konto" + silence: "%{name} begränsade %{target}s konto" system_checks: rules_check: action: Hantera serverregler @@ -695,7 +699,6 @@ sv: status: account_status: Kontostatus confirming: Väntar på att e-postbekräftelsen ska slutföras. - functional: Ditt konto fungerar som det ska. redirecting_to: Ditt konto är inaktivt eftersom det för närvarande dirigeras om till %{acct}. too_fast: Formuläret har skickats för snabbt, försök igen. trouble_logging_in: Har du problem med att logga in? @@ -754,6 +757,10 @@ sv: directory: Profil-mapp explanation: Upptäck användare baserat på deras intressen explore_mastodon: Utforska %{title} + disputes: + strikes: + created_at: Daterad + status: 'Inlägg #%{id}' domain_validator: invalid_domain: är inte ett giltigt domännamn errors: @@ -931,7 +938,7 @@ sv: title: Ny följefterfrågning mention: action: Svar - body: 'Du nämndes av %{name} in:' + body: 'Du nämndes av %{name} i:' subject: Du nämndes av %{name} title: Ny omnämning poll: @@ -1262,6 +1269,8 @@ sv: recovery_instructions_html: Om du någonsin tappar åtkomst till din telefon kan du använda någon av återställningskoderna nedan för att återställa åtkomst till ditt konto. <strong> Håll återställningskoderna säkra </strong>. Du kan till exempel skriva ut dem och lagra dem med andra viktiga dokument. webauthn: Säkerhetsnycklar user_mailer: + appeal_approved: + action: Gå till ditt konto backup_ready: explanation: Du begärde en fullständig säkerhetskopiering av ditt Mastodon-konto. Det är nu klart för nedladdning! subject: Ditt arkiv är klart för nedladdning diff --git a/config/locales/ta.yml b/config/locales/ta.yml index 40a915728..4ffbb9a71 100644 --- a/config/locales/ta.yml +++ b/config/locales/ta.yml @@ -77,7 +77,6 @@ ta: account_moderation_notes: create: குறிப்பு எழுதவும் created_msg: நடுநிலை குறிப்பு வெற்றிகரமாக பதிவு செய்யப்பட்டது! - delete: அகற்று destroyed_msg: நடுநிலை குறிப்பு வெற்றிகரமாக அகற்றப்பட்டது! accounts: add_email_domain_block: இம்மின்னஞ்சல் களத்தைத் தடுப்புப்பட்டியலில் சேர் diff --git a/config/locales/te.yml b/config/locales/te.yml index 08284b027..7f6aa0f09 100644 --- a/config/locales/te.yml +++ b/config/locales/te.yml @@ -59,7 +59,6 @@ te: account_moderation_notes: create: ఏదైనా గమనికను వదులు created_msg: మోడరేషన్ గమనిక విజయవంతంగా సృష్టించబడింది! - delete: తీసివేయి destroyed_msg: మోడరేషన్ గమనిక విజయవంతంగా తొలగించబడింది! accounts: are_you_sure: ఖచ్ఛితమేగా? diff --git a/config/locales/th.yml b/config/locales/th.yml index 6745e015a..ec92cfd2d 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -82,7 +82,6 @@ th: account_moderation_notes: create: เขียนหมายเหตุ created_msg: สร้างหมายเหตุการควบคุมสำเร็จ! - delete: ลบ destroyed_msg: ทำลายหมายเหตุการควบคุมสำเร็จ! accounts: add_email_domain_block: ปิดกั้นโดเมนอีเมล @@ -151,6 +150,10 @@ th: not_subscribed: ไม่ได้บอกรับ pending: การตรวจทานที่รอดำเนินการ perform_full_suspension: ระงับ + previous_strikes: การลงโทษก่อนหน้านี้ + previous_strikes_description_html: + one: บัญชีนี้มี <strong>หนึ่ง</strong> การลงโทษ + other: บัญชีนี้มี <strong>%{count}</strong> การลงโทษ promote: เลื่อนขั้น protocol: โปรโตคอล public: สาธารณะ @@ -191,7 +194,9 @@ th: silence: จำกัด silenced: จำกัดอยู่ statuses: โพสต์ + strikes: การลงโทษก่อนหน้านี้ subscribe: บอกรับ + suspend: ระงับ suspended: ระงับอยู่ title: บัญชี unblock_email: เลิกปิดกั้นที่อยู่อีเมล @@ -210,6 +215,7 @@ th: whitelisted: อนุญาตการติดต่อกับภายนอกแล้ว action_logs: action_types: + approve_appeal: อนุมัติการอุทธรณ์ approve_user: อนุมัติผู้ใช้ assigned_to_self_report: มอบหมายรายงาน change_email_user: เปลี่ยนอีเมลสำหรับผู้ใช้ @@ -241,6 +247,7 @@ th: enable_user: เปิดใช้งานผู้ใช้ memorialize_account: ทำให้บัญชีเป็นอนุสรณ์ promote_user: เลื่อนขั้นผู้ใช้ + reject_appeal: ปฏิเสธการอุทธรณ์ reject_user: ปฏิเสธผู้ใช้ remove_avatar_user: เอาภาพประจำตัวออก reopen_report: เปิดรายงานใหม่ @@ -367,6 +374,8 @@ th: media_storage: ที่เก็บข้อมูลสื่อ new_users: ผู้ใช้ใหม่ opened_reports: รายงานที่เปิด + pending_appeals_html: + other: "<strong>%{count}</strong> การอุทธรณ์ที่รอดำเนินการ" pending_reports_html: other: "<strong>%{count}</strong> รายงานที่รอดำเนินการ" pending_tags_html: @@ -381,6 +390,10 @@ th: top_languages: ภาษาที่ใช้งานอยู่สูงสุด top_servers: เซิร์ฟเวอร์ที่ใช้งานอยู่สูงสุด website: เว็บไซต์ + disputes: + appeals: + empty: ไม่พบการอุทธรณ์ + title: การอุทธรณ์ domain_allows: add_new: อนุญาตการติดต่อกับภายนอกกับโดเมน created_msg: อนุญาตการติดต่อกับภายนอกกับโดเมนสำเร็จ @@ -414,7 +427,9 @@ th: suspend: ระงับอยู่ show: affected_accounts: - other: มีผลต่อ %{count} บัญชีในฐานข้อมูล + one: หนึ่งบัญชีในฐานข้อมูลที่ได้รับผลกระทบ + other: "%{count} บัญชีในฐานข้อมูลที่ได้รับผลกระทบ" + zero: ไม่มีบัญชีในฐานข้อมูลที่ได้รับผลกระทบ retroactive: silence: เลิกทำการจำกัดบัญชีที่มีผลที่มีอยู่จากโดเมนนี้ suspend: เลิกระงับบัญชีที่มีผลที่มีอยู่จากโดเมนนี้ @@ -460,7 +475,9 @@ th: delivery_error_days: วันที่มีข้อผิดพลาดการจัดส่ง empty: ไม่พบโดเมน known_accounts: + one: "%{count} บัญชีที่รู้จัก" other: "%{count} บัญชีที่รู้จัก" + zero: ไม่มีบัญชีที่รู้จัก moderation: all: ทั้งหมด limited: จำกัดอยู่ @@ -522,6 +539,7 @@ th: notes: other: "%{count} หมายเหตุ" action_log: รายการบันทึกการตรวจสอบ + action_taken_by: ใช้การกระทำโดย are_you_sure: คุณแน่ใจหรือไม่? assign_to_self: มอบหมายให้ฉัน assigned: ผู้ควบคุมที่ได้รับมอบหมาย @@ -529,8 +547,9 @@ th: category: หมวดหมู่ comment: none: ไม่มี + comment_description_html: 'เพื่อให้ข้อมูลเพิ่มเติม %{name} ได้เขียน:' created_at: รายงานเมื่อ - delete_and_resolve: ลบแล้วแก้ปัญหา + delete_and_resolve: ลบโพสต์ forwarded: ส่งต่อแล้ว forwarded_to: ส่งต่อไปยัง %{domain} แล้ว mark_as_resolved: ทำเครื่องหมายว่าแก้ปัญหาแล้ว @@ -548,6 +567,7 @@ th: reported_by: รายงานโดย resolved: แก้ปัญหาแล้ว resolved_msg: แก้ปัญหารายงานสำเร็จ! + skip_to_actions: ข้ามไปยังการกระทำ status: สถานะ statuses: เนื้อหาที่รายงาน target_origin: จุดเริ่มต้นของบัญชีที่ได้รับการรายงาน @@ -567,6 +587,7 @@ th: desc_html: จำนวนโพสต์ที่เผยแพร่ในเซิร์ฟเวอร์, ผู้ใช้ที่ใช้งานอยู่ และการลงทะเบียนใหม่ในบักเก็ตรายสัปดาห์ title: เผยแพร่สถิติรวมเกี่ยวกับกิจกรรมผู้ใช้ใน API bootstrap_timeline_accounts: + desc_html: แยกหลายชื่อผู้ใช้ด้วยจุลภาค จะรับประกันว่าจะแสดงบัญชีเหล่านี้ในคำแนะนำการติดตาม title: แนะนำบัญชีเหล่านี้ให้กับผู้ใช้ใหม่ contact_information: email: อีเมลธุรกิจ @@ -664,6 +685,15 @@ th: no_status_selected: ไม่มีการเปลี่ยนแปลงโพสต์เนื่องจากไม่มีการเลือก title: โพสต์ของบัญชี with_media: มีสื่อ + strikes: + actions: + delete_statuses: "%{name} ได้ลบโพสต์ของ %{target}" + disable: "%{name} ได้อายัดบัญชีของ %{target}" + none: "%{name} ได้ส่งคำเตือนไปยัง %{target}" + sensitive: "%{name} ได้ทำเครื่องหมายบัญชีของ %{target} ว่าละเอียดอ่อน" + silence: "%{name} ได้จำกัดบัญชีของ %{target}" + suspend: "%{name} ได้ระงับบัญชีของ %{target}" + appeal_approved: อุทธรณ์แล้ว system_checks: rules_check: action: จัดการกฎของเซิร์ฟเวอร์ @@ -684,7 +714,9 @@ th: disallow: ไม่อนุญาตลิงก์ disallow_provider: ไม่อนุญาตผู้เผยแพร่ shared_by_over_week: + one: แบ่งปันโดยหนึ่งคนในช่วงสัปดาห์ที่ผ่านมา other: แบ่งปันโดย %{count} คนในช่วงสัปดาห์ที่ผ่านมา + zero: ไม่มีใครแบ่งปันในช่วงสัปดาห์ที่ผ่านมา title: ลิงก์ที่กำลังนิยม usage_comparison: แบ่งปัน %{today} ครั้งวันนี้ เทียบกับ %{yesterday} เมื่อวานนี้ pending_review: การตรวจทานที่รอดำเนินการ @@ -705,13 +737,16 @@ th: not_listable: จะไม่แนะนำ not_trendable: จะไม่ปรากฏภายใต้แนวโน้ม not_usable: ไม่สามารถใช้ + peaked_on_and_decaying: สูงสุดเมื่อ %{date} ตอนนี้กำลังลง title: แฮชแท็กที่กำลังนิยม trendable: สามารถปรากฏภายใต้แนวโน้ม trending_rank: 'กำลังนิยม #%{rank}' usable: สามารถใช้ usage_comparison: ใช้ %{today} ครั้งวันนี้ เทียบกับ %{yesterday} เมื่อวานนี้ used_by_over_week: + one: ใช้โดยหนึ่งคนในช่วงสัปดาห์ที่ผ่านมา other: ใช้โดย %{count} คนในช่วงสัปดาห์ที่ผ่านมา + zero: ไม่มีใครใช้ในช่วงสัปดาห์ที่ผ่านมา title: แนวโน้ม warning_presets: add_new: เพิ่มใหม่ @@ -720,6 +755,13 @@ th: empty: คุณยังไม่ได้กำหนดคำเตือนที่ตั้งไว้ล่วงหน้าใด ๆ title: จัดการคำเตือนที่ตั้งไว้ล่วงหน้า admin_mailer: + new_appeal: + actions: + delete_statuses: เพื่อลบโพสต์ของเขา + disable: เพื่ออายัดบัญชีของเขา + sensitive: เพื่อทำเครื่องหมายบัญชีของเขาว่าละเอียดอ่อน + silence: เพื่อจำกัดบัญชีของเขา + suspend: เพื่อระงับบัญชีของเขา new_pending_account: body: รายละเอียดของบัญชีใหม่อยู่ด้านล่าง คุณสามารถอนุมัติหรือปฏิเสธใบสมัครนี้ new_report: @@ -802,7 +844,6 @@ th: status: account_status: สถานะบัญชี confirming: กำลังรอการยืนยันอีเมลให้เสร็จสมบูรณ์ - functional: บัญชีของคุณทำงานได้อย่างเต็มที่ pending: ใบสมัครของคุณกำลังรอดำเนินการตรวจทานโดยพนักงานของเรา นี่อาจใช้เวลาสักครู่ คุณจะได้รับอีเมลหากใบสมัครของคุณได้รับการอนุมัติ too_fast: ส่งแบบฟอร์มเร็วเกินไป ลองอีกครั้ง trouble_logging_in: มีปัญหาในการเข้าสู่ระบบ? @@ -865,6 +906,23 @@ th: directory: ไดเรกทอรีโปรไฟล์ explanation: ค้นพบผู้ใช้ตามความสนใจของเขา explore_mastodon: สำรวจ %{title} + disputes: + strikes: + action_taken: การกระทำที่ใช้ + appeal_submitted_at: ส่งการอุทธรณ์แล้ว + appeals: + submit: ส่งการอุทธรณ์ + associated_report: รายงานที่เกี่ยวข้อง + created_at: ลงวันที่ + recipient: ส่งถึง + status: 'โพสต์ #%{id}' + title_actions: + delete_statuses: การเอาโพสต์ออก + disable: การอายัดบัญชี + none: คำเตือน + sensitive: การทำเครื่องหมายบัญชีว่าละเอียดอ่อน + silence: การจำกัดบัญชี + suspend: การระงับบัญชี domain_validator: invalid_domain: ไม่ใช่ชื่อโดเมนที่ถูกต้อง errors: @@ -1014,7 +1072,7 @@ th: move_handler: carry_blocks_over_text: ผู้ใช้นี้ได้ย้ายจาก %{acct} ซึ่งคุณได้ปิดกั้น carry_mutes_over_text: ผู้ใช้นี้ได้ย้ายจาก %{acct} ซึ่งคุณได้ซ่อน - copy_account_note_text: 'ผู้ใช้นี้ได้ย้ายจาก %{acct} นี่คือหมายเหตุก่อนหน้าของคุณเกี่ยวกับผู้ใช้:' + copy_account_note_text: 'ผู้ใช้นี้ได้ย้ายจาก %{acct} นี่คือหมายเหตุก่อนหน้านี้ของคุณเกี่ยวกับผู้ใช้:' notification_mailer: digest: action: ดูการแจ้งเตือนทั้งหมด @@ -1050,6 +1108,8 @@ th: title: การดันใหม่ status: subject: "%{name} เพิ่งโพสต์" + update: + subject: "%{name} ได้แก้ไขโพสต์" notifications: email_events: เหตุการณ์สำหรับการแจ้งเตือนอีเมล email_events_hint: 'เลือกเหตุการณ์ที่คุณต้องการรับการแจ้งเตือน:' @@ -1265,7 +1325,7 @@ th: reblogged: ดันแล้ว sensitive_content: เนื้อหาที่ละเอียดอ่อน tags: - does_not_match_previous_name: ไม่ตรงกับชื่อก่อนหน้า + does_not_match_previous_name: ไม่ตรงกับชื่อก่อนหน้านี้ terms: title: เงื่อนไขการให้บริการและนโยบายความเป็นส่วนตัวของ %{instance} themes: @@ -1306,7 +1366,6 @@ th: spam: สแปม violation: เนื้อหาละเมิดหลักเกณฑ์ชุมชนดังต่อไปนี้ reason: 'เหตุผล:' - review_server_policies: ตรวจทานนโยบายของเซิร์ฟเวอร์ statuses: 'โพสต์ที่พบว่ามีการละเมิด:' subject: disable: บัญชีของคุณ %{acct} ถูกอายัด diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 9fdcf8a7f..336a9a74a 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -94,7 +94,6 @@ tr: account_moderation_notes: create: Not bırak created_msg: Denetim notu başarıyla oluşturuldu! - delete: Sil destroyed_msg: Denetim notu başarıyla yok edildi! accounts: add_email_domain_block: E-posta alan adını engelle @@ -163,6 +162,11 @@ tr: not_subscribed: Abone edilmedi pending: Bekleyen yorum perform_full_suspension: Askıya al + previous_strikes: Önceki eylemler + previous_strikes_description_html: + one: Bu hesap için <strong>bir</strong> eylem yapılmış. + other: Bu hesap için <strong>%{count}</strong> eylem yapılmış. + zero: Bu hesap <strong>hali iyi durumda</strong>. promote: Yükselt protocol: Protokol public: Herkese açık @@ -206,6 +210,7 @@ tr: statuses: Durumlar strikes: Önceki eylemler subscribe: Abone ol + suspend: Askıya al suspended: Askıya alındı suspension_irreversible: Bu hesabın verileri geri dönüşümsüz olarak silindi. Hesabı kullanılabilir hale getirmek için hesabın askıya alınmasını kaldırabilirsiniz, ancak daha önce sahip olduğu herhangi bir veri kurtarılamaz. suspension_reversible_hint_html: Hesap askıya alındı ve veriler %{date} tarihinde tamamen kaldırılacak. O zamana kadar, hesap herhangi bir olumsuz etki olmaksızın geri yüklenebilir. Hesabın tüm verilerini hemen kaldırmak isterseniz, bunu aşağıdan yapabilirsiniz. @@ -226,6 +231,7 @@ tr: whitelisted: Beyaz listede action_logs: action_types: + approve_appeal: İtirazı Kabul Et approve_user: Kullanıcıyı Onayla assigned_to_self_report: Raporu Ata change_email_user: Kullanıcı E-postasını Değiştir @@ -257,6 +263,7 @@ tr: enable_user: Kullanıcıyı Etkinleştir memorialize_account: Hesabı Anıtlaştır promote_user: Kullanıcıyı Yükselt + reject_appeal: İtirazı Reddet reject_user: Kullanıcıyı Reddet remove_avatar_user: Profil Resmini Kaldır reopen_report: Şikayeti Tekrar Aç @@ -275,6 +282,7 @@ tr: update_domain_block: Engellenen Alan Adını Güncelle update_status: Durumu Güncelle actions: + approve_appeal_html: "%{name}, %{target} kullanıcısının yönetim kararına itirazını kabul etti" approve_user_html: "%{name}, %{target} konumundan kaydı onayladı" assigned_to_self_report_html: "%{name} kendilerine %{target} adlı raporu verdi" change_email_user_html: "%{name}, %{target} kullanıcısının e-posta adresini değiştirdi" @@ -306,6 +314,7 @@ tr: enable_user_html: "%{name}, %{target} kullanıcısı için oturum açmayı etkinleştirdi" memorialize_account_html: "%{name}, %{target} kullanıcısının hesabını bir anıt sayfaya dönüştürdü" promote_user_html: "%{name}, %{target} kullanıcısını yükseltti" + reject_appeal_html: "%{name}, %{target} kullanıcısının yönetim kararına itirazını reddetti" reject_user_html: "%{name}, %{target} konumundan kaydı reddetti" remove_avatar_user_html: "%{name}, %{target} kullanıcısının avatarını kaldırdı" reopen_report_html: "%{name}, %{target} şikayetini yeniden açtı" @@ -384,14 +393,17 @@ tr: media_storage: Medya deposu new_users: yeni kullanıcılar opened_reports: açılan bildirimler + pending_appeals_html: + one: "<strong>%{count}</strong> bekleyen itiraz" + other: "<strong>%{count}</strong> bekleyen itiraz" pending_reports_html: - one: "<strong>1</strong> bekleyen bildirim" + one: "<strong>%{count}</strong> bekleyen bildirim" other: "<strong>%{count}</strong> bekleyen bildirim" pending_tags_html: - one: "<strong>1</strong> bekleyen etiket" + one: "<strong>%{count}</strong> bekleyen etiket" other: "<strong>%{count}</strong> bekleyen etiket" pending_users_html: - one: "<strong>1</strong> bekleyen kullanıcı" + one: "<strong>%{count}</strong> bekleyen kullanıcı" other: "<strong>%{count}</strong> bekleyen kullanıcı" resolved_reports: çözülmüş bildirimler software: Yazılım @@ -401,6 +413,10 @@ tr: top_languages: En aktif diller top_servers: En aktif sunucular website: Web sitesi + disputes: + appeals: + empty: İtiraz bulunamadı. + title: İtirazlar domain_allows: add_new: Alan adını beyaz listeye al created_msg: Alan adı başarıyla beyaz listeye alındı @@ -441,6 +457,7 @@ tr: affected_accounts: one: Veritabanındaki bir hesap etkilendi other: Veritabanındaki %{count} hesap etkilendi + zero: Veritabanındaki hiç bir hesap etkilenmedi retroactive: silence: Bu domaindeki tüm hesapların üzerindeki susturulma işlemini kaldır suspend: Bu domaindeki tüm hesapların üzerindeki uzaklaştırma işlemini kaldır @@ -494,6 +511,7 @@ tr: known_accounts: one: "%{count} bilinen hesap" other: "%{count} bilinen hesap" + zero: Bilinen hesap yok moderation: all: Tümü limited: Sınırlı @@ -560,10 +578,12 @@ tr: action_log: Denetim günlüğü action_taken_by: tarafından gerçekleştirilen eylem actions: + delete_description_html: Bildirilen gönderiler silinecek ve aynı hesapla ileride yaşabileceğiniz etkileşimlerde çoğaltmanız için bir eylem kaydedilecek. other_description_html: Hesabın davranışını denetlemek ve bildirilen hesabın iletişimini yapılandırmak için daha fazla seçenek görün. + resolve_description_html: Bildirilen hesap için bir şey yapılmayacak, eylem kaydedilmeyecek ve bildirim kapatılacak. silence_description_html: Profil sadece halihazırda takip edenler ve elle bakanlarca görünecek, böylece erişimi ciddi bir şekilde kısıtlanacak. Her zaman geri alınabilir. suspend_description_html: Profil ve tüm içeriği sonunda silinene kadar erişilmez olacak. Hesapla etkileşim mümkün olmayacak. 30 gün boyunca geri alınabilir. - actions_description_html: 'Yukarıdaki incitici içeriğin kaldırılması yetersiz ise:' + actions_description_html: Bu bildirimi çözmek için ne yapılması gerektiğine karar verin. Bildirilen hesap için ceza işlemi yaparsanız, <strong>İstenmeyen</strong> kategorisi seçilmemişse, onlara bir e-posta duyurusu gönderilecektir. add_to_report: Bildirime daha fazlasını ekle are_you_sure: Emin misiniz? assign_to_self: Bana ata @@ -575,7 +595,7 @@ tr: none: Yok comment_description_html: 'Daha fazla bilgi vermek için %{name} şunu yazdı:' created_at: Şikayet edildi - delete_and_resolve: Çöz ve sil + delete_and_resolve: Gönderileri sil forwarded: İletildi forwarded_to: "%{domain}'e iletildi" mark_as_resolved: Giderildi olarak işaretle @@ -589,12 +609,14 @@ tr: placeholder: Hangi işlemlerin yapıldığını, ya da diğer ilgili güncellemeleri açıklayın... title: Notlar notes_description_html: Kendiniz ve diğer moderatörler için not bırakın veya notları görüntüleyin + quick_actions_description_html: 'Hemen bir şey yapın veya bildirilen içeriği görmek için aşağı kaydırın:' reopen: Şikayeti tekrar aç report: 'Şikayet #%{id}' reported_account: Şikayet edilen hesap reported_by: Şikayet eden resolved: Giderildi resolved_msg: Şikayet başarıyla çözümlendi! + skip_to_actions: İşlemlere atla status: Durum statuses: Bildirilen içerik statuses_description_html: İncitici içerik, bildirilen hesapla iletişimde alıntılanacaktır @@ -715,6 +737,16 @@ tr: no_status_selected: Hiçbiri seçilmediğinden hiçbir durum değiştirilmedi title: Hesap durumları with_media: Medya ile + strikes: + actions: + delete_statuses: "%{name}, %{target} kullanıcısının gönderilerini sildi" + disable: "%{name}, %{target} kullanıcısının hesabını dondurdu" + none: "%{name}, %{target} kullanıcısına bir uyarı gönderdi" + sensitive: "%{name}, %{target} kullanıcısının hesabını hassas olarak işaretledi" + silence: "%{name}, %{target} kullanıcısının hesabını kısıtladı" + suspend: "%{name}, %{target} kullanıcısının hesabını askıya aldı" + appeal_approved: İtiraz Edildi + appeal_pending: İtiraz bekliyor system_checks: database_schema_check: message_html: Beklemede olan veritabanı güncellemeleri mevcut. Uygulamanın beklenildiği gibi çalışması için lütfen onları çalıştırın @@ -739,6 +771,7 @@ tr: shared_by_over_week: one: Geçen hafta bir kişi paylaştı other: Geçen hafta %{count} kişi paylaştı + zero: Geçen hafta kimse paylaşmadı title: Öne çıkan bağlantılar usage_comparison: Bugün %{today} kere paylaşıldı, dün %{yesterday} kere paylaşılmıştı pending_review: İnceleme bekliyor @@ -766,8 +799,8 @@ tr: usable: Kullanılabilir usage_comparison: Bugün %{today} kere kullanıldı, dün %{yesterday} kere kullanılmıştı used_by_over_week: - one: Geçen hafta %{count} kişi tarafından kullanıldı - other: Geçen hafta %{count} kişi tarafından kullanıldı + one: Geçen hafta bir kişi tarafından kullanıldı + zero: Geçen hafta kimse tarafından kullanılmadı title: Öne çıkanlar warning_presets: add_new: Yeni ekle @@ -776,6 +809,17 @@ tr: empty: Henüz önceden ayarlanmış bir uyarı tanımlanmadı. title: Uyarı ön-ayarlarını yönet admin_mailer: + new_appeal: + actions: + delete_statuses: gönderilerini silme + disable: hesaplarını dondurma + none: uyarı + sensitive: hesaplarını hassas olarak işaretleme + silence: hesaplarını kısıtlama + suspend: hesaplarını askıya alma + body: "%{target}, %{date} tarihinde %{action_taken_by} tarafından alınan %{type} yönetim kararına itiraz etti. Şunu yazdılar:" + next_steps: Yönetim kararını geri almak için itirazı onaylayabilir veya itirazı görmezden gelebilirsiniz. + subject: "%{username}, %{instance} hakkındaki bir yönetim kararına itiraz ediyor" new_pending_account: body: Yeni hesabın detayları aşağıdadır. Bu başvuruyu onaylayabilir ya da reddedebilirsiniz. subject: "%{instance} üzerinde gözden geçirmek için yeni hesap (%{username})" @@ -866,7 +910,6 @@ tr: status: account_status: Hesap durumu confirming: E-posta doğrulamasının tamamlanması bekleniyor. - functional: Hesabınız tamamen kullanıma hazır. pending: Başvurunuz personelimiz tarafından gözden geçirilmeyi beklemektedir. Bu biraz zaman alabilir. Başvurunuz onaylanırsa bir e-posta alacaksınız. redirecting_to: Hesabınız aktif değil çünkü şu anda %{acct} adresine yönlendirilmektedir. too_fast: Form çok hızlı gönderildi, tekrar deneyin. @@ -932,6 +975,32 @@ tr: directory: Profil Dizini explanation: Kullanıcıları ilgi alanlarına göre keşfedin explore_mastodon: "%{title} sunucusunu keşfet" + disputes: + strikes: + action_taken: Yapılan işlem + appeal: İtiraz + appeal_approved: Eyleme başarılı bir şekilde itiraz edildi ve artık geçerli değil + appeal_rejected: İtiraz reddedildi + appeal_submitted_at: İtiraz gönderildi + appealed_msg: İtiraz gönderildi. Kabul edilirse bilgilendirileceksiniz. + appeals: + submit: İtirazı gönder + associated_report: İlişkili rapor + created_at: Tarih + recipient: Kime + status: 'Gönderi #%{id}' + status_removed: Gönderi zaten sistemden kaldırıldı + title: "%{date} tarihli %{action}" + title_actions: + delete_statuses: Gönderi kaldırma + disable: Hesabın dondurulması + none: Uyarı + sensitive: Hassas hesap olarak işaretleme + silence: Hesabın kısıtlanması + suspend: Hesabın askıya alınması + your_appeal_approved: İtirazınız onaylandı + your_appeal_pending: Bir itiraz gönderdiniz + your_appeal_rejected: İtirazınız reddedildi domain_validator: invalid_domain: geçerli bir alan adı değil errors: @@ -1143,6 +1212,8 @@ tr: title: Yeni boost status: subject: "%{name} az önce gönderdi" + update: + subject: "%{name} bir gönderiyi düzenledi" notifications: email_events: E-posta bildirimi gönderilecek etkinlikler email_events_hint: 'Bildirim almak istediğiniz olayları seçin:' @@ -1493,6 +1564,15 @@ tr: recovery_instructions_html: 'Eğer telefonunuza erişiminizi kaybederseniz, aşağıdaki kurtarma kodlarından birini kullanarak hesabınıza giriş yapabilirsiniz. Kurtarma kodlarınızı güvenli halde tutunuz. Örneğin: kodların çıktısını alıp diğer önemli belgeleriniz ile birlikte saklayabilirsiniz.' webauthn: Güvenlik anahtarları user_mailer: + appeal_approved: + action: Hesabınıza gidin + explanation: "%{appeal_date} tarihinde gönderdiğiniz, hesabınıza yönelik %{strike_date} tarihli eyleme itirazınız onaylandı. Hesabınız artık tekrar iyi durumda." + subject: "%{date} tarihli itirazınız kabul edildi" + title: İtiraz onaylandı + appeal_rejected: + explanation: "%{appeal_date} tarihinde gönderdiğiniz, hesabınıza yönelik %{strike_date} tarihli eyleme itirazınız reddedildi." + subject: "%{date} tarihli itirazınız reddedildi" + title: İtiraz reddedildi backup_ready: explanation: Mastodon hesabınızın tam yedeğini istemiştiniz. Şimdi indirilebilir durumda! subject: Arşiviniz indirilmeye hazır @@ -1504,6 +1584,8 @@ tr: subject: Lütfen oturum açma girişimini onaylayın title: Oturum açma girişimi warning: + appeal: Bir itiraz gönder + appeal_description: Bunun bir hata olduğunu düşünüyorsanız, %{instance} sunucusunun personeline bir itiraz gönderebilirsiniz. categories: spam: İstenmeyen violation: İçerik aşağıdaki topluluk ilkelerini ihlal ediyor @@ -1515,7 +1597,6 @@ tr: suspend: Hesabınızı artık kullanamazsınız ve profiliniz ve diğer veri artık erişilebilir değil. Yaklaşık 30 gün içinde silinene kadar verinizin bir yedeğini istemek için giriş yapabilirsiniz, ancak askıdan kaçınmanızı önlemek için bazı temel veriyi saklayabiliriz. get_in_touch: Bunun bir hata olduğunu düşünüyorsanız, %{instance} yönetimiyle bağlantıya geçmek için bu e-postaya yanıt verebilirsiniz. reason: 'Gerekçe:' - review_server_policies: Sunucu politikalarını inceleyin statuses: 'İhlal içeren gönderiler:' subject: delete_statuses: "%{acct} hesabınızdaki gönderiler kaldırıldı" diff --git a/config/locales/tt.yml b/config/locales/tt.yml index ab51124fd..40bf65ac5 100644 --- a/config/locales/tt.yml +++ b/config/locales/tt.yml @@ -20,8 +20,6 @@ tt: group: Törkem unfollow: Язылынмау admin: - account_moderation_notes: - delete: Бетерү accounts: avatar: Аватар by_domain: Домен diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 7fe318a8e..6d96a951b 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -100,7 +100,6 @@ uk: account_moderation_notes: create: Залишити нотатку created_msg: Нотатку модератора успішно створено! - delete: Видалити destroyed_msg: Нотатку модератора успішно видалено! accounts: add_email_domain_block: Додати поштовий домен до чорного списку @@ -210,8 +209,8 @@ uk: silence: Глушення silenced: Заглушені statuses: Статуси - strikes: Попередні наліпки subscribe: Підписатися + suspend: Призупинити suspended: Призупинені suspension_irreversible: Дані цього облікового запису безповоротно видалено. Ви можете розблокувати обліковий запис, щоб могти ним користуватися, але будь-які його дані не відновляться. suspension_reversible_hint_html: Обліковий запис заблоковано, а дані буде повністю вилучено %{date}. До цього часу обліковий запис можна відновити без будь-яких негативних наслідків. Якщо ви бажаєте вилучити всі дані облікового запису негайно, ви можете зробити це внизу. @@ -232,6 +231,7 @@ uk: whitelisted: У білому списку action_logs: action_types: + approve_appeal: Затвердити апеляцію approve_user: Затвердити користувачів assigned_to_self_report: Призначити звіт change_email_user: Змінити електронну пошту для користувача @@ -263,6 +263,7 @@ uk: enable_user: Активувати користувача memorialize_account: Зробити обліковий запис меморіалом promote_user: Підвищити користувача + reject_appeal: Відхилити апеляцію reject_user: Відхилити користувача remove_avatar_user: Видалити аватар reopen_report: Перевідкрити скаргу @@ -390,21 +391,6 @@ uk: media_storage: Медіасховище new_users: нові користувачі opened_reports: звітів відкрито - pending_reports_html: - few: "<strong>%{count}</strong> звіти у черзі" - many: "<strong>%{count}</strong> звітів у черзі" - one: "<strong>1</strong> звіт у черзі" - other: "<strong>%{count}</strong> звіти у черзі" - pending_tags_html: - few: "<strong>%{count}</strong> хештеґи у черзі" - many: "<strong>%{count}</strong> хештеґів у черзі" - one: "<strong>1</strong> хештеґ у черзі" - other: "<strong>%{count}</strong> хештеґи у черзі" - pending_users_html: - few: "<strong>%{count}</strong> користувача у черзі" - many: "<strong>%{count}</strong> користувачів у черзі" - one: "<strong>1</strong> користувач у черзі" - other: "<strong>%{count}</strong> користувача у черзі" resolved_reports: розв'язані звіти software: Програмне забезпечення sources: Джерела реєстрації @@ -413,6 +399,10 @@ uk: top_languages: Найактивніші мови top_servers: Найактивніші сервери website: Вебсайт + disputes: + appeals: + empty: Апеляцій не знайдено. + title: Апеляції domain_allows: add_new: Додати домен до білого списку created_msg: Домен було успішно додано до білого списку @@ -451,10 +441,9 @@ uk: suspend: призупинені show: affected_accounts: - few: Впливає на %{count} облікових записи у базі даних - many: Впливає на %{count} облікових записів у базі даних one: Впливає на один обліковий запис у базі даних other: Впливає на %{count} облікових записів у базі даних + zero: Не впливає на жоден обліковий запис у базі даних retroactive: silence: Зняти глушення з усіх існуючих заглушених облікових записів цього домену suspend: Розморозити існуючі заморожені облікові записи з цього домену @@ -508,10 +497,9 @@ uk: destroyed_msg: Дані з %{domain} тепер у черзі на видалення. empty: Доменів не знайдено. known_accounts: - few: "%{count} відомих облікових записів" - many: "%{count} відомих облікових записів" one: "%{count} відомий обліковий запис" other: "%{count} відомих облікових записів" + zero: Немає відомих облікових записів moderation: all: Усі limited: Обмежені @@ -583,7 +571,6 @@ uk: other_description_html: Більше опцій керування поведінкою облікового запису і налаштування комунікації з обліковим записом, на який поскаржилися. silence_description_html: Профіль буде видимий лише тим, хто вже стежить за ним або знайде його самостійно, сильно обмежуючи його знаходження. Можна потім скасувати. suspend_description_html: Профіль і весь його вміст буде недоступним, поки його не буде видалено. Взаємодія з обліковим записом буде неможливою. - actions_description_html: 'Якщо вилучення зазначеного образливого вмісту недостатньо:' add_to_report: Додати ще подробиць до скарги are_you_sure: Ви впевнені? assign_to_self: Призначити мені @@ -595,7 +582,7 @@ uk: none: Немає comment_description_html: 'Щоб надати більше відомостей, %{name} пише:' created_at: Створено - delete_and_resolve: Видалити й розв'язати + delete_and_resolve: Видалити дописи forwarded: Переслано forwarded_to: Переслано до %{domain} mark_as_resolved: Відмітити як вирішену @@ -615,6 +602,7 @@ uk: reported_by: Відправник скарги resolved: Вирішено resolved_msg: Скаргу успішно вирішено! + skip_to_actions: Перейти до дій status: Статус statuses: Вміст, на який поскаржилися statuses_description_html: Замінений вміст буде цитований у спілкуванні з обліковим записом, на який поскаржилися @@ -737,6 +725,9 @@ uk: no_status_selected: Жодного статуса не було змінено, оскільки жодного не було вибрано title: Статуси облікових записів with_media: З медіа + strikes: + actions: + delete_statuses: "%{name} видаляє допис від %{target}" system_checks: database_schema_check: message_html: Існують відкладені перенесення бази даних. Запустіть їх, щоб забезпечити очікувану роботу програми @@ -758,11 +749,6 @@ uk: allow_provider: Дозволити публікатора disallow: Заборонити посилання disallow_provider: Заборонити публікатора - shared_by_over_week: - few: Поширили %{count} людини за останній тиждень - many: Поширили %{count} людей за останній тиждень - one: Поширила одна людина за останній тиждень - other: Поширили %{count} людини за останній тиждень title: Популярні посилання usage_comparison: Сьогодні поширено %{today} разів, у порівнянні з %{yesterday} вчора pending_review: Очікує перевірки @@ -789,11 +775,6 @@ uk: trending_rank: 'Популярність #%{rank}' usable: Може бути використано usage_comparison: Сьогодні використано %{today} разів, у порівнянні з %{yesterday} вчора - used_by_over_week: - few: Використали %{count} людини за минулий тиждень - many: Використали %{count} людей за минулий тиждень - one: Використала одна людина за минулий тиждень - other: Використали %{count} людини за минулий тиждень title: Популярні warning_presets: add_new: Додати новий @@ -802,6 +783,16 @@ uk: empty: Ви ще не визначили жодних попереджень. title: Управління шаблонами попереджень admin_mailer: + new_appeal: + actions: + delete_statuses: щоб видалити їхні дописи + disable: щоб заморозити їхній обліковий запис + none: попередження + sensitive: щоб позначати їхній обліковий запис делікатним + silence: щоб обмежити їхній обліковий запис + suspend: щоб призупинити їхній обліковий запис + next_steps: Ви можете схвалити апеляцію, щоб скасувати рішення про модерацію або проігнорувати її. + subject: "%{username} апелює до рішення про модерацію на %{instance}" new_pending_account: body: Деталі нового облікового запису наведено нижче. Ви можете схвалити або відхилити цю заяву. subject: Новий обліковий запис надіслано на розгляд на %{instance} (%{username}) @@ -892,7 +883,6 @@ uk: status: account_status: Статус облікового запису confirming: Очікуємо на завершення підтвердження за допомогою електронної пошти. - functional: Ваш обліковий запис повністю робочій. pending: Ваша заява очікує на розгляд нашим персоналом. Це може зайняти деякий час. Ви отримаєте електронний лист, якщо ваша заява буде схвалена. redirecting_to: Ваш обліковий запис наразі неактивний, тому що він перенаправлений до %{acct}. too_fast: Форму подано занадто швидко, спробуйте ще раз. @@ -958,6 +948,30 @@ uk: directory: Каталог профілів explanation: Шукайте користувачів за їх інтересами explore_mastodon: Досліджуйте %{title} + disputes: + strikes: + action_taken: Дію виконано + appeal: Апеляція + appeal_rejected: Апеляцію було відхилено + appeal_submitted_at: Апеляцію надіслано + appealed_msg: Вашу апеляцію було надіслано. Якщо її погодять, вам буде повідомлено про це. + appeals: + submit: Подати апеляцію + associated_report: Пов'язана скарга + created_at: Застарілі + status: 'Допис #%{id}' + status_removed: Допис уже вилучено з системи + title: "%{action} від %{date}" + title_actions: + delete_statuses: Вилучення допису + disable: Заморожування облікового запису + none: Попередження + sensitive: Позначити обліковим записом з делікатним вмістом + silence: Обмеження облікового запису + suspend: Призупинення облікового запису + your_appeal_approved: Вашу апеляцію було схвалено + your_appeal_pending: Ви не подавали апеляцій + your_appeal_rejected: Вашу апеляцію було відхилено domain_validator: invalid_domain: не є допустимим ім'ям домену errors: @@ -1177,6 +1191,8 @@ uk: title: Нове передмухування status: subject: "%{name} щойно опубліковано" + update: + subject: "%{name} змінює допис" notifications: email_events: Події, про які сповіщати електронною поштою email_events_hint: 'Оберіть події, про які ви хочете отримувати сповіщення:' @@ -1459,6 +1475,12 @@ uk: recovery_instructions_html: У випадку втрати доступу до вашого телефону ви можете використати один з нижчевказаних кодів відновлення, щоб повернути доступ до вашого облікового запису. <strong>Тримайте коди відновлення у безпеці</strong>, наприклад, роздрукуйте їх та зберігайте разом з іншими важливими документами. webauthn: Ключі безпеки user_mailer: + appeal_approved: + action: Перейти у ваш обліковий запис + subject: Вашу апеляцію від %{date} було схвалено + title: Апеляцію схвалено + appeal_rejected: + title: Апеляцію відхилено backup_ready: explanation: Ви робили запит повної резервної копії вашого облікового запису Mastodon. Вона вже готова для завантаження! subject: Ваш архів готовий до завантаження @@ -1470,6 +1492,7 @@ uk: subject: Будь ласка, підтвердіть спробу входу title: Спроба входу warning: + appeal: Подати апеляцію categories: spam: Спам violation: Вміст порушує такі правила спільноти @@ -1481,7 +1504,6 @@ uk: suspend: Ви більше не можете користуватися своїм обліковим записом, а ваші інші дані більше недоступні. Ви досі можете увійти, щоб надіслати запит на отримання резервної копії своїх даних до повного видалення впродовж приблизно 30 днів, але ми збережемо деякі основні дані, щоб унеможливити ухилення вами від призупинення. get_in_touch: Якщо ви вважаєте, що це помилка, ви можете відповісти на цей електронний лист, щоб зв'язатися з персоналом %{instance}. reason: 'Причина:' - review_server_policies: Переглянути політики сервера statuses: 'Дописи, які порушили правила:' subject: delete_statuses: Ваші дописи на %{acct} були вилучені diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 2464bbaa8..99244e81c 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -88,7 +88,6 @@ vi: account_moderation_notes: create: Thêm ghi chú created_msg: Thêm ghi chú kiểm duyệt thành công! - delete: Xóa bỏ destroyed_msg: Đã xóa ghi chú kiểm duyệt! accounts: add_email_domain_block: Chặn tên miền email @@ -157,6 +156,11 @@ vi: not_subscribed: Chưa đăng ký pending: Chờ duyệt perform_full_suspension: Vô hiệu hóa + previous_strikes: Những lần trước + previous_strikes_description_html: + one: Người dùng này có <strong>một</strong> lần cảnh cáo. + other: Người dùng này có <strong>%{count}</strong> lần cảnh cáo. + zero: Người dùng này <strong>chưa từng bị cảnh cáo</strong>. promote: Chỉ định vai trò protocol: Giao thức public: Công khai @@ -200,6 +204,7 @@ vi: statuses: Tút strikes: Những lần trước subscribe: Đăng ký + suspend: Vô hiệu hóa suspended: Vô hiệu hóa suspension_irreversible: Toàn bộ dữ liệu của người dùng này sẽ bị xóa hết. Bạn vẫn có thể ngừng vô hiệu hóa nhưng dữ liệu sẽ không thể phục hồi. suspension_reversible_hint_html: Mọi dữ liệu của người này sẽ bị xóa sạch vào %{date}. Trước thời hạn này, dữ liệu vẫn có thể phục hồi. Nếu bạn muốn xóa dữ liệu của người này ngay lập tức, hãy tiếp tục. @@ -220,6 +225,7 @@ vi: whitelisted: Danh sách trắng action_logs: action_types: + approve_appeal: Cho phép Xuất Hiện approve_user: Phê duyệt người dùng assigned_to_self_report: Tự xử lý báo cáo change_email_user: Đổi email @@ -251,6 +257,7 @@ vi: enable_user: Kích hoạt lại người dùng memorialize_account: Đánh dấu tưởng niệm promote_user: Chỉ định vai trò + reject_appeal: Từ chối Xuất Hiện reject_user: Từ chối người dùng remove_avatar_user: Xóa ảnh đại diện reopen_report: Mở lại báo cáo @@ -269,6 +276,7 @@ vi: update_domain_block: Cập nhật máy chủ chặn update_status: Cập nhật tút actions: + approve_appeal_html: "%{name} đã phê duyệt quyết định kiểm duyệt từ %{target}" approve_user_html: "%{name} đã chấp nhận đăng ký từ %{target}" assigned_to_self_report_html: "%{name} tự xử lý báo cáo %{target}" change_email_user_html: "%{name} đã thay đổi địa chỉ email cho %{target}" @@ -300,6 +308,7 @@ vi: enable_user_html: "%{name} mở khóa cho người dùng %{target}" memorialize_account_html: "%{name} đã biến tài khoản %{target} thành một trang tưởng niệm" promote_user_html: "%{name} chỉ định vai trò cho %{target}" + reject_appeal_html: "%{name} đã phản đối quyết định kiểm duyệt từ %{target}" reject_user_html: "%{name} đã từ chối đăng ký từ %{target}" remove_avatar_user_html: "%{name} đã xóa ảnh đại diện của %{target}" reopen_report_html: "%{name} mở lại báo cáo %{target}" @@ -378,6 +387,8 @@ vi: media_storage: Dung lượng lưu trữ new_users: người dùng mới opened_reports: báo cáo chưa xử lí + pending_appeals_html: + other: "<strong>%{count}</strong> kháng cáo đang chờ" pending_reports_html: other: "<strong>%{count}</strong> báo cáo đang chờ" pending_tags_html: @@ -392,6 +403,10 @@ vi: top_languages: Ngôn ngữ phổ biến top_servers: Máy chủ phổ biến website: Website + disputes: + appeals: + empty: Không tìm thấy. + title: Xuất Hiện domain_allows: add_new: Cho phép liên hợp với máy chủ created_msg: Máy chủ đã được kích hoạt liên hợp thành công @@ -430,7 +445,9 @@ vi: suspend: bị vô hiệu hóa show: affected_accounts: - other: "%{count} tài khoản trong cơ sở dữ liệu bị ảnh hưởng" + one: Ảnh hưởng một người dùng trong cơ sở dữ liệu + other: Ảnh hưởng %{count} người dùng trong cơ sở dữ liệu + zero: Không ảnh hưởng người dùng nào trong cơ sở dữ liệu retroactive: silence: Bỏ hạn chế những tài khoản ở máy chủ này suspend: Ngưng vô hiệu hóa các tài khoản ở máy chủ này @@ -481,7 +498,9 @@ vi: destroyed_msg: Dữ liệu từ %{domain} đã lên lịch để xóa. empty: Không có máy chủ nào. known_accounts: - other: "%{count} tài khoản đã biết" + one: "%{count} người dùng đã biết" + other: "%{count} người dùng đã biết" + zero: Không có người dùng đã biết moderation: all: Tất cả limited: Hạn chế @@ -547,10 +566,12 @@ vi: action_log: Nhật ký kiểm duyệt action_taken_by: Hành động được thực hiện bởi actions: + delete_description_html: Những tút bị báo cáo sẽ được xóa và 1 thẹo sẽ được ghi lại để giúp bạn lưu ý về tài khoản này trong tương lai. other_description_html: Những tùy chọn để kiểm soát tài khoản và giao tiếp với tài khoản bị báo cáo. + resolve_description_html: Không có hành động nào áp dụng đối với tài khoản bị báo cáo, không có thẹo, và báo cáo sẽ được đóng. silence_description_html: Trang cá nhân sẽ chỉ hiển thị với những người đã theo dõi hoặc tìm kiếm thủ công, hạn chế tối đa tầm ảnh hưởng của nó. Có thể đổi lại bình thường sau. suspend_description_html: Trang cá nhân và tất cả các nội dung sẽ không thể truy cập cho đến khi nó bị xóa hoàn toàn. Không thể tương tác với tài khoản. Đảo ngược trong vòng 30 ngày. - actions_description_html: 'Nếu loại bỏ nội dung vi phạm ở trên là không đủ:' + actions_description_html: Quyết định hướng xử lý báo cáo này. Nếu áp đặt trừng phạt, một email thông báo sẽ được gửi cho họ, ngoại trừ nếu đó là <strong>Spam</strong>. add_to_report: Bổ sung báo cáo are_you_sure: Bạn có chắc không? assign_to_self: Giao cho tôi @@ -562,7 +583,7 @@ vi: none: Không có mô tả comment_description_html: 'Để cung cấp thêm thông tin, %{name} cho biết:' created_at: Báo cáo lúc - delete_and_resolve: Xóa và giải quyết + delete_and_resolve: Xóa tút forwarded: Chuyển tiếp forwarded_to: Chuyển tiếp tới %{domain} mark_as_resolved: Đã xử lý xong! @@ -576,12 +597,14 @@ vi: placeholder: Mô tả vi phạm của người này, mức độ xử lý và những cập nhật liên quan khác... title: Ghi chú notes_description_html: Xem và để lại ghi chú cho các kiểm duyệt viên khác + quick_actions_description_html: 'Kiểm duyệt nhanh hoặc kéo xuống để xem nội dung bị báo cáo:' reopen: Mở lại báo cáo report: 'Báo cáo #%{id}' reported_account: Tài khoản bị báo cáo reported_by: Báo cáo bởi resolved: Đã xử lý xong resolved_msg: Đã xử lý báo cáo xong! + skip_to_actions: Kiểm duyệt ngay status: Trạng thái statuses: Nội dung bị báo cáo statuses_description_html: Lý do tài khoản hoặc nội dung này bị báo cáo sẽ được trích dẫn trong giao tiếp với tài khoản báo cáo @@ -625,7 +648,7 @@ vi: desc_html: Hiển thị trên trang chủ. Kích cỡ tối thiểu 600x100px. Mặc định dùng hình thu nhỏ của máy chủ title: Hình ảnh giới thiệu mascot: - desc_html: Hiển thị trên nhiều trang. Kích cỡ tối thiểu 293 x 205px. Mặc định dùng linh vật Mastodon + desc_html: Hiển thị trên nhiều trang. Kích cỡ tối thiểu 293 × 205px. Mặc định dùng linh vật Mastodon title: Logo máy chủ peers_api_enabled: desc_html: Tên miền mà máy chủ này đã kết giao trong mạng liên hợp @@ -702,6 +725,16 @@ vi: no_status_selected: Bạn chưa chọn bất kỳ tút nào title: Toàn bộ tút with_media: Có media + strikes: + actions: + delete_statuses: "%{name} đã xóa tút của %{target}" + disable: "%{name} đã ẩn %{target}" + none: "%{name} đã gửi cảnh cáo %{target}" + sensitive: "%{name} đã đánh dấu người dùng %{target} là nhạy cảm" + silence: "%{name} đã ẩn %{target}" + suspend: "%{name} đã vô hiệu hóa %{target}" + appeal_approved: Đã khiếu nại + appeal_pending: Đang kháng cáo system_checks: database_schema_check: message_html: Có cơ sở dữ liệu đang chờ xử lý. Xin khởi động nó để ứng dụng có thể hoạt động một cách ổn định nhất @@ -724,7 +757,9 @@ vi: disallow: Liên kết cấm disallow_provider: Nguồn đăng bị cấm shared_by_over_week: - other: Chia sẻ bởi %{count} người trong tuần rồi + one: Chia sẻ bởi một người trong tuần qua + other: Chia sẻ bởi %{count} người trong tuần qua + zero: Không ai chia sẻ trong tuần qua title: Liên kết đang là xu hướng usage_comparison: Chia sẻ %{today} lần hôm nay, so với %{yesterday} lần hôm qua pending_review: Đang chờ @@ -752,7 +787,9 @@ vi: usable: Có thể dùng usage_comparison: Dùng %{today} lần hôm nay, so với %{yesterday} hôm qua used_by_over_week: - other: Dùng bởi %{count} người tuần rồi + one: Dùng bởi một người trong tuần qua + other: Dùng bởi %{count} người trong tuần qua + zero: Không ai dùng trong tuần qua title: Xu hướng warning_presets: add_new: Thêm mới @@ -761,6 +798,17 @@ vi: empty: Bạn chưa thêm mẫu có sẵn nào cả. title: Quản lý mẫu cảnh cáo admin_mailer: + new_appeal: + actions: + delete_statuses: xóa tút của họ + disable: hạn chế tài khoản của họ + none: một cảnh báo + sensitive: đánh dấu tài khoản của họ là nhạy cảm + silence: hạn chế tài khoản của họ + suspend: vô hiệu hóa tài khoản của họ + body: "%{target} đã khiếu nại quyết định kiểm duyệt từ %{action_taken_by} vào %{date}, vì %{type}. Họ cho biết:" + next_steps: Bạn có thể chấp nhận kháng cáo để hủy bỏ kiểm duyệt, hoặc bỏ qua. + subject: "%{username} đang khiếu nại quyết định kiểm duyệt trên %{instance}" new_pending_account: body: Thông tin chi tiết của tài khoản mới ở phía dưới. Bạn có thể phê duyệt hoặc từ chối người này. subject: Tài khoản chờ xét duyệt trên %{instance} (%{username}) @@ -851,7 +899,6 @@ vi: status: account_status: Trạng thái tài khoản confirming: Đang chờ xác thực email. - functional: Tài khoản của bạn đã được xác thực. pending: Đơn đăng ký của bạn đang chờ phê duyệt. Điều này có thể mất một thời gian. Bạn sẽ nhận được email nếu đơn đăng ký của bạn được chấp thuận. redirecting_to: Tài khoản của bạn không hoạt động vì hiện đang chuyển hướng đến %{acct}. too_fast: Nghi vấn đăng ký spam, xin thử lại. @@ -917,6 +964,32 @@ vi: directory: Khám phá explanation: Tìm những người chung sở thích explore_mastodon: Thành viên %{title} + disputes: + strikes: + action_taken: Hành động đã thực hiện + appeal: Khiếu nại + appeal_approved: Khiếu nại đã được chấp nhận và cảnh cáo không còn giá trị + appeal_rejected: Khiếu nại bị từ chối + appeal_submitted_at: Đã gửi khiếu nại + appealed_msg: Khiếu nại của bạn đã được gửi đi. Nếu nó được chấp nhận, bạn sẽ nhận được thông báo. + appeals: + submit: Gửi khiếu nại + associated_report: Báo cáo đính kèm + created_at: Ngày + recipient: Người nhận + status: 'Tút #%{id}' + status_removed: Tút này đã được xóa khỏi hệ thống + title: "%{action} từ %{date}" + title_actions: + delete_statuses: Xóa tút + disable: Đóng băng tài khoản + none: Cảnh cáo + sensitive: Đánh dấu nhạy cảm + silence: Hạn chế tài khoản + suspend: Vô hiệu hóa tài khoản + your_appeal_approved: Khiếu nại của bạn được chấp nhận + your_appeal_pending: Bạn đã gửi một khiếu nại + your_appeal_rejected: Khiếu nại của bạn bị từ chối domain_validator: invalid_domain: không phải là một tên miền hợp lệ errors: @@ -1124,6 +1197,8 @@ vi: title: Lượt chia sẻ mới status: subject: Bài đăng mới từ %{name} + update: + subject: "%{name} đã sửa một tút" notifications: email_events: Email email_events_hint: 'Chọn những hoạt động sẽ gửi thông báo qua email:' @@ -1435,6 +1510,15 @@ vi: recovery_instructions_html: Nếu bạn bị mất điện thoại, hãy dùng một trong các mã khôi phục bên dưới để lấy lại quyền truy cập vào tài khoản của mình. <strong>Giữ mã khôi phục an toàn</strong>. Ví dụ, bạn có thể in chúng ra giấy. webauthn: Khóa bảo mật user_mailer: + appeal_approved: + action: Đến trang cá nhân của bạn + explanation: Khiếu nại về tài khoản của bạn vào %{strike_date}, được gửi lúc %{appeal_date} đã được chấp nhận. Tài khoản của bạn đã có thể sử dụng bình thường. + subject: Khiếu nại của bạn từ %{date} đã được chấp nhận + title: Khiếu nại đã được chấp nhận + appeal_rejected: + explanation: Khiếu nại về tài khoản của bạn vào %{strike_date}, được gửi lúc %{appeal_date} đã bị từ chối. + subject: Khiếu nại của bạn từ %{date} đã bị từ chối + title: Khiếu nại bị từ chối backup_ready: explanation: Bạn đã yêu cầu sao lưu toàn bộ tài khoản Mastodon của mình. Bây giờ có thể tải về! subject: Dữ liệu cá nhân của bạn đã sẵn sàng để tải về @@ -1446,6 +1530,8 @@ vi: subject: Xác nhận đăng nhập title: Đăng nhập warning: + appeal: Gửi khiếu nại + appeal_description: Nếu bạn nghĩ đây chỉ là nhầm lẫn, hãy gửi một khiếu nại cho %{instance}. categories: spam: Spam violation: Nội dung vi phạm quy tắc cộng đồng @@ -1457,7 +1543,6 @@ vi: suspend: Bạn không còn có thể sử dụng tài khoản của bạn, hồ sơ và các dữ liệu khác không còn có thể truy cập được. Bạn vẫn có thể đăng nhập để yêu cầu sao lưu dữ liệu của mình cho đến khi dữ liệu bị xóa hoàn toàn trong khoảng 30 ngày, nhưng chúng tôi sẽ giữ lại một số dữ liệu cơ bản để ngăn bạn tránh bị đình chỉ. get_in_touch: Nếu bạn tin rằng đây là lỗi, bạn có thể trả lời e-mail này để liên lạc với các nhân viên của %{instance}. reason: 'Lý do:' - review_server_policies: Xem lại quy tắc của máy chủ statuses: 'Đây là những tút vi phạm:' subject: delete_statuses: Những tút %{acct} của bạn đã bị xóa bỏ diff --git a/config/locales/zgh.yml b/config/locales/zgh.yml index 898dd8da5..45f0d432d 100644 --- a/config/locales/zgh.yml +++ b/config/locales/zgh.yml @@ -22,8 +22,6 @@ zgh: group: ⵜⴰⵔⴰⴱⴱⵓⵜ unfollow: ⴽⴽⵙ ⴰⴹⴼⴼⵓⵕ admin: - account_moderation_notes: - delete: ⴽⴽⵙ accounts: change_email: label: ⵙⵏⴼⵍ ⵉⵎⴰⵢⵍ diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 33a15c126..b7a5a8ae5 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -88,7 +88,6 @@ zh-CN: account_moderation_notes: create: 新增记录 created_msg: 管理记录已创建! - delete: 删除 destroyed_msg: 管理记录删除成功! accounts: add_email_domain_block: 封禁电子邮箱域名 @@ -157,6 +156,11 @@ zh-CN: not_subscribed: 未订阅 pending: 待审核 perform_full_suspension: 封禁 + previous_strikes: 既往处罚 + previous_strikes_description_html: + one: 此帐号有<strong>1次</strong>处罚。 + other: 此帐号有<strong>%{count}次</strong>处罚。 + zero: 此帐号<strong>记录良好</strong>。 promote: 升任 protocol: 协议 public: 公开页面 @@ -200,6 +204,7 @@ zh-CN: statuses: 嘟文 strikes: 既往处罚 subscribe: 订阅 + suspend: 封禁 suspended: 已封禁 suspension_irreversible: 该帐号的数据已被不可逆转地删除。你可以取消暂停该帐号以使其可用,但它不会恢复以前拥有的任何数据。 suspension_reversible_hint_html: 帐号已封禁,数据将在 %{date} 完全删除。 在此之前,帐号仍可恢复,并且没有任何不良影响。 如果你想立即移除该帐号的所有数据,可以在下面进行。 @@ -220,6 +225,7 @@ zh-CN: whitelisted: 允许跨站交互 action_logs: action_types: + approve_appeal: 批准申诉 approve_user: 批准用户 assigned_to_self_report: 指派举报 change_email_user: 为用户修改邮箱地址 @@ -251,6 +257,7 @@ zh-CN: enable_user: 启用用户 memorialize_account: 将账户设为追悼模式 promote_user: 给用户升任 + reject_appeal: 驳回申诉 reject_user: 拒绝用户 remove_avatar_user: 移除头像 reopen_report: 重开举报 @@ -269,6 +276,7 @@ zh-CN: update_domain_block: 更新域名屏蔽 update_status: 更新嘟文 actions: + approve_appeal_html: "%{name} 批准了 %{target} 对审核结果的申诉" approve_user_html: "%{name} 批准了用户 %{target} 的注册" assigned_to_self_report_html: "%{name} 接管了举报 %{target}" change_email_user_html: "%{name} 更改了用户 %{target} 的电子邮件地址" @@ -300,6 +308,7 @@ zh-CN: enable_user_html: "%{name} 将用户 %{target} 设置为允许登录" memorialize_account_html: "%{name} 将 %{target} 设置为追悼帐户" promote_user_html: "%{name} 对用户 %{target} 进行了升任操作" + reject_appeal_html: "%{name} 驳回了 %{target} 对审核结果的申诉" reject_user_html: "%{name} 拒绝了用户 %{target} 的注册" remove_avatar_user_html: "%{name} 删除了 %{target} 的头像" reopen_report_html: "%{name} 重开了举报 %{target}" @@ -379,9 +388,9 @@ zh-CN: new_users: 新用户 opened_reports: 被发起的举报 pending_reports_html: - other: "<strong>%{count}</strong> 个待处理请求" + other: "<strong>%{count}</strong> 个待处理举报" pending_tags_html: - other: "<strong>%{count}</strong> 个待处理标签" + other: "<strong>%{count}</strong> 个待处理话题标签" pending_users_html: other: "<strong>%{count}</strong> 个待处理用户" resolved_reports: 已解决的举报 @@ -392,6 +401,10 @@ zh-CN: top_languages: 最活跃的语言 top_servers: 最活跃的服务器 website: 网页端 + disputes: + appeals: + empty: 没有发现申诉。 + title: 申诉 domain_allows: add_new: 允许和域名跨站交互 created_msg: 域名已被允许跨站交互 @@ -430,7 +443,9 @@ zh-CN: suspend: 已封禁 show: affected_accounts: - other: 将会影响到数据库中的 %{count} 个帐户 + one: 数据库中的 1 个帐户受到影响 + other: 数据库中的 %{count} 个帐户受到影响 + zero: 数据库中没有帐户受到影响 retroactive: silence: 对此域名的所有帐户解除隐藏 suspend: 对此域名的所有帐户解除封禁 @@ -481,7 +496,9 @@ zh-CN: destroyed_msg: "%{domain} 中的数据现在正在排队等待被立刻删除。" empty: 暂无域名。 known_accounts: + one: "%{count} 个已知帐户" other: "%{count} 个已知帐户" + zero: 没有已知账户 moderation: all: 全部 limited: 受限的 @@ -547,10 +564,12 @@ zh-CN: action_log: 审计日志 action_taken_by: 操作执行者 actions: + delete_description_html: 被举报的嘟文将被删除,同时该帐号将被标记一次处罚,以供未来同一帐号再次违规时参考。 other_description_html: 查看控制该被举报帐号行为以及与其通信范围的更多选项。 + resolve_description_html: 不会对被举报帐号采取任何动作,举报将被关闭,也不会留下处罚记录。 silence_description_html: 只有关注或手工搜索此帐号才能查看其资料,将严重限制其触达范围。可随时撤销。 suspend_description_html: 此帐号及其内容将无法访问,并最终被删除。也无法与该帐号交互。可在30天内撤销。 - actions_description_html: 若移除上述违规内容仍力度不足: + actions_description_html: 决定采取何种措施处理此举报。如果对被举报帐号采取惩罚性措施,将向其发送一封电子邮件通知。但若选中<strong>垃圾信息</strong>类别则不会发送通知。 add_to_report: 添加到报告 are_you_sure: 你确定吗? assign_to_self: 接管 @@ -562,7 +581,7 @@ zh-CN: none: 没有 comment_description_html: "%{name} 补充道:" created_at: 举报时间 - delete_and_resolve: 删除并解决 + delete_and_resolve: 删除嘟文 forwarded: 已转发 forwarded_to: 转发举报至 %{domain} mark_as_resolved: 标记为“已处理” @@ -576,12 +595,14 @@ zh-CN: placeholder: 描述已经执行的操作,或其他任何相关的跟进情况… title: 备注 notes_description_html: 查看备注或向其他监察员留言 + quick_actions_description_html: 快捷选择操作或向下滚动以查看举报内容: reopen: 重开举报 report: '举报 #%{id}' reported_account: 举报用户 reported_by: 举报人 resolved: 已处理 resolved_msg: 举报处理成功! + skip_to_actions: 跳转到操作 status: 状态 statuses: 被举报内容 statuses_description_html: 违规内容将在与该帐号的通信中被引用 @@ -702,6 +723,16 @@ zh-CN: no_status_selected: 因为没有嘟文被选中,所以没有更改 title: 帐户嘟文 with_media: 含有媒体文件 + strikes: + actions: + delete_statuses: "%{name} 刪除了 %{target} 的嘟文" + disable: "%{name} 冻结了用户 %{target}" + none: "%{name} 向 %{target} 发送了警告" + sensitive: "%{name} 将 %{target} 的帐号标记为敏感内容" + silence: "%{name} 限制了用户 %{target}" + suspend: "%{name} 封禁了用户 %{target}" + appeal_approved: 已申诉 + appeal_pending: 申诉待处理 system_checks: database_schema_check: message_html: 有待处理的数据库迁移。请运行它们以确保应用程序正常运行。 @@ -724,7 +755,9 @@ zh-CN: disallow: 不允许链接 disallow_provider: 不允许发布者 shared_by_over_week: - other: "%{count} 人在过去一周内分享" + one: 过去一周内被 1 个人分享过 + other: 过去一周内被 %{count} 个人分享过 + zero: 过去一周内未被分享过 title: 热门链接 usage_comparison: 今日被分享 %{today} 次,前一日为 %{yesterday} 次 pending_review: 待审核 @@ -752,7 +785,9 @@ zh-CN: usable: 可以使用 usage_comparison: 今日被使用 %{today} 次,前一日为 %{yesterday} 次 used_by_over_week: - other: "%{count} 人在过去一周内使用过" + one: 过去一周内被 1 个人使用过 + other: 过去一周内被 %{count} 个人使用过 + zero: 过去一周内未被使用过 title: 流行趋势 warning_presets: add_new: 添加新条目 @@ -761,6 +796,17 @@ zh-CN: empty: 你尚未定义任何警告预设。 title: 管理预设警告 admin_mailer: + new_appeal: + actions: + delete_statuses: 删除其嘟文 + disable: 冻结其帐号 + none: 警告 + sensitive: 标记其帐号为敏感内容 + silence: 限制其帐号 + suspend: 停用其帐号 + body: "%{target} 对 %{action_taken_by} 于 %{date} 做出的 %{type} 审核结果提出申诉,写道:" + next_steps: 你可以批准此申诉并撤销该审核结果,也可以忽略此申诉。 + subject: "%{username} 对 %{instance} 的审核结果提出了申诉" new_pending_account: body: 新帐户的详细信息如下。你可以批准或拒绝此申请。 subject: 在 %{instance} 上有新帐号 ( %{username}) 需要审核 @@ -851,7 +897,6 @@ zh-CN: status: account_status: 帐户状态 confirming: 等待电子邮件确认完成。 - functional: 你的帐号可以正常使用了。 pending: 工作人员正在审核你的申请。这需要花点时间。在申请被批准后,你将收到一封电子邮件。 redirecting_to: 你的帐户无效,因为它已被设置为跳转到 %{acct} too_fast: 表单提交过快,请重试。 @@ -917,6 +962,32 @@ zh-CN: directory: 用户目录 explanation: 根据兴趣发现用户 explore_mastodon: 探索 %{title} + disputes: + strikes: + action_taken: 采取的措施 + appeal: 申诉 + appeal_approved: 此次处罚已申诉成功并不再生效 + appeal_rejected: 此次申诉已被驳回 + appeal_submitted_at: 申诉已提交 + appealed_msg: 你的申诉已经提交。如果申诉通过,你将收到通知。 + appeals: + submit: 提交申诉 + associated_report: 相关举报 + created_at: 日期 + recipient: 发送至 + status: '嘟文 #%{id}' + status_removed: 嘟文已从系统中删除 + title: "%{action} 于 %{date}" + title_actions: + delete_statuses: 嘟文删除 + disable: 帐号冻结 + none: 警告 + sensitive: 标记帐号为敏感内容 + silence: 帐号限制 + suspend: 帐号封禁 + your_appeal_approved: 你的申诉已被批准 + your_appeal_pending: 你已提交申诉 + your_appeal_rejected: 你的申诉已被驳回 domain_validator: invalid_domain: 不是一个有效的域名 errors: @@ -1124,6 +1195,8 @@ zh-CN: title: 新的转嘟 status: subject: "%{name} 刚刚发嘟" + update: + subject: "%{name} 编辑了嘟文" notifications: email_events: 电子邮件通知事件 email_events_hint: 选择你想要收到通知的事件: @@ -1468,6 +1541,15 @@ zh-CN: recovery_instructions_html: 如果你的手机无法使用,你可以使用下列任意一个恢复代码来重新获得对帐户的访问权。<strong>请妥善保管好你的恢复代码</strong>(例如,你可以将它们打印出来,然后和其他重要的文件放在一起)。 webauthn: 安全密钥 user_mailer: + appeal_approved: + action: 前往你的帐号 + explanation: 你于 %{appeal_date} 对 %{strike_date} 在你帐号上做出的处罚提出的申诉已被批准,你的帐号已回到正常状态。 + subject: 你于 %{date} 提出的申诉已被批准 + title: 申诉已批准 + appeal_rejected: + explanation: 你于 %{appeal_date} 对 %{strike_date} 在你帐号上做出的处罚提出的申诉已被驳回。 + subject: 你于 %{date} 提出的申诉已被驳回 + title: 申诉已驳回 backup_ready: explanation: 你请求了一份 Mastodon 帐户的完整备份。现在你可以下载了! subject: 你的存档已经准备完毕 @@ -1479,6 +1561,8 @@ zh-CN: subject: 请确认登录请求: title: 登录请求 warning: + appeal: 提交申诉 + appeal_description: 如果你认为此结果有误,可以向 %{instance} 的工作人员提交申诉。 categories: spam: 垃圾信息 violation: 内容违反了以下社区准则 @@ -1490,7 +1574,6 @@ zh-CN: suspend: 你不能再使用你的帐户,并且你的个人资料和其他数据都将无法访问。在大约30天内,你仍可以登录并请求数据备份,之后相关数据将被完全删除。我们会保留一些基础数据以避免封禁失效。 get_in_touch: 如果你认为此操作有误,可回复此邮件以与 %{instance} 的工作人员取得联系。 reason: 理由: - review_server_policies: 查看服务器政策 statuses: 被发现有违规行为的嘟文: subject: delete_statuses: 你在 %{acct} 的嘟文已被删除 diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml index b437c9b10..e1fad25c5 100644 --- a/config/locales/zh-HK.yml +++ b/config/locales/zh-HK.yml @@ -90,7 +90,6 @@ zh-HK: account_moderation_notes: create: 加入管理紀錄 created_msg: 已新增管理紀錄 - delete: 刪除 destroyed_msg: 管理紀錄已被刪除 accounts: add_email_domain_block: 封鎖電郵網域 @@ -403,8 +402,6 @@ zh-HK: silence: 已靜音 suspend: 已停權 show: - affected_accounts: - other: 將影響到資料庫中的 %{count} 個帳號 retroactive: silence: 對此域名的所有帳號取消靜音 suspend: 對此域名的所有帳號取消除名 @@ -452,8 +449,6 @@ zh-HK: delivery_error_days: 遞送失敗天數 delivery_error_hint: 若 %{count} 天皆無法達成遞送,將會被自動標記為離線。 empty: 找不到域名。 - known_accounts: - other: "%{count} 已知的帳號" moderation: all: 全部 limited: 限制 @@ -749,7 +744,6 @@ zh-HK: status: account_status: 帳戶文章 confirming: 正在等待確認電郵地址。 - functional: 你的帳戶可以正常使用。 pending: 管理員正在處理你的申請。可能會需要一點時間處理。我們將會在申請被批準的時候馬上寄電郵給你。 redirecting_to: 你的帳戶因為正在重新定向到 %{acct},所以暫時被停用。 too_fast: 你太快遞交了,請再試一次。 @@ -1368,7 +1362,6 @@ zh-HK: subject: 請確認登入請求 title: 登入請求 warning: - review_server_policies: 審視伺服器政策 subject: disable: 你的帳號 %{acct} 已經被涷結 none: 警告帳號%{acct} diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 07eb97071..c0f633095 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -88,7 +88,6 @@ zh-TW: account_moderation_notes: create: 記錄 created_msg: 已新增管理備忘! - delete: 刪除 destroyed_msg: 成功刪除管理備忘! accounts: add_email_domain_block: 將電子郵件網域加入黑名單 @@ -157,6 +156,11 @@ zh-TW: not_subscribed: 未訂閱 pending: 等待審核中 perform_full_suspension: 停權 + previous_strikes: 先前的警示 + previous_strikes_description_html: + one: 此帳號已有 <strong>1</strong> 次警示。 + other: 此帳號已有 <strong>%{count}</strong> 次警示。 + zero: 此帳號<strong>信譽良好</strong>。 promote: 晉級 protocol: 協議 public: 公開 @@ -198,8 +202,9 @@ zh-TW: silence: 靜音 silenced: 已靜音 statuses: 嘟文 - strikes: 先前連續嘟文紀錄 + strikes: 先前的警示 subscribe: 訂閱 + suspend: 停權 suspended: 已停權 suspension_irreversible: 已永久刪除這個帳戶的數據。雖然這個帳戶的數據已被永久刪除,但是您仍然可以取消暫停這個帳戶。 suspension_reversible_hint_html: 這個帳戶已被暫停,所有數據將會在 %{date} 被刪除。在此之前,您可以完全回復您的帳戶。如果您想即時刪除這個帳戶的數據,您可以在下面進行操作。 @@ -220,6 +225,7 @@ zh-TW: whitelisted: 已加入白名單 action_logs: action_types: + approve_appeal: 批准申訴 approve_user: 批准使用者 assigned_to_self_report: 指派回報 change_email_user: 變更使用者的電子信箱地址 @@ -251,6 +257,7 @@ zh-TW: enable_user: 啓用帳戶 memorialize_account: 設定成紀念帳戶 promote_user: 把用戶升級 + reject_appeal: 回絕申訴 reject_user: 回絕使用者 remove_avatar_user: 刪除大頭貼 reopen_report: 重開舉報 @@ -269,6 +276,7 @@ zh-TW: update_domain_block: 更新封鎖網域 update_status: 更新狀態 actions: + approve_appeal_html: "%{name} 批准了來自 %{target} 的審核決定上訴" approve_user_html: "%{name} 批准了從 %{target} 而來的註冊" assigned_to_self_report_html: "%{name} 將報告 %{target} 指派給自己" change_email_user_html: "%{name} 變更了使用者 %{target} 的電子信箱地址" @@ -300,6 +308,7 @@ zh-TW: enable_user_html: "%{name} 將使用者 %{target} 設定為允許登入" memorialize_account_html: "%{name} 將 %{target} 設定為追悼帳戶" promote_user_html: "%{name} 對使用者 %{target} 進行了晉級操作" + reject_appeal_html: "%{name} 回絕了來自 %{target} 的審核決定上訴" reject_user_html: "%{name} 回絕了從 %{target} 而來的註冊" remove_avatar_user_html: "%{name} 移除了 %{target} 的大頭貼" reopen_report_html: "%{name} 重新開啟 %{target} 的檢舉" @@ -378,8 +387,10 @@ zh-TW: media_storage: 媒體儲存空間 new_users: 新使用者 opened_reports: 已開啟的報告 + pending_appeals_html: + other: "<strong>%{count}</strong> 個待處理申訴" pending_reports_html: - other: "<strong>%{count}</strong> 份待處理報告" + other: "<strong>%{count}</strong> 份待處理回報" pending_tags_html: other: "<strong>%{count}</strong> 個待處理主題標籤" pending_users_html: @@ -392,6 +403,10 @@ zh-TW: top_languages: 最活躍語言 top_servers: 最活躍伺服器 website: 網站 + disputes: + appeals: + empty: 找不到申訴。 + title: 申訴 domain_allows: add_new: 將網域加入白名單 created_msg: 網域已成功加入白名單 @@ -430,7 +445,9 @@ zh-TW: suspend: 已停權 show: affected_accounts: - other: 將影響到資料庫中的 %{count} 個帳戶 + one: 資料庫中的 1 個帳號受到影響 + other: 資料庫中的 %{count} 個帳號受到影響 + zero: 沒有影響到資料庫中的帳號 retroactive: silence: 對此站點的所有使用者取消靜音 suspend: 對此站點的所有使用者取消停權 @@ -483,7 +500,9 @@ zh-TW: destroyed_msg: 來自 %{domain} 的資料現在正在佇列中等待刪除。 empty: 找不到網域 known_accounts: - other: "%{count} 已知的帳戶" + one: "%{count} 個已知帳號" + other: "%{count} 個已知帳號" + zero: 沒有已知帳號 moderation: all: 全部 limited: 限制 @@ -549,10 +568,12 @@ zh-TW: action_log: 審計日誌 action_taken_by: 操作執行者 actions: + delete_description_html: 被檢舉的嘟文將被刪除,並且會被以刪除線標記,幫助您升級同一帳號未來的違規行為。 other_description_html: 檢視更多控制帳號行為以及自訂檢舉帳號通知之選項。 + resolve_description_html: 被檢舉的帳號將不被採取任何行動,不會加以刪除線標記,並且此份報告將被關閉。 silence_description_html: 個人頁面僅會對已跟隨帳號之使用者或手動查詢可見,將大幅度限制觸及範圍。此設定可隨時被還原。 suspend_description_html: 個人頁面及其內容將無法被存取,直到其最終被刪除。將無法與此帳號互動。此設定 30 日內可被還原。 - actions_description_html: 若移除以上侵犯性違規內容不足成效: + actions_description_html: 決定應對此報告採取何種行動。若您對檢舉之帳號採取懲罰措施,則將對他們發送 e-mail 通知,如非選擇了 <strong>垃圾郵件</strong> 類別。 add_to_report: 加入更多至報告 are_you_sure: 你確定嗎? assign_to_self: 指派給自己 @@ -564,7 +585,7 @@ zh-TW: none: 無 comment_description_html: 提供更多資訊,%{name} 寫道: created_at: 日期 - delete_and_resolve: 刪除與解決 + delete_and_resolve: 刪除嘟文 forwarded: 已轉寄 forwarded_to: 轉寄到 %{domain} mark_as_resolved: 標記為「已解決」 @@ -578,12 +599,14 @@ zh-TW: placeholder: 記錄已執行的動作,或其他相關的更新... title: 註記 notes_description_html: 檢視及留下些給其他管理員和未來的自己的註記 + quick_actions_description_html: 採取一個快速行動,或者下捲以檢視檢舉內容: reopen: 重開檢舉 report: '檢舉 #%{id}' reported_account: 被檢舉使用者 reported_by: 檢舉人 resolved: 已解決 resolved_msg: 檢舉已處理! + skip_to_actions: 跳過行動 status: 嘟文 statuses: 被檢舉的內容 statuses_description_html: 侵犯性違規內容會被引用在檢舉帳號通知中 @@ -704,6 +727,16 @@ zh-TW: no_status_selected: 因未選擇嘟文而未變更。 title: 帳戶嘟文 with_media: 含有媒體檔案 + strikes: + actions: + delete_statuses: "%{name} 刪除了 %{target} 的貼文" + disable: "%{name} 凍結了 %{target} 的帳號" + none: "%{name} 已對 %{target} 送出警告" + sensitive: "%{name} 將 %{target} 的帳號標記為含有敏感內容" + silence: "%{name} 限制了 %{target} 的帳號" + suspend: "%{name} 將 %{target} 的帳號停權" + appeal_approved: 已申訴 + appeal_pending: 申訴待審中 system_checks: database_schema_check: message_html: 有挂起的数据库迁移,请运行它们以确保应用程序按照预期运行。 @@ -726,7 +759,9 @@ zh-TW: disallow: 不允許連結 disallow_provider: 不允許發行者 shared_by_over_week: - other: 於過去一週被 %{count} 人分享 + one: 上週由 1 個人分享 + other: 上週由 %{count} 個人分享 + zero: 上週無人分享 title: 熱門連結 usage_comparison: 於今日被 %{today} 人分享,相較於昨日 %{yesterday} 人 pending_review: 等待審核中 @@ -754,7 +789,9 @@ zh-TW: usable: 可被使用 usage_comparison: 於今日被使用 %{today} 次,相較於昨日 %{yesterday} 次 used_by_over_week: - other: 於過去一週被 %{count} 人使用 + one: 上週被 1 個人使用 + other: 上週被 %{count} 個人使用 + zero: 上週無人使用 title: 熱門榜 warning_presets: add_new: 新增 @@ -763,6 +800,17 @@ zh-TW: empty: 您未曾定義任何預設警告 title: 管理預設警告 admin_mailer: + new_appeal: + actions: + delete_statuses: 要刪除他們的嘟文 + disable: 要凍結他們的帳號 + none: 警告 + sensitive: 要將他們的帳號標記為含有敏感內容 + silence: 要限制他們的帳號 + suspend: 要停權他們的帳號 + body: "%{target} 正在就 %{date} 的 %{action_taken_by} 做出的審核決定提出上訴,該決定是 %{type}。他們寫道:" + next_steps: 您可以批准申訴以還原審核決定,或是忽略它。 + subject: "%{username} 正在申訴 %{instance} 上的審核決定" new_pending_account: body: 以下是新帳戶的詳細資訊。您可以同意或拒絕這項申請。 subject: "%{instance} 上有新帳戶 (%{username}) 待審核" @@ -853,7 +901,6 @@ zh-TW: status: account_status: 帳戶狀態 confirming: 等待電子郵件確認完成。 - functional: 您的帳戶可以正常使用了。 pending: 管管們正在處理您的申請,這可能需要一點時間處理。我們將在申請通過後以電子郵件方式通知您。 redirecting_to: 您的帳戶因目前重新導向至 %{acct} 而被停用。 too_fast: 送出表單的速度太快跟不上,請稍後再試。 @@ -919,6 +966,32 @@ zh-TW: directory: 個人資料目錄 explanation: 根據興趣去發現新朋友 explore_mastodon: 探索%{title} + disputes: + strikes: + action_taken: 採取的行動 + appeal: 申訴 + appeal_approved: 此警示已成功申訴,不再有效 + appeal_rejected: 申訴已被回絕 + appeal_submitted_at: 申訴已遞交 + appealed_msg: 您的申訴已遞交。若其被批准,您將會被通知。 + appeals: + submit: 遞交申訴 + associated_report: 相關報告 + created_at: 過時的 + recipient: 此致 + status: '嘟文編號 #%{id}' + status_removed: 嘟文已從系統中移除 + title: "%{action} 來自 %{date}" + title_actions: + delete_statuses: 嘟文移除 + disable: 凍結帳號 + none: 警告 + sensitive: 標記為敏感帳號 + silence: 帳號限制 + suspend: 帳號停權 + your_appeal_approved: 您的申訴已被批准 + your_appeal_pending: 您已遞交申訴 + your_appeal_rejected: 您的申訴已被回絕 domain_validator: invalid_domain: 並非一個有效域名 errors: @@ -1126,6 +1199,8 @@ zh-TW: title: 新的轉嘟 status: subject: "%{name} 剛剛嘟文" + update: + subject: "%{name} 編輯了貼文" notifications: email_events: 電子郵件通知設定 email_events_hint: 選取你想接收通知的事件: @@ -1468,6 +1543,15 @@ zh-TW: recovery_instructions_html: 如果你的手機無法使用,你可以使用下列任意一個備用驗證碼來重新獲得帳戶的訪問權。<strong>請妥善保管好你的備用驗證碼</strong>(例如,你可以將它們列印出來,與你的其他重要文件放在一起)。 webauthn: 安全金鑰 user_mailer: + appeal_approved: + action: 前往您的帳號 + explanation: 您在 %{appeal_date} 遞交的針對您帳號的 %{strike_date} 警示的申訴已獲批准。您的帳號再次享有良好的信譽。 + subject: 您在 %{date} 提出的申訴已獲批准 + title: 申訴已批准 + appeal_rejected: + explanation: 您在 %{appeal_date} 遞交的針對您帳號的 %{strike_date} 警示的申訴已被回絕。 + subject: 您在 %{date} 提出的申訴已被回絕 + title: 申訴被回絕 backup_ready: explanation: 你要求的 Mastodon 帳戶完整備份檔案現已就緒,可供下載! subject: 你的備份檔已可供下載 @@ -1479,6 +1563,8 @@ zh-TW: subject: 請確認登入嘗試 title: 登入嘗試 warning: + appeal: 遞交申訴 + appeal_description: 若您認為這是錯誤,您可以向 %{instance} 的工作人員提出申訴。 categories: spam: 垃圾訊息 violation: 該內容違反以下社群規章 @@ -1490,7 +1576,6 @@ zh-TW: suspend: 您將不能使用您的帳號,您的個人資料頁面及其他資料將不再能被存取。您仍可於約 30 日內資料被完全刪除前要求下載你的資料,但我們仍會保留一部份基本資料,以防止有人規避停權處罰。 get_in_touch: 如果您認為這是個錯誤,您可回復這封 e-mail 來連繫 %{instance} 的管理員。 reason: 原因: - review_server_policies: 檢視伺服器政策 statuses: 被判定違規之嘟文: subject: delete_statuses: 您於 %{acct} 之嘟文已被移除 diff --git a/config/navigation.rb b/config/navigation.rb index a5590d2ea..a85670500 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -26,7 +26,7 @@ SimpleNavigation::Configuration.run do |navigation| n.item :statuses_cleanup, safe_join([fa_icon('history fw'), t('settings.statuses_cleanup')]), statuses_cleanup_url, if: -> { current_user.functional? } n.item :security, safe_join([fa_icon('lock fw'), t('settings.account')]), edit_user_registration_url do |s| - s.item :password, safe_join([fa_icon('lock fw'), t('settings.account_settings')]), edit_user_registration_url, highlights_on: %r{/auth/edit|/settings/delete|/settings/migration|/settings/aliases|/settings/login_activities} + s.item :password, safe_join([fa_icon('lock fw'), t('settings.account_settings')]), edit_user_registration_url, highlights_on: %r{/auth/edit|/settings/delete|/settings/migration|/settings/aliases|/settings/login_activities|^/disputes} s.item :two_factor_authentication, safe_join([fa_icon('mobile fw'), t('settings.two_factor_authentication')]), settings_two_factor_authentication_methods_url, highlights_on: %r{/settings/two_factor_authentication|/settings/otp_authentication|/settings/security_keys} s.item :authorized_apps, safe_join([fa_icon('list fw'), t('settings.authorized_apps')]), oauth_authorized_applications_url end @@ -47,7 +47,7 @@ SimpleNavigation::Configuration.run do |navigation| n.item :moderation, safe_join([fa_icon('gavel fw'), t('moderation.title')]), admin_reports_url, if: proc { current_user.staff? } do |s| s.item :action_logs, safe_join([fa_icon('bars fw'), t('admin.action_logs.title')]), admin_action_logs_url s.item :reports, safe_join([fa_icon('flag fw'), t('admin.reports.title')]), admin_reports_url, highlights_on: %r{/admin/reports} - s.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_url(origin: 'local'), highlights_on: %r{/admin/accounts|/admin/pending_accounts} + s.item :accounts, safe_join([fa_icon('users fw'), t('admin.accounts.title')]), admin_accounts_url(origin: 'local'), highlights_on: %r{/admin/accounts|/admin/pending_accounts|/admin/disputes} s.item :invites, safe_join([fa_icon('user-plus fw'), t('admin.invites.title')]), admin_invites_path s.item :follow_recommendations, safe_join([fa_icon('user-plus fw'), t('admin.follow_recommendations.title')]), admin_follow_recommendations_path, highlights_on: %r{/admin/follow_recommendations} s.item :instances, safe_join([fa_icon('cloud fw'), t('admin.instances.title')]), admin_instances_url(limited: whitelist_mode? ? nil : '1'), highlights_on: %r{/admin/instances|/admin/domain_blocks|/admin/domain_allows}, if: -> { current_user.admin? } diff --git a/config/routes.rb b/config/routes.rb index 0eb7f1b0f..a138fcbcc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -167,6 +167,12 @@ Rails.application.routes.draw do resources :login_activities, only: [:index] end + namespace :disputes do + resources :strikes, only: [:show] do + resource :appeal, only: [:create] + end + end + resources :media, only: [:show] do get :player end @@ -327,6 +333,15 @@ Rails.application.routes.draw do end end end + + namespace :disputes do + resources :appeals, only: [:index] do + member do + post :approve + post :reject + end + end + end end get '/admin', to: redirect('/admin/dashboard', status: 302) diff --git a/config/settings.yml b/config/settings.yml index 7d192f369..d0946a668 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -52,6 +52,7 @@ defaults: &defaults report: true pending_account: true trending_tag: true + appeal: true interactions: must_be_follower: false must_be_following: false diff --git a/db/migrate/20170920032311_fix_reblogs_in_feeds.rb b/db/migrate/20170920032311_fix_reblogs_in_feeds.rb index 5654bf6f8..bcd4b9137 100644 --- a/db/migrate/20170920032311_fix_reblogs_in_feeds.rb +++ b/db/migrate/20170920032311_fix_reblogs_in_feeds.rb @@ -15,7 +15,7 @@ class FixReblogsInFeeds < ActiveRecord::Migration[5.1] # feed, with an entry in a reblog tracking zset (where the score # is once again set to the reblogging status' ID, and the value # is set to the reblogged status' ID). This is safe for Redis' - # float coersion because in this reblog tracking zset, we only + # float conversion because in this reblog tracking zset, we only # need the rebloggging status' ID to be able to stop tracking # entries after they have gotten too far down the feed, which # does not require an exact value. diff --git a/db/migrate/20220124141035_create_appeals.rb b/db/migrate/20220124141035_create_appeals.rb new file mode 100644 index 000000000..afb3efbd5 --- /dev/null +++ b/db/migrate/20220124141035_create_appeals.rb @@ -0,0 +1,14 @@ +class CreateAppeals < ActiveRecord::Migration[6.1] + def change + create_table :appeals do |t| + t.belongs_to :account, null: false, foreign_key: { on_delete: :cascade } + t.belongs_to :account_warning, null: false, foreign_key: { on_delete: :cascade }, index: { unique: true } + t.text :text, null: false, default: '' + t.datetime :approved_at + t.belongs_to :approved_by_account, foreign_key: { to_table: :accounts, on_delete: :nullify } + t.datetime :rejected_at + t.belongs_to :rejected_by_account, foreign_key: { to_table: :accounts, on_delete: :nullify } + t.timestamps + end + end +end diff --git a/db/migrate/20220210153119_add_overruled_at_to_account_warnings.rb b/db/migrate/20220210153119_add_overruled_at_to_account_warnings.rb new file mode 100644 index 000000000..a082da774 --- /dev/null +++ b/db/migrate/20220210153119_add_overruled_at_to_account_warnings.rb @@ -0,0 +1,5 @@ +class AddOverruledAtToAccountWarnings < ActiveRecord::Migration[6.1] + def change + add_column :account_warnings, :overruled_at, :datetime + end +end diff --git a/db/schema.rb b/db/schema.rb index 252373a7c..e27e04b71 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_02_09_175231) do +ActiveRecord::Schema.define(version: 2022_02_10_153119) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -135,6 +135,7 @@ ActiveRecord::Schema.define(version: 2022_02_09_175231) do t.datetime "updated_at", null: false t.bigint "report_id" t.string "status_ids", array: true + t.datetime "overruled_at" t.index ["account_id"], name: "index_account_warnings_on_account_id" t.index ["target_account_id"], name: "index_account_warnings_on_target_account_id" end @@ -243,6 +244,22 @@ ActiveRecord::Schema.define(version: 2022_02_09_175231) do t.bigint "status_ids", array: true end + create_table "appeals", force: :cascade do |t| + t.bigint "account_id", null: false + t.bigint "account_warning_id", null: false + t.text "text", default: "", null: false + t.datetime "approved_at" + t.bigint "approved_by_account_id" + t.datetime "rejected_at" + t.bigint "rejected_by_account_id" + t.datetime "created_at", precision: 6, null: false + t.datetime "updated_at", precision: 6, null: false + t.index ["account_id"], name: "index_appeals_on_account_id" + t.index ["account_warning_id"], name: "index_appeals_on_account_warning_id", unique: true + t.index ["approved_by_account_id"], name: "index_appeals_on_approved_by_account_id" + t.index ["rejected_by_account_id"], name: "index_appeals_on_rejected_by_account_id" + end + create_table "backups", force: :cascade do |t| t.bigint "user_id" t.string "dump_file_name" @@ -1034,6 +1051,10 @@ ActiveRecord::Schema.define(version: 2022_02_09_175231) do add_foreign_key "announcement_reactions", "accounts", on_delete: :cascade add_foreign_key "announcement_reactions", "announcements", on_delete: :cascade add_foreign_key "announcement_reactions", "custom_emojis", on_delete: :cascade + add_foreign_key "appeals", "account_warnings", on_delete: :cascade + add_foreign_key "appeals", "accounts", column: "approved_by_account_id", on_delete: :nullify + add_foreign_key "appeals", "accounts", column: "rejected_by_account_id", on_delete: :nullify + add_foreign_key "appeals", "accounts", on_delete: :cascade add_foreign_key "backups", "users", on_delete: :nullify add_foreign_key "blocks", "accounts", column: "target_account_id", name: "fk_9571bfabc1", on_delete: :cascade add_foreign_key "blocks", "accounts", name: "fk_4269e03e65", on_delete: :cascade diff --git a/lib/mastodon/statuses_cli.rb b/lib/mastodon/statuses_cli.rb index e273e2614..91b08813b 100644 --- a/lib/mastodon/statuses_cli.rb +++ b/lib/mastodon/statuses_cli.rb @@ -54,7 +54,7 @@ module Mastodon ActiveRecord::Base.connection.add_index(:media_attachments, :remote_url, name: :index_media_attachments_remote_url, where: 'remote_url is not null', algorithm: :concurrently, if_not_exists: true) - max_id = Mastodon::Snowflake.id_at(options[:days].days.ago) + max_id = Mastodon::Snowflake.id_at(options[:days].days.ago, with_random: false) start_at = Time.now.to_f unless options[:continue] && ActiveRecord::Base.connection.table_exists?('statuses_to_be_deleted') diff --git a/lib/paperclip/transcoder.rb b/lib/paperclip/transcoder.rb index ec1305038..afd9f58ff 100644 --- a/lib/paperclip/transcoder.rb +++ b/lib/paperclip/transcoder.rb @@ -13,6 +13,7 @@ module Paperclip @time = options[:time] || 3 @passthrough_options = options[:passthrough_options] @convert_options = options[:convert_options].dup + @vfr_threshold = options[:vfr_frame_rate_threshold] end def make @@ -41,6 +42,11 @@ module Paperclip when 'mp4' @output_options['acodec'] = 'aac' @output_options['strict'] = 'experimental' + + if high_vfr?(metadata) && !eligible_to_passthrough?(metadata) + @output_options['vsync'] = 'vfr' + @output_options['r'] = @vfr_threshold + end end command_arguments, interpolations = prepare_command(destination) @@ -88,13 +94,21 @@ module Paperclip end def update_options_from_metadata(metadata) - return unless @passthrough_options && @passthrough_options[:video_codecs].include?(metadata.video_codec) && @passthrough_options[:audio_codecs].include?(metadata.audio_codec) && @passthrough_options[:colorspaces].include?(metadata.colorspace) + return unless eligible_to_passthrough?(metadata) @format = @passthrough_options[:options][:format] || @format @time = @passthrough_options[:options][:time] || @time @convert_options = @passthrough_options[:options][:convert_options].dup end + def high_vfr?(metadata) + @vfr_threshold && metadata.r_frame_rate && metadata.r_frame_rate > @vfr_threshold + end + + def eligible_to_passthrough?(metadata) + @passthrough_options && @passthrough_options[:video_codecs].include?(metadata.video_codec) && @passthrough_options[:audio_codecs].include?(metadata.audio_codec) && @passthrough_options[:colorspaces].include?(metadata.colorspace) + end + def update_attachment_type(metadata) @attachment.instance.type = MediaAttachment.types[:gifv] unless metadata.audio_codec end diff --git a/package.json b/package.json index 4cb08e5d9..3f8f44ca4 100644 --- a/package.json +++ b/package.json @@ -62,12 +62,12 @@ "private": true, "dependencies": { "@babel/core": "^7.17.2", - "@babel/plugin-proposal-decorators": "^7.17.0", + "@babel/plugin-proposal-decorators": "^7.17.2", "@babel/plugin-transform-react-inline-elements": "^7.16.7", "@babel/plugin-transform-runtime": "^7.17.0", "@babel/preset-env": "^7.16.11", "@babel/preset-react": "^7.16.7", - "@babel/runtime": "^7.17.0", + "@babel/runtime": "^7.17.2", "@gamestdio/websocket": "^0.3.2", "@github/webauthn-json": "^0.5.7", "@rails/ujs": "^6.1.4", @@ -75,7 +75,7 @@ "arrow-key-navigation": "^1.2.0", "atrament": "0.2.4", "autoprefixer": "^9.8.8", - "axios": "^0.25.0", + "axios": "^0.26.0", "babel-loader": "^8.2.3", "babel-plugin-lodash": "^3.3.4", "babel-plugin-preval": "^5.1.0", @@ -90,7 +90,7 @@ "css-loader": "^5.2.7", "cssnano": "^4.1.11", "detect-passive-events": "^2.0.3", - "dotenv": "^10.0.0", + "dotenv": "^16.0.0", "emoji-mart": "npm:emoji-mart-lazyload", "es6-symbol": "^3.1.3", "escape-html": "^1.0.3", @@ -115,7 +115,7 @@ "marky": "^1.2.2", "mini-css-extract-plugin": "^1.6.2", "mkdirp": "^1.0.4", - "npmlog": "^6.0.0", + "npmlog": "^6.0.1", "object-assign": "^4.1.1", "object-fit-images": "^3.2.3", "object.values": "^1.1.5", @@ -178,7 +178,7 @@ "@testing-library/jest-dom": "^5.16.2", "@testing-library/react": "^12.1.2", "babel-eslint": "^10.1.0", - "babel-jest": "^27.5.0", + "babel-jest": "^27.5.1", "eslint": "^7.32.0", "eslint-plugin-import": "~2.25.4", "eslint-plugin-jsx-a11y": "~6.5.1", diff --git a/spec/controllers/admin/disputes/appeals_controller_spec.rb b/spec/controllers/admin/disputes/appeals_controller_spec.rb new file mode 100644 index 000000000..6a06f9406 --- /dev/null +++ b/spec/controllers/admin/disputes/appeals_controller_spec.rb @@ -0,0 +1,53 @@ +require 'rails_helper' + +RSpec.describe Admin::Disputes::AppealsController, type: :controller do + render_views + + before { sign_in current_user, scope: :user } + + let(:target_account) { Fabricate(:account) } + let(:strike) { Fabricate(:account_warning, target_account: target_account, action: :suspend) } + let(:appeal) { Fabricate(:appeal, strike: strike, account: target_account) } + + before do + target_account.suspend! + end + + describe 'POST #approve' do + let(:current_user) { Fabricate(:user, admin: true) } + + before do + allow(UserMailer).to receive(:appeal_approved).and_return(double('email', deliver_later: nil)) + post :approve, params: { id: appeal.id } + end + + it 'unsuspends a suspended account' do + expect(target_account.reload.suspended?).to be false + end + + it 'redirects back to the strike page' do + expect(response).to redirect_to(disputes_strike_path(appeal.strike)) + end + + it 'notifies target account about approved appeal' do + expect(UserMailer).to have_received(:appeal_approved).with(target_account.user, appeal) + end + end + + describe 'POST #reject' do + let(:current_user) { Fabricate(:user, admin: true) } + + before do + allow(UserMailer).to receive(:appeal_rejected).and_return(double('email', deliver_later: nil)) + post :reject, params: { id: appeal.id } + end + + it 'redirects back to the strike page' do + expect(response).to redirect_to(disputes_strike_path(appeal.strike)) + end + + it 'notifies target account about rejected appeal' do + expect(UserMailer).to have_received(:appeal_rejected).with(target_account.user, appeal) + end + end +end diff --git a/spec/controllers/disputes/appeals_controller_spec.rb b/spec/controllers/disputes/appeals_controller_spec.rb new file mode 100644 index 000000000..faa571fc9 --- /dev/null +++ b/spec/controllers/disputes/appeals_controller_spec.rb @@ -0,0 +1,27 @@ +require 'rails_helper' + +RSpec.describe Disputes::AppealsController, type: :controller do + render_views + + before { sign_in current_user, scope: :user } + + let!(:admin) { Fabricate(:user, admin: true) } + + describe '#create' do + let(:current_user) { Fabricate(:user) } + let(:strike) { Fabricate(:account_warning, target_account: current_user.account) } + + before do + allow(AdminMailer).to receive(:new_appeal).and_return(double('email', deliver_later: nil)) + post :create, params: { strike_id: strike.id, appeal: { text: 'Foo' } } + end + + it 'notifies staff about new appeal' do + expect(AdminMailer).to have_received(:new_appeal).with(admin.account, Appeal.last) + end + + it 'redirects back to the strike page' do + expect(response).to redirect_to(disputes_strike_path(strike.id)) + end + end +end diff --git a/spec/controllers/disputes/strikes_controller_spec.rb b/spec/controllers/disputes/strikes_controller_spec.rb new file mode 100644 index 000000000..157f9ec3c --- /dev/null +++ b/spec/controllers/disputes/strikes_controller_spec.rb @@ -0,0 +1,30 @@ +require 'rails_helper' + +RSpec.describe Disputes::StrikesController, type: :controller do + render_views + + before { sign_in current_user, scope: :user } + + describe '#show' do + let(:current_user) { Fabricate(:user) } + let(:strike) { Fabricate(:account_warning, target_account: current_user.account) } + + before do + get :show, params: { id: strike.id } + end + + context 'when meant for the user' do + it 'returns http success' do + expect(response).to have_http_status(:success) + end + end + + context 'when meant for a different user' do + let(:strike) { Fabricate(:account_warning) } + + it 'returns http forbidden' do + expect(response).to have_http_status(:forbidden) + end + end + end +end diff --git a/spec/controllers/settings/two_factor_authentication/otp_authentication_controller_spec.rb b/spec/controllers/settings/two_factor_authentication/otp_authentication_controller_spec.rb index 17e8fa9b8..c8ba6f9a8 100644 --- a/spec/controllers/settings/two_factor_authentication/otp_authentication_controller_spec.rb +++ b/spec/controllers/settings/two_factor_authentication/otp_authentication_controller_spec.rb @@ -18,7 +18,7 @@ describe Settings::TwoFactorAuthentication::OtpAuthenticationController do user.update(otp_required_for_login: true) end - it 'redirects to two factor authentciation methods list page' do + it 'redirects to two factor authentication methods list page' do get :show expect(response).to redirect_to settings_two_factor_authentication_methods_path diff --git a/spec/fabricators/account_warning_fabricator.rb b/spec/fabricators/account_warning_fabricator.rb index db161d446..72fe835d9 100644 --- a/spec/fabricators/account_warning_fabricator.rb +++ b/spec/fabricators/account_warning_fabricator.rb @@ -1,5 +1,6 @@ Fabricator(:account_warning) do - account nil - target_account nil - text "MyText" + account + target_account(fabricator: :account) + text { Faker::Lorem.paragraph } + action 'suspend' end diff --git a/spec/fabricators/appeal_fabricator.rb b/spec/fabricators/appeal_fabricator.rb new file mode 100644 index 000000000..339363822 --- /dev/null +++ b/spec/fabricators/appeal_fabricator.rb @@ -0,0 +1,5 @@ +Fabricator(:appeal) do + strike(fabricator: :account_warning) + account { |attrs| attrs[:strike].target_account } + text { Faker::Lorem.paragraph } +end diff --git a/spec/lib/activitypub/activity/announce_spec.rb b/spec/lib/activitypub/activity/announce_spec.rb index b93fcbe66..41806b258 100644 --- a/spec/lib/activitypub/activity/announce_spec.rb +++ b/spec/lib/activitypub/activity/announce_spec.rb @@ -113,26 +113,23 @@ RSpec.describe ActivityPub::Activity::Announce do let!(:relay_account) { Fabricate(:account, inbox_url: 'https://relay.example.com/inbox') } let!(:relay) { Fabricate(:relay, inbox_url: 'https://relay.example.com/inbox') } + let(:object_json) { 'https://example.com/actor/hello-world' } + subject { described_class.new(json, sender, relayed_through_account: relay_account) } + before do + stub_request(:get, 'https://example.com/actor/hello-world').to_return(body: Oj.dump(unknown_object_json)) + end + context 'and the relay is enabled' do before do relay.update(state: :accepted) subject.perform end - let(:object_json) do - { - id: 'https://example.com/actor#bar', - type: 'Note', - content: 'Lorem ipsum', - to: 'http://example.com/followers', - attributedTo: 'https://example.com/actor', - } - end - - it 'creates a reblog by sender of status' do - expect(sender.statuses.count).to eq 2 + it 'fetches the remote status' do + expect(a_request(:get, 'https://example.com/actor/hello-world')).to have_been_made + expect(Status.find_by(uri: 'https://example.com/actor/hello-world').text).to eq 'Hello world' end end @@ -141,14 +138,9 @@ RSpec.describe ActivityPub::Activity::Announce do subject.perform end - let(:object_json) do - { - id: 'https://example.com/actor#bar', - type: 'Note', - content: 'Lorem ipsum', - to: 'http://example.com/followers', - attributedTo: 'https://example.com/actor', - } + it 'does not fetch the remote status' do + expect(a_request(:get, 'https://example.com/actor/hello-world')).not_to have_been_made + expect(Status.find_by(uri: 'https://example.com/actor/hello-world')).to be_nil end it 'does not create anything' do diff --git a/spec/mailers/previews/admin_mailer_preview.rb b/spec/mailers/previews/admin_mailer_preview.rb index 75ffbbf40..9c0372b47 100644 --- a/spec/mailers/previews/admin_mailer_preview.rb +++ b/spec/mailers/previews/admin_mailer_preview.rb @@ -15,4 +15,9 @@ class AdminMailerPreview < ActionMailer::Preview def new_trending_links AdminMailer.new_trending_links(Account.first, PreviewCard.limit(3)) end + + # Preview this email at http://localhost:3000/rails/mailers/admin_mailer/new_appeal + def new_appeal + AdminMailer.new_appeal(Account.first, Appeal.first) + end end diff --git a/spec/mailers/previews/user_mailer_preview.rb b/spec/mailers/previews/user_mailer_preview.rb index 69b9b971e..8de7d8669 100644 --- a/spec/mailers/previews/user_mailer_preview.rb +++ b/spec/mailers/previews/user_mailer_preview.rb @@ -82,6 +82,11 @@ class UserMailerPreview < ActionMailer::Preview UserMailer.warning(User.first, AccountWarning.last) end + # Preview this email at http://localhost:3000/rails/mailers/user_mailer/appeal_approved + def appeal_approved + UserMailer.appeal_approved(User.first, Appeal.last) + end + # Preview this email at http://localhost:3000/rails/mailers/user_mailer/sign_in_token def sign_in_token UserMailer.sign_in_token(User.first.tap { |user| user.generate_sign_in_token }, '127.0.0.1', 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0', Time.now.utc) diff --git a/spec/models/appeal_spec.rb b/spec/models/appeal_spec.rb new file mode 100644 index 000000000..14062dc4f --- /dev/null +++ b/spec/models/appeal_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Appeal, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 406438c22..1645ab59e 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -89,6 +89,19 @@ RSpec.describe User, type: :model do expect(User.matches_email('specified')).to match_array([specified]) end end + + describe 'matches_ip' do + it 'returns a relation of users whose ip address is matching with the given CIDR' do + user1 = Fabricate(:user) + user2 = Fabricate(:user) + Fabricate(:session_activation, user: user1, ip: '2160:2160::22', session_id: '1') + Fabricate(:session_activation, user: user1, ip: '2160:2160::23', session_id: '2') + Fabricate(:session_activation, user: user2, ip: '2160:8888::24', session_id: '3') + Fabricate(:session_activation, user: user2, ip: '2160:8888::25', session_id: '4') + + expect(User.matches_ip('2160:2160::/32')).to match_array([user1]) + end + end end let(:account) { Fabricate(:account, username: 'alice') } diff --git a/spec/models/web/push_subscription_spec.rb b/spec/models/web/push_subscription_spec.rb index b44904369..bd5719593 100644 --- a/spec/models/web/push_subscription_spec.rb +++ b/spec/models/web/push_subscription_spec.rb @@ -29,7 +29,7 @@ RSpec.describe Web::PushSubscription, type: :model do context "when notification is a #{type}" do let(:notification_type) { type } - it "returns boolean corresonding to alert setting" do + it "returns boolean corresponding to alert setting" do expect(subject.pushable?(notification)).to eq data[:alerts][type] end end diff --git a/spec/services/block_domain_service_spec.rb b/spec/services/block_domain_service_spec.rb index c689b57e3..242b02fff 100644 --- a/spec/services/block_domain_service_spec.rb +++ b/spec/services/block_domain_service_spec.rb @@ -66,7 +66,7 @@ RSpec.describe BlockDomainService, type: :service do expect(Account.find_remote('badguy', 'evil.org').silenced_at).to_not eq DomainBlock.find_by(domain: 'evil.org').created_at end - it 'leaves the domains status and attachements, but clears media' do + it 'leaves the domains status and attachments, but clears media' do expect { bad_status1.reload }.not_to raise_error expect { bad_status2.reload }.not_to raise_error expect { bad_attachment.reload }.not_to raise_error diff --git a/spec/services/clear_domain_media_service_spec.rb b/spec/services/clear_domain_media_service_spec.rb index 8e58c6039..45b92e2c9 100644 --- a/spec/services/clear_domain_media_service_spec.rb +++ b/spec/services/clear_domain_media_service_spec.rb @@ -13,7 +13,7 @@ RSpec.describe ClearDomainMediaService, type: :service do subject.call(DomainBlock.create!(domain: 'evil.org', severity: :silence, reject_media: true)) end - it 'leaves the domains status and attachements, but clears media' do + it 'leaves the domains status and attachments, but clears media' do expect { bad_status1.reload }.not_to raise_error expect { bad_status2.reload }.not_to raise_error expect { bad_attachment.reload }.not_to raise_error diff --git a/spec/services/delete_account_service_spec.rb b/spec/services/delete_account_service_spec.rb index b1da97036..9c785fc17 100644 --- a/spec/services/delete_account_service_spec.rb +++ b/spec/services/delete_account_service_spec.rb @@ -90,7 +90,7 @@ RSpec.describe DeleteAccountService, type: :service do let!(:account) { Fabricate(:account, inbox_url: 'https://bob.com/inbox', protocol: :activitypub) } let!(:local_follower) { Fabricate(:account) } - it 'sends a reject follow to follwer inboxes' do + it 'sends a reject follow to follower inboxes' do subject.call expect(a_request(:post, account.inbox_url)).to have_been_made.once end diff --git a/spec/validators/unreserved_username_validator_spec.rb b/spec/validators/unreserved_username_validator_spec.rb index cabd6d386..746b3866c 100644 --- a/spec/validators/unreserved_username_validator_spec.rb +++ b/spec/validators/unreserved_username_validator_spec.rb @@ -27,7 +27,7 @@ RSpec.describe UnreservedUsernameValidator, type: :validator do context 'reserved_username?' do let(:reserved_username) { true } - it 'calls erros.add' do + it 'calls errors.add' do expect(errors).to have_received(:add).with(:username, :reserved) end end @@ -35,7 +35,7 @@ RSpec.describe UnreservedUsernameValidator, type: :validator do context '!reserved_username?' do let(:reserved_username) { false } - it 'not calls erros.add' do + it 'not calls errors.add' do expect(errors).not_to have_received(:add).with(:username, any_args) end end diff --git a/streaming/index.js b/streaming/index.js index 2dbb546c0..3fdc9615e 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -92,13 +92,18 @@ const numWorkers = +process.env.STREAMING_CLUSTER_NUM || (env === 'development' /** * @param {string} json + * @param {any} req * @return {Object.<string, any>|null} */ -const parseJSON = (json) => { +const parseJSON = (json, req) => { try { return JSON.parse(json); } catch (err) { - log.error(err); + if (req.accountId) { + log.warn(req.requestId, `Error parsing message from user ${req.accountId}: ${err}`); + } else { + log.silly(req.requestId, `Error parsing message from ${req.remoteAddress}: ${err}`); + } return null; } }; @@ -451,7 +456,7 @@ const startWorker = async (workerId) => { */ const createSystemMessageListener = (req, eventHandlers) => { return message => { - const json = parseJSON(message); + const json = parseJSON(message, req); if (!json) return; @@ -575,7 +580,7 @@ const startWorker = async (workerId) => { log.verbose(req.requestId, `Starting stream from ${ids.join(', ')} for ${accountId}`); const listener = message => { - const json = parseJSON(message); + const json = parseJSON(message, req); if (!json) return; @@ -1059,7 +1064,7 @@ const startWorker = async (workerId) => { ws.on('error', onEnd); ws.on('message', data => { - const json = parseJSON(data); + const json = parseJSON(data, session.request); if (!json) return; diff --git a/yarn.lock b/yarn.lock index 41d6ec76e..e8d3f8043 100644 --- a/yarn.lock +++ b/yarn.lock @@ -91,7 +91,7 @@ browserslist "^4.17.5" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.0": +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.1": version "7.17.1" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21" integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ== @@ -329,12 +329,12 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-decorators@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.0.tgz#fc0f689fe2535075056c587bc10c176fa9990443" - integrity sha512-JR8HTf3T1CsdMqfENrZ9pqncwsH4sPcvsyDLpvmv8iIbpDmeyBD7HPfGAIqkQph2j5d3B84hTm+m3qHPAedaPw== +"@babel/plugin-proposal-decorators@^7.17.2": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.2.tgz#c36372ddfe0360cac1ee331a238310bddca11493" + integrity sha512-WH8Z95CwTq/W8rFbMqb9p3hicpt4RX4f0K659ax2VHxgOyT6qQmUaEVEjIh4WR9Eh9NymkVn5vwsrE68fAQNUw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.0" + "@babel/helper-create-class-features-plugin" "^7.17.1" "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" "@babel/plugin-syntax-decorators" "^7.17.0" @@ -996,10 +996,10 @@ dependencies: regenerator-runtime "^0.12.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.0", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.0.tgz#b8d142fc0f7664fb3d9b5833fd40dcbab89276c0" - integrity sha512-etcO/ohMNaNA2UBdaXBBSX/3aEzFMRrVfaPv8Ptc0k+cWpWW0QFiGZ2XnVqQZI1Cf734LbPGmqBKWESfW4x/dQ== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.2.0", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" + integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== dependencies: regenerator-runtime "^0.13.4" @@ -1317,27 +1317,6 @@ jest-haste-map "^27.5.1" jest-runtime "^27.5.1" -"@jest/transform@^27.5.0": - version "27.5.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.0.tgz#a4941e69ac51e8aa9a255ff4855b564c228c400b" - integrity sha512-yXUy/iO3TH1itxJ9BF7LLjuXt8TtgtjAl0PBQbUaCvRa+L0yYBob6uayW9dFRX/CDQweouLhvmXh44zRiaB+yA== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.0" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.0" - jest-regex-util "^27.5.0" - jest-util "^27.5.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - "@jest/transform@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" @@ -1369,18 +1348,7 @@ "@types/yargs" "^15.0.0" chalk "^3.0.0" -"@jest/types@^27.0.2", "@jest/types@^27.5.0": - version "27.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.0.tgz#6ad04a5c5355fd9f46e5cf761850e0edb3c209dd" - integrity sha512-oDHEp7gwSgA82RZ6pzUL3ugM2njP/lVB1MsxRZNOBk+CoNvh9SpH1lQixPFc/kDlV50v59csiW4HLixWmhmgPQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - -"@jest/types@^27.5.1": +"@jest/types@^27.0.2", "@jest/types@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== @@ -2115,10 +2083,10 @@ aproba@^1.1.1: resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== +are-we-there-yet@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" + integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== dependencies: delegates "^1.0.0" readable-stream "^3.6.0" @@ -2307,12 +2275,12 @@ axe-core@^4.3.5: resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.3.5.tgz" integrity sha512-WKTW1+xAzhMS5dJsxWkliixlO/PqC4VhmO9T4juNYcaTg9jzWiJsou6m5pxWYGfigWbwzJWeFY6z47a+4neRXA== -axios@^0.25.0: - version "0.25.0" - resolved "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz" - integrity sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g== +axios@^0.26.0: + version "0.26.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.26.0.tgz#9a318f1c69ec108f8cd5f3c3d390366635e13928" + integrity sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og== dependencies: - follow-redirects "^1.14.7" + follow-redirects "^1.14.8" axobject-query@^2.2.0: version "2.2.0" @@ -2331,20 +2299,6 @@ babel-eslint@^10.1.0: eslint-visitor-keys "^1.0.0" resolve "^1.12.0" -babel-jest@^27.5.0: - version "27.5.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.0.tgz#c653985241af3c76f59d70d65a570860c2594a50" - integrity sha512-puhCyvBTNLevhbd1oyw6t3gWBicWoUARQYKCBB/B1moif17NbyhxbsfadqZIw8zfJJD+W7Vw0Nb20pEjLxkXqQ== - dependencies: - "@jest/transform" "^27.5.0" - "@jest/types" "^27.5.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - babel-jest@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" @@ -2387,16 +2341,6 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.5.0: - version "27.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.0.tgz#8fdf07835f2165a068de3ce95fd7749a89801b51" - integrity sha512-ztwNkHl+g1GaoQcb8f2BER4C3LMvSXuF7KVqtUioXQgScSEnkl6lLgCILUYIR+CPTwL8H3F/PNLze64HPWF9JA== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - babel-plugin-jest-hoist@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" @@ -2497,14 +2441,6 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^27.5.0: - version "27.5.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.0.tgz#4e308711c3d2ff1f45cf5d9a23646e37b621fc9f" - integrity sha512-7bfu1cJBlgK/nKfTvMlElzA3jpi6GzDWX3fntnyP2cQSzoi/KUz6ewGlcb3PSRYZGyv+uPnVHY0Im3JbsViqgA== - dependencies: - babel-plugin-jest-hoist "^27.5.0" - babel-preset-current-node-syntax "^1.0.0" - babel-preset-jest@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" @@ -4016,10 +3952,10 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -dotenv@^10.0.0: - version "10.0.0" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +dotenv@^16.0.0: + version "16.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.0.tgz#c619001253be89ebb638d027b609c75c26e47411" + integrity sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q== duplexer@^0.1.2: version "0.1.2" @@ -4927,7 +4863,7 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@^1.0.0, follow-redirects@^1.14.7: +follow-redirects@^1.0.0, follow-redirects@^1.14.8: version "1.14.8" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== @@ -6362,26 +6298,6 @@ jest-get-type@^27.5.1: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== -jest-haste-map@^27.5.0: - version "27.5.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.0.tgz#7cc3a920caf304c89fbfceb5d5717b929873f175" - integrity sha512-0KfckSBEKV+D6e0toXmIj4zzp72EiBnvkC0L+xYxenkLhAdkp2/8tye4AgMzz7Fqb1r8SWtz7+s1UQLrxMBang== - dependencies: - "@jest/types" "^27.5.0" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^27.5.0" - jest-serializer "^27.5.0" - jest-util "^27.5.0" - jest-worker "^27.5.0" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - jest-haste-map@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" @@ -6471,11 +6387,6 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^27.5.0: - version "27.5.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.0.tgz#26c26cf15a73edba13cb8930e261443d25ed8608" - integrity sha512-e9LqSd6HsDsqd7KS3rNyYwmQAaG9jq4U3LbnwVxN/y3nNlDzm2OFs596uo9zrUY+AV1opXq6ome78tRDUCRWfA== - jest-regex-util@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" @@ -6561,14 +6472,6 @@ jest-runtime@^27.5.1: slash "^3.0.0" strip-bom "^4.0.0" -jest-serializer@^27.5.0: - version "27.5.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.0.tgz#439a110df27f97a40c114a429b708c2ada15a81f" - integrity sha512-aSDFqQlVXtBH+Zb5dl9mCvTSFkabixk/9P9cpngL4yJKpmEi9USxfDhONFMzJrtftPvZw3PcltUVmtFZTB93rg== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - jest-serializer@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" @@ -6605,18 +6508,6 @@ jest-snapshot@^27.5.1: pretty-format "^27.5.1" semver "^7.3.2" -jest-util@^27.5.0: - version "27.5.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.0.tgz#0b9540d91b0de65d288f235fa9899e6eeeab8d35" - integrity sha512-FUUqOx0gAzJy3ytatT1Ss372M1kmhczn8x7aE0++11oPGW1FyD/5NjYBI8w1KOXFm6IVjtaZm2szfJJL+CHs0g== - dependencies: - "@jest/types" "^27.5.0" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - jest-util@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" @@ -6663,15 +6554,6 @@ jest-worker@^26.5.0: merge-stream "^2.0.0" supports-color "^7.0.0" -jest-worker@^27.5.0: - version "27.5.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.0.tgz#99ee77e4d06168107c27328bd7f54e74c3a48d59" - integrity sha512-8OEHiPNOPTfaWnJ2SUHM8fmgeGq37uuGsQBvGKQJl1f+6WIy6g7G3fE2ruI5294bUKUI9FaCWt5hDvO8HSwsSg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jest-worker@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" @@ -7582,12 +7464,12 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -npmlog@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz" - integrity sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q== +npmlog@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.1.tgz#06f1344a174c06e8de9c6c70834cfba2964bba17" + integrity sha512-BTHDvY6nrRHuRfyjt1MAufLxYdVXZfd099H4+i1f0lPywNQyI4foeNXJRObB/uy+TYqUW0vAD9gbdSOXPst7Eg== dependencies: - are-we-there-yet "^2.0.0" + are-we-there-yet "^3.0.0" console-control-strings "^1.1.0" gauge "^4.0.0" set-blocking "^2.0.0" @@ -10818,7 +10700,15 @@ urix@^0.1.0: resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-parse@^1.4.3, url-parse@^1.5.3: +url-parse@^1.4.3: + version "1.5.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.7.tgz#00780f60dbdae90181f51ed85fb24109422c932a" + integrity sha512-HxWkieX+STA38EDk7CE9MEryFeHCKzgagxlGvsdS7WBImq9Mk+PGwiT56w82WI3aicwJA8REp42Cxo98c8FZMA== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url-parse@^1.5.3: version "1.5.4" resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.4.tgz" integrity sha512-ITeAByWWoqutFClc/lRZnFplgXgEZr3WJ6XngMM/N9DMIm4K8zXPCZ1Jdu0rERwO84w1WC5wkle2ubwTA4NTBg== |